@infomaximum/ui-kit 0.10.2 → 0.11.1

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.
Files changed (51) hide show
  1. package/dist/components/Avatar/Avatar.types.d.ts +2 -1
  2. package/dist/components/Avatar/Avatar.utils.d.ts +1 -0
  3. package/dist/components/Avatar/Avatar.utils.js +4 -0
  4. package/dist/components/Avatar/index.d.ts +2 -1
  5. package/dist/components/Dropdown/Dropdown.js +1 -0
  6. package/dist/components/Dropdown/Dropdown.types.d.ts +0 -1
  7. package/dist/components/Dropdown/Dropdown.utils.d.ts +1 -1
  8. package/dist/components/Dropdown/Dropdown.utils.js +1 -2
  9. package/dist/components/Dropdown/components/Group/Group.js +5 -7
  10. package/dist/components/Dropdown/components/Menu/Menu.js +4 -6
  11. package/dist/components/Dropdown/hooks/useSelectedKeysController.d.ts +2 -1
  12. package/dist/components/Dropdown/hooks/useSelectedKeysController.js +2 -1
  13. package/dist/components/InternalPicker/pickers/RangePicker/RangePicker.js +2 -2
  14. package/dist/components/InternalPicker/pickers/SinglePicker/SinglePicker.js +2 -2
  15. package/dist/components/InternalPicker/pickers/SinglePicker/SinglePicker.utils.d.ts +1 -0
  16. package/dist/components/InternalPicker/pickers/SinglePicker/SinglePicker.utils.js +3 -1
  17. package/dist/components/Tabs/Tabs.d.ts +3 -0
  18. package/dist/components/Tabs/Tabs.js +60 -0
  19. package/dist/components/Tabs/Tabs.styles.d.ts +6 -0
  20. package/dist/components/Tabs/Tabs.styles.js +9 -0
  21. package/dist/components/Tabs/Tabs.tokens.d.ts +14 -0
  22. package/dist/components/Tabs/Tabs.tokens.js +15 -0
  23. package/dist/components/Tabs/Tabs.types.d.ts +28 -0
  24. package/dist/components/Tabs/components/TabBar/TabBar.d.ts +3 -0
  25. package/dist/components/Tabs/components/TabBar/TabBar.js +88 -0
  26. package/dist/components/Tabs/components/TabBar/TabBar.styles.d.ts +46 -0
  27. package/dist/components/Tabs/components/TabBar/TabBar.styles.js +70 -0
  28. package/dist/components/Tabs/components/TabBar/TabBar.types.d.ts +14 -0
  29. package/dist/components/Tabs/components/TabItem/TabItem.d.ts +3 -0
  30. package/dist/components/Tabs/components/TabItem/TabItem.js +94 -0
  31. package/dist/components/Tabs/components/TabItem/TabItem.styles.d.ts +42 -0
  32. package/dist/components/Tabs/components/TabItem/TabItem.styles.js +69 -0
  33. package/dist/components/Tabs/components/TabItem/TabItem.types.d.ts +32 -0
  34. package/dist/components/Tabs/forStories/items.d.ts +50 -0
  35. package/dist/components/Tabs/hooks/useMoreTabsController.d.ts +17 -0
  36. package/dist/components/Tabs/hooks/useMoreTabsController.js +68 -0
  37. package/dist/components/Tabs/hooks/useTabsDndController.d.ts +10 -0
  38. package/dist/components/Tabs/hooks/useTabsDndController.js +36 -0
  39. package/dist/components/Tabs/index.d.ts +2 -0
  40. package/dist/index.d.ts +4 -2
  41. package/dist/index.js +4 -0
  42. package/package.json +10 -3
  43. package/dist/docComponents/Demonstration/Demonstration.d.ts +0 -4
  44. package/dist/docComponents/Demonstration/Demonstration.styles.d.ts +0 -9
  45. package/dist/docComponents/Demonstration/Demonstration.types.d.ts +0 -5
  46. package/dist/docComponents/Description/Description.d.ts +0 -5
  47. package/dist/docComponents/Description/Description.style.d.ts +0 -26
  48. package/dist/docComponents/Doc/Doc.d.ts +0 -4
  49. package/dist/docComponents/Doc/Doc.style.d.ts +0 -13
  50. package/dist/docComponents/Example/Example.d.ts +0 -4
  51. package/dist/docComponents/Example/Example.styles.d.ts +0 -9
