Skip to content

Button component has a different set of styles with prop display="inline" #2821

@lindapaiste

Description

@lindapaiste

Increasing Access

We want to have a useful set of basic UI components that we can use throughout the app. They should be customizable via props but the output should be predictable.

We are not using the inline version anywhere because it is not useful in it's current state. If we fix it up then it can be used for issues like #2734.

Feature enhancement details

Our Button UI component has a prop display which supports values "block" and "inline". I would expect that a <Button/> with display="inline" would look the same as the normal button, with the only difference being that it is on the same line instead of a new line. In reality it uses a completely different styled component.

let StyledComponent = StyledButton;
if (display === displays.inline) {
StyledComponent = StyledInlineButton;
}

const StyledInlineButton = styled.button`
&&& {
display: flex;
justify-content: center;
align-items: center;
text-decoration: none;
color: ${prop('primaryTextColor')};
cursor: pointer;
border: none;
line-height: 1;
svg * {
fill: ${prop('primaryTextColor')};
}
&:disabled {
cursor: not-allowed;
}
> * + * {
margin-left: ${remSize(8)};
}
}
`;

The inline version is always the same color regardless of the kind="primary" and kind="secondary" props, as the color is hard-coded.

This is what I get when using inline buttons:
Screenshot 2024-01-01 14 44 10

The wildest part is that it's not even inline! It has display: flex instead of display: inline-flex.

I would expect something more like this, which is the block style button but displayed inline:
Screenshot 2024-01-01 14 42 53

My proposal is that we should delete the StyledInlineButton styled component. Instead, we should adjust the existing StyledButton to change its display property based on the display prop. This ensures that all other styling is consistent regardless of the display prop.

Metadata

Metadata

Assignees

Labels

Area: Code QualityFor refactoring, cleanup, or improvements to maintainabilityEnhancementImprovement to an existing feature

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions