@semcore/tab-line 4.40.4-prerelease.0 → 4.41.0-prerelease.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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
+ ## [4.41.0] - 2026-05-06
6
+
7
+ ### Changed
8
+
9
+ - Version minor update due to children dependencies update (`@semcore/flex-box` [5.41.4 ~> 5.42.0], `@semcore/neighbor-location` [4.40.4 ~> 4.41.0], `@semcore/utils` [4.48.5 ~> 4.49.0], `@semcore/core` [2.39.4 ~> 2.40.0]).
10
+
5
11
  ## [4.40.4] - 2025-05-13
6
12
 
7
13
  ### Changed
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -9,64 +8,48 @@ exports.wrapTabLine = exports["default"] = void 0;
9
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
13
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
- var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
15
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
- var _index = require("@semcore/utils/lib/core/index");
17
- var _core = _interopRequireWildcard(require("@semcore/core"));
14
+ var _core = require("@semcore/core");
15
+ var _baseComponents = require("@semcore/base-components");
16
+ var _addonTextChildren = _interopRequireDefault(require("@semcore/core/lib/utils/addonTextChildren"));
17
+ var _a11yEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/a11yEnhance"));
18
+ var _typography = require("@semcore/typography");
18
19
  var _react = _interopRequireDefault(require("react"));
19
- var _flexBox = require("@semcore/flex-box");
20
- var _addonTextChildren = _interopRequireDefault(require("@semcore/utils/lib/addonTextChildren"));
21
- var _keyboardFocusEnhance = _interopRequireDefault(require("@semcore/utils/lib/enhances/keyboardFocusEnhance"));
22
- var _a11yEnhance = _interopRequireDefault(require("@semcore/utils/lib/enhances/a11yEnhance"));
23
- var _neighborLocation = _interopRequireDefault(require("@semcore/neighbor-location"));
24
20
  /*!__reshadow-styles__:"./style/tab-line.shadow.css"*/
