@mirohq/design-system-link 1.2.23 → 1.3.0-link.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -25,48 +25,47 @@ const StyledLink = designSystemStitches.styled(designSystemPrimitive.Primitive.a
25
25
  borderBottom: "1px solid currentColor",
26
26
  cursor: "pointer",
27
27
  transition: "border ".concat(TRANSITION_TIME, ", color ").concat(TRANSITION_TIME),
28
- // asButton
29
- background: "none",
30
- padding: "$0",
31
- margin: "$0",
32
- font: "inherit",
28
+ paddingX: "2px",
29
+ ...designSystemStyles.focus.css({
30
+ boxShadow: "$focus-small"
31
+ }),
33
32
  variants: {
34
33
  variant: {
35
34
  primary: {
36
- color: "rgba(66, 98, 255, 1)",
37
- borderColor: "rgba(217, 224, 255, 1)",
38
- ...designSystemStyles.focus.defaults,
35
+ color: "$text-primary",
36
+ borderColor: "$border-primary",
39
37
  [hoverSelector]: {
40
- color: "rgba(69, 91, 237, 1)",
41
- borderColor: "rgba(104, 129, 255, 1)"
38
+ color: "$text-primary-hover",
39
+ backgroundColor: "$background-primary-subtle-hover",
40
+ borderColor: "$border-primary-hover"
42
41
  },
43
42
  [activeSelector]: {
44
- color: "rgba(61, 81, 212, 1)",
45
- borderColor: "rgba(66, 98, 255, 1)"
43
+ color: "$text-primary-active",
44
+ backgroundColor: "transparent",
45
+ borderColor: "$border-primary-active"
46
46
  }
47
47
  },
48
48
  secondary: {
49
- color: "rgba(95, 92, 128, 1)",
50
- borderColor: "rgba(235, 235, 239, 1)",
49
+ color: "$text-neutrals-subtle",
50
+ borderColor: "$border-neutrals-text-subtle",
51
51
  ...designSystemStyles.focus.defaults,
52
52
  [hoverSelector]: {
53
- color: "rgba(95, 92, 128, 1)",
54
- borderColor: "rgba(147, 145, 166, 1)"
53
+ color: "$text-neutrals-subtle-hover",
54
+ backgroundColor: "$background-neutrals-subtle-hover",
55
+ borderColor: "$border-neutrals-text-subtle-hover"
55
56
  },
56
57
  [activeSelector]: {
57
- color: "rgba(95, 92, 128, 1)",
58
- borderColor: "rgba(147, 145, 166, 1)"
58
+ color: "$text-neutrals-subtle-active",
59
+ backgroundColor: "transparent",
60
+ borderColor: "$border-neutrals-text-subtle-active"
59
61
  }
60
62
  }
61
63
  },
62
- dashed: {
63
- true: {
64
- borderStyle: "dashed"
65
- }
66
- },
67
- disabled: {
64
+ asButton: {
68
65
  true: {
69
- pointerEvents: "none"
66
+ background: "none",
67
+ paddingY: "$0",
68
+ font: "inherit"
70
69
  }
71
70
  }
72
71
  }
@@ -77,7 +76,6 @@ const Link = React__default["default"].forwardRef(
77
76
  variant = "primary",
78
77
  disabled = false,
79
78
  "aria-disabled": ariaDisabled,
80
- dashed = false,
81
79
  asChild,
82
80
  rel = "",
83
81
  target,
@@ -131,16 +129,16 @@ const Link = React__default["default"].forwardRef(
131
129
  "data-pressed": isPressed ? "" : void 0,
132
130
  "data-hovered": isHovered ? "" : void 0,
133
131
  asChild: asButton || asChild,
132
+ asButton,
134
133
  href,
135
134
  variant,
136
135
  disabled,
137
136
  "aria-disabled": !asButton && (disabled || designSystemUtils.booleanify(ariaDisabled)) ? "true" : void 0,
138
- dashed,
139
137
  tabIndex: tabIndex != null ? tabIndex : disabled && !asButton ? -1 : asChild === true && !asButton ? tabIndex != null ? tabIndex : 0 : void 0,
140
138
  rel: relProp,
141
139
  target,
142
140
  ref: forwardRef,
143
- children: asButton ? /* @__PURE__ */ jsxRuntime.jsx("button", { disabled, children }) : children
141
+ children: asButton ? /* @__PURE__ */ jsxRuntime.jsx("button", { children }) : children
144
142
  }
145
143
  );
146
144
  }
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/link.styled.ts","../src/link.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { focus } from '@mirohq/design-system-styles'\n\nconst TRANSITION_TIME = '250ms'\n\nconst activeSelector = '&:active, &[data-pressed]'\nconst hoverSelector = '&:hover, &[data-hovered]'\n\nexport const StyledLink = styled(Primitive.a, {\n textDecoration: 'none',\n border: 0,\n borderBottom: '1px solid currentColor',\n cursor: 'pointer',\n transition: `border ${TRANSITION_TIME}, color ${TRANSITION_TIME}`,\n\n // asButton\n background: 'none',\n padding: '$0',\n margin: '$0',\n font: 'inherit',\n\n variants: {\n variant: {\n primary: {\n color: 'rgba(66, 98, 255, 1)',\n borderColor: 'rgba(217, 224, 255, 1)',\n ...focus.defaults,\n [hoverSelector]: {\n color: 'rgba(69, 91, 237, 1)',\n borderColor: 'rgba(104, 129, 255, 1)',\n },\n [activeSelector]: {\n color: 'rgba(61, 81, 212, 1)',\n borderColor: 'rgba(66, 98, 255, 1)',\n },\n },\n secondary: {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(235, 235, 239, 1)',\n ...focus.defaults,\n [hoverSelector]: {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n [activeSelector]: {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n },\n },\n dashed: {\n true: {\n borderStyle: 'dashed',\n },\n },\n disabled: {\n true: {\n pointerEvents: 'none',\n },\n },\n },\n})\n\nexport type StyledLinkProps = ComponentPropsWithRef<typeof StyledLink>\n","import React from 'react'\nimport type { ElementRef, ReactNode, DOMAttributes } from 'react'\nimport { mergeProps } from '@react-aria/utils'\nimport { booleanify, removeEventProps } from '@mirohq/design-system-utils'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport type { PressProps } from '@mirohq/design-system-use-press'\n\nimport type { StyledLinkProps } from './link.styled'\nimport { StyledLink } from './link.styled'\n\nexport interface LinkProps extends StyledLinkProps, PressProps, HoverEvents {\n /**\n * The content\n */\n children: ReactNode\n\n /**\n * Change the link styles\n */\n variant?: StyledLinkProps['variant']\n\n /**\n * Set the underline to dashed mode\n */\n dashed?: boolean\n\n /**\n * Make the link non-interactive\n */\n disabled?: boolean\n}\n\nexport const Link = React.forwardRef<ElementRef<'a' | 'button'>, LinkProps>(\n (\n {\n variant = 'primary',\n disabled = false,\n 'aria-disabled': ariaDisabled,\n dashed = false,\n asChild,\n rel = '',\n target,\n href,\n onClick,\n onPress,\n children,\n tabIndex,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const asButton = href === undefined && Boolean(onPress ?? onClick)\n let elementProps: DOMAttributes<any> = { ...restProps, onClick }\n\n if (disabled || booleanify(ariaDisabled)) {\n elementProps = removeEventProps(\n elementProps,\n disabled ? [] : ['onBlur', 'onFocus']\n )\n }\n\n const { pressProps, isPressed } = usePress({\n preventFocusOnPress: true,\n disabled: disabled || booleanify(ariaDisabled),\n onPress,\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n elementProps = mergeProps(pressProps, hoverProps)\n\n let relProp: string | undefined = rel\n\n if (!asButton && target === '_blank') {\n if (!relProp.includes('noreferrer')) {\n relProp = `noreferrer ${relProp}`\n }\n\n if (!relProp.includes('noopener')) {\n relProp = `noopener ${relProp}`\n }\n\n relProp = relProp.trim()\n }\n\n if (relProp === '') {\n relProp = undefined\n }\n\n return (\n <StyledLink\n {...elementProps}\n data-pressed={isPressed ? '' : undefined}\n data-hovered={isHovered ? '' : undefined}\n asChild={asButton || asChild}\n href={href}\n variant={variant}\n disabled={disabled}\n aria-disabled={\n !asButton && (disabled || booleanify(ariaDisabled))\n ? 'true'\n : undefined\n }\n dashed={dashed}\n tabIndex={\n tabIndex != null\n ? tabIndex\n : disabled && !asButton\n ? -1\n : asChild === true && !asButton\n ? tabIndex ?? 0\n : undefined\n }\n rel={relProp}\n target={target}\n // Link can be an <button> but TS will never know because it will only happen in runtime via asChild\n // @ts-expect-error\n ref={forwardRef}\n >\n {asButton ? <button disabled={disabled}>{children}</button> : children}\n </StyledLink>\n )\n }\n)\n"],"names":["styled","Primitive","focus","React","booleanify","removeEventProps","usePress","useHover","mergeProps","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/link.styled.ts","../src/link.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { focus } from '@mirohq/design-system-styles'\n\nconst TRANSITION_TIME = '250ms'\n\nconst activeSelector = '&:active, &[data-pressed]'\nconst hoverSelector = '&:hover, &[data-hovered]'\n\nexport const StyledLink = styled(Primitive.a, {\n textDecoration: 'none',\n border: 0,\n borderBottom: '1px solid currentColor',\n cursor: 'pointer',\n transition: `border ${TRANSITION_TIME}, color ${TRANSITION_TIME}`,\n paddingX: '2px',\n\n ...focus.css({\n boxShadow: '$focus-small',\n }),\n\n variants: {\n variant: {\n primary: {\n color: '$text-primary',\n borderColor: '$border-primary',\n [hoverSelector]: {\n color: '$text-primary-hover',\n backgroundColor: '$background-primary-subtle-hover',\n borderColor: '$border-primary-hover',\n },\n [activeSelector]: {\n color: '$text-primary-active',\n backgroundColor: 'transparent',\n borderColor: '$border-primary-active',\n },\n },\n secondary: {\n color: '$text-neutrals-subtle',\n borderColor: '$border-neutrals-text-subtle',\n ...focus.defaults,\n [hoverSelector]: {\n color: '$text-neutrals-subtle-hover',\n backgroundColor: '$background-neutrals-subtle-hover',\n borderColor: '$border-neutrals-text-subtle-hover',\n },\n [activeSelector]: {\n color: '$text-neutrals-subtle-active',\n backgroundColor: 'transparent',\n borderColor: '$border-neutrals-text-subtle-active',\n },\n },\n },\n asButton: {\n true: {\n background: 'none',\n paddingY: '$0',\n font: 'inherit',\n },\n },\n },\n})\n\nexport type StyledLinkProps = ComponentPropsWithRef<typeof StyledLink>\n","import React from 'react'\nimport type { ElementRef, ReactNode, DOMAttributes } from 'react'\nimport { mergeProps } from '@react-aria/utils'\nimport { booleanify, removeEventProps } from '@mirohq/design-system-utils'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport type { PressProps } from '@mirohq/design-system-use-press'\n\nimport type { StyledLinkProps } from './link.styled'\nimport { StyledLink } from './link.styled'\n\nexport interface LinkProps extends StyledLinkProps, PressProps, HoverEvents {\n /**\n * The content\n */\n children: ReactNode\n\n /**\n * Change the link styles\n */\n variant?: StyledLinkProps['variant']\n}\n\nexport const Link = React.forwardRef<ElementRef<'a' | 'button'>, LinkProps>(\n (\n {\n variant = 'primary',\n disabled = false,\n 'aria-disabled': ariaDisabled,\n asChild,\n rel = '',\n target,\n href,\n onClick,\n onPress,\n children,\n tabIndex,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const asButton = href === undefined && Boolean(onPress ?? onClick)\n let elementProps: DOMAttributes<any> = { ...restProps, onClick }\n\n if (disabled || booleanify(ariaDisabled)) {\n elementProps = removeEventProps(\n elementProps,\n disabled ? [] : ['onBlur', 'onFocus']\n )\n }\n\n const { pressProps, isPressed } = usePress({\n preventFocusOnPress: true,\n disabled: disabled || booleanify(ariaDisabled),\n onPress,\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n elementProps = mergeProps(pressProps, hoverProps)\n\n let relProp: string | undefined = rel\n\n if (!asButton && target === '_blank') {\n if (!relProp.includes('noreferrer')) {\n relProp = `noreferrer ${relProp}`\n }\n\n if (!relProp.includes('noopener')) {\n relProp = `noopener ${relProp}`\n }\n\n relProp = relProp.trim()\n }\n\n if (relProp === '') {\n relProp = undefined\n }\n\n return (\n <StyledLink\n {...elementProps}\n data-pressed={isPressed ? '' : undefined}\n data-hovered={isHovered ? '' : undefined}\n asChild={asButton || asChild}\n asButton={asButton}\n href={href}\n variant={variant}\n disabled={disabled}\n aria-disabled={\n !asButton && (disabled || booleanify(ariaDisabled))\n ? 'true'\n : undefined\n }\n tabIndex={\n tabIndex != null\n ? tabIndex\n : disabled && !asButton\n ? -1\n : asChild === true && !asButton\n ? tabIndex ?? 0\n : undefined\n }\n rel={relProp}\n target={target}\n // Link can be an <button> but TS will never know because it will only happen in runtime via asChild\n // @ts-expect-error\n ref={forwardRef}\n >\n {asButton ? <button>{children}</button> : children}\n </StyledLink>\n )\n }\n)\n"],"names":["styled","Primitive","focus","React","booleanify","removeEventProps","usePress","useHover","mergeProps","jsx"],"mappings":"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"}
package/dist/module.js CHANGED
@@ -17,48 +17,47 @@ const StyledLink = styled(Primitive.a, {
17
17
  borderBottom: "1px solid currentColor",
18
18
  cursor: "pointer",
19
19
  transition: "border ".concat(TRANSITION_TIME, ", color ").concat(TRANSITION_TIME),
20
- // asButton
21
- background: "none",
22
- padding: "$0",
23
- margin: "$0",
24
- font: "inherit",
20
+ paddingX: "2px",
21
+ ...focus.css({
22
+ boxShadow: "$focus-small"
23
+ }),
25
24
  variants: {
26
25
  variant: {
27
26
  primary: {
28
- color: "rgba(66, 98, 255, 1)",
29
- borderColor: "rgba(217, 224, 255, 1)",
30
- ...focus.defaults,
27
+ color: "$text-primary",
28
+ borderColor: "$border-primary",
31
29
  [hoverSelector]: {
32
- color: "rgba(69, 91, 237, 1)",
33
- borderColor: "rgba(104, 129, 255, 1)"
30
+ color: "$text-primary-hover",
31
+ backgroundColor: "$background-primary-subtle-hover",
32
+ borderColor: "$border-primary-hover"
34
33
  },
35
34
  [activeSelector]: {
36
- color: "rgba(61, 81, 212, 1)",
37
- borderColor: "rgba(66, 98, 255, 1)"
35
+ color: "$text-primary-active",
36
+ backgroundColor: "transparent",
37
+ borderColor: "$border-primary-active"
38
38
  }
39
39
  },
40
40
  secondary: {
41
- color: "rgba(95, 92, 128, 1)",
42
- borderColor: "rgba(235, 235, 239, 1)",
41
+ color: "$text-neutrals-subtle",
42
+ borderColor: "$border-neutrals-text-subtle",
43
43
  ...focus.defaults,
44
44
  [hoverSelector]: {
45
- color: "rgba(95, 92, 128, 1)",
46
- borderColor: "rgba(147, 145, 166, 1)"
45
+ color: "$text-neutrals-subtle-hover",
46
+ backgroundColor: "$background-neutrals-subtle-hover",
47
+ borderColor: "$border-neutrals-text-subtle-hover"
47
48
  },
48
49
  [activeSelector]: {
49
- color: "rgba(95, 92, 128, 1)",
50
- borderColor: "rgba(147, 145, 166, 1)"
50
+ color: "$text-neutrals-subtle-active",
51
+ backgroundColor: "transparent",
52
+ borderColor: "$border-neutrals-text-subtle-active"
51
53
  }
52
54
  }
53
55
  },
54
- dashed: {
55
- true: {
56
- borderStyle: "dashed"
57
- }
58
- },
59
- disabled: {
56
+ asButton: {
60
57
  true: {
61
- pointerEvents: "none"
58
+ background: "none",
59
+ paddingY: "$0",
60
+ font: "inherit"
62
61
  }
63
62
  }
64
63
  }
@@ -69,7 +68,6 @@ const Link = React.forwardRef(
69
68
  variant = "primary",
70
69
  disabled = false,
71
70
  "aria-disabled": ariaDisabled,
72
- dashed = false,
73
71
  asChild,
74
72
  rel = "",
75
73
  target,
@@ -123,16 +121,16 @@ const Link = React.forwardRef(
123
121
  "data-pressed": isPressed ? "" : void 0,
124
122
  "data-hovered": isHovered ? "" : void 0,
125
123
  asChild: asButton || asChild,
124
+ asButton,
126
125
  href,
127
126
  variant,
128
127
  disabled,
129
128
  "aria-disabled": !asButton && (disabled || booleanify(ariaDisabled)) ? "true" : void 0,
130
- dashed,
131
129
  tabIndex: tabIndex != null ? tabIndex : disabled && !asButton ? -1 : asChild === true && !asButton ? tabIndex != null ? tabIndex : 0 : void 0,
132
130
  rel: relProp,
133
131
  target,
134
132
  ref: forwardRef,
135
- children: asButton ? /* @__PURE__ */ jsx("button", { disabled, children }) : children
133
+ children: asButton ? /* @__PURE__ */ jsx("button", { children }) : children
136
134
  }
137
135
  );
138
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../src/link.styled.ts","../src/link.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { focus } from '@mirohq/design-system-styles'\n\nconst TRANSITION_TIME = '250ms'\n\nconst activeSelector = '&:active, &[data-pressed]'\nconst hoverSelector = '&:hover, &[data-hovered]'\n\nexport const StyledLink = styled(Primitive.a, {\n textDecoration: 'none',\n border: 0,\n borderBottom: '1px solid currentColor',\n cursor: 'pointer',\n transition: `border ${TRANSITION_TIME}, color ${TRANSITION_TIME}`,\n\n // asButton\n background: 'none',\n padding: '$0',\n margin: '$0',\n font: 'inherit',\n\n variants: {\n variant: {\n primary: {\n color: 'rgba(66, 98, 255, 1)',\n borderColor: 'rgba(217, 224, 255, 1)',\n ...focus.defaults,\n [hoverSelector]: {\n color: 'rgba(69, 91, 237, 1)',\n borderColor: 'rgba(104, 129, 255, 1)',\n },\n [activeSelector]: {\n color: 'rgba(61, 81, 212, 1)',\n borderColor: 'rgba(66, 98, 255, 1)',\n },\n },\n secondary: {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(235, 235, 239, 1)',\n ...focus.defaults,\n [hoverSelector]: {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n [activeSelector]: {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n },\n },\n dashed: {\n true: {\n borderStyle: 'dashed',\n },\n },\n disabled: {\n true: {\n pointerEvents: 'none',\n },\n },\n },\n})\n\nexport type StyledLinkProps = ComponentPropsWithRef<typeof StyledLink>\n","import React from 'react'\nimport type { ElementRef, ReactNode, DOMAttributes } from 'react'\nimport { mergeProps } from '@react-aria/utils'\nimport { booleanify, removeEventProps } from '@mirohq/design-system-utils'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport type { PressProps } from '@mirohq/design-system-use-press'\n\nimport type { StyledLinkProps } from './link.styled'\nimport { StyledLink } from './link.styled'\n\nexport interface LinkProps extends StyledLinkProps, PressProps, HoverEvents {\n /**\n * The content\n */\n children: ReactNode\n\n /**\n * Change the link styles\n */\n variant?: StyledLinkProps['variant']\n\n /**\n * Set the underline to dashed mode\n */\n dashed?: boolean\n\n /**\n * Make the link non-interactive\n */\n disabled?: boolean\n}\n\nexport const Link = React.forwardRef<ElementRef<'a' | 'button'>, LinkProps>(\n (\n {\n variant = 'primary',\n disabled = false,\n 'aria-disabled': ariaDisabled,\n dashed = false,\n asChild,\n rel = '',\n target,\n href,\n onClick,\n onPress,\n children,\n tabIndex,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const asButton = href === undefined && Boolean(onPress ?? onClick)\n let elementProps: DOMAttributes<any> = { ...restProps, onClick }\n\n if (disabled || booleanify(ariaDisabled)) {\n elementProps = removeEventProps(\n elementProps,\n disabled ? [] : ['onBlur', 'onFocus']\n )\n }\n\n const { pressProps, isPressed } = usePress({\n preventFocusOnPress: true,\n disabled: disabled || booleanify(ariaDisabled),\n onPress,\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n elementProps = mergeProps(pressProps, hoverProps)\n\n let relProp: string | undefined = rel\n\n if (!asButton && target === '_blank') {\n if (!relProp.includes('noreferrer')) {\n relProp = `noreferrer ${relProp}`\n }\n\n if (!relProp.includes('noopener')) {\n relProp = `noopener ${relProp}`\n }\n\n relProp = relProp.trim()\n }\n\n if (relProp === '') {\n relProp = undefined\n }\n\n return (\n <StyledLink\n {...elementProps}\n data-pressed={isPressed ? '' : undefined}\n data-hovered={isHovered ? '' : undefined}\n asChild={asButton || asChild}\n href={href}\n variant={variant}\n disabled={disabled}\n aria-disabled={\n !asButton && (disabled || booleanify(ariaDisabled))\n ? 'true'\n : undefined\n }\n dashed={dashed}\n tabIndex={\n tabIndex != null\n ? tabIndex\n : disabled && !asButton\n ? -1\n : asChild === true && !asButton\n ? tabIndex ?? 0\n : undefined\n }\n rel={relProp}\n target={target}\n // Link can be an <button> but TS will never know because it will only happen in runtime via asChild\n // @ts-expect-error\n ref={forwardRef}\n >\n {asButton ? <button disabled={disabled}>{children}</button> : children}\n </StyledLink>\n )\n }\n)\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../src/link.styled.ts","../src/link.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { focus } from '@mirohq/design-system-styles'\n\nconst TRANSITION_TIME = '250ms'\n\nconst activeSelector = '&:active, &[data-pressed]'\nconst hoverSelector = '&:hover, &[data-hovered]'\n\nexport const StyledLink = styled(Primitive.a, {\n textDecoration: 'none',\n border: 0,\n borderBottom: '1px solid currentColor',\n cursor: 'pointer',\n transition: `border ${TRANSITION_TIME}, color ${TRANSITION_TIME}`,\n paddingX: '2px',\n\n ...focus.css({\n boxShadow: '$focus-small',\n }),\n\n variants: {\n variant: {\n primary: {\n color: '$text-primary',\n borderColor: '$border-primary',\n [hoverSelector]: {\n color: '$text-primary-hover',\n backgroundColor: '$background-primary-subtle-hover',\n borderColor: '$border-primary-hover',\n },\n [activeSelector]: {\n color: '$text-primary-active',\n backgroundColor: 'transparent',\n borderColor: '$border-primary-active',\n },\n },\n secondary: {\n color: '$text-neutrals-subtle',\n borderColor: '$border-neutrals-text-subtle',\n ...focus.defaults,\n [hoverSelector]: {\n color: '$text-neutrals-subtle-hover',\n backgroundColor: '$background-neutrals-subtle-hover',\n borderColor: '$border-neutrals-text-subtle-hover',\n },\n [activeSelector]: {\n color: '$text-neutrals-subtle-active',\n backgroundColor: 'transparent',\n borderColor: '$border-neutrals-text-subtle-active',\n },\n },\n },\n asButton: {\n true: {\n background: 'none',\n paddingY: '$0',\n font: 'inherit',\n },\n },\n },\n})\n\nexport type StyledLinkProps = ComponentPropsWithRef<typeof StyledLink>\n","import React from 'react'\nimport type { ElementRef, ReactNode, DOMAttributes } from 'react'\nimport { mergeProps } from '@react-aria/utils'\nimport { booleanify, removeEventProps } from '@mirohq/design-system-utils'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport type { PressProps } from '@mirohq/design-system-use-press'\n\nimport type { StyledLinkProps } from './link.styled'\nimport { StyledLink } from './link.styled'\n\nexport interface LinkProps extends StyledLinkProps, PressProps, HoverEvents {\n /**\n * The content\n */\n children: ReactNode\n\n /**\n * Change the link styles\n */\n variant?: StyledLinkProps['variant']\n}\n\nexport const Link = React.forwardRef<ElementRef<'a' | 'button'>, LinkProps>(\n (\n {\n variant = 'primary',\n disabled = false,\n 'aria-disabled': ariaDisabled,\n asChild,\n rel = '',\n target,\n href,\n onClick,\n onPress,\n children,\n tabIndex,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const asButton = href === undefined && Boolean(onPress ?? onClick)\n let elementProps: DOMAttributes<any> = { ...restProps, onClick }\n\n if (disabled || booleanify(ariaDisabled)) {\n elementProps = removeEventProps(\n elementProps,\n disabled ? [] : ['onBlur', 'onFocus']\n )\n }\n\n const { pressProps, isPressed } = usePress({\n preventFocusOnPress: true,\n disabled: disabled || booleanify(ariaDisabled),\n onPress,\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n elementProps = mergeProps(pressProps, hoverProps)\n\n let relProp: string | undefined = rel\n\n if (!asButton && target === '_blank') {\n if (!relProp.includes('noreferrer')) {\n relProp = `noreferrer ${relProp}`\n }\n\n if (!relProp.includes('noopener')) {\n relProp = `noopener ${relProp}`\n }\n\n relProp = relProp.trim()\n }\n\n if (relProp === '') {\n relProp = undefined\n }\n\n return (\n <StyledLink\n {...elementProps}\n data-pressed={isPressed ? '' : undefined}\n data-hovered={isHovered ? '' : undefined}\n asChild={asButton || asChild}\n asButton={asButton}\n href={href}\n variant={variant}\n disabled={disabled}\n aria-disabled={\n !asButton && (disabled || booleanify(ariaDisabled))\n ? 'true'\n : undefined\n }\n tabIndex={\n tabIndex != null\n ? tabIndex\n : disabled && !asButton\n ? -1\n : asChild === true && !asButton\n ? tabIndex ?? 0\n : undefined\n }\n rel={relProp}\n target={target}\n // Link can be an <button> but TS will never know because it will only happen in runtime via asChild\n // @ts-expect-error\n ref={forwardRef}\n >\n {asButton ? <button>{children}</button> : children}\n </StyledLink>\n )\n }\n)\n"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -9,12 +9,10 @@ import * as _stitches_react_types_styled_component from '@stitches/react/types/s
9
9
 
10
10
  declare const StyledLink: react.ForwardRefExoticComponent<Omit<Omit<{
11
11
  variant?: "primary" | "secondary" | undefined;
12
- dashed?: boolean | "true" | undefined;
13
- disabled?: boolean | "true" | undefined;
14
- }, "dashed" | "disabled" | "variant"> & _stitches_react_types_styled_component.TransformProps<{
12
+ asButton?: boolean | "true" | undefined;
13
+ }, "variant" | "asButton"> & _stitches_react_types_styled_component.TransformProps<{
15
14
  variant?: "primary" | "secondary" | undefined;
16
- dashed?: boolean | "true" | undefined;
17
- disabled?: boolean | "true" | undefined;
15
+ asButton?: boolean | "true" | undefined;
18
16
  }, {}> & _mirohq_design_system_stitches.SafeProps<Omit<Omit<react.DetailedHTMLProps<react.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
19
17
  ref?: ((instance: HTMLAnchorElement | null) => void) | react.RefObject<HTMLAnchorElement> | null | undefined;
20
18
  } & {
@@ -231,7 +229,6 @@ declare const StyledLink: react.ForwardRefExoticComponent<Omit<Omit<{
231
229
  readonly 'focus-small-outline': "0 0 0 2px $colors$border-focus-outer, inset 0 0 0 1px $colors$border-focus-middle, inset 0 0 0 2px $colors$border-focus-inner";
232
230
  readonly 'focus-large': "0 0 0 4px $colors$border-focus-inner, inset 0 0 0 2px $colors$border-focus-middle, inset 0 0 0 3px $colors$border-focus-outer";
233
231
  readonly 'focus-controls': "0 0 0 1px $colors$border-focus-inner, 0 0 0 3px $colors$border-focus-middle, 0 0 0 5px $colors$border-focus-outer";
234
- readonly 'focus-controls-error': "0 0 0 1px $colors$border-focus-inner, 0 0 0 3px $colors$border-danger, 0 0 0 5px $colors$background-danger-subtle-hover";
235
232
  };
236
233
  sizes: {
237
234
  readonly number: string;
@@ -301,9 +298,8 @@ declare const StyledLink: react.ForwardRefExoticComponent<Omit<Omit<{
301
298
  };
302
299
  'z-indices': {
303
300
  readonly dropdownMenu: 100;
304
- readonly select: 200;
305
- readonly popover: 300;
306
- readonly tooltip: 400;
301
+ readonly popover: 200;
302
+ readonly tooltip: 300;
307
303
  };
308
304
  }, {
309
305
  readonly background: "colors";
@@ -491,8 +487,7 @@ declare const StyledLink: react.ForwardRefExoticComponent<Omit<Omit<{
491
487
  children?: react.ReactNode;
492
488
  } & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLAnchorElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"a">>, {
493
489
  variant?: "primary" | "secondary" | undefined;
494
- dashed?: boolean | "true" | undefined;
495
- disabled?: boolean | "true" | undefined;
490
+ asButton?: boolean | "true" | undefined;
496
491
  }, {}>;
497
492
  declare type StyledLinkProps = ComponentPropsWithRef<typeof StyledLink>;
498
493
 
@@ -505,14 +500,6 @@ interface LinkProps extends StyledLinkProps, PressProps, HoverEvents {
505
500
  * Change the link styles
506
501
  */
507
502
  variant?: StyledLinkProps['variant'];
508
- /**
509
- * Set the underline to dashed mode
510
- */
511
- dashed?: boolean;
512
- /**
513
- * Make the link non-interactive
514
- */
515
- disabled?: boolean;
516
503
  }
517
504
  declare const Link: react__default.ForwardRefExoticComponent<Omit<LinkProps, "ref"> & react__default.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
518
505
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirohq/design-system-link",
3
- "version": "1.2.23",
3
+ "version": "1.3.0-link.0",
4
4
  "description": "",
5
5
  "author": "Miro",
6
6
  "source": "src/index.ts",
@@ -30,9 +30,9 @@
30
30
  "@react-aria/utils": "^3.13.0",
31
31
  "@react-types/shared": "^3.16.0",
32
32
  "@mirohq/design-system-primitive": "^1.1.1",
33
+ "@mirohq/design-system-stitches": "^2.3.10",
33
34
  "@mirohq/design-system-utils": "^0.14.3",
34
- "@mirohq/design-system-stitches": "^2.3.11",
35
- "@mirohq/design-system-styles": "^1.1.7"
35
+ "@mirohq/design-system-styles": "^1.1.7-link.0"
36
36
  },
37
37
  "scripts": {
38
38
  "build": "rollup -c ../../../rollup.config.js",