@semcore/tab-line 16.0.11 → 17.0.0-prerelease.17

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,6 +2,12 @@
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-18
6
+
7
+ ### BREAK
8
+
9
+ - New major version.
10
+
5
11
  ## [16.0.11] - 2025-10-29
6
12
 
7
13
  ### Changed
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![version](https://img.shields.io/npm/v/@semcore/tab-line.svg)](https://www.npmjs.com/@semcore/tab-line)
4
4
  [![downloads](https://img.shields.io/npm/dt/@semcore/tab-line.svg)](https://www.npmjs.com/package/@semcore/tab-line)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/semrush/intergalactic/blob/master/LICENSE)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/semrush/intergalactic/blob/HEAD/LICENSE)
6
6
 
7
7
  > This component is part of the Intergalactic Design System
8
8
 
@@ -20,13 +20,13 @@ npm install @semcore/tab-line
20
20
 
21
21
  ## 👤 Author
22
22
 
23
- [UI-kit team](https://github.com/semrush/intergalactic/blob/master/MAINTAINERS) and [others ❤️](https://github.com/semrush/intergalactic/graphs/contributors)
23
+ [UI-kit team](https://github.com/semrush/intergalactic/blob/HEAD/MAINTAINERS) and [others ❤️](https://github.com/semrush/intergalactic/graphs/contributors)
24
24
 
25
25
  ## 🤝 Contributing
26
26
 
27
27
  Contributions, issues and feature requests are welcome!
28
28
 
29
- Feel free to check [issues page](https://github.com/semrush/intergalactic/issues). You can also take a look at the [contributing guide](https://github.com/semrush/intergalactic/blob/master/CONTRIBUTING.md).
29
+ Feel free to check [issues page](https://github.com/semrush/intergalactic/issues). You can also take a look at the [contributing guide](https://github.com/semrush/intergalactic/blob/HEAD/CONTRIBUTING.md).
30
30
 
31
31
  ## Show your support
32
32
 
@@ -34,4 +34,4 @@ Give a ⭐️ if this project helped you!
34
34
 
35
35
  ## 📝 License
36
36
 
37
- This project is [MIT](https://github.com/semrush/intergalactic/blob/master/LICENSE) licensed.
37
+ This project is [MIT](https://github.com/semrush/intergalactic/blob/HEAD/LICENSE) licensed.
@@ -1,40 +1,35 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.wrapTabLine = exports["default"] = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
7
+ exports.wrapTabLine = exports.default = void 0;
13
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
9
  var _core = require("@semcore/core");
10
+ var _baseComponents = require("@semcore/base-components");
15
11
  var _addonTextChildren = _interopRequireDefault(require("@semcore/core/lib/utils/addonTextChildren"));
16
12
  var _a11yEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/a11yEnhance"));
17
- var _flexBox = require("@semcore/flex-box");
18
- var _neighborLocation = _interopRequireDefault(require("@semcore/neighbor-location"));
13
+ var _typography = require("@semcore/typography");
19
14
  var _react = _interopRequireDefault(require("react"));
20
15
  /*!__reshadow-styles__:"./style/tab-line.shadow.css"*/
21
- var style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___STabLine_1y535_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_1y535_gg_.__underlined_1y535_gg_{border-bottom:1px solid var(--intergalactic-border-primary, #c4c7cf)}.___STabLineItem_1y535_gg_{display:inline-flex;align-items:center;justify-content:center;position:relative;touch-action:manipulation;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;-webkit-text-decoration:none;text-decoration:none;-webkit-tap-highlight-color:transparent;overflow:visible;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer;border:0;background:0 0;color:var(--intergalactic-text-primary, #191b23);margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_1y535_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_1y535_gg_:active{-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___STabLineItem_1y535_gg_:hover{-webkit-text-decoration:none;text-decoration:none}}.___STabLineItem_1y535_gg_::after,.___STabLineItem_1y535_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_1y535_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_1y535_gg_:hover::before{background-color:var(--intergalactic-border-primary, #c4c7cf)}}.___STabLineItem_1y535_gg_.__selected_1y535_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, #006dca)}.___STabLineItem_1y535_gg_ .___SAddon_1y535_gg_:not(:last-child),.___STabLineItem_1y535_gg_ .___SText_1y535_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_1y535_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, #006dca);transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_1y535_gg_.__selected_1y535_gg_{flex-shrink:0}.___STabLineItem_1y535_gg_.__disabled_1y535_gg_{opacity:var(--intergalactic-disabled-opacity, 0.3);cursor:default;pointer-events:none}.___SText_1y535_gg_{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.___SAddon_1y535_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_1y535_gg_._size_m_1y535_gg_{height:28px;min-width:18px}.___STabLineItem_1y535_gg_._size_m_1y535_gg_ .___SText_1y535_gg_{font-size:var(--intergalactic-fs-200, 14px);line-height:var(--intergalactic-lh-200, 142%)}.___STabLineItem_1y535_gg_._size_l_1y535_gg_{height:40px;min-width:26px}.___STabLineItem_1y535_gg_._size_l_1y535_gg_ .___SText_1y535_gg_{font-size:var(--intergalactic-fs-300, 16px);line-height:var(--intergalactic-lh-300, 150%)}.___STabLineItem_1y535_gg_._neighborLocation_left_1y535_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_1y535_gg_.__selected_1y535_gg_::after,.___STabLineItem_1y535_gg_::after,.___STabLineItem_1y535_gg_::before{transition:none}.___SCaret_1y535_gg_{display:none}}", /*__inner_css_end__*/"1y535_gg_"),
16
+ const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___STabLine_1i3e2_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_1i3e2_gg_.__underlined_1i3e2_gg_{border-bottom:1px solid var(--intergalactic-border-primary, #c4c7cf)}.___STabLineItem_1i3e2_gg_{display:inline-flex;align-items:center;justify-content:center;position:relative;touch-action:manipulation;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;-webkit-text-decoration:none;text-decoration:none;-webkit-tap-highlight-color:transparent;overflow:visible;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer;border:0;background:0 0;color:var(--intergalactic-text-primary, #191b23);margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_1i3e2_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_1i3e2_gg_:active{-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___STabLineItem_1i3e2_gg_:hover{-webkit-text-decoration:none;text-decoration:none}}.___STabLineItem_1i3e2_gg_::after,.___STabLineItem_1i3e2_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_1i3e2_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_1i3e2_gg_:hover::before{background-color:var(--intergalactic-border-primary, #c4c7cf)}}.___STabLineItem_1i3e2_gg_.__selected_1i3e2_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, #006dca)}.___STabLineItem_1i3e2_gg_ .___SAddon_1i3e2_gg_:not(:last-child),.___STabLineItem_1i3e2_gg_ .___SText_1i3e2_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_1i3e2_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, #006dca);transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_1i3e2_gg_.__selected_1i3e2_gg_{flex-shrink:0}.___STabLineItem_1i3e2_gg_.__disabled_1i3e2_gg_{opacity:var(--intergalactic-disabled-opacity, 0.3);cursor:default;pointer-events:none}.___SAddon_1i3e2_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_1i3e2_gg_._size_m_1i3e2_gg_{height:28px;min-width:18px}.___STabLineItem_1i3e2_gg_._size_l_1i3e2_gg_{height:40px;min-width:26px}.___STabLineItem_1i3e2_gg_._neighborLocation_left_1i3e2_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_1i3e2_gg_.__selected_1i3e2_gg_::after,.___STabLineItem_1i3e2_gg_::after,.___STabLineItem_1i3e2_gg_::before{transition:none}.___SCaret_1i3e2_gg_{display:none}}", /*__inner_css_end__*/"1i3e2_gg_"),
22
17
  /*__reshadow_css_end__*/
23
18
  {
24
- "__STabLine": "___STabLine_1y535_gg_",
25
- "_underlined": "__underlined_1y535_gg_",
26
- "__SCaret": "___SCaret_1y535_gg_",
27
- "__STabLineItem": "___STabLineItem_1y535_gg_",
28
- "_selected": "__selected_1y535_gg_",
29
- "_disabled": "__disabled_1y535_gg_",
30
- "__SText": "___SText_1y535_gg_",
31
- "__SAddon": "___SAddon_1y535_gg_",
32
- "_neighborLocation_left": "_neighborLocation_left_1y535_gg_",
33
- "_size_m": "_size_m_1y535_gg_",
34
- "_size_l": "_size_l_1y535_gg_"
19
+ "__STabLine": "___STabLine_1i3e2_gg_",
20
+ "_underlined": "__underlined_1i3e2_gg_",
21
+ "__SCaret": "___SCaret_1i3e2_gg_",
22
+ "__STabLineItem": "___STabLineItem_1i3e2_gg_",
23
+ "_selected": "__selected_1i3e2_gg_",
24
+ "_disabled": "__disabled_1i3e2_gg_",
25
+ "__SAddon": "___SAddon_1i3e2_gg_",
26
+ "_size_m": "_size_m_1i3e2_gg_",
27
+ "_size_l": "_size_l_1i3e2_gg_",
28
+ "_neighborLocation_left": "_neighborLocation_left_1i3e2_gg_",
29
+ "__SText": "___SText_1i3e2_gg_"
35
30
  });
36
- var optionsA11yEnhance = {
37
- onNeighborChange: function onNeighborChange(neighborElement, props) {
31
+ const optionsA11yEnhance = {
32
+ onNeighborChange: (neighborElement, props) => {
38
33
  if (neighborElement) {
39
34
  neighborElement.focus();
40
35
  if (props.behavior === 'auto') {
@@ -44,185 +39,191 @@ var optionsA11yEnhance = {
44
39
  },
45
40
  childSelector: ['role', 'tab']
46
41
  };
47
- var TabLineRoot = /*#__PURE__*/function (_Component) {
48
- function TabLineRoot() {
49
- var _this;
50
- (0, _classCallCheck2["default"])(this, TabLineRoot);
51
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
52
- args[_key] = arguments[_key];
53
- }
54
- _this = (0, _callSuper2["default"])(this, TabLineRoot, [].concat(args));
55
- (0, _defineProperty2["default"])(_this, "state", {
42
+ class TabLineRoot extends _core.Component {
43
+ constructor(...args) {
44
+ super(...args);
45
+ (0, _defineProperty2.default)(this, "state", {
56
46
  animation: null
57
47
  });
58
- (0, _defineProperty2["default"])(_this, "prevValue", undefined);
59
- (0, _defineProperty2["default"])(_this, "itemRefs", {});
60
- (0, _defineProperty2["default"])(_this, "containerRef", /*#__PURE__*/_react["default"].createRef());
61
- (0, _defineProperty2["default"])(_this, "animationStartTimeout", -1);
62
- (0, _defineProperty2["default"])(_this, "handleAnimationStart", function () {
63
- var _this$state$animation;
64
- if (((_this$state$animation = _this.state.animation) === null || _this$state$animation === void 0 ? void 0 : _this$state$animation.started) === false) {
65
- _this.setState({
66
- animation: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _this.state.animation), {}, {
48
+ (0, _defineProperty2.default)(this, "prevValue", undefined);
49
+ (0, _defineProperty2.default)(this, "itemRefs", {});
50
+ (0, _defineProperty2.default)(this, "containerRef", /*#__PURE__*/_react.default.createRef());
51
+ (0, _defineProperty2.default)(this, "animationStartTimeout", -1);
52
+ (0, _defineProperty2.default)(this, "buttonRefsList", []);
53
+ (0, _defineProperty2.default)(this, "handleAnimationStart", () => {
54
+ if (this.state.animation?.started === false) {
55
+ this.setState({
56
+ animation: {
57
+ ...this.state.animation,
67
58
  started: true
68
- })
59
+ }
69
60
  });
70
61
  }
71
62
  });
72
- (0, _defineProperty2["default"])(_this, "handleAnimationEnd", function () {
73
- _this.setState({
63
+ (0, _defineProperty2.default)(this, "handleAnimationEnd", () => {
64
+ this.setState({
74
65
  animation: null
75
66
  });
76
67
  });
77
- (0, _defineProperty2["default"])(_this, "bindHandlerClick", function (value) {
78
- return function (e) {
79
- _this.handlers.value(value, e);
80
- };
68
+ (0, _defineProperty2.default)(this, "bindHandlerClick", value => e => {
69
+ this.handlers.value(value, e);
81
70
  });
82
- return _this;
83
71
  }
84
- (0, _inherits2["default"])(TabLineRoot, _Component);
85
- return (0, _createClass2["default"])(TabLineRoot, [{
86
- key: "uncontrolledProps",
87
- value: function uncontrolledProps() {
88
- return {
89
- value: null
90
- };
91
- }
92
- }, {
93
- key: "componentDidUpdate",
94
- value: function componentDidUpdate() {
95
- if (this.prevValue !== null && this.asProps.value !== null && this.prevValue !== this.asProps.value) {
96
- this.animate();
97
- }
98
- this.prevValue = this.asProps.value;
99
- }
100
- }, {
101
- key: "componentDidMount",
102
- value: function componentDidMount() {
103
- this.prevValue = this.asProps.value;
104
- }
105
- }, {
106
- key: "componentWillUnmount",
107
- value: function componentWillUnmount() {
108
- clearTimeout(this.animationStartTimeout);
72
+ uncontrolledProps() {
73
+ return {
74
+ value: null
75
+ };
76
+ }
77
+ componentDidUpdate() {
78
+ if (this.prevValue !== null && this.asProps.value !== null && this.prevValue !== this.asProps.value) {
79
+ this.animate();
109
80
  }
110
- }, {
111
- key: "animate",
112
- value: function animate() {
113
- var fromNode = this.itemRefs[this.prevValue];
114
- var toNode = this.itemRefs[this.asProps.value];
115
- var containerNode = this.containerRef.current;
116
- if (!fromNode || !toNode || !containerNode) return;
117
- var containerRect = containerNode.getBoundingClientRect();
118
- var fromRect = fromNode.getBoundingClientRect();
119
- var toRect = toNode.getBoundingClientRect();
120
- var animation = {
121
- fromLeft: fromRect.x - containerRect.x,
122
- fromWidth: fromRect.width,
123
- toLeft: toRect.x - containerRect.x,
124
- toWidth: toRect.width,
125
- started: false
81
+ this.prevValue = this.asProps.value;
82
+ }
83
+ componentDidMount() {
84
+ this.prevValue = this.asProps.value;
85
+ }
86
+ componentWillUnmount() {
87
+ clearTimeout(this.animationStartTimeout);
88
+ }
89
+ animate() {
90
+ const fromNode = this.itemRefs[this.prevValue];
91
+ const toNode = this.itemRefs[this.asProps.value];
92
+ const containerNode = this.containerRef.current;
93
+ if (!fromNode || !toNode || !containerNode) return;
94
+ const containerRect = containerNode.getBoundingClientRect();
95
+ const fromRect = fromNode.getBoundingClientRect();
96
+ const toRect = toNode.getBoundingClientRect();
97
+ const animation = {
98
+ fromLeft: fromRect.x - containerRect.x,
99
+ fromWidth: fromRect.width,
100
+ toLeft: toRect.x - containerRect.x,
101
+ toWidth: toRect.width,
102
+ started: false
103
+ };
104
+ this.setState({
105
+ animation
106
+ });
107
+ clearTimeout(this.animationStartTimeout);
108
+ this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);
109
+ }
110
+ getItemProps(props, index) {
111
+ const {
112
+ value,
113
+ size
114
+ } = this.asProps;
115
+ const isSelected = value === props.value;
116
+ return {
117
+ size,
118
+ 'selected': isSelected,
119
+ 'onClick': this.bindHandlerClick(props.value),
120
+ 'tabIndex': isSelected ? 0 : -1,
121
+ 'aria-selected': isSelected,
122
+ 'ref': node => {
123
+ this.itemRefs[props.value] = node;
124
+ },
125
+ 'buttonRefsList': this.buttonRefsList,
126
+ index
127
+ };
128
+ }
129
+ getItemTextProps(props, index) {
130
+ const {
131
+ size: tabLineSize
132
+ } = this.asProps;
133
+ const size = props.size ? props.size : tabLineSize === 'm' ? 200 : 300;
134
+ return {
135
+ size,
136
+ buttonRefsList: this.buttonRefsList,
137
+ index
138
+ };
139
+ }
140
+ getCaretProps() {
141
+ const {
142
+ animation
143
+ } = this.state;
144
+ if (!animation) return {};
145
+ if (animation.started) {
146
+ return {
147
+ style: {
148
+ left: animation.toLeft,
149
+ width: animation.toWidth
150
+ },
151
+ onTransitionEnd: this.handleAnimationEnd
126
152
  };
127
- this.setState({
128
- animation: animation
129
- });
130
- clearTimeout(this.animationStartTimeout);
131
- this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);
132
- }
133
- }, {
134
- key: "getItemProps",
135
- value: function getItemProps(props, _index) {
136
- var _this2 = this;
137
- var _this$asProps = this.asProps,
138
- value = _this$asProps.value,
139
- size = _this$asProps.size;
140
- var isSelected = value === props.value;
153
+ } else {
141
154
  return {
142
- size: size,
143
- 'selected': isSelected,
144
- 'onClick': this.bindHandlerClick(props.value),
145
- 'tabIndex': isSelected ? 0 : -1,
146
- 'aria-selected': isSelected,
147
- 'ref': function ref(node) {
148
- _this2.itemRefs[props.value] = node;
149
- }
155
+ style: {
156
+ left: animation.fromLeft,
157
+ width: animation.fromWidth
158
+ },
159
+ onTransitionEnd: this.handleAnimationEnd
150
160
  };
151
161
  }
152
- }, {
153
- key: "getCaretProps",
154
- value: function getCaretProps() {
155
- var animation = this.state.animation;
156
- if (!animation) return {};
157
- if (animation.started) {
158
- return {
159
- style: {
160
- left: animation.toLeft,
161
- width: animation.toWidth
162
- },
163
- onTransitionEnd: this.handleAnimationEnd
164
- };
165
- } else {
166
- return {
167
- style: {
168
- left: animation.fromLeft,
169
- width: animation.fromWidth
170
- },
171
- onTransitionEnd: this.handleAnimationEnd
172
- };
173
- }
174
- }
175
- }, {
176
- key: "render",
177
- value: function render() {
178
- var _ref = this.asProps,
179
- _ref5;
180
- var STabLine = _flexBox.Box;
181
- var SCaret = _flexBox.Box;
182
- var _this$asProps2 = this.asProps,
183
- styles = _this$asProps2.styles,
184
- Children = _this$asProps2.Children,
185
- controlsLength = _this$asProps2.controlsLength;
186
- var animation = this.state.animation;
187
- return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(STabLine, _ref5.cn("STabLine", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
162
+ }
163
+ render() {
164
+ var _ref = this.asProps,
165
+ _ref5;
166
+ const STabLine = _baseComponents.Box;
167
+ const SCaret = _baseComponents.Box;
168
+ const {
169
+ styles,
170
+ Children,
171
+ controlsLength
172
+ } = this.asProps;
173
+ const {
174
+ animation
175
+ } = this.state;
176
+ return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(STabLine, _ref5.cn("STabLine", {
177
+ ...(0, _core.assignProps)({
188
178
  "role": 'tablist',
189
179
  "ref": this.containerRef
190
- }, _ref))), /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"], _ref5.cn("NeighborLocation", {
191
- "controlsLength": controlsLength
192
- }), /*#__PURE__*/_react["default"].createElement(Children, _ref5.cn("Children", {}))), animation && /*#__PURE__*/_react["default"].createElement(SCaret, _ref5.cn("SCaret", (0, _objectSpread2["default"])({}, this.getCaretProps()))));
193
- }
194
- }]);
195
- }(_core.Component);
196
- (0, _defineProperty2["default"])(TabLineRoot, "displayName", 'TabLine');
197
- (0, _defineProperty2["default"])(TabLineRoot, "style", style);
198
- (0, _defineProperty2["default"])(TabLineRoot, "defaultProps", {
180
+ }, _ref)
181
+ }), /*#__PURE__*/_react.default.createElement(_baseComponents.NeighborLocation, _ref5.cn("NeighborLocation", {
182
+ "controlsLength": controlsLength
183
+ }), /*#__PURE__*/_react.default.createElement(Children, _ref5.cn("Children", {}))), animation && /*#__PURE__*/_react.default.createElement(SCaret, _ref5.cn("SCaret", {
184
+ ...this.getCaretProps()
185
+ })));
186
+ }
187
+ }
188
+ (0, _defineProperty2.default)(TabLineRoot, "displayName", 'TabLine');
189
+ (0, _defineProperty2.default)(TabLineRoot, "style", style);
190
+ (0, _defineProperty2.default)(TabLineRoot, "defaultProps", {
199
191
  defaultValue: null,
200
192
  size: 'm',
201
193
  underlined: true,
202
194
  behavior: 'auto'
203
195
  });
204
- (0, _defineProperty2["default"])(TabLineRoot, "enhance", [(0, _a11yEnhance["default"])(optionsA11yEnhance)]);
196
+ (0, _defineProperty2.default)(TabLineRoot, "enhance", [(0, _a11yEnhance.default)(optionsA11yEnhance)]);
205
197
  function TabLineItem(props) {
206
198
  var _ref2 = arguments[0];
207
- var STabLineItem = _flexBox.Box;
208
- var Children = props.Children,
209
- styles = props.styles,
210
- addonLeft = props.addonLeft,
211
- addonRight = props.addonRight,
212
- neighborLocation = props.neighborLocation;
213
- return /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"].Detect, {
199
+ const STabLineItem = _baseComponents.Box;
200
+ const {
201
+ Children,
202
+ styles,
203
+ addonLeft,
204
+ addonRight,
205
+ neighborLocation,
206
+ buttonRefsList,
207
+ index
208
+ } = props;
209
+ const buttonRef = _react.default.useRef();
210
+ buttonRefsList[index] = buttonRef;
211
+ return /*#__PURE__*/_react.default.createElement(_baseComponents.NeighborLocation.Detect, {
214
212
  neighborLocation: neighborLocation
215
- }, function (neighborLocation) {
213
+ }, neighborLocation => {
216
214
  var _ref6;
217
- return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(STabLineItem, _ref6.cn("STabLineItem", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
218
- "tag": 'button',
219
- "tabIndex": 0,
220
- "neighborLocation": neighborLocation,
221
- "type": 'button',
222
- "role": 'tab'
223
- }, _ref2))), addonLeft ? /*#__PURE__*/_react["default"].createElement(TabLine.Item.Addon, {
215
+ return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(STabLineItem, _ref6.cn("STabLineItem", {
216
+ ...(0, _core.assignProps)({
217
+ "tag": 'button',
218
+ "tabIndex": 0,
219
+ "neighborLocation": neighborLocation,
220
+ "type": 'button',
221
+ "role": 'tab',
222
+ "ref": buttonRef
223
+ }, _ref2)
224
+ }), addonLeft ? /*#__PURE__*/_react.default.createElement(TabLine.Item.Addon, {
224
225
  tag: addonLeft
225
- }) : null, (0, _addonTextChildren["default"])(Children, TabLine.Item.Text, TabLine.Item.Addon), addonRight ? /*#__PURE__*/_react["default"].createElement(TabLine.Item.Addon, {
226
+ }) : null, (0, _addonTextChildren.default)(Children, TabLine.Item.Text, TabLine.Item.Addon), addonRight ? /*#__PURE__*/_react.default.createElement(TabLine.Item.Addon, {
226
227
  tag: addonRight
227
228
  }) : null);
228
229
  });
@@ -230,29 +231,46 @@ function TabLineItem(props) {
230
231
  function Text(props) {
231
232
  var _ref3 = arguments[0],
232
233
  _ref7;
233
- var styles = props.styles;
234
- var SText = _flexBox.Box;
235
- return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SText, _ref7.cn("SText", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
236
- "tag": 'span'
237
- }, _ref3))));
234
+ const {
235
+ styles,
236
+ ellipsis = true,
237
+ size,
238
+ buttonRefsList,
239
+ index,
240
+ hintProps = {}
241
+ } = props;
242
+ const SText = _typography.Text;
243
+ return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(SText, _ref7.cn("SText", {
244
+ ...(0, _core.assignProps)({
245
+ "ellipsis": ellipsis,
246
+ "size": size,
247
+ "use:hintProps": {
248
+ triggerRef: buttonRefsList[index],
249
+ ...hintProps
250
+ }
251
+ }, _ref3)
252
+ }));
238
253
  }
239
254
  function Addon(props) {
240
255
  var _ref4 = arguments[0],
241
256
  _ref8;
242
- var styles = props.styles;
243
- var SAddon = _flexBox.Box;
244
- return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SAddon, _ref8.cn("SAddon", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
245
- "tag": 'span'
246
- }, _ref4))));
257
+ const {
258
+ styles
259
+ } = props;
260
+ const SAddon = _baseComponents.Box;
261
+ return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(SAddon, _ref8.cn("SAddon", {
262
+ ...(0, _core.assignProps)({
263
+ "tag": 'span'
264
+ }, _ref4)
265
+ }));
247
266
  }
248
- var TabLine = (0, _core.createComponent)(TabLineRoot, {
267
+ const TabLine = (0, _core.createComponent)(TabLineRoot, {
249
268
  Item: [TabLineItem, {
250
- Text: Text,
251
- Addon: Addon
269
+ Text,
270
+ Addon
252
271
  }]
253
272
  });
254
- var wrapTabLine = exports.wrapTabLine = function wrapTabLine(wrapper) {
255
- return wrapper;
256
- };
257
- var _default = exports["default"] = TabLine;
273
+ const wrapTabLine = wrapper => wrapper;
274
+ exports.wrapTabLine = wrapTabLine;
275
+ var _default = exports.default = TabLine;
258
276
  //# sourceMappingURL=TabLine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabLine.js","names":["_core","require","_addonTextChildren","_interopRequireDefault","_a11yEnhance","_flexBox","_neighborLocation","_react","style","sstyled","insert","optionsA11yEnhance","onNeighborChange","neighborElement","props","focus","behavior","click","childSelector","TabLineRoot","_Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","animation","undefined","React","createRef","_this$state$animation","state","started","setState","_objectSpread2","value","e","handlers","_inherits2","_createClass2","key","uncontrolledProps","componentDidUpdate","prevValue","asProps","animate","componentDidMount","componentWillUnmount","clearTimeout","animationStartTimeout","fromNode","itemRefs","toNode","containerNode","containerRef","current","containerRect","getBoundingClientRect","fromRect","toRect","fromLeft","x","fromWidth","width","toLeft","toWidth","setTimeout","handleAnimationStart","getItemProps","_index","_this2","_this$asProps","size","isSelected","bindHandlerClick","ref","node","getCaretProps","left","onTransitionEnd","handleAnimationEnd","render","_ref","_ref5","STabLine","Box","SCaret","_this$asProps2","styles","Children","controlsLength","createElement","cn","assignProps","Component","defaultValue","underlined","a11yEnhance","TabLineItem","_ref2","arguments[0]","STabLineItem","addonLeft","addonRight","neighborLocation","Detect","_ref6","TabLine","Item","Addon","tag","addonTextChildren","Text","_ref3","_ref7","SText","_ref4","_ref8","SAddon","createComponent","wrapTabLine","exports","wrapper","_default"],"sources":["../../src/TabLine.jsx"],"sourcesContent":["import { createComponent, Component, sstyled, Root } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport a11yEnhance from '@semcore/core/lib/utils/enhances/a11yEnhance';\nimport { Box } from '@semcore/flex-box';\nimport NeighborLocation from '@semcore/neighbor-location';\nimport React from 'react';\n\nimport style from './style/tab-line.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement, props) => {\n if (neighborElement) {\n neighborElement.focus();\n if (props.behavior === 'auto') {\n neighborElement.click();\n }\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabLineRoot extends Component {\n static displayName = 'TabLine';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n size: 'm',\n underlined: true,\n behavior: 'auto',\n };\n\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n state = { animation: null };\n prevValue = undefined;\n itemRefs = {};\n containerRef = React.createRef();\n animationStartTimeout = -1;\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n componentDidUpdate() {\n if (\n this.prevValue !== null &&\n this.asProps.value !== null &&\n this.prevValue !== this.asProps.value\n ) {\n this.animate();\n }\n this.prevValue = this.asProps.value;\n }\n\n componentDidMount() {\n this.prevValue = this.asProps.value;\n }\n\n componentWillUnmount() {\n clearTimeout(this.animationStartTimeout);\n }\n\n animate() {\n const fromNode = this.itemRefs[this.prevValue];\n const toNode = this.itemRefs[this.asProps.value];\n const containerNode = this.containerRef.current;\n\n if (!fromNode || !toNode || !containerNode) return;\n const containerRect = containerNode.getBoundingClientRect();\n const fromRect = fromNode.getBoundingClientRect();\n const toRect = toNode.getBoundingClientRect();\n const animation = {\n fromLeft: fromRect.x - containerRect.x,\n fromWidth: fromRect.width,\n toLeft: toRect.x - containerRect.x,\n toWidth: toRect.width,\n started: false,\n };\n this.setState({ animation });\n clearTimeout(this.animationStartTimeout);\n this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);\n }\n\n handleAnimationStart = () => {\n if (this.state.animation?.started === false) {\n this.setState({ animation: { ...this.state.animation, started: true } });\n }\n };\n\n handleAnimationEnd = () => {\n this.setState({ animation: null });\n };\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props, _index) {\n const { value, size } = this.asProps;\n const isSelected = value === props.value;\n return {\n size,\n 'selected': isSelected,\n 'onClick': this.bindHandlerClick(props.value),\n 'tabIndex': isSelected ? 0 : -1,\n 'aria-selected': isSelected,\n 'ref': (node) => {\n this.itemRefs[props.value] = node;\n },\n };\n }\n\n getCaretProps() {\n const { animation } = this.state;\n if (!animation) return {};\n if (animation.started) {\n return {\n style: {\n left: animation.toLeft,\n width: animation.toWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n } else {\n return {\n style: {\n left: animation.fromLeft,\n width: animation.fromWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n }\n }\n\n render() {\n const STabLine = Root;\n const SCaret = Box;\n const { styles, Children, controlsLength } = this.asProps;\n const { animation } = this.state;\n\n return sstyled(styles)(\n <STabLine render={Box} role='tablist' ref={this.containerRef}>\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n {animation && <SCaret {...this.getCaretProps()} />}\n </STabLine>,\n );\n }\n}\n\nfunction TabLineItem(props) {\n const STabLineItem = Root;\n const { Children, styles, addonLeft, addonRight, neighborLocation } = props;\n\n return (\n <NeighborLocation.Detect neighborLocation={neighborLocation}>\n {(neighborLocation) =>\n sstyled(styles)(\n <STabLineItem\n render={Box}\n tag='button'\n tabIndex={0}\n neighborLocation={neighborLocation}\n type='button'\n role='tab'\n >\n {addonLeft ? <TabLine.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabLine.Item.Text, TabLine.Item.Addon)}\n {addonRight ? <TabLine.Item.Addon tag={addonRight} /> : null}\n </STabLineItem>,\n )}\n </NeighborLocation.Detect>\n );\n}\n\nfunction Text(props) {\n const { styles } = props;\n const SText = Root;\n return sstyled(styles)(<SText render={Box} tag='span' />);\n}\n\nfunction Addon(props) {\n const { styles } = props;\n const SAddon = Root;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst TabLine = createComponent(TabLineRoot, {\n Item: [TabLineItem, { Text, Addon }],\n});\n\nexport const wrapTabLine = (wrapper) => wrapper;\n\nexport default TabLine;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TabLine.js","names":["_core","require","_baseComponents","_addonTextChildren","_interopRequireDefault","_a11yEnhance","_typography","_react","style","sstyled","insert","optionsA11yEnhance","onNeighborChange","neighborElement","props","focus","behavior","click","childSelector","TabLineRoot","Component","constructor","args","_defineProperty2","default","animation","undefined","React","createRef","state","started","setState","value","e","handlers","uncontrolledProps","componentDidUpdate","prevValue","asProps","animate","componentDidMount","componentWillUnmount","clearTimeout","animationStartTimeout","fromNode","itemRefs","toNode","containerNode","containerRef","current","containerRect","getBoundingClientRect","fromRect","toRect","fromLeft","x","fromWidth","width","toLeft","toWidth","setTimeout","handleAnimationStart","getItemProps","index","size","isSelected","bindHandlerClick","node","buttonRefsList","getItemTextProps","tabLineSize","getCaretProps","left","onTransitionEnd","handleAnimationEnd","render","_ref","_ref5","STabLine","Box","SCaret","styles","Children","controlsLength","createElement","cn","assignProps","NeighborLocation","defaultValue","underlined","a11yEnhance","TabLineItem","_ref2","arguments[0]","STabLineItem","addonLeft","addonRight","neighborLocation","buttonRef","useRef","Detect","_ref6","TabLine","Item","Addon","tag","addonTextChildren","Text","_ref3","_ref7","ellipsis","hintProps","SText","UikitText","triggerRef","_ref4","_ref8","SAddon","createComponent","wrapTabLine","wrapper","exports","_default"],"sources":["../../src/TabLine.jsx"],"sourcesContent":["import { NeighborLocation, Box } from '@semcore/base-components';\nimport { createComponent, Component, sstyled, Root } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport a11yEnhance from '@semcore/core/lib/utils/enhances/a11yEnhance';\nimport { Text as UikitText } from '@semcore/typography';\nimport React from 'react';\n\nimport style from './style/tab-line.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement, props) => {\n if (neighborElement) {\n neighborElement.focus();\n if (props.behavior === 'auto') {\n neighborElement.click();\n }\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabLineRoot extends Component {\n static displayName = 'TabLine';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n size: 'm',\n underlined: true,\n behavior: 'auto',\n };\n\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n state = { animation: null };\n prevValue = undefined;\n itemRefs = {};\n containerRef = React.createRef();\n animationStartTimeout = -1;\n buttonRefsList = [];\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n componentDidUpdate() {\n if (\n this.prevValue !== null &&\n this.asProps.value !== null &&\n this.prevValue !== this.asProps.value\n ) {\n this.animate();\n }\n this.prevValue = this.asProps.value;\n }\n\n componentDidMount() {\n this.prevValue = this.asProps.value;\n }\n\n componentWillUnmount() {\n clearTimeout(this.animationStartTimeout);\n }\n\n animate() {\n const fromNode = this.itemRefs[this.prevValue];\n const toNode = this.itemRefs[this.asProps.value];\n const containerNode = this.containerRef.current;\n\n if (!fromNode || !toNode || !containerNode) return;\n const containerRect = containerNode.getBoundingClientRect();\n const fromRect = fromNode.getBoundingClientRect();\n const toRect = toNode.getBoundingClientRect();\n const animation = {\n fromLeft: fromRect.x - containerRect.x,\n fromWidth: fromRect.width,\n toLeft: toRect.x - containerRect.x,\n toWidth: toRect.width,\n started: false,\n };\n this.setState({ animation });\n clearTimeout(this.animationStartTimeout);\n this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);\n }\n\n handleAnimationStart = () => {\n if (this.state.animation?.started === false) {\n this.setState({ animation: { ...this.state.animation, started: true } });\n }\n };\n\n handleAnimationEnd = () => {\n this.setState({ animation: null });\n };\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props, index) {\n const { value, size } = this.asProps;\n const isSelected = value === props.value;\n return {\n size,\n 'selected': isSelected,\n 'onClick': this.bindHandlerClick(props.value),\n 'tabIndex': isSelected ? 0 : -1,\n 'aria-selected': isSelected,\n 'ref': (node) => {\n this.itemRefs[props.value] = node;\n },\n 'buttonRefsList': this.buttonRefsList,\n index,\n };\n }\n\n getItemTextProps(props, index) {\n const { size: tabLineSize } = this.asProps;\n const size = props.size\n ? props.size\n : tabLineSize === 'm' ? 200 : 300;\n\n return {\n size,\n buttonRefsList: this.buttonRefsList,\n index,\n };\n }\n\n getCaretProps() {\n const { animation } = this.state;\n if (!animation) return {};\n if (animation.started) {\n return {\n style: {\n left: animation.toLeft,\n width: animation.toWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n } else {\n return {\n style: {\n left: animation.fromLeft,\n width: animation.fromWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n }\n }\n\n render() {\n const STabLine = Root;\n const SCaret = Box;\n const { styles, Children, controlsLength } = this.asProps;\n const { animation } = this.state;\n\n return sstyled(styles)(\n <STabLine render={Box} role='tablist' ref={this.containerRef}>\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n {animation && <SCaret {...this.getCaretProps()} />}\n </STabLine>,\n );\n }\n}\n\nfunction TabLineItem(props) {\n const STabLineItem = Root;\n const { Children, styles, addonLeft, addonRight, neighborLocation, buttonRefsList, index } = props;\n const buttonRef = React.useRef();\n\n buttonRefsList[index] = buttonRef;\n\n return (\n <NeighborLocation.Detect neighborLocation={neighborLocation}>\n {(neighborLocation) =>\n sstyled(styles)(\n <STabLineItem\n render={Box}\n tag='button'\n tabIndex={0}\n neighborLocation={neighborLocation}\n type='button'\n role='tab'\n ref={buttonRef}\n >\n {addonLeft ? <TabLine.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabLine.Item.Text, TabLine.Item.Addon)}\n {addonRight ? <TabLine.Item.Addon tag={addonRight} /> : null}\n </STabLineItem>,\n )}\n </NeighborLocation.Detect>\n );\n}\n\nfunction Text(props) {\n const { styles, ellipsis = true, size, buttonRefsList, index, hintProps = {} } = props;\n const SText = Root;\n return sstyled(styles)(<SText render={UikitText} ellipsis={ellipsis} size={size} use:hintProps={{ triggerRef: buttonRefsList[index], ...hintProps }} />);\n}\n\nfunction Addon(props) {\n const { styles } = props;\n const SAddon = Root;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst TabLine = createComponent(TabLineRoot, {\n Item: [TabLineItem, { Text, Addon }],\n});\n\nexport const wrapTabLine = (wrapper) => wrapper;\n\nexport default TabLine;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type { PropGetterFn, UnknownProperties, Intergalactic } from '@semcore/core';\nimport type { Box, BoxProps } from '@semcore/flex-box';\nimport type { NeighborItemProps, NeighborLocationProps } from '@semcore/neighbor-location';\nimport type React from 'react';\n\nexport type TabLineValue = string | number | boolean;\n\n/** @deprecated */\nexport interface ITabLineProps<T extends TabLineValue = TabLineValue>\n extends TabLineProps<T>,\n UnknownProperties {}\nexport type TabLineProps<T extends TabLineValue = TabLineValue> = BoxProps &\n NeighborLocationProps & {\n /** TabLine size\n * @default m\n * */\n size?: 'm' | 'l' | false;\n /** Adds a bottom border for the entire component\n * @default true\n * */\n underlined?: boolean;\n /** Is invoked when changing the selection */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLButtonElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value of the selected tab */\n value?: T;\n /** Default value of the selected tab\n * @default null\n * */\n defaultValue?: T;\n\n /**\n * Behavior of tabs.\n * In `auto`, changes the tab immediately when press arrow.\n * In `manual`, needs to press `space` or `enter` for select a choice.\n * @default 'auto'\n */\n behavior?: 'auto' | 'manual';\n };\n\n/** @deprecated */\nexport interface ITabLineItemProps extends TabLineItemProps, UnknownProperties {}\nexport type TabLineItemProps = BoxProps &\n NeighborItemProps & {\n /** Makes a tab selected. This property is determined automatically depending on the value. */\n selected?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Tab value */\n value?: TabLineValue;\n /** Left addon tag */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n/** @deprecated */\nexport interface ITabLineContext extends TabLineContext, UnknownProperties {}\nexport type TabLineContext = {\n getItemProps: PropGetterFn;\n};\n\n/** @deprecated */\nexport interface ITabLineHandlers extends TabLineHandlers, UnknownProperties {}\nexport type TabLineHandlers = {\n value: (value: TabLineValue) => void;\n};\n\ntype IntergalacticTabLineComponent<PropsExtending = {}> = (<\n Value extends TabLineValue,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n TabLineProps<Value>,\n TabLineContext,\n [handlers: TabLineHandlers]\n > &\n PropsExtending,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\nIntergalactic.InternalTypings.ComponentAdditive<'div', 'div', TabLineProps>;\n\ndeclare const TabLine: IntergalacticTabLineComponent & {\n Item: Intergalactic.Component<'div', TabLineItemProps, {}, [handlers: TabLineHandlers]> & {\n Text: typeof Box;\n Addon: typeof Box;\n };\n};\n\ndeclare const wrapTabLine: <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticTabLineComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n) => IntergalacticTabLineComponent<PropsExtending>;\nexport { wrapTabLine };\n\nexport default TabLine;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type { Box, BoxProps, NeighborItemProps, NeighborLocationProps } from '@semcore/base-components';\nimport type { PropGetterFn, Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nexport type TabLineValue = string | number | boolean;\n\nexport type TabLineProps<T extends TabLineValue = TabLineValue> = BoxProps &\n NeighborLocationProps & {\n /** TabLine size\n * @default m\n * */\n size?: 'm' | 'l' | false;\n /** Adds a bottom border for the entire component\n * @default true\n * */\n underlined?: boolean;\n /** Is invoked when changing the selection */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLButtonElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value of the selected tab */\n value?: T;\n /** Default value of the selected tab\n * @default null\n * */\n defaultValue?: T;\n\n /**\n * Behavior of tabs.\n * In `auto`, changes the tab immediately when press arrow.\n * In `manual`, needs to press `space` or `enter` for select a choice.\n * @default 'auto'\n */\n behavior?: 'auto' | 'manual';\n };\n\nexport type TabLineItemProps = BoxProps &\n NeighborItemProps & {\n /** Makes a tab selected. This property is determined automatically depending on the value. */\n selected?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Tab value */\n value?: TabLineValue;\n /** Left addon tag */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\nexport type TabLineContext = {\n getItemProps: PropGetterFn;\n};\n\nexport type TabLineHandlers = {\n value: (value: TabLineValue) => void;\n};\n\ntype IntergalacticTabLineComponent<PropsExtending = {}> = (<\n Value extends TabLineValue,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n TabLineProps<Value>,\n TabLineContext,\n [handlers: TabLineHandlers]\n > &\n PropsExtending,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\nIntergalactic.InternalTypings.ComponentAdditive<'div', 'div', TabLineProps>;\n\ndeclare const TabLine: IntergalacticTabLineComponent & {\n Item: Intergalactic.Component<'div', TabLineItemProps, {}, [handlers: TabLineHandlers]> & {\n Text: typeof Box;\n Addon: typeof Box;\n };\n};\n\ndeclare const wrapTabLine: <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticTabLineComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n) => IntergalacticTabLineComponent<PropsExtending>;\nexport { wrapTabLine };\n\nexport default TabLine;\n"],"mappings":"","ignoreList":[]}