Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(styles): tokenize the Link component styles #3590

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3c4889c
chore(style): delete the initial link styles
Sep 24, 2024
735e706
feat(token): text-link token was implemented
Sep 24, 2024
441368e
feat(token): import link.scss to the _index.scss
Sep 24, 2024
11d7d5e
fix(style): remove unnecessary mixin usage for the link
Sep 25, 2024
9b39668
Merge branch 'main' into 3424-component-text-link
Sep 25, 2024
a570b13
chore(docs): implement the documentation for the link component
Sep 26, 2024
6990166
chore(changeset): implement a changeset
Sep 26, 2024
53ebf2a
Merge branch 'main' into 3424-component-text-link
Sep 26, 2024
120da6f
feat(styles): use focus-style mixin for link focus
Sep 26, 2024
4466e46
fix(import): Eliminate the import of the styles
Sep 26, 2024
7227e98
Merge branch 'main' into 3424-component-text-link
gfellerph Sep 27, 2024
41666ee
chore(styles): remove redundant &:focus selector
Oct 3, 2024
cda79ca
chore(docs): add random UUID to the link stories
Oct 3, 2024
52676e6
fix(changeset): adjust the changeset statement
Oct 3, 2024
0164e0d
chore(snapshot): create the LinkSnapshot
Oct 3, 2024
3f2f547
fix(docs): remove redundant info
Oct 3, 2024
6e0d6fb
fix(docs): set data-color-mode attribute in link snapshot stories
Oct 3, 2024
0cb8fcd
fix(styles): update high-contrast mode link styling
Oct 3, 2024
0d2a377
fix(styles): adjust the style for the visited state in the high-contr…
Oct 4, 2024
361f044
chore(styles): refine the Link styles in high-contrast mode
Oct 4, 2024
46f0ca1
Update .changeset/lazy-gorillas-admire.md
alionazherdetska Oct 7, 2024
8b5e12f
Merge branch '3424-component-text-link' of https://github.com/swisspo…
Oct 8, 2024
8778447
Merge branch 'main' into 3424-component-text-link
Oct 8, 2024
3012ac7
Merge branch 'main' into 3424-component-text-link
oliverschuerch Oct 8, 2024
f9aab11
Merge branch '3424-component-text-link' of https://github.com/swisspo…
Oct 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/lazy-gorillas-admire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@swisspost/design-system-styles': major
alionazherdetska marked this conversation as resolved.
Show resolved Hide resolved
'@swisspost/design-system-documentation': minor
---

Updated the Link component styles to align with the new design, added a documentation page outlining the usage of the component.
7 changes: 0 additions & 7 deletions packages/documentation/.storybook/styles/preview.scss
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,6 @@
}
}

// General styles for content
a:not(.sb-story a) {
@include utilities.focus-style() {
border-radius: post.$border-radius;
}
}