25
- var style = ( /*__reshadow_css_start__*/_index.sstyled.insert( /*__inner_css_start__*/".___STabLine_6e1u5_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_6e1u5_gg_.__underlined_6e1u5_gg_{border-bottom:1px solid var(--intergalactic-border-primary, #c4c7cf)}.___STabLineItem_6e1u5_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;outline:0;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_6e1u5_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_6e1u5_gg_:active,.___STabLineItem_6e1u5_gg_:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___STabLineItem_6e1u5_gg_:hover{outline:0;-webkit-text-decoration:none;text-decoration:none}}.___STabLineItem_6e1u5_gg_::after,.___STabLineItem_6e1u5_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_6e1u5_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_6e1u5_gg_:hover::before{background-color:var(--intergalactic-border-primary, #c4c7cf)}}.___STabLineItem_6e1u5_gg_.__selected_6e1u5_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, #006dca)}.___STabLineItem_6e1u5_gg_ .___SAddon_6e1u5_gg_:not(:last-child),.___STabLineItem_6e1u5_gg_ .___SText_6e1u5_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_6e1u5_gg_{position:absolute;bottom:-1px;height:3px;background-color:var(--intergalactic-border-info-active, #006dca);transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_6e1u5_gg_.__selected_6e1u5_gg_{flex-shrink:0}.___STabLineItem_6e1u5_gg_.__disabled_6e1u5_gg_{opacity:var(--intergalactic-disabled-opacity, 0.3);cursor:default;pointer-events:none}.___STabLineItem_6e1u5_gg_.__keyboardFocused_6e1u5_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SText_6e1u5_gg_{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.___SAddon_6e1u5_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_6e1u5_gg_._size_m_6e1u5_gg_{height:28px;min-width:18px}.___STabLineItem_6e1u5_gg_._size_m_6e1u5_gg_ .___SText_6e1u5_gg_{font-size:var(--intergalactic-fs-200, 14px);line-height:var(--intergalactic-lh-200, 142%)}.___STabLineItem_6e1u5_gg_._size_l_6e1u5_gg_{height:40px;min-width:26px}.___STabLineItem_6e1u5_gg_._size_l_6e1u5_gg_ .___SText_6e1u5_gg_{font-size:var(--intergalactic-fs-300, 16px);line-height:var(--intergalactic-lh-300, 150%)}.___STabLineItem_6e1u5_gg_._neighborLocation_left_6e1u5_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_6e1u5_gg_.__selected_6e1u5_gg_::after,.___STabLineItem_6e1u5_gg_::after,.___STabLineItem_6e1u5_gg_::before{transition:none}.___SCaret_6e1u5_gg_{display:none}}", /*__inner_css_end__*/"6e1u5_gg_"),
21
+ var style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___STabLine_13cyw_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_13cyw_gg_.__underlined_13cyw_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLine_13cyw_gg_.__underlined_13cyw_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLine_13cyw_gg_.__underlined_13cyw_gg_{border-bottom:1px solid var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}.___STabLineItem_13cyw_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, rgba(1, 5, 0, 0.899));margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_13cyw_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_13cyw_gg_:active{-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___STabLineItem_13cyw_gg_:hover{-webkit-text-decoration:none;text-decoration:none}}.___STabLineItem_13cyw_gg_::after,.___STabLineItem_13cyw_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_13cyw_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_13cyw_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLineItem_13cyw_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLineItem_13cyw_gg_:hover::before{background-color:var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}}.___STabLineItem_13cyw_gg_.__selected_13cyw_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, rgba(0, 22, 195, 0.386))}@supports (color:color(display-p3 0 0 0%)){.___STabLineItem_13cyw_gg_.__selected_13cyw_gg_::after{background-color:var(--intergalactic-border-info-active, rgba(0, 22, 195, 0.386))}@media (color-gamut:p3){.___STabLineItem_13cyw_gg_.__selected_13cyw_gg_::after{background-color:var(--intergalactic-border-info-active, color(display-p3 0.01805 0.08334 0.73488 / 0.386))}}}.___STabLineItem_13cyw_gg_ .___SAddon_13cyw_gg_:not(:last-child),.___STabLineItem_13cyw_gg_ .___SText_13cyw_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_13cyw_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, rgba(0, 22, 195, 0.386));transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}@supports (color:color(display-p3 0 0 0%)){.___SCaret_13cyw_gg_{background:var(--intergalactic-border-info-active, rgba(0, 22, 195, 0.386))}@media (color-gamut:p3){.___SCaret_13cyw_gg_{background:var(--intergalactic-border-info-active, color(display-p3 0.01805 0.08334 0.73488 / 0.386))}}}.___STabLineItem_13cyw_gg_.__selected_13cyw_gg_{flex-shrink:0}.___STabLineItem_13cyw_gg_.__disabled_13cyw_gg_{opacity:var(--intergalactic-disabled-opacity, 0.4);cursor:default;pointer-events:none}.___SAddon_13cyw_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_13cyw_gg_._size_m_13cyw_gg_{height:28px;min-width:18px}.___STabLineItem_13cyw_gg_._size_l_13cyw_gg_{height:40px;min-width:26px}.___STabLineItem_13cyw_gg_._neighborLocation_left_13cyw_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_13cyw_gg_.__selected_13cyw_gg_::after,.___STabLineItem_13cyw_gg_::after,.___STabLineItem_13cyw_gg_::before{transition:none}.___SCaret_13cyw_gg_{display:none}}", /*__inner_css_end__*/"13cyw_gg_"),
26
22
  /*__reshadow_css_end__*/
27
23
  {
28
- "__STabLine": "___STabLine_6e1u5_gg_",
29
- "_underlined": "__underlined_6e1u5_gg_",
30
- "__SCaret": "___SCaret_6e1u5_gg_",
31
- "__STabLineItem": "___STabLineItem_6e1u5_gg_",
32
- "_selected": "__selected_6e1u5_gg_",
33
- "_disabled": "__disabled_6e1u5_gg_",
34
- "_keyboardFocused": "__keyboardFocused_6e1u5_gg_",
35
- "__SText": "___SText_6e1u5_gg_",
36
- "__SAddon": "___SAddon_6e1u5_gg_",
37
- "_neighborLocation_left": "_neighborLocation_left_6e1u5_gg_",
38
- "_size_m": "_size_m_6e1u5_gg_",
39
- "_size_l": "_size_l_6e1u5_gg_"
24
+ "__STabLine": "___STabLine_13cyw_gg_",
25
+ "_underlined": "__underlined_13cyw_gg_",
26
+ "__SCaret": "___SCaret_13cyw_gg_",
27
+ "__STabLineItem": "___STabLineItem_13cyw_gg_",
28
+ "_selected": "__selected_13cyw_gg_",
29
+ "_disabled": "__disabled_13cyw_gg_",
30
+ "__SAddon": "___SAddon_13cyw_gg_",
31
+ "_size_m": "_size_m_13cyw_gg_",
32
+ "_size_l": "_size_l_13cyw_gg_",
33
+ "_neighborLocation_left": "_neighborLocation_left_13cyw_gg_",
34
+ "__SText": "___SText_13cyw_gg_"
40
35
  });
