(Anchor) tag.',
+ },
+ },
+ },
+ argTypes: {
+ variant: {
+ options: ['primary', 'secondary', 'dark'],
+ control: {
+ type: 'inline-radio',
+ },
+ },
+ withIcon: {
+ control: {
+ type: 'boolean',
+ },
+ },
+ inline: {
+ control: {
+ type: 'boolean',
+ },
+ },
+ href: {
+ control: {
+ type: 'text',
+ },
+ },
+ target: {
+ options: ['_self', '_blank', '_parent', '_top'],
+ control: {
+ type: 'select',
+ },
+ },
+ },
+ args: {
+ variant: 'primary',
+ href: '#',
+ },
+};
+
+/* eslint-disable @typescript-eslint/no-explicit-any */
+export const Base = (args: any) => html`
+ Link
+
+`;
+
+export const Variants = {
+ render: () => html`
+
+
Primary link
+
Secondary link
+
+ Dark link
+
+
+ `,
+};
+
+export const Inline = {
+ render: () => html`
+
+ Your invoice credit is running low, which may affect your ability to process invoices. Please
+ top up your credits by viewing our plans to
+ avoid interruptions. If you need assistance, our
+ support team is available to help.
+
+ `,
+};
+
+export const WithIcon = {
+ render: () => html`
+
+
Primary link
+
Secondary link
+
+ Dark link
+
+
+ `,
+};
diff --git a/src/components/link/fds-link.ts b/src/components/link/fds-link.ts
new file mode 100644
index 00000000..6b07cdad
--- /dev/null
+++ b/src/components/link/fds-link.ts
@@ -0,0 +1,50 @@
+import { html, LitElement, TemplateResult, unsafeCSS } from 'lit';
+import { customElement, property } from 'lit/decorators.js';
+import { ifDefined } from 'lit/directives/if-defined.js';
+
+import style from './fds-link.scss';
+
+export type LinkVariant = 'primary' | 'secondary' | 'dark';
+export type LinkTarget = '_blank' | '_parent' | '_self' | '_top';
+
+@customElement('fds-link')
+export class FdsLink extends LitElement {
+ static get styles() {
+ return [unsafeCSS(style)];
+ }
+
+ @property({ type: String, reflect: true })
+ variant: LinkVariant = 'primary';
+
+ @property({ type: Boolean, reflect: true, attribute: 'with-icon' })
+ withIcon? = false;
+
+ @property({ type: Boolean, reflect: true })
+ inline? = false;
+
+ @property({ type: Boolean, reflect: true })
+ autofocus = false;
+
+ @property({ type: String, reflect: true })
+ href = '';
+
+ @property({ type: String })
+ target: LinkTarget = '_self';
+
+ render(): TemplateResult {
+ const target = this.withIcon ? '_blank' : this.target;
+
+ return html`
+