@mirohq/design-system-link 1.2.14 → 1.2.15-use-press.2
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 +49 -39
- package/dist/main.js.map +1 -1
- package/dist/module.js +50 -40
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +10 -14
- package/package.json +6 -7
package/dist/main.js
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
6
|
var React = require('react');
|
|
6
|
-
var link = require('@react-aria/link');
|
|
7
7
|
var utils = require('@react-aria/utils');
|
|
8
|
-
var
|
|
8
|
+
var designSystemUtils = require('@mirohq/design-system-utils');
|
|
9
|
+
var interactions = require('@react-aria/interactions');
|
|
10
|
+
var designSystemUsePress = require('@mirohq/design-system-use-press');
|
|
9
11
|
var designSystemPrimitive = require('@mirohq/design-system-primitive');
|
|
10
12
|
var designSystemStitches = require('@mirohq/design-system-stitches');
|
|
11
13
|
var designSystemStyles = require('@mirohq/design-system-styles');
|
|
@@ -21,6 +23,7 @@ const StyledLink = designSystemStitches.styled(designSystemPrimitive.Primitive.a
|
|
|
21
23
|
borderBottom: "1px solid currentColor",
|
|
22
24
|
cursor: "pointer",
|
|
23
25
|
transition: `border ${TRANSITION_TIME}, color ${TRANSITION_TIME}`,
|
|
26
|
+
// asButton
|
|
24
27
|
background: "none",
|
|
25
28
|
padding: "$0",
|
|
26
29
|
margin: "$0",
|
|
@@ -71,7 +74,9 @@ const Link = React__default["default"].forwardRef(
|
|
|
71
74
|
({
|
|
72
75
|
variant = "primary",
|
|
73
76
|
disabled = false,
|
|
77
|
+
"aria-disabled": ariaDisabled,
|
|
74
78
|
dashed = false,
|
|
79
|
+
asChild,
|
|
75
80
|
rel = "",
|
|
76
81
|
target,
|
|
77
82
|
href,
|
|
@@ -79,33 +84,31 @@ const Link = React__default["default"].forwardRef(
|
|
|
79
84
|
onPress,
|
|
80
85
|
children,
|
|
81
86
|
tabIndex,
|
|
87
|
+
onHoverStart,
|
|
88
|
+
onHoverEnd,
|
|
89
|
+
onHoverChange,
|
|
82
90
|
...restProps
|
|
83
91
|
}, forwardRef) => {
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
);
|
|
104
|
-
const asButton = href == null && (onPress != null ? onPress : onClick) != null;
|
|
105
|
-
const elementProps = utils.mergeProps(
|
|
106
|
-
restProps,
|
|
107
|
-
asButton ? buttonProps : linkProps
|
|
108
|
-
);
|
|
92
|
+
const asButton = href === void 0 && Boolean(onPress != null ? onPress : onClick);
|
|
93
|
+
let elementProps = { ...restProps, onClick };
|
|
94
|
+
if (disabled || designSystemUtils.booleanify(ariaDisabled)) {
|
|
95
|
+
elementProps = designSystemUtils.removeEventProps(
|
|
96
|
+
elementProps,
|
|
97
|
+
disabled ? [] : ["onBlur", "onFocus"]
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
const { pressProps, isPressed } = designSystemUsePress.usePress({
|
|
101
|
+
preventFocusOnPress: true,
|
|
102
|
+
disabled: disabled || designSystemUtils.booleanify(ariaDisabled),
|
|
103
|
+
onPress,
|
|
104
|
+
...elementProps
|
|
105
|
+
});
|
|
106
|
+
const { hoverProps, isHovered } = interactions.useHover({
|
|
107
|
+
onHoverStart,
|
|
108
|
+
onHoverEnd,
|
|
109
|
+
onHoverChange
|
|
110
|
+
});
|
|
111
|
+
elementProps = utils.mergeProps(pressProps, hoverProps);
|
|
109
112
|
let relProp = rel;
|
|
110
113
|
if (!asButton && target === "_blank") {
|
|
111
114
|
if (!relProp.includes("noreferrer")) {
|
|
@@ -115,18 +118,25 @@ const Link = React__default["default"].forwardRef(
|
|
|
115
118
|
relProp = `noopener ${relProp}`;
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
|
-
return /* @__PURE__ */
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
121
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
122
|
+
StyledLink,
|
|
123
|
+
{
|
|
124
|
+
...elementProps,
|
|
125
|
+
"data-pressed": isPressed ? "" : void 0,
|
|
126
|
+
"data-hovered": isHovered ? "" : void 0,
|
|
127
|
+
asChild: asButton || asChild,
|
|
128
|
+
href,
|
|
129
|
+
variant,
|
|
130
|
+
disabled,
|
|
131
|
+
"aria-disabled": !asButton && (disabled || designSystemUtils.booleanify(ariaDisabled)) ? "true" : void 0,
|
|
132
|
+
dashed,
|
|
133
|
+
tabIndex: tabIndex != null ? tabIndex : disabled && !asButton ? -1 : asChild === true && !asButton ? tabIndex != null ? tabIndex : 0 : void 0,
|
|
134
|
+
rel: relProp.trim(),
|
|
135
|
+
target,
|
|
136
|
+
ref: forwardRef,
|
|
137
|
+
children: asButton ? /* @__PURE__ */ jsxRuntime.jsx("button", { disabled, children }) : children
|
|
138
|
+
}
|
|
139
|
+
);
|
|
130
140
|
}
|
|
131
141
|
);
|
|
132
142
|
|
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\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 '&:hover': {\n color: 'rgba(69, 91, 237, 1)',\n borderColor: 'rgba(104, 129, 255, 1)',\n },\n '&:active': {\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 '&:hover': {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n '&:active': {\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, {
|
|
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\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 '&:hover': {\n color: 'rgba(69, 91, 237, 1)',\n borderColor: 'rgba(104, 129, 255, 1)',\n },\n '&:active': {\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 '&:hover': {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n '&:active': {\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 = 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\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.trim()}\n target={target}\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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"}
|
package/dist/module.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
3
|
import { mergeProps } from '@react-aria/utils';
|
|
4
|
-
import {
|
|
4
|
+
import { booleanify, removeEventProps } from '@mirohq/design-system-utils';
|
|
5
|
+
import { useHover } from '@react-aria/interactions';
|
|
6
|
+
import { usePress } from '@mirohq/design-system-use-press';
|
|
5
7
|
import { Primitive } from '@mirohq/design-system-primitive';
|
|
6
8
|
import { styled } from '@mirohq/design-system-stitches';
|
|
7
9
|
import { focus } from '@mirohq/design-system-styles';
|
|
@@ -13,6 +15,7 @@ const StyledLink = styled(Primitive.a, {
|
|
|
13
15
|
borderBottom: "1px solid currentColor",
|
|
14
16
|
cursor: "pointer",
|
|
15
17
|
transition: `border ${TRANSITION_TIME}, color ${TRANSITION_TIME}`,
|
|
18
|
+
// asButton
|
|
16
19
|
background: "none",
|
|
17
20
|
padding: "$0",
|
|
18
21
|
margin: "$0",
|
|
@@ -63,7 +66,9 @@ const Link = React.forwardRef(
|
|
|
63
66
|
({
|
|
64
67
|
variant = "primary",
|
|
65
68
|
disabled = false,
|
|
69
|
+
"aria-disabled": ariaDisabled,
|
|
66
70
|
dashed = false,
|
|
71
|
+
asChild,
|
|
67
72
|
rel = "",
|
|
68
73
|
target,
|
|
69
74
|
href,
|
|
@@ -71,33 +76,31 @@ const Link = React.forwardRef(
|
|
|
71
76
|
onPress,
|
|
72
77
|
children,
|
|
73
78
|
tabIndex,
|
|
79
|
+
onHoverStart,
|
|
80
|
+
onHoverEnd,
|
|
81
|
+
onHoverChange,
|
|
74
82
|
...restProps
|
|
75
83
|
}, forwardRef) => {
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
);
|
|
96
|
-
const asButton = href == null && (onPress != null ? onPress : onClick) != null;
|
|
97
|
-
const elementProps = mergeProps(
|
|
98
|
-
restProps,
|
|
99
|
-
asButton ? buttonProps : linkProps
|
|
100
|
-
);
|
|
84
|
+
const asButton = href === void 0 && Boolean(onPress != null ? onPress : onClick);
|
|
85
|
+
let elementProps = { ...restProps, onClick };
|
|
86
|
+
if (disabled || booleanify(ariaDisabled)) {
|
|
87
|
+
elementProps = removeEventProps(
|
|
88
|
+
elementProps,
|
|
89
|
+
disabled ? [] : ["onBlur", "onFocus"]
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
const { pressProps, isPressed } = usePress({
|
|
93
|
+
preventFocusOnPress: true,
|
|
94
|
+
disabled: disabled || booleanify(ariaDisabled),
|
|
95
|
+
onPress,
|
|
96
|
+
...elementProps
|
|
97
|
+
});
|
|
98
|
+
const { hoverProps, isHovered } = useHover({
|
|
99
|
+
onHoverStart,
|
|
100
|
+
onHoverEnd,
|
|
101
|
+
onHoverChange
|
|
102
|
+
});
|
|
103
|
+
elementProps = mergeProps(pressProps, hoverProps);
|
|
101
104
|
let relProp = rel;
|
|
102
105
|
if (!asButton && target === "_blank") {
|
|
103
106
|
if (!relProp.includes("noreferrer")) {
|
|
@@ -107,18 +110,25 @@ const Link = React.forwardRef(
|
|
|
107
110
|
relProp = `noopener ${relProp}`;
|
|
108
111
|
}
|
|
109
112
|
}
|
|
110
|
-
return /* @__PURE__ */
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
113
|
+
return /* @__PURE__ */ jsx(
|
|
114
|
+
StyledLink,
|
|
115
|
+
{
|
|
116
|
+
...elementProps,
|
|
117
|
+
"data-pressed": isPressed ? "" : void 0,
|
|
118
|
+
"data-hovered": isHovered ? "" : void 0,
|
|
119
|
+
asChild: asButton || asChild,
|
|
120
|
+
href,
|
|
121
|
+
variant,
|
|
122
|
+
disabled,
|
|
123
|
+
"aria-disabled": !asButton && (disabled || booleanify(ariaDisabled)) ? "true" : void 0,
|
|
124
|
+
dashed,
|
|
125
|
+
tabIndex: tabIndex != null ? tabIndex : disabled && !asButton ? -1 : asChild === true && !asButton ? tabIndex != null ? tabIndex : 0 : void 0,
|
|
126
|
+
rel: relProp.trim(),
|
|
127
|
+
target,
|
|
128
|
+
ref: forwardRef,
|
|
129
|
+
children: asButton ? /* @__PURE__ */ jsx("button", { disabled, children }) : children
|
|
130
|
+
}
|
|
131
|
+
);
|
|
122
132
|
}
|
|
123
133
|
);
|
|
124
134
|
|
package/dist/module.js.map
CHANGED
|
@@ -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\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 '&:hover': {\n color: 'rgba(69, 91, 237, 1)',\n borderColor: 'rgba(104, 129, 255, 1)',\n },\n '&:active': {\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 '&:hover': {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n '&:active': {\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, {
|
|
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\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 '&:hover': {\n color: 'rgba(69, 91, 237, 1)',\n borderColor: 'rgba(104, 129, 255, 1)',\n },\n '&:active': {\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 '&:hover': {\n color: 'rgba(95, 92, 128, 1)',\n borderColor: 'rgba(147, 145, 166, 1)',\n },\n '&:active': {\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 = 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\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.trim()}\n target={target}\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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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import react__default, { ComponentPropsWithRef, ReactNode } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { HoverEvents } from '@react-types/shared';
|
|
4
|
+
import { PressProps } from '@mirohq/design-system-use-press';
|
|
4
5
|
import * as _mirohq_design_system_primitive from '@mirohq/design-system-primitive';
|
|
5
6
|
import * as _mirohq_design_system_stitches from '@mirohq/design-system-stitches';
|
|
6
7
|
import * as _stitches_react_types_css_util from '@stitches/react/types/css-util';
|
|
7
8
|
import * as _stitches_react_types_styled_component from '@stitches/react/types/styled-component';
|
|
8
9
|
|
|
9
|
-
declare const StyledLink: react.ForwardRefExoticComponent<
|
|
10
|
+
declare const StyledLink: react.ForwardRefExoticComponent<Omit<Omit<{
|
|
10
11
|
variant?: "primary" | "secondary" | undefined;
|
|
11
12
|
dashed?: boolean | "true" | undefined;
|
|
12
13
|
disabled?: boolean | "true" | undefined;
|
|
13
|
-
}, "
|
|
14
|
+
}, "dashed" | "disabled" | "variant"> & _stitches_react_types_styled_component.TransformProps<{
|
|
14
15
|
variant?: "primary" | "secondary" | undefined;
|
|
15
16
|
dashed?: boolean | "true" | undefined;
|
|
16
17
|
disabled?: boolean | "true" | undefined;
|
|
17
|
-
}, {}> & _mirohq_design_system_stitches.SafeProps<Omit<
|
|
18
|
+
}, {}> & _mirohq_design_system_stitches.SafeProps<Omit<Omit<react.DetailedHTMLProps<react.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
|
|
18
19
|
ref?: ((instance: HTMLAnchorElement | null) => void) | react.RefObject<HTMLAnchorElement> | null | undefined;
|
|
19
20
|
} & {
|
|
20
21
|
asChild?: boolean | undefined;
|
|
@@ -465,15 +466,14 @@ declare const StyledLink: react.ForwardRefExoticComponent<Pick<Omit<{
|
|
|
465
466
|
}> | undefined;
|
|
466
467
|
}> & {
|
|
467
468
|
children?: react.ReactNode;
|
|
468
|
-
} & _mirohq_design_system_stitches.CustomStylesProps, "
|
|
469
|
+
} & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLAnchorElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"a">>, {
|
|
469
470
|
variant?: "primary" | "secondary" | undefined;
|
|
470
471
|
dashed?: boolean | "true" | undefined;
|
|
471
472
|
disabled?: boolean | "true" | undefined;
|
|
472
473
|
}, {}>;
|
|
473
474
|
declare type StyledLinkProps = ComponentPropsWithRef<typeof StyledLink>;
|
|
474
475
|
|
|
475
|
-
|
|
476
|
-
interface LinkProps extends Omit<LinkPropsA11y, 'onClick' | 'isDisabled' | 'elementType'> {
|
|
476
|
+
interface LinkProps extends StyledLinkProps, PressProps, HoverEvents {
|
|
477
477
|
/**
|
|
478
478
|
* The content
|
|
479
479
|
*/
|
|
@@ -482,19 +482,15 @@ interface LinkProps extends Omit<LinkPropsA11y, 'onClick' | 'isDisabled' | 'elem
|
|
|
482
482
|
* Change the link styles
|
|
483
483
|
*/
|
|
484
484
|
variant?: StyledLinkProps['variant'];
|
|
485
|
-
/**
|
|
486
|
-
* Disable the mouse events
|
|
487
|
-
*/
|
|
488
|
-
disabled?: boolean;
|
|
489
485
|
/**
|
|
490
486
|
* Set the underline to dashed mode
|
|
491
487
|
*/
|
|
492
488
|
dashed?: boolean;
|
|
493
489
|
/**
|
|
494
|
-
*
|
|
490
|
+
* Make the link non-interactive
|
|
495
491
|
*/
|
|
496
|
-
|
|
492
|
+
disabled?: boolean;
|
|
497
493
|
}
|
|
498
|
-
declare const Link: react__default.ForwardRefExoticComponent<
|
|
494
|
+
declare const Link: react__default.ForwardRefExoticComponent<Omit<LinkProps, "ref"> & react__default.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
499
495
|
|
|
500
496
|
export { Link, LinkProps };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirohq/design-system-link",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.15-use-press.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Miro",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -26,14 +26,13 @@
|
|
|
26
26
|
"react": "^16.14 || ^17 || ^18"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@react-aria/
|
|
30
|
-
"@react-aria/link": "^3.3.0",
|
|
29
|
+
"@react-aria/interactions": "^3.13.0",
|
|
31
30
|
"@react-aria/utils": "^3.13.0",
|
|
32
|
-
"@react-types/
|
|
31
|
+
"@react-types/shared": "^3.16.0",
|
|
33
32
|
"@mirohq/design-system-primitive": "^1.1.0",
|
|
34
|
-
"@mirohq/design-system-
|
|
35
|
-
"@mirohq/design-system-styles": "^1.0.
|
|
36
|
-
"@mirohq/design-system-
|
|
33
|
+
"@mirohq/design-system-stitches": "^2.3.4-use-press.0",
|
|
34
|
+
"@mirohq/design-system-styles": "^1.1.0-use-press.0",
|
|
35
|
+
"@mirohq/design-system-utils": "^0.14.0-use-press.2"
|
|
37
36
|
},
|
|
38
37
|
"scripts": {
|
|
39
38
|
"build": "rollup -c ../../../rollup.config.js",
|