41
- var optionsA11yEnhance = {
42
- onNeighborChange: function onNeighborChange(neighborElement, props) {
43
- if (neighborElement) {
44
- neighborElement.focus();
45
- if (props.behavior === 'auto') {
46
- neighborElement.click();
47
- }
48
- }
49
- },
50
- childSelector: ['role', 'tab']
51
- };
52
36
  var TabLineRoot = /*#__PURE__*/function (_Component) {
53
- (0, _inherits2["default"])(TabLineRoot, _Component);
54
- var _super = (0, _createSuper2["default"])(TabLineRoot);
55
37
  function TabLineRoot() {
56
38
  var _this;
57
39
  (0, _classCallCheck2["default"])(this, TabLineRoot);
58
40
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
59
41
  args[_key] = arguments[_key];
60
42
  }
61
- _this = _super.call.apply(_super, [this].concat(args));
62
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
43
+ _this = (0, _callSuper2["default"])(this, TabLineRoot, [].concat(args));
44
+ (0, _defineProperty2["default"])(_this, "state", {
63
45
  animation: null
64
46
  });
65
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "prevValue", undefined);
66
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "itemRefs", {});
67
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "containerRef", /*#__PURE__*/_react["default"].createRef());
68
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "animationStartTimeout", -1);
69
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleAnimationStart", function () {
47
+ (0, _defineProperty2["default"])(_this, "prevValue", undefined);
48
+ (0, _defineProperty2["default"])(_this, "itemRefs", {});
49
+ (0, _defineProperty2["default"])(_this, "containerRef", /*#__PURE__*/_react["default"].createRef());
50
+ (0, _defineProperty2["default"])(_this, "animationStartTimeout", null);
51
+ (0, _defineProperty2["default"])(_this, "buttonRefsList", []);
52
+ (0, _defineProperty2["default"])(_this, "handleAnimationStart", function () {
70
53
  var _this$state$animation;
71
54
  if (((_this$state$animation = _this.state.animation) === null || _this$state$animation === void 0 ? void 0 : _this$state$animation.started) === false) {
72
55
  _this.setState({
@@ -76,19 +59,20 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
76
59
  });
77
60
  }
78
61
  });
79
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleAnimationEnd", function () {
62
+ (0, _defineProperty2["default"])(_this, "handleAnimationEnd", function () {
80
63
  _this.setState({
81
64
  animation: null
82
65
  });
83
66
  });
84
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerClick", function (value) {
67
+ (0, _defineProperty2["default"])(_this, "bindHandlerClick", function (value) {
85
68
  return function (e) {
86
69
  _this.handlers.value(value, e);
87
70
  };
88
71
  });
89
72
  return _this;
90
73
  }
