UNPKG

@govbr-ds/core

Version:

Padrão Digital de Governo

1 lines 18.7 kB
{"version":3,"file":"components/menu/menu.min.css","mappings":"AAKA,SCUE,oCAAqC,CACrC,uCAAwC,CACxC,gBAAiB,CACjB,sCAAuC,CACvC,2CAA4C,CAC5C,2CAA4C,CAC5C,0CAA2C,CAC3C,yCDbF,CCuBE,yBACE,YDrBJ,CCwBE,qBACE,uCAAwC,CACxC,QAAS,CACT,MAAO,CACP,OAAQ,CACR,KDtBJ,CCyBE,qBACE,iDAAoD,CACpD,4BAA6B,CAC7B,YAAa,CACb,qBAAsB,CACtB,YDvBJ,CC4BI,gCACE,QAAS,CACT,YAAa,CACb,MAAO,CACP,cAAe,CACf,OAAQ,CACR,KAAM,CACN,0BD1BN,CC6BI,4BACE,MAAO,CACP,aAAc,CACd,iBAAkB,CAClB,oCD3BN,CC8BI,4BACE,iBD5BN,CCuCE,sBACE,kBAAmB,CACnB,2CAA4C,CAC5C,YAAa,CACb,2DDrCJ,CCuCI,kCACE,kBAAmB,CACnB,YAAa,CACb,MAAO,CACP,qCDrCN,CCuCM,sCACE,2BDrCR,CCuCQ,wCACE,qCDrCV,CCoDI,8CAEE,QAAS,CACT,SDlDN,CCqDI,uBACE,eDnDN,CCuDI,6BACE,2CDrDN,CC4DU,6DACE,2CD1DZ,CCiEQ,+CACE,yCD/DV,CCiEU,0DACE,oCD/DZ,CCuEM,0CACE,2CDrER,CCyEQ,iDACE,eDvEV,CC8EM,kCACE,yCAA0C,CAC1C,YD5ER,CCiFU,6DACE,kCD/EZ,CExFE,mcD4KY,wBD3Ed,CCgFQ,yCACE,aD9EV,CCiGI,wCACE,2CD/FN,CCkGI,kCACE,kCAAmC,CACnC,YAAa,CACb,iCAAkC,CAClC,yDAA0D,CAC1D,+BDhGN,CCmGI,kCACE,wCAAyC,CACzC,uDDjGN,CCmGM,oCACE,aDjGR,CCmGQ,qDACE,qCDjGV,CGvHI,yDACE,qHHyHN,CCqGI,yEAEE,yDDnGN,CCqGM,qHACE,wCAAyC,CACzC,uCDlGR,CCqGM,iGACE,YDlGR,CCsGI,iCACE,+BDpGN,CCgHE,oBACE,iDAAoD,CACpD,sBAAuB,CACvB,YAAa,CACb,wDD9GJ,CCgHI,0BACE,oCD9GN,CCiHI,6BACE,MD/GN,CCmHE,qBACE,wBDjHJ,CCuHI,uBACE,yCAA0C,CAC1C,YDrHN,CCyHM,sCACE,2BAA4B,CAC5B,mCAAoC,CACpC,kCAAmC,CACnC,0BAA2B,CAC3B,wCDvHR,CCyHQ,4CACE,cDvHV,CC0HQ,+CACE,oCDxHV,CE3KE,sXDsSU,wBDlHZ,CCuHM,8BACE,aDrHR,CCwHM,sCACE,8CDtHR,CC+HM,0BACE,0CD7HR,CC4HM,2BACE,2CD1HR,CCyHM,0BACE,0CDvHR,CCgII,sDAEE,YD9HN,CIhME,yBH2TA,cAOI,oCD9HJ,CCqII,sDAEE,YDjIN,CCoII,8CACE,YDlIN,CCqII,8CACE,aDnIN,CCsII,0BACE,WDpIN,CCuII,0BACE,YDrIN,CC0IM,qCACE,eDxIR,CApBF,CCqKE,oBACE,+CAAgD,CAChD,aD9IJ,CCiJM,qEACE,oCD/IR,CCkJM,wEACE,eDhJR,CCoJI,kCACE,QAAS,CACT,MAAO,CACP,cAAe,CACf,OAAQ,CACR,oCDlJN,CCoJM,6CACE,iBDlJR,CCsJI,oCACE,YAAa,CACb,6BAA8B,CAC9B,eDpJN,CCuJI,gCACE,WDrJN,CCwJI,2BACE,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,YAAa,CACb,wBAAyB,CACzB,MAAO,CACP,cAAe,CACf,OAAQ,CACR,0BDtJN,CCwJM,yCACE,iBAAkB,CAClB,oCDtJR,CE5QE,4UDqaQ,wBDhJV,CCoJM,2CACE,YAAa,CACb,aDlJR,CIlRE,yBH4aI,kCACE,YAAa,CACb,iBDvJN,CC0JI,oCACE,aDxJN,CC2JI,2BACE,WAAY,CACZ,iBDzJN,CACF,CCkKI,4BACE,YDhKN,CCoKI,6BIldF,kBAAmB,CACnB,uBLiTF,CK/SE,+BACE,mBLiTJ,CCsKM,2CACE,+BAAgC,CAChC,uCAAwC,CACxC,8BDpKR,CCsKQ,iDACE,qCDpKV,CGvTI,yDACE,qHHyTN","sources":["webpack://core/./src/components/menu/_menu.scss","webpack://core/./src/components/menu/_mixins.scss","webpack://core/./src/partial/scss/mixins/_icons.scss","webpack://core/./src/partial/scss/mixins/_hover.scss","webpack://core/./src/partial/scss/mixins/_grid.scss","webpack://core/./src/partial/scss/mixins/_states.scss"],"sourcesContent":["@use \"sass:math\";\n @import \"../../partial/scss/base\";\n \n@import \"mixins\";\n\n.#{$prefix}menu {\n @include menu-configs;\n}\n","@mixin menu-configs {\n @include menu-tokens;\n @include menu-default;\n @include menu-header;\n @include menu-body;\n @include menu-footer;\n @include menu-items;\n @include menu-side-menu;\n @include menu-items-sizes;\n @include menu-push;\n @include menu-contextual;\n @include menu-states;\n}\n\n@mixin menu-tokens {\n --menu-zindex: var(--z-index-layer-3);\n --menu-background-submenu: var(--gray-2);\n --menu-logo: 40px;\n --menu-item-ng: var(--menu-item-medium);\n --menu-item-padding: var(--menu-item-medium);\n --menu-item-small: var(--spacing-scale-base);\n --menu-item-medium: var(--spacing-scale-2x);\n --menu-item-large: var(--spacing-scale-3x);\n}\n\n@mixin menu-default {\n // A base é aplicado no seguinte html:\n // <div class=\"br-menu\">\n // <div class=\"menu-trigger\">\n // <div class=\"menu-container\">\n // <div class=\"menu-scrim\">\n // <div class=\"menu-panel\">\n .menu-container {\n display: none;\n }\n\n .menu-scrim {\n background: var(--surface-overlay-scrim);\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n }\n\n .menu-panel {\n --focus-offset: calc(var(--spacing-scale-half) * -1);\n background: var(--background);\n display: flex;\n flex-direction: column;\n height: 100vh;\n }\n\n // Menu ativo\n &.active {\n .menu-container {\n bottom: 0;\n display: flex;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: var(--menu-zindex);\n }\n\n .menu-panel {\n flex: 1;\n overflow: auto;\n position: relative;\n z-index: calc(var(--menu-zindex) + 1);\n }\n\n .menu-scrim {\n position: absolute;\n }\n }\n}\n\n@mixin menu-header {\n // O header é aplicado no seguinte html:\n // <div class=\"menu-header\">\n // <div class=\"menu-close\">\n // <div class=\"menu-title\">\n\n .menu-header {\n align-items: center;\n border-bottom: 1px solid var(--border-color);\n display: flex;\n padding: var(--spacing-scale-base) var(--spacing-scale-base);\n\n .menu-title {\n align-items: center;\n display: flex;\n flex: 1;\n margin-left: var(--spacing-scale-base);\n\n img {\n max-height: var(--menu-logo);\n\n + * {\n margin-left: var(--spacing-scale-base);\n }\n }\n }\n }\n}\n\n@mixin menu-body {\n // O header é aplicado no seguinte html:\n // <div class=\"menu-body\">\n // <div class=\"folder\">\n\n // stylelint-disable no-descending-specificity\n .menu-body {\n // Resetar estilos\n ul,\n li {\n margin: 0;\n padding: 0;\n }\n\n ul {\n list-style: none;\n }\n\n // Aplica separador nos itens de primeiro nível\n > .divider {\n border-bottom: 1px solid var(--border-color);\n }\n\n .menu-folder {\n // Aplica separador entre pastas\n > ul {\n > li:last-child {\n > .menu-item {\n border-bottom: 1px solid var(--border-color);\n }\n }\n }\n\n // Cor de fundo para nível 2\n > .menu-item {\n + ul {\n background: var(--menu-background-submenu);\n\n .menu-item {\n padding-left: var(--spacing-scale-5x);\n }\n }\n }\n }\n\n // Aplica separador no menu dropdown de primeiro nível\n .drop-menu {\n > .menu-item {\n border-bottom: 1px solid var(--border-color);\n }\n\n &.active {\n > .menu-item {\n border-bottom: 0;\n }\n }\n }\n\n // Estilo padrão para menu dropdown e side menu\n .drop-menu {\n > ul {\n background: var(--menu-background-submenu);\n display: none;\n }\n\n &.active {\n > .menu-item {\n &:not(:hover) {\n background-color: var(--background);\n }\n\n .support {\n @include icon {\n transform: rotate(180deg);\n }\n }\n }\n\n > ul {\n display: block;\n }\n }\n }\n }\n\n // stylelint-enable no-descending-specificity\n}\n\n@mixin menu-footer {\n // O header é aplicado no seguinte html:\n // <div class=\"menu-footer\">\n // <div class=\"menu-logos\">\n // <div class=\"menu-links\">\n // <div class=\"menu-social\">\n // <div class=\"menu-info\">\n\n .menu-footer {\n // Adiciona borda automaticamente entre as sessões\n > *:not(:last-child) {\n border-bottom: 1px solid var(--border-color);\n }\n\n .menu-logos {\n column-gap: var(--spacing-scale-2x);\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n padding: var(--spacing-scale-base) var(--spacing-scale-5x);\n row-gap: var(--spacing-scale-2x);\n }\n\n .menu-links {\n --focus-offset: var(--spacing-scale-half);\n padding: var(--spacing-scale-2x) var(--spacing-scale-5x);\n\n a {\n display: block;\n\n &:not(:last-child) {\n margin-bottom: var(--spacing-scale-2x);\n }\n\n @include hover;\n }\n }\n // FIXME: .menu-social e .sharegroup estão depreciados serão retirados na proxima versão\n .social-network,\n .menu-social {\n padding: var(--spacing-scale-base) var(--spacing-scale-5x);\n\n .social-network-title {\n font-weight: var(--font-weight-semi-bold);\n margin-bottom: var(--spacing-scale-half);\n }\n\n .sharegroup {\n display: flex;\n }\n }\n\n .menu-info {\n padding: var(--spacing-scale-2x);\n }\n }\n}\n\n@mixin menu-items {\n // O header é aplicado no seguinte html:\n // <div class=\"menu-item\">\n // <div class=\"icon\">\n // <div class=\"content\">\n // <div class=\"support\">\n\n .menu-item {\n --focus-offset: calc(var(--spacing-scale-half) * -1);\n background: transparent;\n display: flex;\n padding: var(--menu-item-padding) var(--spacing-scale-2x);\n\n .icon {\n margin-right: var(--spacing-scale-2x);\n }\n\n .content {\n flex: 1;\n }\n }\n\n a.menu-item {\n color: var(--interactive);\n }\n}\n\n@mixin menu-side-menu {\n .side-menu {\n > ul {\n background: var(--menu-background-submenu);\n display: none;\n }\n\n &.active {\n > .menu-item {\n --interactive: var(--active);\n --interactive-rgb: var(--active-rgb);\n background-color: var(--background);\n flex-direction: row-reverse;\n font-weight: var(--font-weight-semi-bold);\n\n .icon {\n margin-right: 0;\n }\n\n .support {\n margin-right: var(--spacing-scale-2x);\n\n @include icon {\n transform: rotate(180deg);\n }\n }\n }\n\n > ul {\n display: block;\n }\n\n .menu-item {\n padding-left: var(--spacing-scale-2x) !important;\n }\n }\n }\n}\n\n@mixin menu-items-sizes {\n @each $size in \"small\", \"medium\", \"large\" {\n &.#{$size} {\n .menu-item {\n --menu-item-padding: var(--menu-item-#{$size});\n }\n }\n }\n}\n\n@mixin menu-push {\n // Mobile First\n &.push {\n .menu-trigger,\n .menu-scrim {\n display: none;\n }\n\n @include media-breakpoint-up(sm) {\n --menu-zindex: var(--z-index-layer-0);\n }\n }\n\n // Tablet\n @include media-breakpoint-up(sm) {\n &.push {\n .menu-header,\n .menu-footer {\n display: none;\n }\n\n .menu-header[data-visible=\"true\"] {\n display: flex;\n }\n\n .menu-footer[data-visible=\"true\"] {\n display: block;\n }\n\n .menu-panel {\n height: auto;\n }\n\n .menu-scrim {\n display: none;\n }\n\n // Menu ativo\n &.active {\n .menu-container {\n position: static;\n }\n }\n }\n }\n}\n\n@mixin menu-contextual {\n // Mobile First\n &.contextual {\n --menu-zindex: calc(var(--z-index-layer-3) - 10);\n overflow: auto;\n\n .menu-body .menu-folder {\n > .menu-item + ul .menu-item {\n padding-left: var(--spacing-scale-2x);\n }\n\n > ul > li:last-child > .menu-item {\n border-bottom: 0;\n }\n }\n\n .menu-trigger {\n bottom: 0;\n left: 0;\n position: fixed;\n right: 0;\n z-index: calc(var(--menu-zindex) - 1);\n\n .#{$prefix}button {\n --button-radius: 0;\n }\n }\n\n .menu-container {\n display: none;\n flex-direction: column-reverse;\n position: static;\n }\n\n .menu-panel {\n height: auto;\n }\n\n &.active {\n bottom: 0;\n display: flex;\n flex-direction: column;\n height: 100vh;\n justify-content: flex-end;\n left: 0;\n position: fixed;\n right: 0;\n z-index: var(--menu-zindex);\n\n .menu-trigger {\n position: relative;\n z-index: calc(var(--menu-zindex) + 1);\n\n @include icon {\n transform: rotate(180deg);\n }\n }\n\n .menu-container {\n display: flex;\n overflow: auto;\n }\n }\n }\n\n // Tablet\n @include media-breakpoint-up(md) {\n &.contextual {\n .menu-trigger {\n display: none;\n position: absolute;\n }\n\n .menu-container {\n display: block;\n }\n\n &.active {\n height: 100%;\n position: absolute;\n }\n }\n }\n}\n\n@mixin menu-states {\n // Aplicáveis para item texto e link\n .menu-item {\n // Escondido\n &[hidden] {\n display: none;\n }\n\n // Desativado\n &:disabled {\n @include disabled;\n }\n }\n\n // Aplicável somente para links\n a.menu-item {\n &:not(:disabled) {\n // Ativo\n &.active {\n --interactive: var(--color-dark);\n --interactive-rgb: var(--color-dark-rgb);\n background-color: var(--active);\n\n &:focus {\n outline-color: var(--focus-color-dark);\n }\n }\n\n // Hover\n @include hover;\n }\n }\n}\n","@mixin icon-size($value) {\n @include icon {\n --icon-size: #{$value};\n }\n}\n\n@mixin icon {\n .svg-inline--fa,\n .fa,\n .fab,\n .fad,\n .fal,\n .far,\n .fas {\n @content;\n }\n}\n","/// Aplica hover: feedback ao colocar o cursor no elemento\n/// @param {String} $color [\"interactive\"] - Cor do hover **(Opcional)**\n/// @example scss - Uso prático\n/// a {\n/// @include hover;\n/// }\n@mixin hover($color: \"interactive\") {\n &:not(:disabled) {\n &:hover {\n background-image: linear-gradient(\n rgba(var(--#{$color}-rgb), var(--hover)),\n rgba(var(--#{$color}-rgb), var(--hover))\n );\n }\n }\n}\n","// Dependência para calcular divisão\n@use \"sass:math\";\n\n/// Aplica os estilos **a partir** do breakpoint informado\n/// @group 02\n/// @param {String} $breakpoint - **Usar**: xs, sm, md, lg ou xl\n/// @example scss - Aplicar estilos em **lg** e **xl**\n/// .#{$prefix}cookiebar {\n/// @include media-breakpoint-up(lg) {\n/// ...\n/// }\n/// }\n@mixin media-breakpoint-up($breakpoint) {\n $size: map-get($breakpoints, $breakpoint);\n @media (min-width: $size) {\n @content;\n }\n}\n\n/// Aplica os estilos **até** o breakpoint informado\n/// @group 02\n/// @param {String} $breakpoint - **Usar**: xs, sm, md, lg ou xl\n/// @example scss - Aplicar estilos em **xs**, **sm** e **md**\n/// .#{$prefix}cookiebar {\n/// @include media-breakpoint-down(md) {\n/// ...\n/// }\n/// }\n@mixin media-breakpoint-down($breakpoint) {\n $value: map-get($breakpoints, next-breakpoint($breakpoint)) - 1px;\n @media (max-width: $value) {\n @content;\n }\n}\n\n/// Cria containers e linhas da Grid\n/// @group 03\n/// @param {String} $breakpoint - **Usar**: xs, sm, md, lg ou xl\n/// @example scss - Uso prático\n/// @include make-grid(lg);\n@mixin make-grid($breakpoint) {\n $breakpoint-name: map-get($breakpoints-name, $breakpoint);\n $breakpoint-width: map-get($breakpoints, $breakpoint);\n @media (min-width: $breakpoint-width) {\n .container,\n .container-sm,\n .container-md,\n .container-lg,\n .container-xl,\n .container-fluid {\n --grid-margin: var(--grid-#{$breakpoint-name}-margin);\n }\n\n .row {\n --grid-gutter: var(--grid-#{$breakpoint-name}-gutter);\n }\n @if $breakpoint == \"sm\" {\n .container,\n .container-sm {\n --grid-maxwidth: calc(var(--grid-breakpoint-#{$breakpoint}) - var(--grid-#{$breakpoint-name}-margin));\n }\n }\n @if $breakpoint == \"md\" {\n .container,\n .container-sm,\n .container-md {\n --grid-maxwidth: calc(var(--grid-breakpoint-#{$breakpoint}) - var(--grid-#{$breakpoint-name}-margin));\n }\n }\n @if $breakpoint == \"lg\" {\n .container,\n .container-sm,\n .container-md,\n .container-lg {\n --grid-maxwidth: calc(var(--grid-breakpoint-#{$breakpoint}) - var(--grid-#{$breakpoint-name}-margin));\n }\n }\n @if $breakpoint == \"xl\" {\n .container,\n .container-sm,\n .container-md,\n .container-lg,\n .container-xl {\n --grid-maxwidth: calc(var(--grid-breakpoint-#{$breakpoint}) - var(--grid-#{$breakpoint-name}-margin));\n }\n }\n @include make-columns($grid-desktop-columns, $breakpoint);\n }\n}\n\n/// Cria as colunas da Grid.\n/// @group 03\n/// @param {Number} $columns - **Usar**: 4, 8 ou 12\n/// @param {String} $breakpoint [null] - **Usar**: xs, sm, md, lg ou xl **(Opcional)**\n/// @example scss - Criar classes até 4 colunas\n/// @include make-columns(4);\n/// @example scss - Criar classes até 8 colunas para breakpoint **sm**\n/// @include make-columns(8, \"sm\");\n@mixin make-columns($columns, $breakpoint: null) {\n .col#{if($breakpoint, \"-#{$breakpoint}\", \"\")} {\n flex: 1 0 0%;\n min-width: math.div(1, $columns) * 100%;\n }\n .col#{if($breakpoint, \"-#{$breakpoint}\", \"\")}-auto {\n flex: 0 0 auto;\n width: auto;\n }\n @for $i from 1 through $columns {\n .col#{if($breakpoint, \"-#{$breakpoint}\", \"\")}-#{$i} {\n flex-basis: math.div($i, $columns) * 100%;\n max-width: math.div($i, $columns) * 100%;\n }\n }\n}\n","// Desabilitado\n@mixin disabled {\n cursor: not-allowed;\n opacity: var(--disabled);\n\n * {\n pointer-events: none;\n }\n}\n\n// Dark mode\n@mixin dark-mode(\n $color: \"color-dark\",\n $color-rgb: \"color-dark-rgb\",\n $text-color: $color,\n $interactive: \"interactive-dark\",\n $interactive-rgb: \"interactive-dark-rgb\",\n $visited: \"visited-dark\",\n $hover: \"hover-dark\",\n $pressed: \"pressed-dark\",\n $focus-color: \"focus-color-dark\",\n $focus: $focus-color\n) {\n --color: var(--#{$color});\n --color-rgb: var(--#{$color-rgb});\n --text-color: var(--#{$text-color});\n --interactive: var(--#{$interactive});\n --interactive-rgb: var(--#{$interactive-rgb});\n --visited: var(--#{$visited});\n --hover: var(--#{$hover});\n --pressed: var(--#{$pressed});\n --focus-color: var(--#{$focus-color});\n --focus: var(--#{$focus});\n}\n@mixin light-mode(\n $color: \"color-light\",\n $color-rgb: \"color-light-rgb\",\n $text-color: $color,\n $interactive: \"interactive-light\",\n $interactive-rgb: \"interactive-light-rgb\",\n $visited: \"visited-light\",\n $hover: \"hover-light\",\n $pressed: \"pressed-light\",\n $focus-color: \"focus-color-light\",\n $focus: $focus-color\n) {\n --color: var(--#{$color});\n --color-rgb: var(--#{$color-rgb});\n --text-color: var(--#{$text-color});\n --interactive: var(--#{$interactive});\n --interactive-rgb: var(--#{$interactive-rgb});\n --visited: var(--#{$visited});\n --hover: var(--#{$hover});\n --pressed: var(--#{$pressed});\n --focus-color: var(--#{$focus-color});\n --focus: var(--#{$focus});\n}\n"],"names":[],"sourceRoot":""}