// Style buttons related to the current page next to the tile
.docs-title,
.docs-title nav {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
describe('Link', () => {
it('default', () => {
cy.visit('/iframe.html?id=snapshots--link');
cy.get('a', { timeout: 30000 }).should('be.visible');
cy.percySnapshot('Links', { widths: [400] });
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { Canvas, Controls, Meta } from '@storybook/blocks';
import * as LinkStories from './link.stories';
import StylesPackageImport from '@/shared/styles-package-import.mdx';

<Meta of={LinkStories} />

<div className="docs-title">
# Link

<nav>
<link-design of={JSON.stringify(LinkStories)}></link-design>
</nav>
</div>
<div className="lead">
Use links to navigate users to another location, such as a different site, resource, or section within the same page.
</div>

<Canvas sourceState="shown" of={LinkStories.Default} />
<div className="hide-col-default">
<Controls of={LinkStories.Default} />
</div>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you create a new snapshot file you also need to create the matching visual regression test here: https://github.com/swisspost/design-system/tree/main/packages/documentation/cypress/snapshots/components

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import type { Args, StoryContext, StoryObj } from '@storybook/web-components';
import meta, { Default } from './link.stories';
import { html } from 'lit';
import { bombArgs } from '@/utils';

const { id, ...metaWithoutId } = meta;

export default {
...metaWithoutId,
title: 'Snapshots',
};

type Story = StoryObj;

export const Link: Story = {
render: (_args: Args, context: StoryContext) => {
return html`
<div>
${['bg-white', 'bg-dark'].map(
bg => html`
<div
class="${bg} d-flex flex-column gap-regular p-regular mt-regular"
data-color-mode="${bg === 'bg-white' ? 'light' : 'dark'}"
>
${bombArgs({
text: ['Link Text', 'Lorem ipsum dolor sit amet consectetur'],
href: ['https://example.com', 'https://imgur.com/FKmX7dt'],
}).map((args: Args) =>
Default.render?.(
{ ...context.args, ...args, text: `${args.text}`, href: `${args.href}` },
context,
),
)}
</div>
`,
)}
</div>
`;
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import type { Args, StoryObj } from '@storybook/web-components';
import { html } from 'lit/static-html.js';
import { MetaComponent } from '@root/types';

const meta: MetaComponent = {
id: '6f359d06-bca5-4983-b588-c8c790531642',
title: 'Components/Link',
tags: ['package:HTML'],
parameters: {
badges: [],
design: {
type: 'figma',
url: 'https://www.figma.com/design/JIT5AdGYqv6bDRpfBPV8XR/Foundations-%26-Components-Next-Level?node-id=2016-47948',
},
},
args: {
text: 'Link Text',
href: 'https://imgur.com/FKmX7dt',
},
argTypes: {
text: {
name: 'Text',
description: 'Defines the text within the link.',
control: {
type: 'text',
},
table: {
category: 'General',
},
},
href: {
name: 'Href',
description: 'Defines the target URL for the link.',
control: {
type: 'text',
},
table: {
category: 'General',
},
},
},
};

export default meta;

type Story = StoryObj;

export const Default: Story = {
render: (args: Args) => {
return html` <a href="${args.href}">${args.text}</a> `;
},
};
28 changes: 0 additions & 28 deletions packages/styles/src/components/utilities.scss
Original file line number Diff line number Diff line change
Expand Up @@ -67,31 +67,3 @@ span.spacer {
@include color-mx.colored-background($color);
}
}

// TODO: refactor to link default styles
.text-auto {
a {
color: inherit;

&:hover {
opacity: 0.8;
}
}
}

a {
color: var(--post-contrast-color);

&:hover {
color: rgba(var(--post-contrast-color-rgb), 0.8);
}

@include utilities.high-contrast-mode() {
&,
&:visited,
&:focus,
&:hover {
color: LinkText !important;
}
}
}
1 change: 1 addition & 0 deletions packages/styles/src/elements/_index.scss
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
@use 'reset';
@use 'body';
@use 'link';
35 changes: 35 additions & 0 deletions packages/styles/src/elements/link.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@use '../functions/tokens';
@use '../tokens/elements';
@use '../mixins/utilities';

tokens.$default-map: elements.$post-link;

a {
text-decoration: tokens.get('post-link', 'decoration');
border-radius: tokens.get('post-link', 'border-radius');
color: inherit;

&:hover {
color: tokens.get('post-link', 'hover-fg');
}

@include utilities.focus-style(
'',
tokens.get('post-link', 'focus-outline-offset'),
tokens.get('post-link', 'focus-outline-width'),
tokens.get('post-link', 'focus-outline-color'),
tokens.get('post-link', 'focus-outline-style')
);

@include utilities.high-contrast-mode() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link is missing a hover and focus state on high contrast mode, you can check w3 website to know how they handle this: https://www.w3.org/WAI/ARIA/apg/practices/names-and-descriptions/

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is also a mixin to do this in the design-system:

// example
@include high-contrast-mode() {
  color: LinkText;
  
  &:hover {
    color: HighlightText;
  }
}
```

Here you can find he available color names: https://www.w3.org/TR/css-color-4/#css-system-colors

&,
&:focus,
&:hover {
color: LinkText !important;
}
}

&:visited {
color: VisitedText;
}
}