@@ -0,0 +1,88 @@
1
+ import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
+ import { createElement } from "@emotion/react";
3
+ import { memo, useState, useRef, useMemo } from "react";
4
+ import { TabItem } from "../TabItem/TabItem.js";
5
+ import { getTabBarStyle } from "./TabBar.styles.js";
6
+ import { EllipsisOutlined } from "@infomaximum/icons";
7
+ import { isFunction, isUndefined } from "lodash-es";
8
+ import { useSensor, PointerSensor, DndContext, closestCenter } from "@dnd-kit/core";
9
+ import { SortableContext, horizontalListSortingStrategy } from "@dnd-kit/sortable";
10
+ import { useTabsDndController } from "../../hooks/useTabsDndController.js";
11
+ import { useMoreTabsController } from "../../hooks/useMoreTabsController.js";
12
+ import { useTheme } from "../../../../hooks/useTheme/useTheme.js";
13
+ import { Dropdown } from "../../../Dropdown/Dropdown.js";
14
+ const TabBar = memo(({
15
+ items = [],
16
+ iconOnly = false,
17
+ draggable = false,
18
+ size = "middle",
19
+ border = true,
20
+ currentActiveKey,
21
+ contentWrapper,
22
+ extra,
23
+ more,
24
+ popupClassName,
25
+ styles,
26
+ changeActiveKey,
27
+ onChange,
28
+ onTabClick,
29
+ onTabScroll
30
+ }) => {
31
+ var _a;
32
+ const theme = useTheme();
33
+ const [currentTabElement, setCurrentTabElement] = useState(null);
34
+ const prevScrollPosition = useRef(0);
35
+ const itemsMap = useMemo(() => new Map(items.map((item) => [item.key, item])), [items]);
36
+ const {
37
+ tabsOrder,
38
+ isDragging,
39
+ dndEvents
40
+ } = useTabsDndController(items);
41
+ const {
42
+ tabsRef,
43
+ dropdownMenu,
44
+ addHiddenTab,
45
+ deleteHiddenTab,
46
+ scrollToTab
47
+ } = useMoreTabsController(items, currentActiveKey, currentTabElement, onTabClick, onChange, changeActiveKey);
48
+ const handleScroll = () => {
49
+ if (tabsRef.current && isFunction(onTabScroll)) {
50
+ const scrollPosition = tabsRef.current.scrollLeft;
51
+ const scrollDirection = scrollPosition > prevScrollPosition.current ? "right" : "left";
52
+ onTabScroll(scrollDirection);
53
+ prevScrollPosition.current = scrollPosition;
54
+ }
55
+ };
56
+ const sensor = useSensor(PointerSensor, {
57
+ activationConstraint: {
58
+ distance: 10
59
+ }
60
+ });
61
+ const tabBarStyle = getTabBarStyle(size, border, iconOnly, isDragging);
62
+ const renderTabs = () => {
63
+ return tabsOrder.map((key) => {
64
+ const item = itemsMap.get(key);
65
+ if (isUndefined(item)) {
66
+ return null;
67
+ }
68
+ return /* @__PURE__ */ createElement(TabItem, { ...item, itemKey: item.key, iconOnly, size, selected: currentActiveKey === item.key, changeActiveKey, addHiddenTab, deleteHiddenTab, setCurrentTabElement, scrollToTab, contentWrapper, key: item.key, styles: styles == null ? void 0 : styles.tabItem, onChange, onTabClick });
69
+ });
70
+ };
71
+ const renderTabsContainer = () => {
72
+ var _a2;
73
+ return /* @__PURE__ */ jsx("div", { ref: tabsRef, onScroll: handleScroll, css: [tabBarStyle.tabs(theme), (_a2 = styles == null ? void 0 : styles.wrapper) == null ? void 0 : _a2.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:renderTabsContainer;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkJhci9UYWJCYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlHVSIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1RhYnMvY29tcG9uZW50cy9UYWJCYXIvVGFiQmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHR5cGUgRkMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFiQmFyUHJvcHMgfSBmcm9tIFwiLi9UYWJCYXIudHlwZXNcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcImhvb2tzL3VzZVRoZW1lXCI7XG5pbXBvcnQgeyBUYWJJdGVtIH0gZnJvbSBcIi4uL1RhYkl0ZW0vVGFiSXRlbVwiO1xuaW1wb3J0IHsgZ2V0VGFiQmFyU3R5bGUgfSBmcm9tIFwiLi9UYWJCYXIuc3R5bGVzXCI7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gXCJjb21wb25lbnRzL0Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBFbGxpcHNpc091dGxpbmVkIH0gZnJvbSBcIkBpbmZvbWF4aW11bS9pY29uc1wiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNVbmRlZmluZWQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjbG9zZXN0Q2VudGVyLCBEbmRDb250ZXh0LCBQb2ludGVyU2Vuc29yLCB1c2VTZW5zb3IgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgdXNlVGFic0RuZENvbnRyb2xsZXIgfSBmcm9tIFwiY29tcG9uZW50cy9UYWJzL2hvb2tzL3VzZVRhYnNEbmRDb250cm9sbGVyXCI7XG5pbXBvcnQgeyB1c2VNb3JlVGFic0NvbnRyb2xsZXIgfSBmcm9tIFwiY29tcG9uZW50cy9UYWJzL2hvb2tzL3VzZU1vcmVUYWJzQ29udHJvbGxlclwiO1xuXG5leHBvcnQgY29uc3QgVGFiQmFyOiBGQzxUYWJCYXJQcm9wcz4gPSBtZW1vKFxuICAoe1xuICAgIGl0ZW1zID0gW10sXG4gICAgaWNvbk9ubHkgPSBmYWxzZSxcbiAgICBkcmFnZ2FibGUgPSBmYWxzZSxcbiAgICBzaXplID0gXCJtaWRkbGVcIixcbiAgICBib3JkZXIgPSB0cnVlLFxuICAgIGN1cnJlbnRBY3RpdmVLZXksXG4gICAgY29udGVudFdyYXBwZXIsXG4gICAgZXh0cmEsXG4gICAgbW9yZSxcbiAgICBwb3B1cENsYXNzTmFtZSxcbiAgICBzdHlsZXMsXG4gICAgY2hhbmdlQWN0aXZlS2V5LFxuICAgIG9uQ2hhbmdlLFxuICAgIG9uVGFiQ2xpY2ssXG4gICAgb25UYWJTY3JvbGwsXG4gIH0pID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG5cbiAgICBjb25zdCBbY3VycmVudFRhYkVsZW1lbnQsIHNldEN1cnJlbnRUYWJFbGVtZW50XSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgcHJldlNjcm9sbFBvc2l0aW9uID0gdXNlUmVmKDApO1xuXG4gICAgY29uc3QgaXRlbXNNYXAgPSB1c2VNZW1vKCgpID0+IG5ldyBNYXAoaXRlbXMubWFwKChpdGVtKSA9PiBbaXRlbS5rZXksIGl0ZW1dKSksIFtpdGVtc10pO1xuICAgIGNvbnN0IHsgdGFic09yZGVyLCBpc0RyYWdnaW5nLCBkbmRFdmVudHMgfSA9IHVzZVRhYnNEbmRDb250cm9sbGVyKGl0ZW1zKTtcbiAgICBjb25zdCB7IHRhYnNSZWYsIGRyb3Bkb3duTWVudSwgYWRkSGlkZGVuVGFiLCBkZWxldGVIaWRkZW5UYWIsIHNjcm9sbFRvVGFiIH0gPVxuICAgICAgdXNlTW9yZVRhYnNDb250cm9sbGVyKFxuICAgICAgICBpdGVtcyxcbiAgICAgICAgY3VycmVudEFjdGl2ZUtleSxcbiAgICAgICAgY3VycmVudFRhYkVsZW1lbnQsXG4gICAgICAgIG9uVGFiQ2xpY2ssXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBjaGFuZ2VBY3RpdmVLZXlcbiAgICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAodGFic1JlZi5jdXJyZW50ICYmIGlzRnVuY3Rpb24ob25UYWJTY3JvbGwpKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGFic1JlZi5jdXJyZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbERpcmVjdGlvbiA9IHNjcm9sbFBvc2l0aW9uID4gcHJldlNjcm9sbFBvc2l0aW9uLmN1cnJlbnQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIjtcbiAgICAgICAgb25UYWJTY3JvbGwoc2Nyb2xsRGlyZWN0aW9uKTtcblxuICAgICAgICBwcmV2U2Nyb2xsUG9zaXRpb24uY3VycmVudCA9IHNjcm9sbFBvc2l0aW9uO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBzZW5zb3IgPSB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogMTAgfSB9KTtcblxuICAgIGNvbnN0IHRhYkJhclN0eWxlID0gZ2V0VGFiQmFyU3R5bGUoc2l6ZSwgYm9yZGVyLCBpY29uT25seSwgaXNEcmFnZ2luZyk7XG5cbiAgICBjb25zdCByZW5kZXJUYWJzID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRhYnNPcmRlci5tYXAoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNNYXAuZ2V0KGtleSk7XG5cbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGl0ZW0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxUYWJJdGVtXG4gICAgICAgICAgICB7Li4uaXRlbX1cbiAgICAgICAgICAgIGl0ZW1LZXk9e2l0ZW0ua2V5fVxuICAgICAgICAgICAgaWNvbk9ubHk9e2ljb25Pbmx5fVxuICAgICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjdXJyZW50QWN0aXZlS2V5ID09PSBpdGVtLmtleX1cbiAgICAgICAgICAgIGNoYW5nZUFjdGl2ZUtleT17Y2hhbmdlQWN0aXZlS2V5fVxuICAgICAgICAgICAgYWRkSGlkZGVuVGFiPXthZGRIaWRkZW5UYWJ9XG4gICAgICAgICAgICBkZWxldGVIaWRkZW5UYWI9e2RlbGV0ZUhpZGRlblRhYn1cbiAgICAgICAgICAgIHNldEN1cnJlbnRUYWJFbGVtZW50PXtzZXRDdXJyZW50VGFiRWxlbWVudH1cbiAgICAgICAgICAgIHNjcm9sbFRvVGFiPXtzY3JvbGxUb1RhYn1cbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyPXtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XG4gICAgICAgICAgICBzdHlsZXM9e3N0eWxlcz8udGFiSXRlbX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uVGFiQ2xpY2s9e29uVGFiQ2xpY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJUYWJzQ29udGFpbmVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17dGFic1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsfVxuICAgICAgICAgIGNzcz17W3RhYkJhclN0eWxlLnRhYnModGhlbWUpLCBzdHlsZXM/LndyYXBwZXI/Lih0aGVtZSldfVxuICAgICAgICA+XG4gICAgICAgICAge3JlbmRlclRhYnMoKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJEbmRUYWJzID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17W3NlbnNvcl19IHsuLi5kbmRFdmVudHN9IGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn0+XG4gICAgICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17dGFic09yZGVyfSBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9PlxuICAgICAgICAgICAge3JlbmRlclRhYnNDb250YWluZXIoKX1cbiAgICAgICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY3NzPXtbdGFiQmFyU3R5bGUud3JhcHBlcih0aGVtZSksIHN0eWxlcz8ud3JhcHBlcj8uKHRoZW1lKV19PlxuICAgICAgICA8ZGl2IGNzcz17dGFiQmFyU3R5bGUuY29udGVudCgpfT5cbiAgICAgICAgICB7ZHJhZ2dhYmxlID8gcmVuZGVyRG5kVGFicygpIDogcmVuZGVyVGFic0NvbnRhaW5lcigpfVxuICAgICAgICAgIHtkcm9wZG93bk1lbnUuaXRlbXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNzcz17dGFiQmFyU3R5bGUubW9yZSh0aGVtZSl9PlxuICAgICAgICAgICAgICA8RHJvcGRvd24gey4uLm1vcmV9IG1lbnU9e2Ryb3Bkb3duTWVudX0gY2xhc3NOYW1lPXtwb3B1cENsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHtleHRyYX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbik7XG4iXX0= */"], children: renderTabs() });
74
+ };
75
+ const renderDndTabs = () => {
76
+ return /* @__PURE__ */ jsx(DndContext, { sensors: [sensor], ...dndEvents, collisionDetection: closestCenter, children: /* @__PURE__ */ jsx(SortableContext, { items: tabsOrder, strategy: horizontalListSortingStrategy, children: renderTabsContainer() }) });
77
+ };
78
+ return /* @__PURE__ */ jsxs("div", { css: [tabBarStyle.wrapper(theme), (_a = styles == null ? void 0 : styles.wrapper) == null ? void 0 : _a.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:TabBar;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkJhci9UYWJCYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1IVyIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1RhYnMvY29tcG9uZW50cy9UYWJCYXIvVGFiQmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHR5cGUgRkMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFiQmFyUHJvcHMgfSBmcm9tIFwiLi9UYWJCYXIudHlwZXNcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcImhvb2tzL3VzZVRoZW1lXCI7XG5pbXBvcnQgeyBUYWJJdGVtIH0gZnJvbSBcIi4uL1RhYkl0ZW0vVGFiSXRlbVwiO1xuaW1wb3J0IHsgZ2V0VGFiQmFyU3R5bGUgfSBmcm9tIFwiLi9UYWJCYXIuc3R5bGVzXCI7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gXCJjb21wb25lbnRzL0Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBFbGxpcHNpc091dGxpbmVkIH0gZnJvbSBcIkBpbmZvbWF4aW11bS9pY29uc1wiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNVbmRlZmluZWQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjbG9zZXN0Q2VudGVyLCBEbmRDb250ZXh0LCBQb2ludGVyU2Vuc29yLCB1c2VTZW5zb3IgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgdXNlVGFic0RuZENvbnRyb2xsZXIgfSBmcm9tIFwiY29tcG9uZW50cy9UYWJzL2hvb2tzL3VzZVRhYnNEbmRDb250cm9sbGVyXCI7XG5pbXBvcnQgeyB1c2VNb3JlVGFic0NvbnRyb2xsZXIgfSBmcm9tIFwiY29tcG9uZW50cy9UYWJzL2hvb2tzL3VzZU1vcmVUYWJzQ29udHJvbGxlclwiO1xuXG5leHBvcnQgY29uc3QgVGFiQmFyOiBGQzxUYWJCYXJQcm9wcz4gPSBtZW1vKFxuICAoe1xuICAgIGl0ZW1zID0gW10sXG4gICAgaWNvbk9ubHkgPSBmYWxzZSxcbiAgICBkcmFnZ2FibGUgPSBmYWxzZSxcbiAgICBzaXplID0gXCJtaWRkbGVcIixcbiAgICBib3JkZXIgPSB0cnVlLFxuICAgIGN1cnJlbnRBY3RpdmVLZXksXG4gICAgY29udGVudFdyYXBwZXIsXG4gICAgZXh0cmEsXG4gICAgbW9yZSxcbiAgICBwb3B1cENsYXNzTmFtZSxcbiAgICBzdHlsZXMsXG4gICAgY2hhbmdlQWN0aXZlS2V5LFxuICAgIG9uQ2hhbmdlLFxuICAgIG9uVGFiQ2xpY2ssXG4gICAgb25UYWJTY3JvbGwsXG4gIH0pID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG5cbiAgICBjb25zdCBbY3VycmVudFRhYkVsZW1lbnQsIHNldEN1cnJlbnRUYWJFbGVtZW50XSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgcHJldlNjcm9sbFBvc2l0aW9uID0gdXNlUmVmKDApO1xuXG4gICAgY29uc3QgaXRlbXNNYXAgPSB1c2VNZW1vKCgpID0+IG5ldyBNYXAoaXRlbXMubWFwKChpdGVtKSA9PiBbaXRlbS5rZXksIGl0ZW1dKSksIFtpdGVtc10pO1xuICAgIGNvbnN0IHsgdGFic09yZGVyLCBpc0RyYWdnaW5nLCBkbmRFdmVudHMgfSA9IHVzZVRhYnNEbmRDb250cm9sbGVyKGl0ZW1zKTtcbiAgICBjb25zdCB7IHRhYnNSZWYsIGRyb3Bkb3duTWVudSwgYWRkSGlkZGVuVGFiLCBkZWxldGVIaWRkZW5UYWIsIHNjcm9sbFRvVGFiIH0gPVxuICAgICAgdXNlTW9yZVRhYnNDb250cm9sbGVyKFxuICAgICAgICBpdGVtcyxcbiAgICAgICAgY3VycmVudEFjdGl2ZUtleSxcbiAgICAgICAgY3VycmVudFRhYkVsZW1lbnQsXG4gICAgICAgIG9uVGFiQ2xpY2ssXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBjaGFuZ2VBY3RpdmVLZXlcbiAgICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAodGFic1JlZi5jdXJyZW50ICYmIGlzRnVuY3Rpb24ob25UYWJTY3JvbGwpKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGFic1JlZi5jdXJyZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbERpcmVjdGlvbiA9IHNjcm9sbFBvc2l0aW9uID4gcHJldlNjcm9sbFBvc2l0aW9uLmN1cnJlbnQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIjtcbiAgICAgICAgb25UYWJTY3JvbGwoc2Nyb2xsRGlyZWN0aW9uKTtcblxuICAgICAgICBwcmV2U2Nyb2xsUG9zaXRpb24uY3VycmVudCA9IHNjcm9sbFBvc2l0aW9uO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBzZW5zb3IgPSB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogMTAgfSB9KTtcblxuICAgIGNvbnN0IHRhYkJhclN0eWxlID0gZ2V0VGFiQmFyU3R5bGUoc2l6ZSwgYm9yZGVyLCBpY29uT25seSwgaXNEcmFnZ2luZyk7XG5cbiAgICBjb25zdCByZW5kZXJUYWJzID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRhYnNPcmRlci5tYXAoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNNYXAuZ2V0KGtleSk7XG5cbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGl0ZW0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxUYWJJdGVtXG4gICAgICAgICAgICB7Li4uaXRlbX1cbiAgICAgICAgICAgIGl0ZW1LZXk9e2l0ZW0ua2V5fVxuICAgICAgICAgICAgaWNvbk9ubHk9e2ljb25Pbmx5fVxuICAgICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjdXJyZW50QWN0aXZlS2V5ID09PSBpdGVtLmtleX1cbiAgICAgICAgICAgIGNoYW5nZUFjdGl2ZUtleT17Y2hhbmdlQWN0aXZlS2V5fVxuICAgICAgICAgICAgYWRkSGlkZGVuVGFiPXthZGRIaWRkZW5UYWJ9XG4gICAgICAgICAgICBkZWxldGVIaWRkZW5UYWI9e2RlbGV0ZUhpZGRlblRhYn1cbiAgICAgICAgICAgIHNldEN1cnJlbnRUYWJFbGVtZW50PXtzZXRDdXJyZW50VGFiRWxlbWVudH1cbiAgICAgICAgICAgIHNjcm9sbFRvVGFiPXtzY3JvbGxUb1RhYn1cbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyPXtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XG4gICAgICAgICAgICBzdHlsZXM9e3N0eWxlcz8udGFiSXRlbX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uVGFiQ2xpY2s9e29uVGFiQ2xpY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJUYWJzQ29udGFpbmVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17dGFic1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsfVxuICAgICAgICAgIGNzcz17W3RhYkJhclN0eWxlLnRhYnModGhlbWUpLCBzdHlsZXM/LndyYXBwZXI/Lih0aGVtZSldfVxuICAgICAgICA+XG4gICAgICAgICAge3JlbmRlclRhYnMoKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJEbmRUYWJzID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17W3NlbnNvcl19IHsuLi5kbmRFdmVudHN9IGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn0+XG4gICAgICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17dGFic09yZGVyfSBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9PlxuICAgICAgICAgICAge3JlbmRlclRhYnNDb250YWluZXIoKX1cbiAgICAgICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY3NzPXtbdGFiQmFyU3R5bGUud3JhcHBlcih0aGVtZSksIHN0eWxlcz8ud3JhcHBlcj8uKHRoZW1lKV19PlxuICAgICAgICA8ZGl2IGNzcz17dGFiQmFyU3R5bGUuY29udGVudCgpfT5cbiAgICAgICAgICB7ZHJhZ2dhYmxlID8gcmVuZGVyRG5kVGFicygpIDogcmVuZGVyVGFic0NvbnRhaW5lcigpfVxuICAgICAgICAgIHtkcm9wZG93bk1lbnUuaXRlbXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNzcz17dGFiQmFyU3R5bGUubW9yZSh0aGVtZSl9PlxuICAgICAgICAgICAgICA8RHJvcGRvd24gey4uLm1vcmV9IG1lbnU9e2Ryb3Bkb3duTWVudX0gY2xhc3NOYW1lPXtwb3B1cENsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHtleHRyYX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbik7XG4iXX0= */"], children: [
79
+ /* @__PURE__ */ jsxs("div", { css: tabBarStyle.content(), children: [
80
+ draggable ? renderDndTabs() : renderTabsContainer(),
81
+ dropdownMenu.items.length > 0 && /* @__PURE__ */ jsx("div", { css: tabBarStyle.more(theme), children: /* @__PURE__ */ jsx(Dropdown, { ...more, menu: dropdownMenu, className: popupClassName, children: /* @__PURE__ */ jsx(EllipsisOutlined, {}) }) })
82
+ ] }),
83
+ extra
84
+ ] });
85
+ });
86
+ export {
87
+ TabBar
88
+ };
@@ -0,0 +1,46 @@
1
+ import { TabsSizeType } from 'components/Tabs/Tabs.types';
2
+ import { Theme } from 'themes';
3
+ export declare const getTabBarStyle: (size: TabsSizeType, border: boolean, iconOnly: boolean, isDragging: boolean) => {
4
+ wrapper: (theme: Theme) => {
5
+ readonly position: "relative";
6
+ readonly display: "flex";
7
+ readonly gap: number;
8
+ readonly flex: "1 1 auto";
9
+ readonly alignItems: "center";
10
+ readonly "::before": {
11
+ readonly content: "unset" | "''";
12
+ readonly position: "absolute";
13
+ readonly width: "100%";
14
+ readonly borderBottom: "1px solid #D9D9D9";
15
+ readonly bottom: 0;
16
+ readonly zIndex: 0;
17
+ };
18
+ };
19
+ content: () => {
20
+ readonly display: "flex";
21
+ readonly flex: "1 1 auto";
22
+ readonly overflowX: "hidden";
23
+ };
24
+ tabs: (theme: Theme) => {
25
+ readonly display: "flex";
26
+ readonly gap: number;
27
+ readonly flex: "1 1 auto";
28
+ readonly zIndex: 1;
29
+ readonly overflowY: "hidden";
30
+ readonly overflowX: "hidden" | "scroll";
31
+ readonly "::-webkit-scrollbar": {
32
+ readonly display: "none";
33
+ };
34
+ };
35
+ more: (theme: Theme) => {
36
+ height: number;
37
+ width: number;
38
+ display: string;
39
+ alignItems: string;
40
+ justifyContent: string;
41
+ flex: string;
42
+ svg: {
43
+ cursor: string;
44
+ };
45
+ };
46
+ };
@@ -0,0 +1,70 @@
1
+ import { getTabsTokens } from "../../Tabs.tokens.js";
2
+ const getTabsGap = (tabsTokens, iconOnly, isMiddleSize) => {
3
+ if (iconOnly) {
4
+ return 0;
5
+ }
6
+ if (isMiddleSize) {
7
+ return tabsTokens.tabsGapM;
8
+ }
9
+ return tabsTokens.tabsGapS;
10
+ };
11
+ const getTabBarStyle = (size, border, iconOnly, isDragging) => {
12
+ const isMiddleSize = size === "middle";
13
+ return {
14
+ wrapper: (theme) => {
15
+ const tabsTokens = getTabsTokens(theme);
16
+ return {
17
+ position: "relative",
18
+ display: "flex",
19
+ gap: isMiddleSize ? tabsTokens.tabsGapM : tabsTokens.tabsGapS,
20
+ flex: "1 1 auto",
21
+ alignItems: "center",
22
+ "::before": {
23
+ content: border ? "''" : "unset",
24
+ position: "absolute",
25
+ width: "100%",
26
+ borderBottom: `1px solid ${tabsTokens.tabsBorder}`,
27
+ bottom: 0,
28
+ zIndex: 0
29
+ }
30
+ };
31
+ },
32
+ content: () => ({
33
+ display: "flex",
34
+ flex: "1 1 auto",
35
+ overflowX: "hidden"
36
+ }),
37
+ tabs: (theme) => {
38
+ const tabsTokens = getTabsTokens(theme);
39
+ return {
40
+ display: "flex",
41
+ gap: getTabsGap(tabsTokens, iconOnly, isMiddleSize),
42
+ flex: "1 1 auto",
43
+ zIndex: 1,
44
+ overflowY: "hidden",
45
+ overflowX: isDragging ? "hidden" : "scroll",
46
+ "::-webkit-scrollbar": {
47
+ display: "none"
48
+ }
49
+ };
50
+ },
51
+ more: (theme) => {
52
+ const tabsTokens = getTabsTokens(theme);
53
+ const moreItemSize = isMiddleSize ? tabsTokens.tabsSizeM : tabsTokens.tabsSizeM;
54
+ return {
55
+ height: moreItemSize,
56
+ width: moreItemSize,
57
+ display: "flex",
58
+ alignItems: "center",
59
+ justifyContent: "center",
60
+ flex: "0 0 auto",
61
+ svg: {
62
+ cursor: "pointer"
63
+ }
64
+ };
65
+ }
66
+ };
67
+ };
68
+ export {
69
+ getTabBarStyle
70
+ };
@@ -0,0 +1,14 @@
1
+ import { Interpolation } from '@emotion/react';
2
+ import { TabsProps } from 'components/Tabs/Tabs.types';
3
+ import { Theme } from 'themes';
4
+ import { TabItemProps } from '../TabItem/TabItem.types';
5
+ export interface TabBarProps extends Omit<TabsProps, "activeKey" | "defaultActiveKey" | "styles" | "renderTabBar"> {
6
+ currentActiveKey: string | undefined;
7
+ contentWrapper: HTMLDivElement | null;
8
+ styles?: {
9
+ wrapper?: (theme: Theme) => Interpolation;
10
+ tabs?: (theme: Theme) => Interpolation;
11
+ tabItem?: TabItemProps["styles"];
12
+ };
13
+ changeActiveKey: (key: string) => void;
14
+ }
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { TabItemProps } from './TabItem.types';
3
+ export declare const TabItem: FC<TabItemProps>;
@@ -0,0 +1,94 @@
1
+ import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
+ import { memo, useRef, useEffect, useCallback } from "react";
3
+ import { isUndefined } from "lodash-es";
4
+ import { getTabItemStyle } from "./TabItem.styles.js";
5
+ import { createPortal } from "react-dom";
6
+ import { useInView } from "react-intersection-observer";
7
+ import { CSS } from "@dnd-kit/utilities";
8
+ import { useSortable } from "@dnd-kit/sortable";
9
+ import { useTheme } from "../../../../hooks/useTheme/useTheme.js";
10
+ const TabItem = memo(({
11
+ icon,
12
+ label,
13
+ iconOnly,
14
+ disabled = false,
15
+ size = "middle",
16
+ itemKey,
17
+ selected,
18
+ forceRender,
19
+ contentWrapper,
20
+ children,
21
+ styles,
22
+ changeActiveKey,
23
+ addHiddenTab,
24
+ deleteHiddenTab,
25
+ setCurrentTabElement,
26
+ scrollToTab,
27
+ onChange,
28
+ onTabClick
29
+ }) => {
30
+ var _a, _b, _c, _d;
31
+ const theme = useTheme();
32
+ const itemRef = useRef(null);
33
+ const {
34
+ ref,
35
+ inView
36
+ } = useInView({
37
+ threshold: 0.95
38
+ });
39
+ const {
40
+ isDragging,
41
+ attributes,
42
+ listeners,
43
+ setNodeRef,
44
+ transform,
45
+ transition
46
+ } = useSortable({
47
+ id: itemKey
48
+ });
49
+ const style = {
50
+ transform: CSS.Translate.toString(transform),
51
+ transition
52
+ };
53
+ useEffect(() => {
54
+ if (inView) {
55
+ deleteHiddenTab(itemKey);
56
+ } else {
57
+ addHiddenTab(itemKey);
58
+ }
59
+ }, [addHiddenTab, deleteHiddenTab, inView, itemKey]);
60
+ useEffect(() => {
61
+ if (!selected || isUndefined(itemRef.current)) {
62
+ return;
63
+ }
64
+ setCurrentTabElement(itemRef.current);
65
+ if (inView) {
66
+ return;
67
+ }
68
+ scrollToTab(itemRef.current);
69
+ }, [selected]);
70
+ const handleClick = useCallback((e) => {
71
+ onTabClick == null ? void 0 : onTabClick(itemKey, e);
72
+ if (disabled || selected) {
73
+ return;
74
+ }
75
+ onChange == null ? void 0 : onChange(itemKey);
76
+ changeActiveKey(itemKey);
77
+ }, [changeActiveKey, disabled, itemKey, onChange, onTabClick, selected]);
78
+ const consolidatedRef = (node) => {
79
+ ref(node);
80
+ itemRef.current = node;
81
+ setNodeRef(node);
82
+ };
83
+ const withIconOnly = iconOnly || isUndefined(label);
84
+ const withContent = (selected || forceRender) && contentWrapper && children;
85
+ const tabItemStyle = getTabItemStyle(withIconOnly, disabled, selected, size, isDragging);
86
+ return /* @__PURE__ */ jsxs("div", { ref: consolidatedRef, style, ...listeners, ...attributes, css: [tabItemStyle.wrapper(theme), (_a = styles == null ? void 0 : styles.wrapper) == null ? void 0 : _a.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:TabItem;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkl0ZW0vVGFiSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0dRIiwiZmlsZSI6Ii9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkl0ZW0vVGFiSXRlbS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZW1vLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHR5cGUgRkMsIHR5cGUgTW91c2VFdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBUYWJJdGVtUHJvcHMgfSBmcm9tIFwiLi9UYWJJdGVtLnR5cGVzXCI7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGdldFRhYkl0ZW1TdHlsZSB9IGZyb20gXCIuL1RhYkl0ZW0uc3R5bGVzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJob29rcy91c2VUaGVtZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlSW5WaWV3IH0gZnJvbSBcInJlYWN0LWludGVyc2VjdGlvbi1vYnNlcnZlclwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlU29ydGFibGUgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IFRhYkl0ZW06IEZDPFRhYkl0ZW1Qcm9wcz4gPSBtZW1vKFxuICAoe1xuICAgIGljb24sXG4gICAgbGFiZWwsXG4gICAgaWNvbk9ubHksXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBzaXplID0gXCJtaWRkbGVcIixcbiAgICBpdGVtS2V5LFxuICAgIHNlbGVjdGVkLFxuICAgIGZvcmNlUmVuZGVyLFxuICAgIGNvbnRlbnRXcmFwcGVyLFxuICAgIGNoaWxkcmVuLFxuICAgIHN0eWxlcyxcbiAgICBjaGFuZ2VBY3RpdmVLZXksXG4gICAgYWRkSGlkZGVuVGFiLFxuICAgIGRlbGV0ZUhpZGRlblRhYixcbiAgICBzZXRDdXJyZW50VGFiRWxlbWVudCxcbiAgICBzY3JvbGxUb1RhYixcbiAgICBvbkNoYW5nZSxcbiAgICBvblRhYkNsaWNrLFxuICB9KSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICAgIGNvbnN0IGl0ZW1SZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICAgIGNvbnN0IHsgcmVmLCBpblZpZXcgfSA9IHVzZUluVmlldyh7IHRocmVzaG9sZDogMC45NSB9KTtcblxuICAgIGNvbnN0IHsgaXNEcmFnZ2luZywgYXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24gfSA9IHVzZVNvcnRhYmxlKHtcbiAgICAgIGlkOiBpdGVtS2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2xhdGUudG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICAgIHRyYW5zaXRpb24sXG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaW5WaWV3KSB7XG4gICAgICAgIGRlbGV0ZUhpZGRlblRhYihpdGVtS2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZEhpZGRlblRhYihpdGVtS2V5KTtcbiAgICAgIH1cbiAgICB9LCBbYWRkSGlkZGVuVGFiLCBkZWxldGVIaWRkZW5UYWIsIGluVmlldywgaXRlbUtleV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghc2VsZWN0ZWQgfHwgaXNVbmRlZmluZWQoaXRlbVJlZi5jdXJyZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNldEN1cnJlbnRUYWJFbGVtZW50KGl0ZW1SZWYuY3VycmVudCk7XG5cbiAgICAgIGlmIChpblZpZXcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzY3JvbGxUb1RhYihpdGVtUmVmLmN1cnJlbnQpO1xuICAgIH0sIFtzZWxlY3RlZF0pO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAgIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIG9uVGFiQ2xpY2s/LihpdGVtS2V5LCBlKTtcblxuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgc2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBvbkNoYW5nZT8uKGl0ZW1LZXkpO1xuICAgICAgICBjaGFuZ2VBY3RpdmVLZXkoaXRlbUtleSk7XG4gICAgICB9LFxuICAgICAgW2NoYW5nZUFjdGl2ZUtleSwgZGlzYWJsZWQsIGl0ZW1LZXksIG9uQ2hhbmdlLCBvblRhYkNsaWNrLCBzZWxlY3RlZF1cbiAgICApO1xuXG4gICAgY29uc3QgY29uc29saWRhdGVkUmVmID0gKG5vZGU6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgcmVmKG5vZGUpO1xuICAgICAgaXRlbVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIHNldE5vZGVSZWYobm9kZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHdpdGhJY29uT25seSA9IGljb25Pbmx5IHx8IGlzVW5kZWZpbmVkKGxhYmVsKTtcbiAgICBjb25zdCB3aXRoQ29udGVudCA9IChzZWxlY3RlZCB8fCBmb3JjZVJlbmRlcikgJiYgY29udGVudFdyYXBwZXIgJiYgY2hpbGRyZW47XG5cbiAgICBjb25zdCB0YWJJdGVtU3R5bGUgPSBnZXRUYWJJdGVtU3R5bGUod2l0aEljb25Pbmx5LCBkaXNhYmxlZCwgc2VsZWN0ZWQsIHNpemUsIGlzRHJhZ2dpbmcpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtjb25zb2xpZGF0ZWRSZWZ9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgey4uLmxpc3RlbmVyc31cbiAgICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgICAgIGNzcz17W3RhYkl0ZW1TdHlsZS53cmFwcGVyKHRoZW1lKSwgc3R5bGVzPy53cmFwcGVyPy4odGhlbWUpXX1cbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHtpY29uICYmIChcbiAgICAgICAgICA8c3BhbiBjc3M9e1t0YWJJdGVtU3R5bGUuaWNvbldyYXBwZXIodGhlbWUpLCBzdHlsZXM/Lmljb25XcmFwcGVyPy4odGhlbWUpXX0+e2ljb259PC9zcGFuPlxuICAgICAgICApfVxuICAgICAgICB7IWljb25Pbmx5ICYmIGxhYmVsICYmIChcbiAgICAgICAgICA8c3BhbiBjc3M9e1t0YWJJdGVtU3R5bGUubGFiZWxXcmFwcGVyKHRoZW1lKSwgc3R5bGVzPy5sYWJlbFdyYXBwZXI/Lih0aGVtZSldfT5cbiAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICl9XG4gICAgICAgIHt3aXRoQ29udGVudCAmJlxuICAgICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgIDxkaXYgY3NzPXtbdGFiSXRlbVN0eWxlLmNoaWxkcmVuV3JhcHBlcih0aGVtZSksIHN0eWxlcz8uY2hpbGRyZW5XcmFwcGVyPy4odGhlbWUpXX0+XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PixcbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbik7XG4iXX0= */"], onClick: handleClick, children: [
87
+ icon && /* @__PURE__ */ jsx("span", { css: [tabItemStyle.iconWrapper(theme), (_b = styles == null ? void 0 : styles.iconWrapper) == null ? void 0 : _b.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:TabItem;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkl0ZW0vVGFiSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0dnQiIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1RhYnMvY29tcG9uZW50cy9UYWJJdGVtL1RhYkl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB0eXBlIEZDLCB0eXBlIE1vdXNlRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFiSXRlbVByb3BzIH0gZnJvbSBcIi4vVGFiSXRlbS50eXBlc1wiO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBnZXRUYWJJdGVtU3R5bGUgfSBmcm9tIFwiLi9UYWJJdGVtLnN0eWxlc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHVzZUluVmlldyB9IGZyb20gXCJyZWFjdC1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXJcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBUYWJJdGVtOiBGQzxUYWJJdGVtUHJvcHM+ID0gbWVtbyhcbiAgKHtcbiAgICBpY29uLFxuICAgIGxhYmVsLFxuICAgIGljb25Pbmx5LFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgc2l6ZSA9IFwibWlkZGxlXCIsXG4gICAgaXRlbUtleSxcbiAgICBzZWxlY3RlZCxcbiAgICBmb3JjZVJlbmRlcixcbiAgICBjb250ZW50V3JhcHBlcixcbiAgICBjaGlsZHJlbixcbiAgICBzdHlsZXMsXG4gICAgY2hhbmdlQWN0aXZlS2V5LFxuICAgIGFkZEhpZGRlblRhYixcbiAgICBkZWxldGVIaWRkZW5UYWIsXG4gICAgc2V0Q3VycmVudFRhYkVsZW1lbnQsXG4gICAgc2Nyb2xsVG9UYWIsXG4gICAgb25DaGFuZ2UsXG4gICAgb25UYWJDbGljayxcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgICBjb25zdCBpdGVtUmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdCB7IHJlZiwgaW5WaWV3IH0gPSB1c2VJblZpZXcoeyB0aHJlc2hvbGQ6IDAuOTUgfSk7XG5cbiAgICBjb25zdCB7IGlzRHJhZ2dpbmcsIGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgICBpZDogaXRlbUtleSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNsYXRlLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgICB0cmFuc2l0aW9uLFxuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGluVmlldykge1xuICAgICAgICBkZWxldGVIaWRkZW5UYWIoaXRlbUtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRIaWRkZW5UYWIoaXRlbUtleSk7XG4gICAgICB9XG4gICAgfSwgW2FkZEhpZGRlblRhYiwgZGVsZXRlSGlkZGVuVGFiLCBpblZpZXcsIGl0ZW1LZXldKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXNlbGVjdGVkIHx8IGlzVW5kZWZpbmVkKGl0ZW1SZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZXRDdXJyZW50VGFiRWxlbWVudChpdGVtUmVmLmN1cnJlbnQpO1xuXG4gICAgICBpZiAoaW5WaWV3KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsVG9UYWIoaXRlbVJlZi5jdXJyZW50KTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBvblRhYkNsaWNrPy4oaXRlbUtleSwgZSk7XG5cbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb25DaGFuZ2U/LihpdGVtS2V5KTtcbiAgICAgICAgY2hhbmdlQWN0aXZlS2V5KGl0ZW1LZXkpO1xuICAgICAgfSxcbiAgICAgIFtjaGFuZ2VBY3RpdmVLZXksIGRpc2FibGVkLCBpdGVtS2V5LCBvbkNoYW5nZSwgb25UYWJDbGljaywgc2VsZWN0ZWRdXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnNvbGlkYXRlZFJlZiA9IChub2RlOiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIHJlZihub2RlKTtcbiAgICAgIGl0ZW1SZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBzZXROb2RlUmVmKG5vZGUpO1xuICAgIH07XG5cbiAgICBjb25zdCB3aXRoSWNvbk9ubHkgPSBpY29uT25seSB8fCBpc1VuZGVmaW5lZChsYWJlbCk7XG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAoc2VsZWN0ZWQgfHwgZm9yY2VSZW5kZXIpICYmIGNvbnRlbnRXcmFwcGVyICYmIGNoaWxkcmVuO1xuXG4gICAgY29uc3QgdGFiSXRlbVN0eWxlID0gZ2V0VGFiSXRlbVN0eWxlKHdpdGhJY29uT25seSwgZGlzYWJsZWQsIHNlbGVjdGVkLCBzaXplLCBpc0RyYWdnaW5nKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17Y29uc29saWRhdGVkUmVmfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIHsuLi5saXN0ZW5lcnN9XG4gICAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgICBjc3M9e1t0YWJJdGVtU3R5bGUud3JhcHBlcih0aGVtZSksIHN0eWxlcz8ud3JhcHBlcj8uKHRoZW1lKV19XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgPlxuICAgICAgICB7aWNvbiAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbdGFiSXRlbVN0eWxlLmljb25XcmFwcGVyKHRoZW1lKSwgc3R5bGVzPy5pY29uV3JhcHBlcj8uKHRoZW1lKV19PntpY29ufTwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpY29uT25seSAmJiBsYWJlbCAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbdGFiSXRlbVN0eWxlLmxhYmVsV3JhcHBlcih0aGVtZSksIHN0eWxlcz8ubGFiZWxXcmFwcGVyPy4odGhlbWUpXX0+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgICB7d2l0aENvbnRlbnQgJiZcbiAgICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8ZGl2IGNzcz17W3RhYkl0ZW1TdHlsZS5jaGlsZHJlbldyYXBwZXIodGhlbWUpLCBzdHlsZXM/LmNoaWxkcmVuV3JhcHBlcj8uKHRoZW1lKV19PlxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgICBjb250ZW50V3JhcHBlclxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuIl19 */"], children: icon }),
88
+ !iconOnly && label && /* @__PURE__ */ jsx("span", { css: [tabItemStyle.labelWrapper(theme), (_c = styles == null ? void 0 : styles.labelWrapper) == null ? void 0 : _c.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:TabItem;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkl0ZW0vVGFiSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUdnQiIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1RhYnMvY29tcG9uZW50cy9UYWJJdGVtL1RhYkl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB0eXBlIEZDLCB0eXBlIE1vdXNlRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFiSXRlbVByb3BzIH0gZnJvbSBcIi4vVGFiSXRlbS50eXBlc1wiO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBnZXRUYWJJdGVtU3R5bGUgfSBmcm9tIFwiLi9UYWJJdGVtLnN0eWxlc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHVzZUluVmlldyB9IGZyb20gXCJyZWFjdC1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXJcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBUYWJJdGVtOiBGQzxUYWJJdGVtUHJvcHM+ID0gbWVtbyhcbiAgKHtcbiAgICBpY29uLFxuICAgIGxhYmVsLFxuICAgIGljb25Pbmx5LFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgc2l6ZSA9IFwibWlkZGxlXCIsXG4gICAgaXRlbUtleSxcbiAgICBzZWxlY3RlZCxcbiAgICBmb3JjZVJlbmRlcixcbiAgICBjb250ZW50V3JhcHBlcixcbiAgICBjaGlsZHJlbixcbiAgICBzdHlsZXMsXG4gICAgY2hhbmdlQWN0aXZlS2V5LFxuICAgIGFkZEhpZGRlblRhYixcbiAgICBkZWxldGVIaWRkZW5UYWIsXG4gICAgc2V0Q3VycmVudFRhYkVsZW1lbnQsXG4gICAgc2Nyb2xsVG9UYWIsXG4gICAgb25DaGFuZ2UsXG4gICAgb25UYWJDbGljayxcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgICBjb25zdCBpdGVtUmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdCB7IHJlZiwgaW5WaWV3IH0gPSB1c2VJblZpZXcoeyB0aHJlc2hvbGQ6IDAuOTUgfSk7XG5cbiAgICBjb25zdCB7IGlzRHJhZ2dpbmcsIGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgICBpZDogaXRlbUtleSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNsYXRlLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgICB0cmFuc2l0aW9uLFxuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGluVmlldykge1xuICAgICAgICBkZWxldGVIaWRkZW5UYWIoaXRlbUtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRIaWRkZW5UYWIoaXRlbUtleSk7XG4gICAgICB9XG4gICAgfSwgW2FkZEhpZGRlblRhYiwgZGVsZXRlSGlkZGVuVGFiLCBpblZpZXcsIGl0ZW1LZXldKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXNlbGVjdGVkIHx8IGlzVW5kZWZpbmVkKGl0ZW1SZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZXRDdXJyZW50VGFiRWxlbWVudChpdGVtUmVmLmN1cnJlbnQpO1xuXG4gICAgICBpZiAoaW5WaWV3KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsVG9UYWIoaXRlbVJlZi5jdXJyZW50KTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBvblRhYkNsaWNrPy4oaXRlbUtleSwgZSk7XG5cbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb25DaGFuZ2U/LihpdGVtS2V5KTtcbiAgICAgICAgY2hhbmdlQWN0aXZlS2V5KGl0ZW1LZXkpO1xuICAgICAgfSxcbiAgICAgIFtjaGFuZ2VBY3RpdmVLZXksIGRpc2FibGVkLCBpdGVtS2V5LCBvbkNoYW5nZSwgb25UYWJDbGljaywgc2VsZWN0ZWRdXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnNvbGlkYXRlZFJlZiA9IChub2RlOiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIHJlZihub2RlKTtcbiAgICAgIGl0ZW1SZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBzZXROb2RlUmVmKG5vZGUpO1xuICAgIH07XG5cbiAgICBjb25zdCB3aXRoSWNvbk9ubHkgPSBpY29uT25seSB8fCBpc1VuZGVmaW5lZChsYWJlbCk7XG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAoc2VsZWN0ZWQgfHwgZm9yY2VSZW5kZXIpICYmIGNvbnRlbnRXcmFwcGVyICYmIGNoaWxkcmVuO1xuXG4gICAgY29uc3QgdGFiSXRlbVN0eWxlID0gZ2V0VGFiSXRlbVN0eWxlKHdpdGhJY29uT25seSwgZGlzYWJsZWQsIHNlbGVjdGVkLCBzaXplLCBpc0RyYWdnaW5nKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17Y29uc29saWRhdGVkUmVmfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIHsuLi5saXN0ZW5lcnN9XG4gICAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgICBjc3M9e1t0YWJJdGVtU3R5bGUud3JhcHBlcih0aGVtZSksIHN0eWxlcz8ud3JhcHBlcj8uKHRoZW1lKV19XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgPlxuICAgICAgICB7aWNvbiAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbdGFiSXRlbVN0eWxlLmljb25XcmFwcGVyKHRoZW1lKSwgc3R5bGVzPy5pY29uV3JhcHBlcj8uKHRoZW1lKV19PntpY29ufTwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpY29uT25seSAmJiBsYWJlbCAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbdGFiSXRlbVN0eWxlLmxhYmVsV3JhcHBlcih0aGVtZSksIHN0eWxlcz8ubGFiZWxXcmFwcGVyPy4odGhlbWUpXX0+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgICB7d2l0aENvbnRlbnQgJiZcbiAgICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8ZGl2IGNzcz17W3RhYkl0ZW1TdHlsZS5jaGlsZHJlbldyYXBwZXIodGhlbWUpLCBzdHlsZXM/LmNoaWxkcmVuV3JhcHBlcj8uKHRoZW1lKV19PlxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgICBjb250ZW50V3JhcHBlclxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuIl19 */"], children: label }),
89
+ withContent && createPortal(/* @__PURE__ */ jsx("div", { css: [tabItemStyle.childrenWrapper(theme), (_d = styles == null ? void 0 : styles.childrenWrapper) == null ? void 0 : _d.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:TabItem;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvVGFicy9jb21wb25lbnRzL1RhYkl0ZW0vVGFiSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0dpQiIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1RhYnMvY29tcG9uZW50cy9UYWJJdGVtL1RhYkl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB0eXBlIEZDLCB0eXBlIE1vdXNlRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFiSXRlbVByb3BzIH0gZnJvbSBcIi4vVGFiSXRlbS50eXBlc1wiO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBnZXRUYWJJdGVtU3R5bGUgfSBmcm9tIFwiLi9UYWJJdGVtLnN0eWxlc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHVzZUluVmlldyB9IGZyb20gXCJyZWFjdC1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXJcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBUYWJJdGVtOiBGQzxUYWJJdGVtUHJvcHM+ID0gbWVtbyhcbiAgKHtcbiAgICBpY29uLFxuICAgIGxhYmVsLFxuICAgIGljb25Pbmx5LFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgc2l6ZSA9IFwibWlkZGxlXCIsXG4gICAgaXRlbUtleSxcbiAgICBzZWxlY3RlZCxcbiAgICBmb3JjZVJlbmRlcixcbiAgICBjb250ZW50V3JhcHBlcixcbiAgICBjaGlsZHJlbixcbiAgICBzdHlsZXMsXG4gICAgY2hhbmdlQWN0aXZlS2V5LFxuICAgIGFkZEhpZGRlblRhYixcbiAgICBkZWxldGVIaWRkZW5UYWIsXG4gICAgc2V0Q3VycmVudFRhYkVsZW1lbnQsXG4gICAgc2Nyb2xsVG9UYWIsXG4gICAgb25DaGFuZ2UsXG4gICAgb25UYWJDbGljayxcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgICBjb25zdCBpdGVtUmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdCB7IHJlZiwgaW5WaWV3IH0gPSB1c2VJblZpZXcoeyB0aHJlc2hvbGQ6IDAuOTUgfSk7XG5cbiAgICBjb25zdCB7IGlzRHJhZ2dpbmcsIGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgICBpZDogaXRlbUtleSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNsYXRlLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgICB0cmFuc2l0aW9uLFxuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGluVmlldykge1xuICAgICAgICBkZWxldGVIaWRkZW5UYWIoaXRlbUtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRIaWRkZW5UYWIoaXRlbUtleSk7XG4gICAgICB9XG4gICAgfSwgW2FkZEhpZGRlblRhYiwgZGVsZXRlSGlkZGVuVGFiLCBpblZpZXcsIGl0ZW1LZXldKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXNlbGVjdGVkIHx8IGlzVW5kZWZpbmVkKGl0ZW1SZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZXRDdXJyZW50VGFiRWxlbWVudChpdGVtUmVmLmN1cnJlbnQpO1xuXG4gICAgICBpZiAoaW5WaWV3KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsVG9UYWIoaXRlbVJlZi5jdXJyZW50KTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBvblRhYkNsaWNrPy4oaXRlbUtleSwgZSk7XG5cbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb25DaGFuZ2U/LihpdGVtS2V5KTtcbiAgICAgICAgY2hhbmdlQWN0aXZlS2V5KGl0ZW1LZXkpO1xuICAgICAgfSxcbiAgICAgIFtjaGFuZ2VBY3RpdmVLZXksIGRpc2FibGVkLCBpdGVtS2V5LCBvbkNoYW5nZSwgb25UYWJDbGljaywgc2VsZWN0ZWRdXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnNvbGlkYXRlZFJlZiA9IChub2RlOiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIHJlZihub2RlKTtcbiAgICAgIGl0ZW1SZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBzZXROb2RlUmVmKG5vZGUpO1xuICAgIH07XG5cbiAgICBjb25zdCB3aXRoSWNvbk9ubHkgPSBpY29uT25seSB8fCBpc1VuZGVmaW5lZChsYWJlbCk7XG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAoc2VsZWN0ZWQgfHwgZm9yY2VSZW5kZXIpICYmIGNvbnRlbnRXcmFwcGVyICYmIGNoaWxkcmVuO1xuXG4gICAgY29uc3QgdGFiSXRlbVN0eWxlID0gZ2V0VGFiSXRlbVN0eWxlKHdpdGhJY29uT25seSwgZGlzYWJsZWQsIHNlbGVjdGVkLCBzaXplLCBpc0RyYWdnaW5nKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17Y29uc29saWRhdGVkUmVmfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIHsuLi5saXN0ZW5lcnN9XG4gICAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgICBjc3M9e1t0YWJJdGVtU3R5bGUud3JhcHBlcih0aGVtZSksIHN0eWxlcz8ud3JhcHBlcj8uKHRoZW1lKV19XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgPlxuICAgICAgICB7aWNvbiAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbdGFiSXRlbVN0eWxlLmljb25XcmFwcGVyKHRoZW1lKSwgc3R5bGVzPy5pY29uV3JhcHBlcj8uKHRoZW1lKV19PntpY29ufTwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpY29uT25seSAmJiBsYWJlbCAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbdGFiSXRlbVN0eWxlLmxhYmVsV3JhcHBlcih0aGVtZSksIHN0eWxlcz8ubGFiZWxXcmFwcGVyPy4odGhlbWUpXX0+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgICB7d2l0aENvbnRlbnQgJiZcbiAgICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8ZGl2IGNzcz17W3RhYkl0ZW1TdHlsZS5jaGlsZHJlbldyYXBwZXIodGhlbWUpLCBzdHlsZXM/LmNoaWxkcmVuV3JhcHBlcj8uKHRoZW1lKV19PlxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgICBjb250ZW50V3JhcHBlclxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuIl19 */"], children }), contentWrapper)
90
+ ] });
91
+ });
92
+ export {
93
+ TabItem
94
+ };
@@ -0,0 +1,42 @@
1
+ import { TabsSizeType } from 'components/Tabs/Tabs.types';
2
+ import { Theme } from 'themes';
3
+ export declare const getTabItemStyle: (iconOnly: boolean, disabled: boolean, selected: boolean, size: TabsSizeType, isDragging: boolean) => {
4
+ wrapper: (theme: Theme) => {
5
+ readonly display: "flex";
6
+ readonly flexWrap: "nowrap";
7
+ readonly alignItems: "center";
8
+ readonly justifyContent: "unset" | "center";
9
+ readonly gap: 4;
10
+ readonly padding: `4px 0 ${number}px` | `8px 0 ${number}px`;
11
+ readonly color: "#262626" | "#595959" | "#8C8C8C" | "#BFBFBF";
12
+ readonly height: number;
13
+ readonly width: number | "fit-content";
14
+ readonly boxSizing: "border-box";
15
+ readonly cursor: "default" | "pointer" | "move";
16
+ readonly borderBottom: "2px solid #0CB3B3" | "2px solid transparent";
17
+ readonly ":hover": {
18
+ readonly color: "#262626" | "#595959" | "#8C8C8C" | "#BFBFBF";
19
+ };
20
+ };
21
+ iconWrapper: (theme: Theme) => {
22
+ display: string;
23
+ alignItems: string;
24
+ justifyContent: string;
25
+ fontSize: 16;
26
+ };
27
+ labelWrapper: (theme: Theme) => {
28
+ whiteSpace: string;
29
+ fontFamily: "Roboto";
30
+ fontSize: 14;
31
+ lineHeight: "20px";
32
+ };
33
+ childrenWrapper: (theme: Theme) => {
34
+ readonly color: "#262626";
35
+ readonly padding: "12px 0";
36
+ readonly visibility: "hidden" | "visible";
37
+ readonly position: "absolute" | "relative";
38
+ readonly fontFamily: "Roboto";
39
+ readonly fontSize: 14;
40
+ readonly lineHeight: "20px";
41
+ };
42
+ };
@@ -0,0 +1,69 @@
1
+ import { getTabsTokens } from "../../Tabs.tokens.js";
2
+ const getColor = (tabsTokens, disabled, selected, isHover = false) => {
3
+ if (disabled) {
4
+ return tabsTokens.tabsTextDisabled;
5
+ }
6
+ if (selected) {
7
+ return tabsTokens.tabsTextSelected;
8
+ }
9
+ if (isHover) {
10
+ return tabsTokens.tabsTextHover;
11
+ }
12
+ return tabsTokens.tabsText;
13
+ };
14
+ const getCursor = (isDragging, disabled, selected) => {
15
+ if (isDragging) {
16
+ return "move";
17
+ }
18
+ if (disabled || selected) {
19
+ return "default";
20
+ }
21
+ return "pointer";
22
+ };
23
+ const getTabItemStyle = (iconOnly, disabled, selected, size, isDragging) => {
24
+ const isMiddleSize = size === "middle";
25
+ return {
26
+ wrapper: (theme) => {
27
+ const tabsTokens = getTabsTokens(theme);
28
+ const tabBarSize = isMiddleSize ? tabsTokens.tabsSizeM : tabsTokens.tabsSizeS;
29
+ const tabPadding = isMiddleSize ? theme.paddingM : theme.paddingXS;
30
+ return {
31
+ display: "flex",
32
+ flexWrap: "nowrap",
33
+ alignItems: "center",
34
+ justifyContent: iconOnly ? "center" : "unset",
35
+ gap: theme.marginXS,
36
+ padding: `${tabPadding}px 0 ${tabPadding - 2}px`,
37
+ color: getColor(tabsTokens, disabled, selected),
38
+ height: tabBarSize,
39
+ width: iconOnly ? tabBarSize : "fit-content",
40
+ boxSizing: "border-box",
41
+ cursor: getCursor(isDragging, disabled, selected),
42
+ borderBottom: `2px solid ${selected ? tabsTokens.tabsIndicator : "transparent"}`,
43
+ ":hover": {
44
+ color: getColor(tabsTokens, disabled, selected, true)
45
+ }
46
+ };
47
+ },
48
+ iconWrapper: (theme) => ({
49
+ display: "flex",
50
+ alignItems: "center",
51
+ justifyContent: "center",
52
+ fontSize: theme.iconM
53
+ }),
54
+ labelWrapper: (theme) => ({
55
+ ...theme.typography.body2,
56
+ whiteSpace: "nowrap"
57
+ }),
58
+ childrenWrapper: (theme) => ({
59
+ ...theme.typography.body2,
60
+ color: theme.textPrimary,
61
+ padding: "12px 0",
62
+ visibility: selected ? "visible" : "hidden",
63
+ position: selected ? "relative" : "absolute"
64
+ })
65
+ };
66
+ };
67
+ export {
68
+ getTabItemStyle
69
+ };
@@ -0,0 +1,32 @@
1
+ import { Interpolation } from '@emotion/react';
2
+ import { TabsSizeType } from 'components/Tabs/Tabs.types';
3
+ import { MouseEvent, ReactNode } from 'react';
4
+ import { Theme } from 'themes';
5
+ export interface TabItem {
6
+ key: string;
7
+ disabled?: boolean;
8
+ forceRender?: boolean;
9
+ label?: ReactNode;
10
+ icon?: ReactNode;
11
+ children?: ReactNode;
12
+ }
13
+ export interface TabItemProps extends Omit<TabItem, "key"> {
14
+ itemKey: string;
15
+ selected: boolean;
16
+ contentWrapper: HTMLDivElement | null;
17
+ changeActiveKey: (key: string) => void;
18
+ addHiddenTab: (itemKey: string) => void;
19
+ deleteHiddenTab: (itemKey: string) => void;
20
+ setCurrentTabElement: (tab: HTMLElement | null) => void;
21
+ scrollToTab: (element: HTMLElement | null) => void;
22
+ size?: TabsSizeType;
23
+ iconOnly?: boolean;
24
+ styles?: {
25
+ wrapper?: (theme: Theme) => Interpolation;
26
+ iconWrapper?: (theme: Theme) => Interpolation;
27
+ labelWrapper?: (theme: Theme) => Interpolation;
28
+ childrenWrapper?: (theme: Theme) => Interpolation;
29
+ };
30
+ onChange?: (activeKey: string) => void;
31
+ onTabClick?: (activeKey: string, event: MouseEvent) => void;
32
+ }
@@ -0,0 +1,50 @@
1
+ export declare const baseItems: {
2
+ key: string;
3
+ label: string;
4
+ children: string;
5
+ }[];
6
+ export declare const disabledItems: ({
7
+ key: string;
8
+ label: string;
9
+ disabled?: undefined;
10
+ } | {
11
+ key: string;
12
+ label: string;
13
+ disabled: boolean;
14
+ })[];
15
+ export declare const iconItems: ({
16
+ key: string;
17
+ label: string;
18
+ icon: import("@emotion/react/jsx-runtime").JSX.Element;
19
+ disabled?: undefined;
20
+ } | {
21
+ key: string;
22
+ label: string;
23
+ icon: import("@emotion/react/jsx-runtime").JSX.Element;
24
+ disabled: boolean;
25
+ })[];
26
+ export declare const iconOnlyItems: {
27
+ key: string;
28
+ label: string;
29
+ icon: import("@emotion/react/jsx-runtime").JSX.Element;
30
+ }[];
31
+ export declare const moreTabsItems: {
32
+ key: string;
33
+ label: string;
34
+ }[];
35
+ export declare const extraContentItems: {
36
+ key: string;
37
+ label: string;
38
+ }[];
39
+ export declare const sizeItems: {
40
+ key: string;
41
+ label: string;
42
+ }[];
43
+ export declare const sizeItemsIcon: {
44
+ key: string;
45
+ icon: import("@emotion/react/jsx-runtime").JSX.Element;
46
+ }[];
47
+ export declare const borderItems: {
48
+ key: string;
49
+ label: string;
50
+ }[];
@@ -0,0 +1,17 @@
1
+ import { MouseEvent } from 'react';
2
+ import { TabItem } from '../components/TabItem/TabItem.types';
3
+ import { ItemType, MenuItem } from 'components/Dropdown/Dropdown.types';
4
+ export declare const useMoreTabsController: (items: TabItem[], currentActiveKey: string | undefined, currentTabElement: HTMLElement | null, onTabClick: ((activeKey: string, event: MouseEvent) => void) | undefined, onChange: ((activeKey: string) => void) | undefined, changeActiveKey: (key: string) => void) => {
5
+ tabsRef: import('react').MutableRefObject<HTMLDivElement | null>;
6
+ dropdownMenu: {
7
+ items: MenuItem[];
8
+ onClick: (props: {
9
+ item: ItemType;
10
+ key: string;
11
+ e: MouseEvent;
12
+ }) => void;
13
+ };
14
+ addHiddenTab: (itemKey: string) => void;
15
+ deleteHiddenTab: (itemKey: string) => void;
16
+ scrollToTab: (element: HTMLElement | null) => void;
17
+ };