@semcore/link 17.0.0-prerelease.29 → 17.0.0-prerelease.30

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/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [17.0.0] - 2026-02-27
5
+ ## [17.0.0] - 2026-03-09
6
6
 
7
7
  ### BREAK
8
8
 
package/lib/cjs/Link.js CHANGED
@@ -51,6 +51,21 @@ class RootLink extends _core.Component {
51
51
  }, 0);
52
52
  }
53
53
  }
54
+ getTextProps(props) {
55
+ if ('hintProps' in props) {
56
+ return {
57
+ 'use:hintProps': {
58
+ triggerRef: this.containerRef,
59
+ ...props.hintProps
60
+ }
61
+ };
62
+ }
63
+ return {
64
+ 'use:hintProps': {
65
+ triggerRef: this.containerRef
66
+ }
67
+ };
68
+ }
54
69
  render() {
55
70
  var _ref = this.asProps,
56
71
  _ref4;
@@ -107,9 +122,7 @@ function LinkText(props) {
107
122
  styles
108
123
  } = props;
109
124
  return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(SText, _ref5.cn("SText", {
110
- ...(0, _core.assignProps)({
111
- "tag": 'span'
112
- }, _ref2)
125
+ ...(0, _core.assignProps)({}, _ref2)
113
126
  }));
114
127
  }