91
- (0, _createClass2["default"])(TabLineRoot, [{
74
+ (0, _inherits2["default"])(TabLineRoot, _Component);
75
+ return (0, _createClass2["default"])(TabLineRoot, [{
92
76
  key: "uncontrolledProps",
93
77
  value: function uncontrolledProps() {
94
78
  return {
@@ -111,13 +95,16 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
111
95
  }, {
112
96
  key: "componentWillUnmount",
113
97
  value: function componentWillUnmount() {
114
- clearTimeout(this.animationStartTimeout);
98
+ if (this.animationStartTimeout) {
99
+ clearTimeout(this.animationStartTimeout);
100
+ }
115
101
  }
116
102
  }, {
117
103
  key: "animate",
118
104
  value: function animate() {
119
- var fromNode = this.itemRefs[this.prevValue];
120
- var toNode = this.itemRefs[this.asProps.value];
105
+ if (this.prevValue === undefined || this.asProps.value === undefined) return;
106
+ var fromNode = this.itemRefs[this.prevValue.toString()];
107
+ var toNode = this.itemRefs[this.asProps.value.toString()];
121
108
  var containerNode = this.containerRef.current;
122
109
  if (!fromNode || !toNode || !containerNode) return;
123
110
  var containerRect = containerNode.getBoundingClientRect();
@@ -133,7 +120,9 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
133
120
  this.setState({
134
121
  animation: animation
135
122
  });
136
- clearTimeout(this.animationStartTimeout);
123
+ if (this.animationStartTimeout) {
124
+ clearTimeout(this.animationStartTimeout);
125
+ }
137
126
  this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);
138
127
  }
139
128
  }, {
@@ -146,13 +135,27 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
146
135
  var isSelected = value === props.value;
147
136
  return {
148
137
  size: size,
149
- selected: isSelected,
150
- onClick: this.bindHandlerClick(props.value),
151
- tabIndex: isSelected ? 0 : -1,
138
+ 'selected': isSelected,
139
+ 'onClick': this.bindHandlerClick(props.value),
140
+ 'tabIndex': isSelected ? 0 : -1,
152
141
  'aria-selected': isSelected,
153
- ref: function ref(node) {
154
- _this2.itemRefs[props.value] = node;
155
- }
142
+ 'ref': function ref(node) {
143
+ if (props.value === undefined) return;
144
+ _this2.itemRefs[props.value.toString()] = node;
145
+ },
146
+ 'buttonRefsList': this.buttonRefsList,
147
+ index: index
148
+ };
149
+ }
150
+ }, {
151
+ key: "getItemTextProps",
152
+ value: function getItemTextProps(props, index) {
153
+ var tabLineSize = this.asProps.size;
154
+ var size = props.size ? props.size : tabLineSize === 'm' ? 200 : 300;
155
+ return {
156
+ size: size,
157
+ buttonRefsList: this.buttonRefsList,
158
+ index: index
156
159
  };
157
160
  }
158
161
  }, {
@@ -183,8 +186,8 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
183
186
  value: function render() {
184
187
  var _ref = this.asProps,
185
188
  _ref5;
186
- var STabLine = _flexBox.Box;
187
- var SCaret = 'div';
189
+ var STabLine = _baseComponents.Box;
190
+ var SCaret = _baseComponents.Box;
188
191
  var _this$asProps2 = this.asProps,
189
192
  styles = _this$asProps2.styles,
190
193
  Children = _this$asProps2.Children,
@@ -193,12 +196,11 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
193
196
  return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(STabLine, _ref5.cn("STabLine", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
194
197
  "role": 'tablist',
195
198
  "ref": this.containerRef
196
- }, _ref))), /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"], _ref5.cn("NeighborLocation", {
199
+ }, _ref))), /*#__PURE__*/_react["default"].createElement(_baseComponents.NeighborLocation, _ref5.cn("NeighborLocation", {
197
200
  "controlsLength": controlsLength
198
201
  }), /*#__PURE__*/_react["default"].createElement(Children, _ref5.cn("Children", {}))), animation && /*#__PURE__*/_react["default"].createElement(SCaret, _ref5.cn("SCaret", (0, _objectSpread2["default"])({}, this.getCaretProps()))));
199
202
  }
200
203
  }]);
201
- return TabLineRoot;
202
204
  }(_core.Component);
203
205
  (0, _defineProperty2["default"])(TabLineRoot, "displayName", 'TabLine');
204
206
  (0, _defineProperty2["default"])(TabLineRoot, "style", style);
@@ -208,24 +210,40 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
208
210
  underlined: true,
209
211
  behavior: 'auto'
210
212
  });
