Skip to content

Commit

Permalink
feat(link): implement link component for utah design system
Browse files Browse the repository at this point in the history
  • Loading branch information
stdavis committed Jul 17, 2023
1 parent 54ebc85 commit 89d1a48
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
34 changes: 34 additions & 0 deletions src/utah-design-system/Link.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import PropTypes from 'prop-types';
import { twMerge } from 'tailwind-merge';
import Icon from './Icon';

export default function Link({ className, href, external, children }) {
return (
<a
href={href}
target={external ? '_blank' : '_self'}
rel={external ? 'noopener noreferrer' : ''}
className={twMerge(
'inline-flex cursor-pointer items-center text-sky-600 hover:bg-slate-100 hover:text-sky-800',
className
)}
>
<span className="underline">{children}</span>
{external ? (
<Icon
className="ml-1"
name={Icon.Names.externalLink}
label="more info"
size="xs"
/>
) : null}
</a>
);
}

Link.propTypes = {
className: PropTypes.string,
href: PropTypes.string.isRequired,
external: PropTypes.bool,
children: PropTypes.node.isRequired,
};
16 changes: 16 additions & 0 deletions src/utah-design-system/Link.stories.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import Link from './Link';

export default {
title: 'Utah Design System/Link',
component: Link,
};

export const Default = () => (
<>
This is an external link{' '}
<Link href="https://www.google.com" external>
google
</Link>
. Internal links <Link href="./test.html">look like this</Link>.
</>
);
1 change: 1 addition & 0 deletions tailwind.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export default {
error: colors.red,
info: colors.sky,
warning: colors.amber,
sky: colors.sky,
},
fontFamily: {
sans: ['Source Sans Pro', 'Helvetica Neue', 'sans-serif'],
Expand Down

0 comments on commit 89d1a48

Please sign in to comment.