115
128
  function Addon(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","names":["_core","require","_baseComponents","_addonTextChildren","_interopRequireDefault","_resolveColorEnhance","_hasLabels","_logger","_typography","_react","style","sstyled","insert","RootLink","Component","constructor","args","_defineProperty2","default","React","createRef","ariaLabelledByContent","componentDidMount","process","env","NODE_ENV","logger","warn","containerRef","current","hasLabels","asProps","displayName","setTimeout","setState","document","getElementById","textContent","render","_ref","_ref4","styles","color","resolveColor","disabled","href","children","addonLeft","AddonLeft","addonRight","AddonRight","Children","title","ariaLabel","hintPlacement","Link","CORE_INSTANCE","SLink","Text","SInner","Box","hintContent","state","showHint","undefined","createElement","Fragment","cn","assignProps","Addon","addonTextChildren","Hint","resolveColorEnhance","LinkText","props","_ref2","arguments[0]","_ref5","SText","_ref3","_ref6","SAddon","createComponent","_default","exports"],"sources":["../../src/Link.tsx"],"sourcesContent":["import type { BoxProps } from '@semcore/base-components';\nimport { Flex, Box, Hint } from '@semcore/base-components';\nimport type { Intergalactic, IRootComponentProps } from '@semcore/core';\nimport { createComponent, Component, Root, sstyled, CORE_INSTANCE } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport hasLabels from '@semcore/core/lib/utils/hasLabels';\nimport logger from '@semcore/core/lib/utils/logger';\nimport type { TextProps } from '@semcore/typography';\nimport { Text } from '@semcore/typography';\nimport React from 'react';\n\nimport type { LinkProps } from './Link.types';\nimport style from './style/link.shadow.css';\n\ntype State = {\n ariaLabelledByContent: string;\n};\n\nclass RootLink extends Component<LinkProps, typeof RootLink.enhance, never, {}, State> {\n static displayName = 'Link';\n\n static style = style;\n static enhance = [resolveColorEnhance()] as const;\n containerRef = React.createRef<HTMLElement | null>();\n\n state: State = {\n ariaLabelledByContent: '',\n };\n\n componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n this.containerRef.current && !hasLabels(this.containerRef.current),\n `'title' or 'aria-label' or 'aria-labelledby' are required props for links without text content`,\n this.asProps['data-ui-name'] || RootLink.displayName,\n );\n }\n\n if (this.asProps['aria-labelledby']) {\n setTimeout(() => {\n this.setState({\n ariaLabelledByContent:\n document.getElementById(this.asProps['aria-labelledby'])?.textContent ?? '',\n });\n }, 0);\n }\n }\n\n render() {\n const {\n styles,\n color,\n resolveColor,\n disabled,\n href,\n children,\n addonLeft: AddonLeft,\n addonRight: AddonRight,\n Children,\n title,\n 'aria-label': ariaLabel,\n hintPlacement,\n } = this.asProps;\n // @ts-ignore\n const Link = this[CORE_INSTANCE];\n const SLink = Root;\n const SInner = Box;\n const hintContent = title ?? ariaLabel ?? this.state.ariaLabelledByContent ?? '';\n const showHint = children === undefined || title;\n return sstyled(styles)(\n <>\n <SLink\n role='link'\n tabIndex={disabled ? -1 : 0}\n use:href={disabled ? undefined : href}\n visually-disabled={disabled}\n render={Text}\n text-color={resolveColor(color)}\n tag='a'\n ref={this.containerRef}\n __excludeProps={['disabled', 'aria-disabled', 'title']}\n aria-label={showHint ? hintContent : undefined}\n >\n <SInner\n tag='span'\n data-ui-name={`${this.asProps['data-ui-name']}.InnerWrapper`}\n >\n {AddonLeft\n ? (\n <Link.Addon>\n <AddonLeft />\n </Link.Addon>\n )\n : null}\n {addonTextChildren(Children, Link.Text, Link.Addon)}\n {AddonRight\n ? (\n <Link.Addon>\n <AddonRight />\n </Link.Addon>\n )\n : null}\n </SInner>\n </SLink>\n {showHint && (\n <Hint\n triggerRef={this.containerRef}\n timeout={[250, 50]}\n placement={hintPlacement}\n >\n {hintContent}\n </Hint>\n )}\n </>,\n );\n }\n}\n\nfunction LinkText(props: IRootComponentProps) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Text} tag='span' />);\n}\n\nfunction Addon(props: IRootComponentProps) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Link = createComponent(RootLink, {\n Text: LinkText,\n Addon,\n}) as Intergalactic.Component<'a', LinkProps, {}, typeof RootLink.enhance> & {\n Text: Intergalactic.Component<'span', TextProps>;\n Addon: Intergalactic.Component<'span', BoxProps>;\n};\n\nexport default Link;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Link.js","names":["_core","require","_baseComponents","_addonTextChildren","_interopRequireDefault","_resolveColorEnhance","_hasLabels","_logger","_typography","_react","style","sstyled","insert","RootLink","Component","constructor","args","_defineProperty2","default","React","createRef","ariaLabelledByContent","componentDidMount","process","env","NODE_ENV","logger","warn","containerRef","current","hasLabels","asProps","displayName","setTimeout","setState","document","getElementById","textContent","getTextProps","props","triggerRef","hintProps","render","_ref","_ref4","styles","color","resolveColor","disabled","href","children","addonLeft","AddonLeft","addonRight","AddonRight","Children","title","ariaLabel","hintPlacement","Link","CORE_INSTANCE","SLink","Text","SInner","Box","hintContent","state","showHint","undefined","createElement","Fragment","cn","assignProps","Addon","addonTextChildren","Hint","resolveColorEnhance","LinkText","_ref2","arguments[0]","_ref5","SText","_ref3","_ref6","SAddon","createComponent","_default","exports"],"sources":["../../src/Link.tsx"],"sourcesContent":["import type { BoxProps } from '@semcore/base-components';\nimport { Box, Hint } from '@semcore/base-components';\nimport type { Intergalactic, IRootComponentProps } from '@semcore/core';\nimport { createComponent, Component, Root, sstyled, CORE_INSTANCE } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport hasLabels from '@semcore/core/lib/utils/hasLabels';\nimport logger from '@semcore/core/lib/utils/logger';\nimport type { TextProps } from '@semcore/typography';\nimport { Text } from '@semcore/typography';\nimport React from 'react';\n\nimport type { LinkProps } from './Link.types';\nimport style from './style/link.shadow.css';\n\ntype State = {\n ariaLabelledByContent: string;\n};\n\nclass RootLink extends Component<LinkProps, typeof RootLink.enhance, never, {}, State> {\n static displayName = 'Link';\n\n static style = style;\n static enhance = [resolveColorEnhance()] as const;\n containerRef = React.createRef<HTMLElement | null>();\n\n state: State = {\n ariaLabelledByContent: '',\n };\n\n componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n this.containerRef.current && !hasLabels(this.containerRef.current),\n `'title' or 'aria-label' or 'aria-labelledby' are required props for links without text content`,\n this.asProps['data-ui-name'] || RootLink.displayName,\n );\n }\n\n if (this.asProps['aria-labelledby']) {\n setTimeout(() => {\n this.setState({\n ariaLabelledByContent:\n document.getElementById(this.asProps['aria-labelledby'])?.textContent ?? '',\n });\n }, 0);\n }\n }\n\n getTextProps(props: TextProps) {\n if ('hintProps' in props) {\n return {\n 'use:hintProps': { triggerRef: this.containerRef, ...props.hintProps },\n };\n }\n\n return {\n 'use:hintProps': { triggerRef: this.containerRef },\n };\n }\n\n render() {\n const {\n styles,\n color,\n resolveColor,\n disabled,\n href,\n children,\n addonLeft: AddonLeft,\n addonRight: AddonRight,\n Children,\n title,\n 'aria-label': ariaLabel,\n hintPlacement,\n } = this.asProps;\n // @ts-ignore\n const Link = this[CORE_INSTANCE];\n const SLink = Root;\n const SInner = Box;\n const hintContent = title ?? ariaLabel ?? this.state.ariaLabelledByContent ?? '';\n const showHint = children === undefined || title;\n return sstyled(styles)(\n <>\n <SLink\n role='link'\n tabIndex={disabled ? -1 : 0}\n use:href={disabled ? undefined : href}\n visually-disabled={disabled}\n render={Text}\n text-color={resolveColor(color)}\n tag='a'\n ref={this.containerRef}\n __excludeProps={['disabled', 'aria-disabled', 'title']}\n aria-label={showHint ? hintContent : undefined}\n >\n <SInner\n tag='span'\n data-ui-name={`${this.asProps['data-ui-name']}.InnerWrapper`}\n >\n {AddonLeft\n ? (\n <Link.Addon>\n <AddonLeft />\n </Link.Addon>\n )\n : null}\n {addonTextChildren(Children, Link.Text, Link.Addon)}\n {AddonRight\n ? (\n <Link.Addon>\n <AddonRight />\n </Link.Addon>\n )\n : null}\n </SInner>\n </SLink>\n {showHint && (\n <Hint\n triggerRef={this.containerRef}\n timeout={[250, 50]}\n placement={hintPlacement}\n >\n {hintContent}\n </Hint>\n )}\n </>,\n );\n }\n}\n\nfunction LinkText(props: IRootComponentProps) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Text} />);\n}\n\nfunction Addon(props: IRootComponentProps) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Link = createComponent(RootLink, {\n Text: LinkText,\n Addon,\n}) as Intergalactic.Component<'a', LinkProps, {}, typeof RootLink.enhance> & {\n Text: Intergalactic.Component<'span', TextProps>;\n Addon: Intergalactic.Component<'span', BoxProps>;\n};\n\nexport default Link;\n"],"mappings":"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","ignoreList":[]}
package/lib/es6/Link.js CHANGED
@@ -48,6 +48,21 @@ class RootLink extends Component {
48
48
  }, 0);
