fomantic-ui
Version:
Fomantic empowers designers and developers by creating a shared vocabulary for UI.
541 lines (495 loc) • 15.2 kB
text/less
/*!
* # Fomantic-UI - Feed
* https://github.com/fomantic/Fomantic-UI/
*
*
* Released under the MIT license
* https://opensource.org/licenses/MIT
*
*/
/*******************************
Theme
*******************************/
@type: "view";
@element: "feed";
@import (multiple) "../../theme.config";
@notConnected: if(@variationFeedConnected, e(":not(.connected)"));
/*******************************
Activity Feed
*******************************/
.ui.feed {
margin: @margin;
}
.ui.feed:first-child {
margin-top: 0;
}
.ui.feed:last-child {
margin-bottom: 0;
}
/*******************************
Content
*******************************/
/* Event */
.ui.feed > .event {
display: flex;
flex-direction: row;
width: @eventWidth;
padding: @eventPadding;
margin: @eventMargin;
background: @eventBackground;
&:not(:first-child) {
border-top: @eventDivider;
}
}
.ui.feed@{notConnected} > .event:first-child {
padding-top: 0;
}
.ui.feed > .event:last-child {
padding-bottom: 0;
}
& when (@variationFeedLabel) {
/* Event Label */
.ui.feed > .event > .label {
display: block;
flex: 0 0 auto;
width: @labelWidth;
height: @labelHeight;
align-self: @labelAlignSelf;
text-align: @labelTextAlign;
}
& when (@variationFeedLabelIcon) {
.ui.feed > .event > .label .icon {
opacity: @iconLabelOpacity;
font-size: @iconLabelSize;
width: @iconLabelWidth;
padding: @iconLabelPadding;
background: @iconLabelBackground;
border: @iconLabelBorder;
border-radius: @iconLabelBorderRadius;
color: @iconLabelColor;
}
}
& when (@variationFeedLabelImage) {
.ui.feed > .event > .label img {
width: @imageLabelWidth;
height: @imageLabelHeight;
border-radius: @imageLabelBorderRadius;
}
}
& when (@variationFeedLabelText) {
.ui.feed > .event > .label > .text {
display: block;
text-align: center;
margin-top: @textLabelTopMargin;
&.ui {
margin-top: @uiTextLabelTopMargin;
}
&.multiline {
margin-top: @multilineTextLabelTopMargin;
&.ui {
margin-top: @uiMultilineTextLabelTopMargin;
}
}
}
}
& when (@variationFeedLabelUiLabel) {
.ui.feed > .event > .label > .ui.label {
margin-top: @uiLabelTopMargin;
position: relative;
z-index: @uiLabelZIndex;
}
}
.ui.feed > .event > .label + .content {
margin: @labeledContentMargin;
}
}
/* --------------
Content
--------------- */
/* Content */
.ui.feed > .event > .content {
display: block;
flex: 1 1 auto;
align-self: @contentAlignSelf;
text-align: @contentTextAlign;
word-wrap: @contentWordWrap;
}
.ui.feed > .event:last-child > .content {
padding-bottom: @lastLabeledContentPadding;
}
/* Link */
.ui.feed > .event > .content a {
cursor: pointer;
}
& when (@variationFeedDate) {
/* --------------
Date
--------------- */
.ui.feed > .event > .content .date {
margin: @dateMargin;
padding: @datePadding;
color: @dateColor;
font-weight: @dateFontWeight;
font-size: @dateFontSize;
font-style: @dateFontStyle;
}
}
& when (@variationFeedSummary) {
/* --------------
Summary
--------------- */
.ui.feed > .event > .content .summary {
margin: @summaryMargin;
font-size: @summaryFontSize;
font-weight: @summaryFontWeight;
color: @summaryColor;
}
/* Summary Image */
.ui.feed > .event > .content .summary img {
display: inline-block;
width: @summaryImageWidth;
height: @summaryImageHeight;
margin: @summaryImageMargin;
border-radius: @summaryImageBorderRadius;
vertical-align: @summaryImageVerticalAlign;
}
& when (@variationFeedDate) {
/* --------------
Inline Date
--------------- */
/* Date inside Summary */
.ui.feed > .event > .content .summary > .date {
display: @summaryDateDisplay;
font-weight: @summaryDateFontWeight;
font-size: @summaryDateFontSize;
font-style: @summaryDateFontStyle;
margin: @summaryDateMargin;
padding: @summaryDatePadding;
color: @summaryDateColor;
&:not(.floated) {
float: @summaryDateFloat;
}
}
}
}
& when (@variationFeedUser) {
/* --------------
User
--------------- */
.ui.feed > .event > .content .user {
display: inline-block;
font-weight: @userFontWeight;
margin-right: @userDistance;
vertical-align: baseline;
}
.ui.feed > .event > .content .user img {
margin: @userImageMargin;
width: @userImageWidth;
height: @userImageHeight;
vertical-align: @userImageVerticalAlign;
}
}
& when (@variationFeedExtra) {
/* --------------
Extra Summary
--------------- */
.ui.feed > .event > .content .extra {
margin: @extraMargin;
background: @extraBackground;
padding: @extraPadding;
color: @extraColor;
}
/* Images */
.ui.feed > .event > .content .extra.images img {
display: inline-block;
margin: @extraImageMargin;
width: @extraImageWidth;
}
/* Text */
.ui.feed > .event > .content .extra.text {
padding: @extraTextPadding;
border-left: @extraTextPointer;
font-size: @extraTextFontSize;
max-width: @extraTextMaxWidth;
line-height: @extraTextLineHeight;
}
}
& when (@variationFeedMeta) {
/* --------------
Meta
--------------- */
.ui.feed > .event > .content .meta {
display: @metadataDisplay;
font-size: @metadataFontSize;
margin: @metadataMargin;
background: @metadataBackground;
border: @metadataBorder;
border-radius: @metadataBorderRadius;
box-shadow: @metadataBoxShadow;
padding: @metadataPadding;
color: @metadataColor;
}
.ui.feed > .event > .content .meta > * {
position: relative;
margin-left: @metadataElementSpacing;
}
.ui.feed > .event > .content .meta > *::after {
content: @metadataDivider;
color: @metadataDividerColor;
top: 0;
left: @metadataDividerOffset;
opacity: 1;
position: absolute;
vertical-align: top;
}
& when (@variationFeedLike) {
.ui.feed > .event > .content .meta .like {
color: @likeColor;
transition: @likeTransition;
}
.ui.feed > .event > .content .meta .like:hover i.icon {
color: @likeHoverColor;
}
.ui.feed > .event > .content .meta .active.like i.icon {
color: @likeActiveColor;
}
}
/* First element */
.ui.feed > .event > .content .meta > :first-child {
margin-left: 0;
}
.ui.feed > .event > .content .meta > :first-child::after {
display: none;
}
/* Action */
.ui.feed > .event > .content .meta a,
.ui.feed > .event > .content .meta > i.icon {
cursor: @metadataActionCursor;
opacity: @metadataActionOpacity;
color: @metadataActionColor;
transition: @metadataActionTransition;
}
.ui.feed > .event > .content .meta a:hover,
.ui.feed > .event > .content .meta a:hover i.icon,
.ui.feed > .event > .content .meta > i.icon:hover {
color: @metadataActionHoverColor;
}
}
/*******************************
Variations
*******************************/
& when (@variationFeedRightFloated) {
/* rtl:rename */
.ui.feed .right.floated {
float: right;
}
}
& when (@variationFeedConnected) {
.ui.connected.feed > .event {
position: relative;
&:not(:last-child)::before {
border-left: @connectedBorder;
content: "";
left: @connectedBorderLeftOffset;
position: absolute;
top: @connectedBorderTopOffset;
height: @connectedBorderHeight;
}
& > .label when (@variationFeedLabel) {
position: relative;
}
}
& when (@variationFeedInverted) {
.ui.inverted.connected.feed > .event {
&::before {
border-left-color: @invertedConnectedBorderColor;
}
}
}
}
& when(@variationFeedDivided) {
.ui.divided.feed > .event:not(:first-child) {
border-top: @dividedBorder;
}
& when (@variationFeedInverted) {
.ui.inverted.divided.feed > .event {
border-top-color: @invertedDividedBorderColor;
}
}
}
& when (@variationFeedLabelText) {
.ui.ui.feed > .event > .label[data-text]::before {
content: attr(data-text);
}
}
& when (@variationFeedOrdered) or (@variationFeedLabelText) {
.ui.feed > .event > .label[data-text]::before,
.ui.ordered.feed > .event > .label::before {
text-align: center;
line-height: 1;
height: @orderedHeight;
background: @orderedBackground;
color: @orderedColor;
border-radius: @orderedBorderRadius;
padding-top: @orderedTopOffset;
position: relative;
display: block;
margin-bottom: @orderedBottomMargin;
border: @orderedBorder;
}
}
& when (@variationFeedOrdered) {
.ui.ordered.feed {
counter-reset: @orderedCountName;
& > .event > .label::before {
counter-increment: @orderedCountName;
content: @orderedCountContent;
}
}
& when (@variationFeedBasic) {
.ui.ordered.basic.feed > .event > .label::before,
.ui.ordered.feed > .event > .basic.label::before {
border-color: @orderedBasicBorderColor;
color: @orderedBasicColor;
background: @orderedBasicBackground;
}
}
& when (@variationFeedConnected) {
.ui.ordered.connected.feed > .event::before {
top: @orderedConnectedBorderTopOffset;
height: @orderedConnectedBorderHeight;
}
/* workaround until all browsers support :has() */
.ui.connected.labeled.feed > .event::before,
.ui.connected.feed > .labeled.event::before {
top: @orderedConnectedLabeledBorderTopOffset;
height: @orderedConnectedLabeledBorderHeight;
}
}
}
& when (@variationFeedConnected) and ((@variationFeedOrdered) or (@variationFeedLabelText)) {
@supports selector(:has(.f)) {
.ui.connected.feed > .event:has(> .label[data-text] > *)::before,
.ui.ordered.connected.feed > .event:has(> .label > *)::before {
top: @orderedConnectedLabeledBorderTopOffset;
height: @orderedConnectedLabeledBorderHeight;
}
}
}
.ui.feed {
font-size: @medium;
}
& when not (@variationFeedSizes = false) {
each(@variationFeedSizes, {
@s: @@value;
.ui.@{value}.feed {
font-size: @s;
}
});
}
& when (@variationFeedInverted) {
/* ------------------
Inverted
------------------- */
.ui.inverted.feed > .event {
background: @black;
& > .label i.icon when (@variationFeedLabelIcon) {
color: @invertedIconLabelColor;
}
& > .label .text:not(.ui) when (@variationFeedLabelText) {
color: @invertedTextLabelColor;
}
}
& when (@variationFeedDate) or (@variationFeedLike) {
.ui.inverted.feed > .event > .content .date,
.ui.inverted.feed > .event > .content .meta .like {
color: @invertedLikeColor;
}
}
& when (@variationFeedSummary) or (@variationFeedExtra) {
.ui.inverted.feed > .event > .content .summary,
.ui.inverted.feed > .event > .content .extra.text {
color: @invertedTextColor;
}
}
& when (@variationFeedLike) {
.ui.inverted.feed > .event > .content .meta .like:hover {
color: @invertedLikeHoverColor;
}
.ui.inverted.feed > .event > .content .meta .active.like i.icon {
color: @invertedLikeActiveColor;
}
}
/* Action */
.ui.inverted.feed > .event > .content .meta a,
.ui.inverted.feed > .event > .content .meta > i.icon {
color: @invertedMetadataActionColor;
}
.ui.inverted.feed > .event > .content .meta a:hover,
.ui.inverted.feed > .event > .content .meta a:hover i.icon,
.ui.inverted.feed > .event > .content .meta > i.icon:hover {
color: @invertedMetadataActionHoverColor;
}
}
/* --------------
Colors
--------------- */
& when not (@variationFeedColors = false) {
each(@variationFeedColors, {
@color: @value;
@c: @colors[@@color][color];
@l: @colors[@@color][light];
& when (@variationFeedOrdered) or (@variationFeedLabelText) {
.ui.ui.feed > .event > .@{color}.label::before,
.ui.@{color}.feed > .event > .label::before {
background: @c;
}
}
& when (@variationFeedConnected) {
.ui.@{color}.connected.feed > .event::before,
.ui.connected.feed > .@{color}.event::before {
border-color: @c;
}
& when (@variationFeedInverted) {
.ui.inverted.@{color}.connected.feed > .event::before,
.ui.connected.feed > .inverted.@{color}.event::before {
border-color: @l;
}
}
}
& when (@variationFeedBasic) {
.ui.ui.feed > .event > .@{color}.basic.label::before,
.ui.@{color}.basic.feed > .event > .label::before {
color: @c;
}
}
& when (@variationFeedInverted) {
.ui.feed > .event > .inverted.@{color}.label::before,
.ui.inverted.@{color}.feed > .event > .label::before {
background: @l;
}
& when (@variationFeedBasic) {
.ui.feed > .event > .inverted.@{color}.basic.label::before,
.ui.inverted.@{color}.basic.feed > .event > .label::before {
color: @l;
}
}
}
});
}
& when (@variationFeedBasic) {
.ui.ui.feed > .event > .basic.label::before,
.ui.ui.ui.basic.feed > .event > .label::before {
background: @orderedBasicBackground;
border-color: currentColor;
}
}
& when (@variationFeedDisabled) {
.ui.disabled.feed,
.ui.feed .disabled.event {
opacity: @disabledOpacity;
pointer-events: @disabledPointerEvents;
}
}
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";