211
- (0, _defineProperty2["default"])(TabLineRoot, "enhance", [(0, _a11yEnhance["default"])(optionsA11yEnhance)]);
213
+ (0, _defineProperty2["default"])(TabLineRoot, "enhance", [(0, _a11yEnhance["default"])({
214
+ onNeighborChange: function onNeighborChange(neighborElement, props) {
215
+ if (neighborElement) {
216
+ neighborElement.focus();
217
+ if (props.behavior === 'auto') {
218
+ neighborElement.click();
219
+ }
220
+ }
221
+ },
222
+ childSelector: ['role', 'tab']
223
+ })]);
212
224
  function TabLineItem(props) {
213
225
  var _ref2 = arguments[0];
214
- var STabLineItem = _flexBox.Box;
226
+ var STabLineItem = _baseComponents.Box;
215
227
  var Children = props.Children,
216
228
  styles = props.styles,
217
229
  addonLeft = props.addonLeft,
218
230
  addonRight = props.addonRight,
219
- neighborLocation = props.neighborLocation;
220
- return /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"].Detect, {
231
+ neighborLocation = props.neighborLocation,
232
+ buttonRefsList = props.buttonRefsList,
233
+ index = props.index;
234
+ var buttonRef = _react["default"].useRef();
235
+ buttonRefsList[index] = buttonRef;
236
+ return /*#__PURE__*/_react["default"].createElement(_baseComponents.NeighborLocation.Detect, {
221
237
  neighborLocation: neighborLocation
222
238
  }, function (neighborLocation) {
223
239
  var _ref6;
224
240
  return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(STabLineItem, _ref6.cn("STabLineItem", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
225
241
  "tag": 'button',
242
+ "tabIndex": 0,
226
243
  "neighborLocation": neighborLocation,
227
244
  "type": 'button',
228
- "role": 'tab'
245
+ "role": 'tab',
246
+ "ref": buttonRef
229
247
  }, _ref2))), addonLeft ? /*#__PURE__*/_react["default"].createElement(TabLine.Item.Addon, {
230
248
  tag: addonLeft
231
249
  }) : null, (0, _addonTextChildren["default"])(Children, TabLine.Item.Text, TabLine.Item.Addon), addonRight ? /*#__PURE__*/_react["default"].createElement(TabLine.Item.Addon, {
@@ -233,35 +251,39 @@ function TabLineItem(props) {
233
251
  }) : null);
234
252
  });
235
253
  }
236
- TabLineItem.enhance = [(0, _keyboardFocusEnhance["default"])()];
237
254
  function Text(props) {
238
255
  var _ref3 = arguments[0],
239
256
  _ref7;
240
- var styles = props.styles;
241
- var SText = _flexBox.Box;
257
+ var styles = props.styles,
258
+ _props$ellipsis = props.ellipsis,
259
+ ellipsis = _props$ellipsis === void 0 ? true : _props$ellipsis,
260
+ size = props.size,
261
+ buttonRefsList = props.buttonRefsList,
262
+ index = props.index;
263
+ var SText = _typography.Text;
242
264
  return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SText, _ref7.cn("SText", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
243
- "tag": 'span'
265
+ "ellipsis": ellipsis,
266
+ "size": size,
267
+ "hint:triggerRef": buttonRefsList[index]
244
268
  }, _ref3))));
245
269
  }
246
270
  function Addon(props) {
247
271
  var _ref4 = arguments[0],
248
272
  _ref8;
249
273
  var styles = props.styles;
250
- var SAddon = _flexBox.Box;
274
+ var SAddon = _baseComponents.Box;
251
275
  return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SAddon, _ref8.cn("SAddon", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
252
276
  "tag": 'span'
253
277
  }, _ref4))));
254
278
  }