49
49
  }
50
50
  }
51
+ getTextProps(props) {
52
+ if ('hintProps' in props) {
53
+ return {
54
+ 'use:hintProps': {
55
+ triggerRef: this.containerRef,
56
+ ...props.hintProps
57
+ }
58
+ };
59
+ }
60
+ return {
61
+ 'use:hintProps': {
62
+ triggerRef: this.containerRef
63
+ }
64
+ };
65
+ }
51
66
  render() {
52
67
  var _ref = this.asProps,
53
68
  _ref4;
@@ -104,9 +119,7 @@ function LinkText(props) {
104
119
  styles
105
120
  } = props;
106
121
  return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(SText, _ref5.cn("SText", {
107
- ..._assignProps2({
108
- "tag": 'span'
109
- }, _ref2)
122
+ ..._assignProps2({}, _ref2)
110
123
  }));
111
124
  }
112
125
  function Addon(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","names":["Box","Hint","createComponent","Component","Root","sstyled","CORE_INSTANCE","addonTextChildren","resolveColorEnhance","hasLabels","logger","Text","React","style","_sstyled","insert","RootLink","constructor","args","_defineProperty","createRef","ariaLabelledByContent","componentDidMount","process","env","NODE_ENV","warn","containerRef","current","asProps","displayName","setTimeout","setState","document","getElementById","textContent","render","_ref","_ref4","styles","color","resolveColor","disabled","href","children","addonLeft","AddonLeft","addonRight","AddonRight","Children","title","ariaLabel","hintPlacement","Link","SLink","SInner","hintContent","state","showHint","undefined","createElement","Fragment","cn","_assignProps","Addon","LinkText","props","_ref2","arguments[0]","_ref5","SText","_assignProps2","_ref3","_ref6","SAddon","_assignProps3"],"sources":["../../src/Link.tsx"],"sourcesContent":["import type { BoxProps } from '@semcore/base-components';\nimport { Flex, Box, Hint } from '@semcore/base-components';\nimport type { Intergalactic, IRootComponentProps } from '@semcore/core';\nimport { createComponent, Component, Root, sstyled, CORE_INSTANCE } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport hasLabels from '@semcore/core/lib/utils/hasLabels';\nimport logger from '@semcore/core/lib/utils/logger';\nimport type { TextProps } from '@semcore/typography';\nimport { Text } from '@semcore/typography';\nimport React from 'react';\n\nimport type { LinkProps } from './Link.types';\nimport style from './style/link.shadow.css';\n\ntype State = {\n ariaLabelledByContent: string;\n};\n\nclass RootLink extends Component<LinkProps, typeof RootLink.enhance, never, {}, State> {\n static displayName = 'Link';\n\n static style = style;\n static enhance = [resolveColorEnhance()] as const;\n containerRef = React.createRef<HTMLElement | null>();\n\n state: State = {\n ariaLabelledByContent: '',\n };\n\n componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n this.containerRef.current && !hasLabels(this.containerRef.current),\n `'title' or 'aria-label' or 'aria-labelledby' are required props for links without text content`,\n this.asProps['data-ui-name'] || RootLink.displayName,\n );\n }\n\n if (this.asProps['aria-labelledby']) {\n setTimeout(() => {\n this.setState({\n ariaLabelledByContent:\n document.getElementById(this.asProps['aria-labelledby'])?.textContent ?? '',\n });\n }, 0);\n }\n }\n\n render() {\n const {\n styles,\n color,\n resolveColor,\n disabled,\n href,\n children,\n addonLeft: AddonLeft,\n addonRight: AddonRight,\n Children,\n title,\n 'aria-label': ariaLabel,\n hintPlacement,\n } = this.asProps;\n // @ts-ignore\n const Link = this[CORE_INSTANCE];\n const SLink = Root;\n const SInner = Box;\n const hintContent = title ?? ariaLabel ?? this.state.ariaLabelledByContent ?? '';\n const showHint = children === undefined || title;\n return sstyled(styles)(\n <>\n <SLink\n role='link'\n tabIndex={disabled ? -1 : 0}\n use:href={disabled ? undefined : href}\n visually-disabled={disabled}\n render={Text}\n text-color={resolveColor(color)}\n tag='a'\n ref={this.containerRef}\n __excludeProps={['disabled', 'aria-disabled', 'title']}\n aria-label={showHint ? hintContent : undefined}\n >\n <SInner\n tag='span'\n data-ui-name={`${this.asProps['data-ui-name']}.InnerWrapper`}\n >\n {AddonLeft\n ? (\n <Link.Addon>\n <AddonLeft />\n </Link.Addon>\n )\n : null}\n {addonTextChildren(Children, Link.Text, Link.Addon)}\n {AddonRight\n ? (\n <Link.Addon>\n <AddonRight />\n </Link.Addon>\n )\n : null}\n </SInner>\n </SLink>\n {showHint && (\n <Hint\n triggerRef={this.containerRef}\n timeout={[250, 50]}\n placement={hintPlacement}\n >\n {hintContent}\n </Hint>\n )}\n </>,\n );\n }\n}\n\nfunction LinkText(props: IRootComponentProps) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Text} tag='span' />);\n}\n\nfunction Addon(props: IRootComponentProps) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Link = createComponent(RootLink, {\n Text: LinkText,\n Addon,\n}) as Intergalactic.Component<'a', LinkProps, {}, typeof RootLink.enhance> & {\n Text: Intergalactic.Component<'span', TextProps>;\n Addon: Intergalactic.Component<'span', BoxProps>;\n};\n\nexport default Link;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Link.js","names":["Box","Hint","createComponent","Component","Root","sstyled","CORE_INSTANCE","addonTextChildren","resolveColorEnhance","hasLabels","logger","Text","React","style","_sstyled","insert","RootLink","constructor","args","_defineProperty","createRef","ariaLabelledByContent","componentDidMount","process","env","NODE_ENV","warn","containerRef","current","asProps","displayName","setTimeout","setState","document","getElementById","textContent","getTextProps","props","triggerRef","hintProps","render","_ref","_ref4","styles","color","resolveColor","disabled","href","children","addonLeft","AddonLeft","addonRight","AddonRight","Children","title","ariaLabel","hintPlacement","Link","SLink","SInner","hintContent","state","showHint","undefined","createElement","Fragment","cn","_assignProps","Addon","LinkText","_ref2","arguments[0]","_ref5","SText","_assignProps2","_ref3","_ref6","SAddon","_assignProps3"],"sources":["../../src/Link.tsx"],"sourcesContent":["import type { BoxProps } from '@semcore/base-components';\nimport { Box, Hint } from '@semcore/base-components';\nimport type { Intergalactic, IRootComponentProps } from '@semcore/core';\nimport { createComponent, Component, Root, sstyled, CORE_INSTANCE } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport hasLabels from '@semcore/core/lib/utils/hasLabels';\nimport logger from '@semcore/core/lib/utils/logger';\nimport type { TextProps } from '@semcore/typography';\nimport { Text } from '@semcore/typography';\nimport React from 'react';\n\nimport type { LinkProps } from './Link.types';\nimport style from './style/link.shadow.css';\n\ntype State = {\n ariaLabelledByContent: string;\n};\n\nclass RootLink extends Component<LinkProps, typeof RootLink.enhance, never, {}, State> {\n static displayName = 'Link';\n\n static style = style;\n static enhance = [resolveColorEnhance()] as const;\n containerRef = React.createRef<HTMLElement | null>();\n\n state: State = {\n ariaLabelledByContent: '',\n };\n\n componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n this.containerRef.current && !hasLabels(this.containerRef.current),\n `'title' or 'aria-label' or 'aria-labelledby' are required props for links without text content`,\n this.asProps['data-ui-name'] || RootLink.displayName,\n );\n }\n\n if (this.asProps['aria-labelledby']) {\n setTimeout(() => {\n this.setState({\n ariaLabelledByContent:\n document.getElementById(this.asProps['aria-labelledby'])?.textContent ?? '',\n });\n }, 0);\n }\n }\n\n getTextProps(props: TextProps) {\n if ('hintProps' in props) {\n return {\n 'use:hintProps': { triggerRef: this.containerRef, ...props.hintProps },\n };\n }\n\n return {\n 'use:hintProps': { triggerRef: this.containerRef },\n };\n }\n\n render() {\n const {\n styles,\n color,\n resolveColor,\n disabled,\n href,\n children,\n addonLeft: AddonLeft,\n addonRight: AddonRight,\n Children,\n title,\n 'aria-label': ariaLabel,\n hintPlacement,\n } = this.asProps;\n // @ts-ignore\n const Link = this[CORE_INSTANCE];\n const SLink = Root;\n const SInner = Box;\n const hintContent = title ?? ariaLabel ?? this.state.ariaLabelledByContent ?? '';\n const showHint = children === undefined || title;\n return sstyled(styles)(\n <>\n <SLink\n role='link'\n tabIndex={disabled ? -1 : 0}\n use:href={disabled ? undefined : href}\n visually-disabled={disabled}\n render={Text}\n text-color={resolveColor(color)}\n tag='a'\n ref={this.containerRef}\n __excludeProps={['disabled', 'aria-disabled', 'title']}\n aria-label={showHint ? hintContent : undefined}\n >\n <SInner\n tag='span'\n data-ui-name={`${this.asProps['data-ui-name']}.InnerWrapper`}\n >\n {AddonLeft\n ? (\n <Link.Addon>\n <AddonLeft />\n </Link.Addon>\n )\n : null}\n {addonTextChildren(Children, Link.Text, Link.Addon)}\n {AddonRight\n ? (\n <Link.Addon>\n <AddonRight />\n </Link.Addon>\n )\n : null}\n </SInner>\n </SLink>\n {showHint && (\n <Hint\n triggerRef={this.containerRef}\n timeout={[250, 50]}\n placement={hintPlacement}\n >\n {hintContent}\n </Hint>\n )}\n </>,\n );\n }\n}\n\nfunction LinkText(props: IRootComponentProps) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Text} />);\n}\n\nfunction Addon(props: IRootComponentProps) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Link = createComponent(RootLink, {\n Text: LinkText,\n Addon,\n}) as Intergalactic.Component<'a', LinkProps, {}, typeof RootLink.enhance> & {\n Text: Intergalactic.Component<'span', TextProps>;\n Addon: Intergalactic.Component<'span', BoxProps>;\n};\n\nexport default Link;\n"],"mappings":"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","ignoreList":[]}
package/lib/esm/Link.mjs CHANGED
@@ -52,6 +52,21 @@ class RootLink extends Component {
52
52
  }, 0);
