@ionic/core
Version:
Base components for Ionic
326 lines (297 loc) • 9.1 kB
CSS
/**
* Convert a font size to a dynamic font size.
* Fonts that participate in Dynamic Type should use
* dynamic font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param unit (optional) - The unit to convert to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a maximum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a minimum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* maximum and minimum font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* A heuristic that applies CSS to tablet
* viewports.
*
* Usage:
* @include tablet-viewport() {
* :host {
* background-color: green;
* }
* }
*/
/**
* A heuristic that applies CSS to mobile
* viewports (i.e. phones, not tablets).
*
* Usage:
* @include mobile-viewport() {
* :host {
* background-color: blue;
* }
* }
*/
:host {
/**
* @prop --color: Text color of the breadcrumb
* @prop --color-active: Text color of the active breadcrumb
* @prop --color-hover: Text color of the breadcrumb on hover
* @prop --color-focused: Text color of the breadcrumb when focused
* @prop --background-focused: Background color of the breadcrumb when focused
*/
display: flex;
flex: 0 0 auto;
align-items: center;
color: var(--color);
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
}
.breadcrumb-native {
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
letter-spacing: inherit;
text-decoration: inherit;
text-indent: inherit;
text-overflow: inherit;
text-transform: inherit;
text-align: inherit;
white-space: inherit;
color: inherit;
padding-left: 0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
margin-left: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 0;
display: flex;
align-items: center;
width: 100%;
outline: none;
background: inherit;
}
:host(.breadcrumb-disabled) {
cursor: default;
opacity: 0.5;
pointer-events: none;
}
:host(.breadcrumb-active) {
color: var(--color-active);
}
:host(.ion-focused) {
color: var(--color-focused);
}
:host(.ion-focused) .breadcrumb-native {
background: var(--background-focused);
}
@media (any-hover: hover) {
:host(.ion-activatable:hover) {
color: var(--color-hover);
}
:host(.ion-activatable.in-breadcrumbs-color:hover),
:host(.ion-activatable.ion-color:hover) {
color: var(--ion-color-shade);
}
}
.breadcrumb-separator {
display: inline-flex;
}
:host(.breadcrumb-collapsed) .breadcrumb-native {
display: none;
}
:host(.in-breadcrumbs-color),
:host(.in-breadcrumbs-color.breadcrumb-active) {
color: var(--ion-color-base);
}
:host(.in-breadcrumbs-color) .breadcrumb-separator {
color: var(--ion-color-base);
}
:host(.ion-color) {
color: var(--ion-color-base);
}
:host(.in-toolbar-color),
:host(.in-toolbar-color) .breadcrumb-separator {
color: rgba(var(--ion-color-contrast-rgb), 0.8);
}
:host(.in-toolbar-color.breadcrumb-active) {
color: var(--ion-color-contrast);
}
.breadcrumbs-collapsed-indicator {
padding-left: 0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
-webkit-margin-start: 14px;
margin-inline-start: 14px;
-webkit-margin-end: 14px;
margin-inline-end: 14px;
margin-top: 0;
margin-bottom: 0;
display: flex;
flex: 1 1 100%;
align-items: center;
justify-content: center;
width: 32px;
height: 18px;
border: 0;
outline: none;
cursor: pointer;
appearance: none;
}
.breadcrumbs-collapsed-indicator ion-icon {
margin-top: 1px;
font-size: 1.375rem;
}
/**
* Convert a font size to a dynamic font size.
* Fonts that participate in Dynamic Type should use
* dynamic font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param unit (optional) - The unit to convert to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a maximum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a minimum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* maximum and minimum font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* A heuristic that applies CSS to tablet
* viewports.
*
* Usage:
* @include tablet-viewport() {
* :host {
* background-color: green;
* }
* }
*/
/**
* A heuristic that applies CSS to mobile
* viewports (i.e. phones, not tablets).
*
* Usage:
* @include mobile-viewport() {
* :host {
* background-color: blue;
* }
* }
*/
:host {
--color: var(--ion-color-step-850, var(--ion-text-color-step-150, #2d4665));
--color-active: var(--ion-text-color, #03060b);
--color-hover: var(--ion-text-color, #03060b);
--color-focused: var(--color-active);
--background-focused: var(--ion-color-step-50, var(--ion-background-color-step-50, rgba(233, 237, 243, 0.7)));
/**
* Main content should be prioritized
* on iOS, so we set max font size for breadcrumbs.
* Breadcrumbs can be placed in the content too, so
* we add a min font size to keep the text legible.
*/
font-size: clamp(16px, 1rem, 22px);
}
:host(.breadcrumb-active) {
font-weight: 600;
}
.breadcrumb-native {
border-radius: 4px;
-webkit-padding-start: 12px;
padding-inline-start: 12px;
-webkit-padding-end: 12px;
padding-inline-end: 12px;
padding-top: 5px;
padding-bottom: 5px;
border: 1px solid transparent;
}
:host(.ion-focused) .breadcrumb-native {
border-radius: 8px;
}
:host(.in-breadcrumbs-color.ion-focused) .breadcrumb-native,
:host(.ion-color.ion-focused) .breadcrumb-native {
background: rgba(var(--ion-color-base-rgb), 0.1);
color: var(--ion-color-base);
}
:host(.ion-focused) ::slotted(ion-icon),
:host(.in-breadcrumbs-color.ion-focused) ::slotted(ion-icon),
:host(.ion-color.ion-focused) ::slotted(ion-icon) {
color: var(--ion-color-step-750, var(--ion-text-color-step-250, #445b78));
}
.breadcrumb-separator {
color: var(--ion-color-step-550, var(--ion-text-color-step-450, #73849a));
}
::slotted(ion-icon) {
color: var(--ion-color-step-400, var(--ion-text-color-step-600, #92a0b3));
font-size: min(1.125rem, 21.6px);
}
::slotted(ion-icon[slot=start]) {
-webkit-margin-end: 8px;
margin-inline-end: 8px;
}
::slotted(ion-icon[slot=end]) {
-webkit-margin-start: 8px;
margin-inline-start: 8px;
}
:host(.breadcrumb-active) ::slotted(ion-icon) {
color: var(--ion-color-step-850, var(--ion-text-color-step-150, #242d39));
}
.breadcrumbs-collapsed-indicator {
border-radius: 4px;
background: var(--ion-color-step-100, var(--ion-background-color-step-100, #e9edf3));
color: var(--ion-color-step-550, var(--ion-text-color-step-450, #73849a));
}
.breadcrumbs-collapsed-indicator:hover {
opacity: 0.45;
}
.breadcrumbs-collapsed-indicator:focus {
background: var(--ion-color-step-150, var(--ion-background-color-step-150, #d9e0ea));
}
.breadcrumbs-collapsed-indicator ion-icon {
font-size: min(1.375rem, 22px);
}