@atlassian/aui
Version:
Atlassian User Interface Framework
366 lines (312 loc) • 9.76 kB
text/less
@import './imports/global';
// AUI BUTTONS
// Note hover/disabled styles set directly as they are not precisely the same as
// if we used straight opacity.
//
// Basic Button Style
.aui-button,
a.aui-button,
.aui-button:visited {
#aui.box-sizing();
#aui-buttons.aui-button-base();
#aui-buttons.aui-button-style(normal);
display: inline-block;
height: @aui-button-height; // 30px - using ems so the fields increase in line with user specified font-sizes
line-height: @aui-button-line-height;
margin: 0;
padding: @aui-button-padding-y @aui-button-padding-x;
vertical-align: baseline;
white-space: nowrap;
&.aui-button-light {
background-color: @aui-button-light-bg-color;
}
}
.aui-button ~ .aui-button {
margin-left: @aui-grid;
}
// Ensure underlines not added by link styles
a.aui-button:hover,
a.aui-button:active,
a.aui-button:focus {
text-decoration: none;
}
.aui-button:focus,
.aui-button:hover,
.aui-button-subtle.aui-button:focus,
.aui-button-subtle.aui-button:hover {
#aui-buttons.aui-button-style(hover);
}
.aui-button:active,
.aui-button.aui-button-subtle:active,
.aui-button.aui-button-subtle.active {
#aui-buttons.aui-button-style(active);
}
.aui-button.active,
.aui-button-subtle.aui-button.active {
#aui-buttons.aui-button-style(selected);
}
// Split Buttons
.aui-button.aui-button-split-main {
+ .aui-button-split-more {
margin-left: @aui-grouped-button-spacing;
}
}
// Primary Buttons
.aui-button.aui-button-primary,
.aui-button.aui-button-primary:visited {
#aui-buttons.aui-primary-button-style(normal);
}
.aui-button.aui-button-primary:hover,
.aui-button.aui-button-primary:focus {
#aui-buttons.aui-primary-button-style(hover);
}
.aui-button.aui-button-primary.active {
#aui-buttons.aui-button-style(selected);
}
.aui-button.aui-button-primary:active {
#aui-buttons.aui-primary-button-style(active);
}
// Link style buttons - used for destructive/cancel actions ONLY
.aui-button.aui-button-link,
.aui-button.aui-button-link:visited,
.aui-button.aui-button-text,
.aui-button.aui-button-text:visited {
#aui-buttons.aui-link-button-style(normal);
padding: @aui-button-padding-y 0;
}
.aui-button.aui-button-link:focus,
.aui-button.aui-button-link:hover,
.aui-button.aui-button-link:active,
.aui-buttons .aui-button.aui-button-link:focus,
.aui-buttons .aui-button.aui-button-link:hover,
.aui-buttons .aui-button.aui-button-link:active,
.aui-buttons .aui-button.aui-button-link[aria-pressed="true"],
.aui-button.aui-button-text:focus,
.aui-button.aui-button-text:hover,
.aui-button.aui-button-text:active,
.aui-buttons .aui-button.aui-button-text:focus,
.aui-buttons .aui-button.aui-button-text:hover,
.aui-buttons .aui-button.aui-button-text:active,
.aui-buttons .aui-button.aui-button-text[aria-pressed="true"] {
background-color: transparent;
border-color: transparent;
}
.aui-button.aui-button-link:hover,
.aui-button.aui-button-text:hover {
#aui-buttons.aui-link-button-style(hover);
}
.aui-button.aui-button-link:active,
.aui-button.aui-button-text:active {
#aui-buttons.aui-link-button-style(active);
}
.aui-button.aui-button-text,
.aui-button.aui-button-text:visited {
border: none;
font-size: inherit;
height: inherit;
line-height: normal;
padding: 0;
}
// Subtle/hybrid/entity action/mugger buttons
.aui-button.aui-button-subtle {
background-color: transparent;
border-color: transparent;
color: @aui-button-subtle-text-color;
}
.aui-buttons .aui-button.aui-button-subtle {
border-radius: @aui-button-border-radius;
}
// when a button label is present next to an aui-icon (eg sidebar config)
.aui-button {
> .aui-icon {
+ .aui-button-label {
margin-left: (@aui-grid / 2)-1;
}
}
}
// Compact Buttons
.aui-button.aui-button-compact {
font-size: @aui-font-size-small;
height: 2.16666666666667em; // 26px with 12px font-size
padding: (@aui-button-padding-y / 2) (@aui-button-padding-x * .8);
line-height: 1.66666666666667;
}
// End Compact Buttons
// aui-buttons groups buttons together into one button lozenge.
.aui-buttons {
display: inline-block;
font-size: 0;
}
.aui-buttons::after {
clear: both;
content: "";
display: table;
}
.aui-buttons .aui-button {
border-radius: 0;
margin: 0;
}
.aui-buttons .aui-button:first-child {
border-top-left-radius: @aui-button-border-radius;
border-bottom-left-radius: @aui-button-border-radius;
}
.aui-buttons .aui-button:last-child {
border-top-right-radius: @aui-button-border-radius;
border-bottom-right-radius: @aui-button-border-radius;
}
.aui-buttons + .aui-buttons {
margin-left: @aui-grid;
}
// Grouped buttons go into toolbar style
.aui-buttons .aui-button {
&:not(.aui-button-primary):not(.aui-button-link) {
&:focus,
&:hover,
&:active {
border-color: @aui-button-border-color;
}
}
}
.aui-buttons .aui-button[disabled],
.aui-buttons .aui-button[disabled]:hover,
.aui-buttons .aui-button[disabled]:focus,
.aui-buttons .aui-button[disabled]:active,
.aui-buttons .aui-button[aria-disabled="true"],
.aui-buttons .aui-button[aria-disabled="true"]:hover,
.aui-buttons .aui-button[aria-disabled="true"]:focus,
.aui-buttons .aui-button[aria-disabled="true"]:active {
border-color: @aui-button-border-color;
}
// Grouped Primary Buttons
.aui-buttons .aui-button ~ .aui-button {
border-left-width: 0;
margin-left: @aui-grouped-button-spacing;
}
.aui-buttons .aui-button {
&:hover,
&:focus,
&:active {
position: relative;
}
&:focus {
z-index: 1;
}
}
// Selected buttons - NOT supported for free-standing primary buttons
// ARIA usage from http://www.paciellogroup.com/blog/misc/ARIA/togglebutton.html
.aui-button[aria-pressed="true"],
.aui-buttons .aui-button[aria-pressed="true"],
.aui-buttons .aui-button[aria-pressed="true"].aui-button-primary,
.aui-buttons .aui-button[aria-pressed="true"].aui-button-subtle {
color: @aui-button-default-selected-text-color;
background-color: @aui-button-default-selected-bg-color;
}
.aui-buttons .aui-button[aria-pressed="true"]:active {
color: @aui-button-default-text-color;
background-color: @aui-button-default-active-bg-color;
}
// Disabled states (keep last to avoid excessive selector weight)
// ----------------------------------------------------------------------
.aui-button[disabled],
.aui-button[disabled]:hover,
.aui-button[disabled]:focus,
.aui-button[disabled]:active,
.aui-button[aria-disabled="true"],
.aui-button[aria-disabled="true"]:hover,
.aui-button[aria-disabled="true"]:focus,
.aui-button[aria-disabled="true"]:active,
.aui-button[aria-disabled="true"][aria-pressed] {
#aui-buttons.aui-button-style(disabled);
}
// Subtle buttons have their own disabled state
.aui-button.aui-button-subtle[disabled],
.aui-button.aui-button-subtle[aria-disabled="true"] {
border: 0;
background: none;
}
.aui-button.aui-button-primary[disabled],
.aui-button.aui-button-primary[disabled]:hover,
.aui-button.aui-button-primary[disabled]:focus,
.aui-button.aui-button-primary[disabled]:active,
.aui-button.aui-button-primary[aria-disabled="true"],
.aui-button.aui-button-primary[aria-disabled="true"]:hover,
.aui-button.aui-button-primary[aria-disabled="true"]:focus,
.aui-button.aui-button-primary[aria-disabled="true"]:active {
#aui-buttons.aui-primary-button-style(disabled);
}
.aui-button.aui-button-link[disabled],
.aui-button.aui-button-link[disabled]:hover,
.aui-button.aui-button-link[disabled]:focus,
.aui-button.aui-button-link[disabled]:active,
.aui-button.aui-button-link[aria-disabled="true"],
.aui-button.aui-button-link[aria-disabled="true"]:hover,
.aui-button.aui-button-link[aria-disabled="true"]:focus,
.aui-button.aui-button-link[aria-disabled="true"]:active,
.aui-button.aui-button-text[disabled],
.aui-button.aui-button-text[disabled]:hover,
.aui-button.aui-button-text[disabled]:focus,
.aui-button.aui-button-text[disabled]:active,
.aui-button.aui-button-text[aria-disabled="true"],
.aui-button.aui-button-text[aria-disabled="true"]:hover,
.aui-button.aui-button-text[aria-disabled="true"]:focus,
.aui-button.aui-button-text[aria-disabled="true"]:active {
#aui-buttons.aui-link-button-style(disabled);
}
// Cross-component integration
// ----------------------------------------------------------------------
// Icons Integration
// ---------------------
.aui-button.aui-button-compact .aui-icon {
margin-top: -1px; // icon is 1px off, adjust it so it is centered
}
// Icon Colours
// ----------
.aui-button {
.aui-icon {
color: @aui-button-default-icon-color;
}
&:hover .aui-icon {
color: @aui-button-default-icon-color;
}
&:active .aui-icon {
color: @aui-button-default-active-icon-color;
}
&.active .aui-icon {
color: @aui-button-default-selected-icon-color;
}
// Primary
&.aui-button-primary {
.aui-icon {
color: @aui-button-primary-active-icon-color;
}
}
// Link button
&.aui-button-link {
.aui-icon {
color: @aui-link-color;
}
&:hover .aui-icon {
color: @aui-link-color-hover;
}
&.active .aui-icon,
&:active .aui-icon {
color: @aui-link-color-active;
}
}
}
.aui-button[aria-disabled="true"],
.aui-button[disabled] {
&,
&:hover,
&:active {
.aui-icon {
color: @aui-button-default-disabled-icon-color;
}
}
}
.aui-button,
.aui-button.aui-button-primary {
&[busy] {
color: rgba(0, 0, 0, 0) ;
}
}