53
53
  }
54
54
  }
55
+ getTextProps(props) {
56
+ if ("hintProps" in props) {
57
+ return {
58
+ "use:hintProps": {
59
+ triggerRef: this.containerRef,
60
+ ...props.hintProps
61
+ }
62
+ };
63
+ }
64
+ return {
65
+ "use:hintProps": {
66
+ triggerRef: this.containerRef
67
+ }
68
+ };
69
+ }
55
70
  render() {
56
71
  var _ref = this.asProps, _ref4;
57
72
  const {
@@ -105,9 +120,7 @@ function LinkText(props) {
105
120
  styles
106
121
  } = props;
107
122
  return _ref5 = sstyled(styles), /* @__PURE__ */ React.createElement(SText, _ref5.cn("SText", {
108
- ...assignProps({
109
- "tag": "span"
110
- }, _ref2)
123
+ ...assignProps({}, _ref2)
111
124
  }));
112
125
  }
113
126
  function Addon(props) {
@@ -16,6 +16,16 @@ declare class RootLink extends Component<LinkProps, typeof RootLink.enhance, nev
16
16
  containerRef: React.RefObject<HTMLElement | null>;
17
17
  state: State;
18
18
  componentDidMount(): void;
19
+ getTextProps(props: TextProps): {
20
+ 'use:hintProps': {
21
+ placement?: import("@floating-ui/dom").Placement;
22
+ triggerRef: React.RefObject<HTMLElement | null>;
23
+ timeout?: number | [number, number];
24
+ visible?: boolean;
25
+ defaultVisible?: boolean;
26
+ onVisibleChange?: (visible: boolean, e?: Event) => boolean | void;
27
+ };
28
+ };
19
29
  render(): React.ReactNode;
20
30
  }
21
31
  declare const Link: Intergalactic.Component<"a", LinkProps, {}, typeof RootLink.enhance> & {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/link",
3
3
  "description": "Semrush Link Component",
4
- "version": "17.0.0-prerelease.29",
4
+ "version": "17.0.0-prerelease.30",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,8 +14,8 @@
14
14
  "types": "./lib/types/index.d.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@semcore/tooltip": "^17.0.0-prerelease.29",
18
- "@semcore/typography": "^17.0.0-prerelease.29"
17
+ "@semcore/tooltip": "^17.0.0-prerelease.30",
18
+ "@semcore/typography": "^17.0.0-prerelease.30"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "@semcore/base-components": "^17.0.0 || ^17.0.0-0"
@@ -26,10 +26,10 @@
26
26
  "directory": "semcore/link"
27
27
  },
28
28
  "devDependencies": {
29
- "@semcore/base-components": "17.0.0-prerelease.29",
30
- "@semcore/core": "17.0.0-prerelease.29",
31
- "@semcore/testing-utils": "1.0.0",
32
- "@semcore/icon": "16.7.2-prerelease.29"
29
+ "@semcore/core": "17.0.0-prerelease.30",
30
+ "@semcore/base-components": "17.0.0-prerelease.30",
31
+ "@semcore/icon": "16.7.2-prerelease.30",
32
+ "@semcore/testing-utils": "1.0.0"
33
33
  },
34
34
  "scripts": {
35
35
  "build": "pnpm semcore-builder && pnpm vite build"