255
- var TabLine = (0, _core["default"])(TabLineRoot, {
279
+ var TabLine = (0, _core.createComponent)(TabLineRoot, {
256
280
  Item: [TabLineItem, {
257
281
  Text: Text,
258
282
  Addon: Addon
259
283
  }]
260
284
  });
261
- var wrapTabLine = function wrapTabLine(wrapper) {
285
+ var wrapTabLine = exports.wrapTabLine = function wrapTabLine(wrapper) {
262
286
  return wrapper;
263
287
  };
264
- exports.wrapTabLine = wrapTabLine;
265
- var _default = TabLine;
266
- exports["default"] = _default;
288
+ var _default = exports["default"] = TabLine;
267
289
  //# sourceMappingURL=TabLine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabLine.js","names":["_core","_interopRequireWildcard","require","_react","_interopRequireDefault","_flexBox","_addonTextChildren","_keyboardFocusEnhance","_a11yEnhance","_neighborLocation","style","_index","sstyled","insert","optionsA11yEnhance","onNeighborChange","neighborElement","props","focus","behavior","click","childSelector","TabLineRoot","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","animation","undefined","React","createRef","_this$state$animation","state","started","setState","_objectSpread2","value","e","handlers","_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","selected","onClick","bindHandlerClick","tabIndex","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","enhance","keyboardFocusEnhance","_ref3","_ref7","SText","_ref4","_ref8","SAddon","createComponent","wrapTabLine","wrapper","exports","_default"],"sources":["../../src/TabLine.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport a11yEnhance from '@semcore/utils/lib/enhances/a11yEnhance';\nimport NeighborLocation from '@semcore/neighbor-location';\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 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 componentDidMount() {\n this.prevValue = this.asProps.value;\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 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 = 'div';\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 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 }\n </NeighborLocation.Detect>\n );\n}\n\nTabLineItem.enhance = [keyboardFocusEnhance()];\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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"}
1
+ {"version":3,"file":"TabLine.js","names":["_core","require","_baseComponents","_addonTextChildren","_interopRequireDefault","_a11yEnhance","_typography","_react","style","sstyled","insert","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","animationStartTimeout","clearTimeout","fromNode","itemRefs","toString","toNode","containerNode","containerRef","current","containerRect","getBoundingClientRect","fromRect","toRect","fromLeft","x","fromWidth","width","toLeft","toWidth","setTimeout","handleAnimationStart","getItemProps","props","index","_this2","_this$asProps","size","isSelected","bindHandlerClick","ref","node","buttonRefsList","getItemTextProps","tabLineSize","getCaretProps","left","onTransitionEnd","handleAnimationEnd","render","_ref","_ref5","STabLine","Box","SCaret","_this$asProps2","styles","Children","controlsLength","createElement","cn","assignProps","NeighborLocation","Component","defaultValue","underlined","behavior","a11yEnhance","onNeighborChange","neighborElement","focus","click","childSelector","TabLineItem","_ref2","arguments[0]","STabLineItem","addonLeft","addonRight","neighborLocation","buttonRef","useRef","Detect","_ref6","TabLine","Item","Addon","tag","addonTextChildren","Text","_ref3","_ref7","_props$ellipsis","ellipsis","SText","SemcoreText","_ref4","_ref8","SAddon","createComponent","wrapTabLine","exports","wrapper","_default"],"sources":["../../src/TabLine.tsx"],"sourcesContent":["import { NeighborLocation, Box } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\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 SemcoreText } from '@semcore/typography';\nimport React from 'react';\n\nimport style from './style/tab-line.shadow.css';\nimport type { NSTabLine } from './TabLine.type';\n\ntype State = {\n animation: {\n fromLeft: number;\n fromWidth: number;\n toLeft: number;\n toWidth: number;\n started: boolean;\n } | null;\n};\n\nclass TabLineRoot extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSTabLine.Component>,\n typeof TabLineRoot.enhance,\n NSTabLine.Handlers,\n {},\n State\n> {\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({\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 })] as const;\n\n state: State = { animation: null };\n prevValue: NSTabLine.Props['value'] = undefined;\n itemRefs: Record<string, HTMLDivElement> = {};\n containerRef = React.createRef<HTMLDivElement>();\n animationStartTimeout: ReturnType<typeof setTimeout> | null = null;\n buttonRefsList: Array<React.MutableRefObject<HTMLButtonElement | undefined>> = [];\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 if (this.animationStartTimeout) {\n clearTimeout(this.animationStartTimeout);\n }\n }\n\n animate() {\n if (this.prevValue === undefined || this.asProps.value === undefined) return;\n\n const fromNode = this.itemRefs[this.prevValue.toString()];\n const toNode = this.itemRefs[this.asProps.value.toString()];\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\n if (this.animationStartTimeout) {\n clearTimeout(this.animationStartTimeout);\n }\n\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: NSTabLine.Props['value']) => (e: React.SyntheticEvent) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props: NSTabLine.Item.Props, index: number) {\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: HTMLDivElement) => {\n if (props.value === undefined) return;\n\n this.itemRefs[props.value.toString()] = node;\n },\n 'buttonRefsList': this.buttonRefsList,\n index,\n };\n }\n\n getItemTextProps(props: NSTabLine.Item.Text.Props, index: number) {\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(\n props: Intergalactic.InternalTypings.InferChildComponentProps<\n NSTabLine.Item.Component,\n typeof TabLineRoot,\n 'Item'\n >,\n) {\n const STabLineItem = Root;\n const { Children, styles, addonLeft, addonRight, neighborLocation, buttonRefsList, index } = props;\n const buttonRef = React.useRef<HTMLButtonElement>();\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(\n props: Intergalactic.InternalTypings.InferChildComponentProps<\n NSTabLine.Item.Text.Component,\n typeof TabLineRoot,\n 'ItemText'\n >,\n) {\n const { styles, ellipsis = true, size, buttonRefsList, index } = props;\n const SText = Root;\n return sstyled(styles)(<SText render={SemcoreText} ellipsis={ellipsis} size={size} hint:triggerRef={buttonRefsList[index]} />);\n}\n\nfunction Addon(\n props: Intergalactic.InternalTypings.InferComponentProps<NSTabLine.Item.Addon.Component>,\n) {\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}) as unknown as NSTabLine.Component;\n\nexport const wrapTabLine = <PropsExtending extends {}>(wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<NSTabLine.WrapperComponent>\n > &\n PropsExtending,\n) => React.ReactNode) => wrapper as NSTabLine.WrapperComponent<PropsExtending>;\n\nexport default TabLine;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=TabLine.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabLine.type.js","names":[],"sources":["../../src/TabLine.type.ts"],"sourcesContent":["import type { Box, BoxProps, NeighborItemProps, NeighborLocationProps } from '@semcore/base-components';\nimport type { PropGetterFn, Intergalactic } from '@semcore/core';\nimport type { NSText } from '@semcore/typography';\nimport type React from 'react';\n\ndeclare namespace NSTabLine {\n type Value = string | number | boolean;\n type Props<T extends NSTabLine.Value = NSTabLine.Value> = 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 type Ctx = {\n getItemProps: PropGetterFn;\n };\n type Handlers = {\n value: null;\n };\n\n namespace Item {\n type Props = 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?: NSTabLine.Value;\n /** Left addon tag */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n namespace Text {\n type Props = NSText.Props;\n type Component = NSText.Component;\n }\n\n namespace Addon {\n type Component = typeof Box;\n }\n\n type Component = Intergalactic.Component<'div', Props, {}, [handlers: NSTabLine.Handlers]> & {\n Text: Text.Component;\n Addon: Addon.Component;\n };\n }\n\n type WrapperComponent<PropsExtending = {}> = (<\n V extends Value,\n Tag extends Intergalactic.Tag = 'div',\n >(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n Props<V>,\n Ctx,\n [handlers: Handlers]\n > &\n PropsExtending,\n ) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', Props>;\n\n type Component = WrapperComponent & {\n Item: Item.Component;\n };\n}\n\n/** @deprecated It will be removed in v18. */\nexport type TabLineValue = NSTabLine.Value;\n/** @deprecated It will be removed in v18. */\nexport type TabLineProps<T extends TabLineValue = TabLineValue> = NSTabLine.Props<T>;\n/** @deprecated It will be removed in v18. */\nexport type TabLineItemProps = NSTabLine.Item.Props;\n/** @deprecated It will be removed in v18. */\nexport type TabLineContext = NSTabLine.Ctx;\n/** @deprecated It will be removed in v18. */\nexport type TabLineHandlers = NSTabLine.Handlers;\n\nexport type { NSTabLine };\n"],"mappings":"","ignoreList":[]}
package/lib/cjs/index.js CHANGED
@@ -1,25 +1,34 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- var _exportNames = {};
7
+ var _exportNames = {
8
+ wrapTabLine: true
9
+ };
8
10
  Object.defineProperty(exports, "default", {
9
11
  enumerable: true,
10
12
  get: function get() {
11
13
  return _TabLine["default"];
12
14
  }
13
15
  });
16
+ Object.defineProperty(exports, "wrapTabLine", {
17
+ enumerable: true,
18
+ get: function get() {
19
+ return _TabLine.wrapTabLine;
20
+ }
21
+ });
14
22
  var _TabLine = _interopRequireWildcard(require("./TabLine"));
15
- Object.keys(_TabLine).forEach(function (key) {
23
+ var _TabLine2 = require("./TabLine.type");
24
+ Object.keys(_TabLine2).forEach(function (key) {
16
25
  if (key === "default" || key === "__esModule") return;
17
26
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
- if (key in exports && exports[key] === _TabLine[key]) return;
27
+ if (key in exports && exports[key] === _TabLine2[key]) return;
19
28
  Object.defineProperty(exports, key, {
20
29
  enumerable: true,
21
30
  get: function get() {
22
- return _TabLine[key];
31
+ return _TabLine2[key];
23
32
  }
24
33
  });
25
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_TabLine","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["../../src/index.js"],"sourcesContent":["export { default } from './TabLine';\nexport * from './TabLine';\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AACAC,MAAA,CAAAC,IAAA,CAAAJ,QAAA,EAAAK,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAN,QAAA,CAAAM,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAd,QAAA,CAAAM,GAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["_TabLine","_interopRequireWildcard","require","_TabLine2","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["../../src/index.ts"],"sourcesContent":["export { default, wrapTabLine } from './TabLine';\nexport * from './TabLine.type';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,SAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,SAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAZ,SAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -6,7 +6,7 @@ STabLine {
6
6
  }
7
7
 
8
8
  STabLine[underlined] {
9
- border-bottom: 1px solid var(--intergalactic-border-primary, #c4c7cf);
9
+ border-bottom: 1px solid var(--intergalactic-border-primary, oklch(0.137 0.026 175.7 / 0.161));
10
10
  }
11
11
 
12
12
  STabLineItem {
@@ -24,14 +24,14 @@ STabLineItem {
24
24
  text-decoration: none;
25
25
  -webkit-tap-highlight-color: transparent;
26
26
  overflow: visible;
27
- outline: 0;
27
+ /*outline: 0;*/
28
28
  text-align: center;
29
29
  vertical-align: middle;
30
30
  font-family: inherit;
31
31
  cursor: pointer;
32
32
  border: none;
33
33
  background: transparent;
34
- color: var(--intergalactic-text-primary, #191b23);
34
+ color: var(--intergalactic-text-primary, oklch(0.1 0.03 137 / 0.899));
35
35
  margin-right: var(--intergalactic-spacing-4x, 16px);
36
36
  font-weight: var(--intergalactic-medium, 500);
37
37
 
@@ -41,9 +41,7 @@ STabLineItem {
41
41
  }
42
42
 
43
43
  &:active,
44
- &:hover,
45
- &:focus {
46
- outline: 0;
44
+ &:hover {
47
45
  text-decoration: none;
48
46
  }
49
47
 
@@ -63,12 +61,12 @@ STabLineItem {
63
61
  }
64
62
 
65
63
  &:hover::before {
66
- background-color: var(--intergalactic-border-primary, #c4c7cf);
64
+ background-color: var(--intergalactic-border-primary, oklch(0.137 0.026 175.7 / 0.161));
67
65
  }
68
66
 
69
67
  &[selected]::after {
70
68
  transition-delay: calc(var(--intergalactic-duration-control, 200) * 1ms);
71
- background-color: var(--intergalactic-border-info-active, #006dca);
69
+ background-color: var(--intergalactic-border-info-active, oklch(0.382 0.248 264.2 / 0.386));
72
70
  }
73
71
 
74
72
  & SText:not(:last-child) {
@@ -84,7 +82,7 @@ SCaret {
84
82
  position: absolute;
85
83
  bottom: -1px;
86
84
  height: 3px;
87
- background-color: var(--intergalactic-border-info-active, #006dca);
85
+ background: var(--intergalactic-border-info-active, oklch(0.382 0.248 264.2 / 0.386));
88
86
  transition: calc(var(--intergalactic-duration-control, 200) * 1ms) all ease-in-out;
89
87
  }
90
88
 
@@ -93,23 +91,12 @@ STabLineItem[selected] {
93
91
  }
94
92
 
95
93
  STabLineItem[disabled] {
96
- opacity: var(--intergalactic-disabled-opacity, 0.3);
94
+ opacity: var(--intergalactic-disabled-opacity, 0.4);
97
95
  cursor: default;
98
96
  /* Disable link interactions */
99
97
  pointer-events: none;
100
98
  }
101
99
 
102
- STabLineItem[keyboardFocused] {
103
- box-shadow: var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));
104
- }
105
-
106
- SText {
107
- display: inline-block;
108
- white-space: nowrap;
109
- overflow: hidden;
110
- text-overflow: ellipsis;
111
- }
112
-
113
100
  SAddon {
114
101
  display: inline-flex;
115
102
  align-items: center;
@@ -119,21 +106,11 @@ SAddon {
119
106
  STabLineItem[size='m'] {
120
107
  height: 28px;
121
108
  min-width: 18px;
122
-
123
- & SText {
124
- font-size: var(--intergalactic-fs-200, 14px);
125
- line-height: var(--intergalactic-lh-200, 142%);
126
- }
127
109
  }
128
110
 
129
111
  STabLineItem[size='l'] {
130
112
  height: 40px;
131
113
  min-width: 26px;
132
-
133
- & SText {
134
- font-size: var(--intergalactic-fs-300, 16px);
135
- line-height: var(--intergalactic-lh-300, 150%);
136
- }
137
114
  }
138
115
 
139
116
  STabLineItem[neighborLocation='left'] {
@@ -156,4 +133,4 @@ STabLineItem[neighborLocation='left'] {
156
133
  SCaret {
157
134
  display: none;
158
135
  }
159
- }
136
+ }