@lidofinance/lido-ui 3.40.0 → 3.42.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.
Files changed (51) hide show
  1. package/dist/cjs/index.js +8 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/switcher/Switcher.js +100 -0
  4. package/dist/cjs/switcher/Switcher.js.map +1 -0
  5. package/dist/cjs/switcher/SwitcherItem.js +32 -0
  6. package/dist/cjs/switcher/SwitcherItem.js.map +1 -0
  7. package/dist/cjs/switcher/SwitcherStyles.js +108 -0
  8. package/dist/cjs/switcher/SwitcherStyles.js.map +1 -0
  9. package/dist/cjs/tabs/Tab.js +32 -0
  10. package/dist/cjs/tabs/Tab.js.map +1 -0
  11. package/dist/cjs/tabs/Tabs.js +101 -0
  12. package/dist/cjs/tabs/Tabs.js.map +1 -0
  13. package/dist/cjs/tabs/TabsStyles.js +107 -0
  14. package/dist/cjs/tabs/TabsStyles.js.map +1 -0
  15. package/dist/esm/index.mjs +4 -0
  16. package/dist/esm/index.mjs.map +1 -1
  17. package/dist/esm/switcher/Switcher.mjs +96 -0
  18. package/dist/esm/switcher/Switcher.mjs.map +1 -0
  19. package/dist/esm/switcher/SwitcherItem.mjs +28 -0
  20. package/dist/esm/switcher/SwitcherItem.mjs.map +1 -0
  21. package/dist/esm/switcher/SwitcherStyles.mjs +101 -0
  22. package/dist/esm/switcher/SwitcherStyles.mjs.map +1 -0
  23. package/dist/esm/tabs/Tab.mjs +28 -0
  24. package/dist/esm/tabs/Tab.mjs.map +1 -0
  25. package/dist/esm/tabs/Tabs.mjs +97 -0
  26. package/dist/esm/tabs/Tabs.mjs.map +1 -0
  27. package/dist/esm/tabs/TabsStyles.mjs +100 -0
  28. package/dist/esm/tabs/TabsStyles.mjs.map +1 -0
  29. package/dist/types/index.d.ts +2 -0
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/switcher/Switcher.d.ts +11 -0
  32. package/dist/types/switcher/Switcher.d.ts.map +1 -0
  33. package/dist/types/switcher/SwitcherItem.d.ts +12 -0
  34. package/dist/types/switcher/SwitcherItem.d.ts.map +1 -0
  35. package/dist/types/switcher/SwitcherStyles.d.ts +9 -0
  36. package/dist/types/switcher/SwitcherStyles.d.ts.map +1 -0
  37. package/dist/types/switcher/index.d.ts +4 -0
  38. package/dist/types/switcher/index.d.ts.map +1 -0
  39. package/dist/types/switcher/types.d.ts +11 -0
  40. package/dist/types/switcher/types.d.ts.map +1 -0
  41. package/dist/types/tabs/Tab.d.ts +9 -0
  42. package/dist/types/tabs/Tab.d.ts.map +1 -0
  43. package/dist/types/tabs/Tabs.d.ts +8 -0
  44. package/dist/types/tabs/Tabs.d.ts.map +1 -0
  45. package/dist/types/tabs/TabsStyles.d.ts +9 -0
  46. package/dist/types/tabs/TabsStyles.d.ts.map +1 -0
  47. package/dist/types/tabs/index.d.ts +4 -0
  48. package/dist/types/tabs/index.d.ts.map +1 -0
  49. package/dist/types/tabs/types.d.ts +11 -0
  50. package/dist/types/tabs/types.d.ts.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,96 @@
1
+ import { forwardRef, useRef, useCallback } from 'react';
2
+ import '../utils/styled-components-wrapper.mjs';
3
+ import 'use-callback-ref';
4
+ import { useIsomorphicLayoutEffect } from '../hooks/useIsomorphicLayoutEffect.mjs';
5
+ import '../theme/cookie-theme-provider.mjs';
6
+ import '../theme/theme-provider.mjs';
7
+ import { jsxs, jsx } from 'react/jsx-runtime';
8
+ import '../theme/document-head-contents/element-theme-colors.mjs';
9
+ import '../utils/modalRoot.mjs';
10
+ import '../utils/cookies-client-side.mjs';
11
+ import '../theme/constants.mjs';
12
+ import '../theme/utils/set-theme-cookie.mjs';
13
+ import '../theme/themes.mjs';
14
+ import { SwitcherListStyle, SwitcherIndicatorStyle } from './SwitcherStyles.mjs';
15
+
16
+ const Switcher = /*#__PURE__*/forwardRef((_ref, ref) => {
17
+ let {
18
+ children,
19
+ ...rest
20
+ } = _ref;
21
+ const listRef = useRef(null);
22
+ const setRefs = useCallback(node => {
23
+ listRef.current = node;
24
+ if (typeof ref === 'function') {
25
+ ref(node);
26
+ return;
27
+ }
28
+ if (ref) {
29
+ ref.current = node;
30
+ }
31
+ }, [ref]);
32
+ useIsomorphicLayoutEffect(() => {
33
+ if (typeof window === 'undefined') return undefined;
34
+ const listNode = listRef.current;
35
+ if (!listNode) return undefined;
36
+ let rafId = 0;
37
+ const updateIndicator = () => {
38
+ const activeItem = listNode.querySelector('[role="tab"][aria-selected="true"]');
39
+ if (!activeItem) {
40
+ listNode.style.setProperty('--switcher-indicator-left', '0px');
41
+ listNode.style.setProperty('--switcher-indicator-width', '0px');
42
+ return;
43
+ }
44
+ const listRect = listNode.getBoundingClientRect();
45
+ const itemRect = activeItem.getBoundingClientRect();
46
+ const left = itemRect.left - listRect.left + listNode.scrollLeft;
47
+ listNode.style.setProperty('--switcher-indicator-left', `${left}px`);
48
+ listNode.style.setProperty('--switcher-indicator-width', `${itemRect.width}px`);
49
+ };
50
+ const scheduleUpdate = () => {
51
+ if (rafId) {
52
+ window.cancelAnimationFrame(rafId);
53
+ }
54
+ rafId = window.requestAnimationFrame(updateIndicator);
55
+ };
56
+ updateIndicator();
57
+ scheduleUpdate();
58
+ listNode.addEventListener('scroll', scheduleUpdate, {
59
+ passive: true
60
+ });
61
+ window.addEventListener('resize', scheduleUpdate);
62
+ const mutationObserver = typeof MutationObserver === 'undefined' ? null : new MutationObserver(scheduleUpdate);
63
+ mutationObserver?.observe(listNode, {
64
+ attributes: true,
65
+ subtree: true,
66
+ attributeFilter: ['aria-selected']
67
+ });
68
+ const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(scheduleUpdate);
69
+ resizeObserver?.observe(listNode);
70
+ listNode.querySelectorAll('[role="tab"]').forEach(tab => resizeObserver?.observe(tab));
71
+ if (typeof document !== 'undefined' && 'fonts' in document) {
72
+ void document.fonts.ready.then(scheduleUpdate);
73
+ }
74
+ return () => {
75
+ if (rafId) {
76
+ window.cancelAnimationFrame(rafId);
77
+ }
78
+ listNode.removeEventListener('scroll', scheduleUpdate);
79
+ window.removeEventListener('resize', scheduleUpdate);
80
+ mutationObserver?.disconnect();
81
+ resizeObserver?.disconnect();
82
+ };
83
+ }, [children]);
84
+ return /*#__PURE__*/jsxs(SwitcherListStyle, {
85
+ role: "tablist",
86
+ ref: setRefs,
87
+ ...rest,
88
+ children: [children, /*#__PURE__*/jsx(SwitcherIndicatorStyle, {
89
+ "aria-hidden": true
90
+ })]
91
+ });
92
+ });
93
+ Switcher.displayName = 'Switcher';
94
+
95
+ export { Switcher };
96
+ //# sourceMappingURL=Switcher.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switcher.mjs","sources":["../../../packages/switcher/Switcher.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, useCallback, useRef } from 'react'\nimport { useIsomorphicLayoutEffect } from '../hooks'\nimport { SwitcherProps } from './types.js'\nimport { SwitcherIndicatorStyle, SwitcherListStyle } from './SwitcherStyles.js'\n\n/**\n * Segmented control container for SwitcherItem options.\n */\nexport const Switcher = forwardRef(\n (\n { children, ...rest }: SwitcherProps,\n ref?: ForwardedRef<HTMLDivElement>,\n ) => {\n const listRef = useRef<HTMLDivElement | null>(null)\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n listRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n return\n }\n if (ref) {\n ;(ref as { current: HTMLDivElement | null }).current = node\n }\n },\n [ref],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (typeof window === 'undefined') return undefined\n const listNode = listRef.current\n if (!listNode) return undefined\n let rafId = 0\n\n const updateIndicator = () => {\n const activeItem = listNode.querySelector<HTMLElement>(\n '[role=\"tab\"][aria-selected=\"true\"]',\n )\n if (!activeItem) {\n listNode.style.setProperty('--switcher-indicator-left', '0px')\n listNode.style.setProperty('--switcher-indicator-width', '0px')\n return\n }\n\n const listRect = listNode.getBoundingClientRect()\n const itemRect = activeItem.getBoundingClientRect()\n const left = itemRect.left - listRect.left + listNode.scrollLeft\n\n listNode.style.setProperty('--switcher-indicator-left', `${left}px`)\n listNode.style.setProperty(\n '--switcher-indicator-width',\n `${itemRect.width}px`,\n )\n }\n\n const scheduleUpdate = () => {\n if (rafId) {\n window.cancelAnimationFrame(rafId)\n }\n rafId = window.requestAnimationFrame(updateIndicator)\n }\n\n updateIndicator()\n scheduleUpdate()\n listNode.addEventListener('scroll', scheduleUpdate, { passive: true })\n window.addEventListener('resize', scheduleUpdate)\n\n const mutationObserver =\n typeof MutationObserver === 'undefined'\n ? null\n : new MutationObserver(scheduleUpdate)\n\n mutationObserver?.observe(listNode, {\n attributes: true,\n subtree: true,\n attributeFilter: ['aria-selected'],\n })\n\n const resizeObserver =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(scheduleUpdate)\n\n resizeObserver?.observe(listNode)\n listNode\n .querySelectorAll<HTMLElement>('[role=\"tab\"]')\n .forEach((tab) => resizeObserver?.observe(tab))\n\n if (typeof document !== 'undefined' && 'fonts' in document) {\n void (document as Document & { fonts: FontFaceSet }).fonts.ready.then(\n scheduleUpdate,\n )\n }\n\n return () => {\n if (rafId) {\n window.cancelAnimationFrame(rafId)\n }\n listNode.removeEventListener('scroll', scheduleUpdate)\n window.removeEventListener('resize', scheduleUpdate)\n mutationObserver?.disconnect()\n resizeObserver?.disconnect()\n }\n }, [children])\n\n return (\n <SwitcherListStyle role='tablist' ref={setRefs} {...rest}>\n {children}\n <SwitcherIndicatorStyle aria-hidden />\n </SwitcherListStyle>\n )\n },\n)\nSwitcher.displayName = 'Switcher'\n"],"names":["Switcher","forwardRef","_ref","ref","children","rest","listRef","useRef","setRefs","useCallback","node","current","useIsomorphicLayoutEffect","window","undefined","listNode","rafId","updateIndicator","activeItem","querySelector","style","setProperty","listRect","getBoundingClientRect","itemRect","left","scrollLeft","width","scheduleUpdate","cancelAnimationFrame","requestAnimationFrame","addEventListener","passive","mutationObserver","MutationObserver","observe","attributes","subtree","attributeFilter","resizeObserver","ResizeObserver","querySelectorAll","forEach","tab","document","fonts","ready","then","removeEventListener","disconnect","_jsxs","SwitcherListStyle","role","_jsx","SwitcherIndicatorStyle","displayName"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { forwardRef } from 'react';
2
+ import { SwitcherItemStyle, SwitcherLabelStyle } from './SwitcherStyles.mjs';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ const SwitcherItem = /*#__PURE__*/forwardRef((_ref, ref) => {
6
+ let {
7
+ active = false,
8
+ children,
9
+ ...rest
10
+ } = _ref;
11
+ return /*#__PURE__*/jsx(SwitcherItemStyle, {
12
+ $active: active,
13
+ "aria-selected": active,
14
+ role: "tab",
15
+ tabIndex: active ? 0 : -1,
16
+ type: "button",
17
+ ref: ref,
18
+ ...rest,
19
+ children: /*#__PURE__*/jsx(SwitcherLabelStyle, {
20
+ $active: active,
21
+ children: children
22
+ })
23
+ });
24
+ });
25
+ SwitcherItem.displayName = 'SwitcherItem';
26
+
27
+ export { SwitcherItem };
28
+ //# sourceMappingURL=SwitcherItem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitcherItem.mjs","sources":["../../../packages/switcher/SwitcherItem.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from 'react'\nimport { SwitcherItemProps } from './types.js'\nimport { SwitcherItemStyle, SwitcherLabelStyle } from './SwitcherStyles.js'\n\n/**\n * Switcher option button.\n */\nexport const SwitcherItem = forwardRef(\n (\n { active = false, children, ...rest }: SwitcherItemProps,\n ref?: ForwardedRef<HTMLButtonElement>,\n ) => {\n return (\n <SwitcherItemStyle\n $active={active}\n aria-selected={active}\n role='tab'\n tabIndex={active ? 0 : -1}\n type='button'\n ref={ref}\n {...rest}\n >\n <SwitcherLabelStyle $active={active}>{children}</SwitcherLabelStyle>\n </SwitcherItemStyle>\n )\n },\n)\nSwitcherItem.displayName = 'SwitcherItem'\n"],"names":["SwitcherItem","forwardRef","_ref","ref","active","children","rest","_jsx","SwitcherItemStyle","$active","role","tabIndex","type","SwitcherLabelStyle","displayName"],"mappings":";;;;AAOO,MAAMA,YAAY,gBAAGC,UAAU,CACpC,CAAAC,IAAA,EAEEC,GAAqC,KAClC;EAAA,IAFH;AAAEC,IAAAA,MAAM,GAAG,KAAK;IAAEC,QAAQ;IAAE,GAAGC,IAAAA;AAAwB,GAAC,GAAAJ,IAAA,CAAA;EAGxD,oBACEK,GAAA,CAACC,iBAAiB,EAAA;AAChBC,IAAAA,OAAO,EAAEL,MAAO;AAChB,IAAA,eAAA,EAAeA,MAAO;AACtBM,IAAAA,IAAI,EAAC,KAAK;AACVC,IAAAA,QAAQ,EAAEP,MAAM,GAAG,CAAC,GAAG,CAAC,CAAE;AAC1BQ,IAAAA,IAAI,EAAC,QAAQ;AACbT,IAAAA,GAAG,EAAEA,GAAI;AAAA,IAAA,GACLG,IAAI;IAAAD,QAAA,eAERE,GAAA,CAACM,kBAAkB,EAAA;AAACJ,MAAAA,OAAO,EAAEL,MAAO;AAAAC,MAAAA,QAAA,EAAEA,QAAAA;KAA6B,CAAA;AAAC,GACnD,CAAC,CAAA;AAExB,CACF,EAAC;AACDL,YAAY,CAACc,WAAW,GAAG,cAAc;;;;"}
@@ -0,0 +1,101 @@
1
+ import styled from '../utils/styled-components-wrapper.mjs';
2
+
3
+ const CONTAINER_PADDING = 2;
4
+ const ITEM_PADDING_Y = 2;
5
+ const ITEM_PADDING_X = 12;
6
+ const PILL_RADIUS = 110;
7
+ const SwitcherListStyle = styled.div`
8
+ display: inline-flex;
9
+ align-items: center;
10
+ gap: 0;
11
+ padding: ${CONTAINER_PADDING}px;
12
+ background: var(--lido-color-backgroundDarken);
13
+ border-radius: ${PILL_RADIUS}px;
14
+ box-sizing: border-box;
15
+ position: relative;
16
+
17
+ --switcher-indicator-left: 0px;
18
+ --switcher-indicator-width: 0px;
19
+ `;
20
+ const SwitcherIndicatorStyle = styled.span`
21
+ position: absolute;
22
+ top: ${CONTAINER_PADDING}px;
23
+ bottom: ${CONTAINER_PADDING}px;
24
+ left: 0;
25
+ width: var(--switcher-indicator-width, 0);
26
+ background: var(--lido-color-foreground);
27
+ border-radius: ${PILL_RADIUS}px;
28
+ transition:
29
+ transform ${_ref => {
30
+ let {
31
+ theme
32
+ } = _ref;
33
+ return theme.duration.norm;
34
+ }} ease,
35
+ width ${_ref2 => {
36
+ let {
37
+ theme
38
+ } = _ref2;
39
+ return theme.duration.norm;
40
+ }} ease;
41
+ pointer-events: none;
42
+ z-index: 0;
43
+ will-change: transform, width;
44
+ transform: translateX(var(--switcher-indicator-left, 0));
45
+ `;
46
+ const SwitcherLabelStyle = styled.span`
47
+ font-size: ${_ref3 => {
48
+ let {
49
+ theme
50
+ } = _ref3;
51
+ return theme.fontSizesMap.xxs;
52
+ }}px;
53
+ line-height: 20px;
54
+ font-weight: 700;
55
+ color: var(--lido-color-text);
56
+ opacity: ${_ref4 => {
57
+ let {
58
+ $active
59
+ } = _ref4;
60
+ return $active ? 1 : 0.5;
61
+ }};
62
+ transition: opacity ${_ref5 => {
63
+ let {
64
+ theme
65
+ } = _ref5;
66
+ return theme.duration.fast;
67
+ }} ease;
68
+ white-space: nowrap;
69
+ `;
70
+ const SwitcherItemStyle = styled.button`
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ margin: 0;
75
+ border: none;
76
+ background: transparent;
77
+ padding: ${ITEM_PADDING_Y}px ${ITEM_PADDING_X}px;
78
+ border-radius: ${PILL_RADIUS}px;
79
+ box-sizing: border-box;
80
+ cursor: pointer;
81
+ color: var(--lido-color-text);
82
+ font-family: inherit;
83
+ -webkit-tap-highlight-color: transparent;
84
+ position: relative;
85
+ z-index: 1;
86
+
87
+ &:hover ${SwitcherLabelStyle}, &:focus-visible ${SwitcherLabelStyle} {
88
+ opacity: 1;
89
+ }
90
+
91
+ &:disabled {
92
+ cursor: default;
93
+ }
94
+
95
+ &:disabled ${SwitcherLabelStyle} {
96
+ opacity: 0.5;
97
+ }
98
+ `;
99
+
100
+ export { SwitcherIndicatorStyle, SwitcherItemStyle, SwitcherLabelStyle, SwitcherListStyle };
101
+ //# sourceMappingURL=SwitcherStyles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitcherStyles.mjs","sources":["../../../packages/switcher/SwitcherStyles.tsx"],"sourcesContent":["import styled from '../utils/styled-components-wrapper.js'\n\ntype InjectedProps = {\n $active: boolean\n}\n\nconst CONTAINER_PADDING = 2\nconst ITEM_PADDING_Y = 2\nconst ITEM_PADDING_X = 12\nconst PILL_RADIUS = 110\n\nexport const SwitcherListStyle = styled.div`\n display: inline-flex;\n align-items: center;\n gap: 0;\n padding: ${CONTAINER_PADDING}px;\n background: var(--lido-color-backgroundDarken);\n border-radius: ${PILL_RADIUS}px;\n box-sizing: border-box;\n position: relative;\n\n --switcher-indicator-left: 0px;\n --switcher-indicator-width: 0px;\n`\n\nexport const SwitcherIndicatorStyle = styled.span`\n position: absolute;\n top: ${CONTAINER_PADDING}px;\n bottom: ${CONTAINER_PADDING}px;\n left: 0;\n width: var(--switcher-indicator-width, 0);\n background: var(--lido-color-foreground);\n border-radius: ${PILL_RADIUS}px;\n transition:\n transform ${({ theme }) => theme.duration.norm} ease,\n width ${({ theme }) => theme.duration.norm} ease;\n pointer-events: none;\n z-index: 0;\n will-change: transform, width;\n transform: translateX(var(--switcher-indicator-left, 0));\n`\n\nexport const SwitcherLabelStyle = styled.span<InjectedProps>`\n font-size: ${({ theme }) => theme.fontSizesMap.xxs}px;\n line-height: 20px;\n font-weight: 700;\n color: var(--lido-color-text);\n opacity: ${({ $active }) => ($active ? 1 : 0.5)};\n transition: opacity ${({ theme }) => theme.duration.fast} ease;\n white-space: nowrap;\n`\n\nexport const SwitcherItemStyle = styled.button<InjectedProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n border: none;\n background: transparent;\n padding: ${ITEM_PADDING_Y}px ${ITEM_PADDING_X}px;\n border-radius: ${PILL_RADIUS}px;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--lido-color-text);\n font-family: inherit;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n z-index: 1;\n\n &:hover ${SwitcherLabelStyle}, &:focus-visible ${SwitcherLabelStyle} {\n opacity: 1;\n }\n\n &:disabled {\n cursor: default;\n }\n\n &:disabled ${SwitcherLabelStyle} {\n opacity: 0.5;\n }\n`\n"],"names":["CONTAINER_PADDING","ITEM_PADDING_Y","ITEM_PADDING_X","PILL_RADIUS","SwitcherListStyle","styled","div","SwitcherIndicatorStyle","span","_ref","theme","duration","norm","_ref2","SwitcherLabelStyle","_ref3","fontSizesMap","xxs","_ref4","$active","_ref5","fast","SwitcherItemStyle","button"],"mappings":";;AAMA,MAAMA,iBAAiB,GAAG,CAAC,CAAA;AAC3B,MAAMC,cAAc,GAAG,CAAC,CAAA;AACxB,MAAMC,cAAc,GAAG,EAAE,CAAA;AACzB,MAAMC,WAAW,GAAG,GAAG,CAAA;AAEVC,MAAAA,iBAAiB,GAAGC,MAAM,CAACC,GAAG,CAAA;AAC3C;AACA;AACA;AACA,WAAA,EAAaN,iBAAiB,CAAA;AAC9B;AACA,iBAAA,EAAmBG,WAAW,CAAA;AAC9B;AACA;AACA;AACA;AACA;AACA,EAAC;AAEYI,MAAAA,sBAAsB,GAAGF,MAAM,CAACG,IAAI,CAAA;AACjD;AACA,OAAA,EAASR,iBAAiB,CAAA;AAC1B,UAAA,EAAYA,iBAAiB,CAAA;AAC7B;AACA;AACA;AACA,iBAAA,EAAmBG,WAAW,CAAA;AAC9B;AACA,cAAA,EAAgBM,IAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAAD,IAAA,CAAA;AAAA,EAAA,OAAKC,KAAK,CAACC,QAAQ,CAACC,IAAI,CAAA;AAAA,CAAA,CAAA;AAClD,UAAA,EAAYC,KAAA,IAAA;EAAA,IAAC;AAAEH,IAAAA,KAAAA;AAAM,GAAC,GAAAG,KAAA,CAAA;AAAA,EAAA,OAAKH,KAAK,CAACC,QAAQ,CAACC,IAAI,CAAA;AAAA,CAAA,CAAA;AAC9C;AACA;AACA;AACA;AACA,EAAC;AAEYE,MAAAA,kBAAkB,GAAGT,MAAM,CAACG,IAAmB,CAAA;AAC5D,aAAA,EAAeO,KAAA,IAAA;EAAA,IAAC;AAAEL,IAAAA,KAAAA;AAAM,GAAC,GAAAK,KAAA,CAAA;AAAA,EAAA,OAAKL,KAAK,CAACM,YAAY,CAACC,GAAG,CAAA;AAAA,CAAA,CAAA;AACpD;AACA;AACA;AACA,WAAA,EAAaC,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,OAAAA;AAAQ,GAAC,GAAAD,KAAA,CAAA;AAAA,EAAA,OAAMC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAA;AAAA,CAAC,CAAA;AACjD,sBAAA,EAAwBC,KAAA,IAAA;EAAA,IAAC;AAAEV,IAAAA,KAAAA;AAAM,GAAC,GAAAU,KAAA,CAAA;AAAA,EAAA,OAAKV,KAAK,CAACC,QAAQ,CAACU,IAAI,CAAA;AAAA,CAAA,CAAA;AAC1D;AACA,EAAC;AAEYC,MAAAA,iBAAiB,GAAGjB,MAAM,CAACkB,MAAqB,CAAA;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,WAAatB,EAAAA,cAAc,MAAMC,cAAc,CAAA;AAC/C,iBAAA,EAAmBC,WAAW,CAAA;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAYW,EAAAA,kBAAkB,qBAAqBA,kBAAkB,CAAA;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAA,EAAeA,kBAAkB,CAAA;AACjC;AACA;AACA;;;;"}
@@ -0,0 +1,28 @@
1
+ import { forwardRef } from 'react';
2
+ import { TabButtonStyle, TabLabelStyle } from './TabsStyles.mjs';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ const Tab = /*#__PURE__*/forwardRef((_ref, ref) => {
6
+ let {
7
+ active = false,
8
+ children,
9
+ ...rest
10
+ } = _ref;
11
+ return /*#__PURE__*/jsx(TabButtonStyle, {
12
+ $active: active,
13
+ "aria-selected": active,
14
+ role: "tab",
15
+ tabIndex: active ? 0 : -1,
16
+ type: "button",
17
+ ref: ref,
18
+ ...rest,
19
+ children: /*#__PURE__*/jsx(TabLabelStyle, {
20
+ $active: active,
21
+ children: children
22
+ })
23
+ });
24
+ });
25
+ Tab.displayName = 'Tab';
26
+
27
+ export { Tab };
28
+ //# sourceMappingURL=Tab.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tab.mjs","sources":["../../../packages/tabs/Tab.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from 'react'\nimport { TabProps } from './types.js'\nimport { TabButtonStyle, TabLabelStyle } from './TabsStyles.js'\n\nexport const Tab = forwardRef(\n (\n { active = false, children, ...rest }: TabProps,\n ref?: ForwardedRef<HTMLButtonElement>,\n ) => {\n return (\n <TabButtonStyle\n $active={active}\n aria-selected={active}\n role='tab'\n tabIndex={active ? 0 : -1}\n type='button'\n ref={ref}\n {...rest}\n >\n <TabLabelStyle $active={active}>{children}</TabLabelStyle>\n </TabButtonStyle>\n )\n },\n)\nTab.displayName = 'Tab'\n"],"names":["Tab","forwardRef","_ref","ref","active","children","rest","_jsx","TabButtonStyle","$active","role","tabIndex","type","TabLabelStyle","displayName"],"mappings":";;;;AAIO,MAAMA,GAAG,gBAAGC,UAAU,CAC3B,CAAAC,IAAA,EAEEC,GAAqC,KAClC;EAAA,IAFH;AAAEC,IAAAA,MAAM,GAAG,KAAK;IAAEC,QAAQ;IAAE,GAAGC,IAAAA;AAAe,GAAC,GAAAJ,IAAA,CAAA;EAG/C,oBACEK,GAAA,CAACC,cAAc,EAAA;AACbC,IAAAA,OAAO,EAAEL,MAAO;AAChB,IAAA,eAAA,EAAeA,MAAO;AACtBM,IAAAA,IAAI,EAAC,KAAK;AACVC,IAAAA,QAAQ,EAAEP,MAAM,GAAG,CAAC,GAAG,CAAC,CAAE;AAC1BQ,IAAAA,IAAI,EAAC,QAAQ;AACbT,IAAAA,GAAG,EAAEA,GAAI;AAAA,IAAA,GACLG,IAAI;IAAAD,QAAA,eAERE,GAAA,CAACM,aAAa,EAAA;AAACJ,MAAAA,OAAO,EAAEL,MAAO;AAAAC,MAAAA,QAAA,EAAEA,QAAAA;KAAwB,CAAA;AAAC,GAC5C,CAAC,CAAA;AAErB,CACF,EAAC;AACDL,GAAG,CAACc,WAAW,GAAG,KAAK;;;;"}
@@ -0,0 +1,97 @@
1
+ import { forwardRef, useRef, useCallback } from 'react';
2
+ import '../utils/styled-components-wrapper.mjs';
3
+ import 'use-callback-ref';
4
+ import { useIsomorphicLayoutEffect } from '../hooks/useIsomorphicLayoutEffect.mjs';
5
+ import '../theme/cookie-theme-provider.mjs';
6
+ import '../theme/theme-provider.mjs';
7
+ import { jsxs, jsx } from 'react/jsx-runtime';
8
+ import '../theme/document-head-contents/element-theme-colors.mjs';
9
+ import '../utils/modalRoot.mjs';
10
+ import '../utils/cookies-client-side.mjs';
11
+ import '../theme/constants.mjs';
12
+ import '../theme/utils/set-theme-cookie.mjs';
13
+ import '../theme/themes.mjs';
14
+ import { TabsListStyle, TabsIndicatorStyle } from './TabsStyles.mjs';
15
+
16
+ const Tabs = /*#__PURE__*/forwardRef((_ref, ref) => {
17
+ let {
18
+ children,
19
+ ...rest
20
+ } = _ref;
21
+ const listRef = useRef(null);
22
+ const setRefs = useCallback(node => {
23
+ listRef.current = node;
24
+ if (typeof ref === 'function') {
25
+ ref(node);
26
+ return;
27
+ }
28
+ if (ref) {
29
+ ref.current = node;
30
+ }
31
+ }, [ref]);
32
+ useIsomorphicLayoutEffect(() => {
33
+ if (typeof window === 'undefined') return undefined;
34
+ const listNode = listRef.current;
35
+ if (!listNode) return undefined;
36
+ let rafId = 0;
37
+ const updateIndicator = () => {
38
+ const activeTab = listNode.querySelector('[role="tab"][aria-selected="true"]');
39
+ if (!activeTab) {
40
+ listNode.style.setProperty('--tabs-indicator-left', '0px');
41
+ listNode.style.setProperty('--tabs-indicator-width', '0px');
42
+ return;
43
+ }
44
+ const listRect = listNode.getBoundingClientRect();
45
+ const tabRect = activeTab.getBoundingClientRect();
46
+ const left = tabRect.left - listRect.left + listNode.scrollLeft;
47
+ listNode.style.setProperty('--tabs-indicator-left', `${left}px`);
48
+ listNode.style.setProperty('--tabs-indicator-width', `${tabRect.width}px`);
49
+ };
50
+ const scheduleUpdate = () => {
51
+ if (rafId) {
52
+ window.cancelAnimationFrame(rafId);
53
+ }
54
+ rafId = window.requestAnimationFrame(updateIndicator);
55
+ };
56
+ updateIndicator();
57
+ scheduleUpdate();
58
+ listNode.addEventListener('scroll', scheduleUpdate, {
59
+ passive: true
60
+ });
61
+ window.addEventListener('resize', scheduleUpdate);
62
+ const mutationObserver = typeof MutationObserver === 'undefined' ? null : new MutationObserver(scheduleUpdate);
63
+ mutationObserver?.observe(listNode, {
64
+ attributes: true,
65
+ subtree: true,
66
+ attributeFilter: ['aria-selected']
67
+ });
68
+ const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(scheduleUpdate);
69
+ resizeObserver?.observe(listNode);
70
+ listNode.querySelectorAll('[role="tab"]').forEach(tab => resizeObserver?.observe(tab));
71
+ if (typeof document !== 'undefined' && 'fonts' in document) {
72
+ // Ensure metrics are correct after fonts are loaded.
73
+ void document.fonts.ready.then(scheduleUpdate);
74
+ }
75
+ return () => {
76
+ if (rafId) {
77
+ window.cancelAnimationFrame(rafId);
78
+ }
79
+ listNode.removeEventListener('scroll', scheduleUpdate);
80
+ window.removeEventListener('resize', scheduleUpdate);
81
+ mutationObserver?.disconnect();
82
+ resizeObserver?.disconnect();
83
+ };
84
+ }, [children]);
85
+ return /*#__PURE__*/jsxs(TabsListStyle, {
86
+ role: "tablist",
87
+ ref: setRefs,
88
+ ...rest,
89
+ children: [children, /*#__PURE__*/jsx(TabsIndicatorStyle, {
90
+ "aria-hidden": true
91
+ })]
92
+ });
93
+ });
94
+ Tabs.displayName = 'Tabs';
95
+
96
+ export { Tabs };
97
+ //# sourceMappingURL=Tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.mjs","sources":["../../../packages/tabs/Tabs.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, useCallback, useRef } from 'react'\nimport { useIsomorphicLayoutEffect } from '../hooks'\nimport { TabsProps } from './types.js'\nimport { TabsIndicatorStyle, TabsListStyle } from './TabsStyles.js'\n\nexport const Tabs = forwardRef(\n ({ children, ...rest }: TabsProps, ref?: ForwardedRef<HTMLDivElement>) => {\n const listRef = useRef<HTMLDivElement | null>(null)\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n listRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n return\n }\n if (ref) {\n ;(ref as { current: HTMLDivElement | null }).current = node\n }\n },\n [ref],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (typeof window === 'undefined') return undefined\n const listNode = listRef.current\n if (!listNode) return undefined\n let rafId = 0\n\n const updateIndicator = () => {\n const activeTab = listNode.querySelector<HTMLElement>(\n '[role=\"tab\"][aria-selected=\"true\"]',\n )\n if (!activeTab) {\n listNode.style.setProperty('--tabs-indicator-left', '0px')\n listNode.style.setProperty('--tabs-indicator-width', '0px')\n return\n }\n\n const listRect = listNode.getBoundingClientRect()\n const tabRect = activeTab.getBoundingClientRect()\n const left = tabRect.left - listRect.left + listNode.scrollLeft\n\n listNode.style.setProperty('--tabs-indicator-left', `${left}px`)\n listNode.style.setProperty(\n '--tabs-indicator-width',\n `${tabRect.width}px`,\n )\n }\n\n const scheduleUpdate = () => {\n if (rafId) {\n window.cancelAnimationFrame(rafId)\n }\n rafId = window.requestAnimationFrame(updateIndicator)\n }\n\n updateIndicator()\n scheduleUpdate()\n listNode.addEventListener('scroll', scheduleUpdate, { passive: true })\n window.addEventListener('resize', scheduleUpdate)\n\n const mutationObserver =\n typeof MutationObserver === 'undefined'\n ? null\n : new MutationObserver(scheduleUpdate)\n\n mutationObserver?.observe(listNode, {\n attributes: true,\n subtree: true,\n attributeFilter: ['aria-selected'],\n })\n\n const resizeObserver =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(scheduleUpdate)\n\n resizeObserver?.observe(listNode)\n listNode\n .querySelectorAll<HTMLElement>('[role=\"tab\"]')\n .forEach((tab) => resizeObserver?.observe(tab))\n\n if (typeof document !== 'undefined' && 'fonts' in document) {\n // Ensure metrics are correct after fonts are loaded.\n void (document as Document & { fonts: FontFaceSet }).fonts.ready.then(\n scheduleUpdate,\n )\n }\n\n return () => {\n if (rafId) {\n window.cancelAnimationFrame(rafId)\n }\n listNode.removeEventListener('scroll', scheduleUpdate)\n window.removeEventListener('resize', scheduleUpdate)\n mutationObserver?.disconnect()\n resizeObserver?.disconnect()\n }\n }, [children])\n\n return (\n <TabsListStyle role='tablist' ref={setRefs} {...rest}>\n {children}\n <TabsIndicatorStyle aria-hidden />\n </TabsListStyle>\n )\n },\n)\nTabs.displayName = 'Tabs'\n"],"names":["Tabs","forwardRef","_ref","ref","children","rest","listRef","useRef","setRefs","useCallback","node","current","useIsomorphicLayoutEffect","window","undefined","listNode","rafId","updateIndicator","activeTab","querySelector","style","setProperty","listRect","getBoundingClientRect","tabRect","left","scrollLeft","width","scheduleUpdate","cancelAnimationFrame","requestAnimationFrame","addEventListener","passive","mutationObserver","MutationObserver","observe","attributes","subtree","attributeFilter","resizeObserver","ResizeObserver","querySelectorAll","forEach","tab","document","fonts","ready","then","removeEventListener","disconnect","_jsxs","TabsListStyle","role","_jsx","TabsIndicatorStyle","displayName"],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import styled from '../utils/styled-components-wrapper.mjs';
2
+ import { css } from 'styled-components';
3
+
4
+ const TabsListStyle = styled.div`
5
+ display: flex;
6
+ align-items: center;
7
+ gap: 24px;
8
+ position: relative;
9
+ border-bottom: 1px solid var(--lido-color-borderSubtle);
10
+ `;
11
+ const TabLabelStyle = styled.span`
12
+ font-size: ${_ref => {
13
+ let {
14
+ theme
15
+ } = _ref;
16
+ return theme.fontSizesMap.sm;
17
+ }}px;
18
+ line-height: 1.5em;
19
+ font-weight: 700;
20
+ color: var(--lido-color-text);
21
+ opacity: ${_ref2 => {
22
+ let {
23
+ $active
24
+ } = _ref2;
25
+ return $active ? 1 : 0.5;
26
+ }};
27
+ `;
28
+ const TabButtonStyle = styled.button`
29
+ display: flex;
30
+ align-items: flex-start;
31
+ justify-content: center;
32
+ margin: 0;
33
+ background: transparent;
34
+ border: none;
35
+ box-sizing: border-box;
36
+ cursor: pointer;
37
+ color: var(--lido-color-text);
38
+ padding: ${_ref3 => {
39
+ let {
40
+ theme
41
+ } = _ref3;
42
+ return theme.spaceMap.sm;
43
+ }}px 0;
44
+ font-size: inherit;
45
+ white-space: nowrap;
46
+
47
+ ${_ref4 => {
48
+ let {
49
+ $active
50
+ } = _ref4;
51
+ return $active && css`
52
+ anchor-name: --tabs-active;
53
+ `;
54
+ }}
55
+
56
+ &:hover ${TabLabelStyle},
57
+ &:focus-visible ${TabLabelStyle} {
58
+ opacity: 1;
59
+ }
60
+
61
+ &:disabled {
62
+ cursor: default;
63
+ opacity: 0.5;
64
+ }
65
+ `;
66
+ const TabsIndicatorStyle = styled.span`
67
+ position: absolute;
68
+ bottom: 0;
69
+ left: 0;
70
+ width: var(--tabs-indicator-width, 0);
71
+ height: 2px;
72
+ background-color: var(--lido-color-text);
73
+ transition:
74
+ transform ${_ref5 => {
75
+ let {
76
+ theme
77
+ } = _ref5;
78
+ return theme.duration.norm;
79
+ }} ease,
80
+ width ${_ref6 => {
81
+ let {
82
+ theme
83
+ } = _ref6;
84
+ return theme.duration.norm;
85
+ }} ease;
86
+ pointer-events: none;
87
+ z-index: 1;
88
+ will-change: transform, width;
89
+ transform: translateX(var(--tabs-indicator-left, 0));
90
+
91
+ /* stylelint-disable property-no-unknown */
92
+ @supports (position-anchor: --tabs-active) {
93
+ position-anchor: --tabs-active;
94
+ transform: translateX(anchor(left));
95
+ width: anchor-size(width);
96
+ }
97
+ `;
98
+
99
+ export { TabButtonStyle, TabLabelStyle, TabsIndicatorStyle, TabsListStyle };
100
+ //# sourceMappingURL=TabsStyles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsStyles.mjs","sources":["../../../packages/tabs/TabsStyles.tsx"],"sourcesContent":["import styled, { css } from '../utils/styled-components-wrapper.js'\n\nexport const TabsListStyle = styled.div`\n display: flex;\n align-items: center;\n gap: 24px;\n position: relative;\n border-bottom: 1px solid var(--lido-color-borderSubtle);\n`\n\nexport const TabLabelStyle = styled.span<{ $active: boolean }>`\n font-size: ${({ theme }) => theme.fontSizesMap.sm}px;\n line-height: 1.5em;\n font-weight: 700;\n color: var(--lido-color-text);\n opacity: ${({ $active }) => ($active ? 1 : 0.5)};\n`\n\nexport const TabButtonStyle = styled.button<{ $active: boolean }>`\n display: flex;\n align-items: flex-start;\n justify-content: center;\n margin: 0;\n background: transparent;\n border: none;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--lido-color-text);\n padding: ${({ theme }) => theme.spaceMap.sm}px 0;\n font-size: inherit;\n white-space: nowrap;\n\n ${({ $active }) =>\n $active &&\n css`\n anchor-name: --tabs-active;\n `}\n\n &:hover ${TabLabelStyle},\n &:focus-visible ${TabLabelStyle} {\n opacity: 1;\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.5;\n }\n`\n\nexport const TabsIndicatorStyle = styled.span`\n position: absolute;\n bottom: 0;\n left: 0;\n width: var(--tabs-indicator-width, 0);\n height: 2px;\n background-color: var(--lido-color-text);\n transition:\n transform ${({ theme }) => theme.duration.norm} ease,\n width ${({ theme }) => theme.duration.norm} ease;\n pointer-events: none;\n z-index: 1;\n will-change: transform, width;\n transform: translateX(var(--tabs-indicator-left, 0));\n\n /* stylelint-disable property-no-unknown */\n @supports (position-anchor: --tabs-active) {\n position-anchor: --tabs-active;\n transform: translateX(anchor(left));\n width: anchor-size(width);\n }\n`\n"],"names":["TabsListStyle","styled","div","TabLabelStyle","span","_ref","theme","fontSizesMap","sm","_ref2","$active","TabButtonStyle","button","_ref3","spaceMap","_ref4","css","TabsIndicatorStyle","_ref5","duration","norm","_ref6"],"mappings":";;;AAEaA,MAAAA,aAAa,GAAGC,MAAM,CAACC,GAAG,CAAA;AACvC;AACA;AACA;AACA;AACA;AACA,EAAC;AAEYC,MAAAA,aAAa,GAAGF,MAAM,CAACG,IAA0B,CAAA;AAC9D,aAAA,EAAeC,IAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAAD,IAAA,CAAA;AAAA,EAAA,OAAKC,KAAK,CAACC,YAAY,CAACC,EAAE,CAAA;AAAA,CAAA,CAAA;AACnD;AACA;AACA;AACA,WAAA,EAAaC,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,OAAAA;AAAQ,GAAC,GAAAD,KAAA,CAAA;AAAA,EAAA,OAAMC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAA;AAAA,CAAC,CAAA;AACjD,EAAC;AAEYC,MAAAA,cAAc,GAAGV,MAAM,CAACW,MAA4B,CAAA;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAA,EAAaC,KAAA,IAAA;EAAA,IAAC;AAAEP,IAAAA,KAAAA;AAAM,GAAC,GAAAO,KAAA,CAAA;AAAA,EAAA,OAAKP,KAAK,CAACQ,QAAQ,CAACN,EAAE,CAAA;AAAA,CAAA,CAAA;AAC7C;AACA;AACA;AACA,EAAA,EAAIO,KAAA,IAAA;EAAA,IAAC;AAAEL,IAAAA,OAAAA;AAAQ,GAAC,GAAAK,KAAA,CAAA;EAAA,OACZL,OAAO,IACPM,GAAG,CAAA;AACP;AACA,IAAK,CAAA,CAAA;AAAA,CAAA,CAAA;AACL;AACA,UAAA,EAAYb,aAAa,CAAA;AACzB,kBAAA,EAAoBA,aAAa,CAAA;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AAEYc,MAAAA,kBAAkB,GAAGhB,MAAM,CAACG,IAAI,CAAA;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAA,EAAgBc,KAAA,IAAA;EAAA,IAAC;AAAEZ,IAAAA,KAAAA;AAAM,GAAC,GAAAY,KAAA,CAAA;AAAA,EAAA,OAAKZ,KAAK,CAACa,QAAQ,CAACC,IAAI,CAAA;AAAA,CAAA,CAAA;AAClD,UAAA,EAAYC,KAAA,IAAA;EAAA,IAAC;AAAEf,IAAAA,KAAAA;AAAM,GAAC,GAAAe,KAAA,CAAA;AAAA,EAAA,OAAKf,KAAK,CAACa,QAAQ,CAACC,IAAI,CAAA;AAAA,CAAA,CAAA;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
@@ -27,7 +27,9 @@ export * from './select/index.js';
27
27
  export * from './service-page/index.js';
28
28
  export * from './stack/index.js';
29
29
  export * from './styled-system/index.js';
30
+ export * from './switcher/index.js';
30
31
  export * from './table/index.js';
32
+ export * from './tabs/index.js';
31
33
  export * from './text/index.js';
32
34
  export * from './theme/index.js';
33
35
  export * from './toast/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kCAAkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kCAAkC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Segmented control container for SwitcherItem options.
4
+ */
5
+ export declare const Switcher: import("react").ForwardRefExoticComponent<{
6
+ children?: import("react").ReactNode;
7
+ } & Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
8
+ as?: keyof JSX.IntrinsicElements | undefined;
9
+ forwardedAs?: keyof JSX.IntrinsicElements | undefined;
10
+ }, "ref" | "children"> & import("react").RefAttributes<HTMLDivElement>>;
11
+ //# sourceMappingURL=Switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switcher.d.ts","sourceRoot":"","sources":["../../../packages/switcher/Switcher.tsx"],"names":[],"mappings":";AAKA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;uEAwGpB,CAAA"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Switcher option button.
4
+ */
5
+ export declare const SwitcherItem: import("react").ForwardRefExoticComponent<{
6
+ active?: boolean | undefined;
7
+ children?: import("react").ReactNode;
8
+ } & Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
9
+ as?: keyof JSX.IntrinsicElements | undefined;
10
+ forwardedAs?: keyof JSX.IntrinsicElements | undefined;
11
+ }, "ref" | "children" | "active"> & import("react").RefAttributes<HTMLButtonElement>>;
12
+ //# sourceMappingURL=SwitcherItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitcherItem.d.ts","sourceRoot":"","sources":["../../../packages/switcher/SwitcherItem.tsx"],"names":[],"mappings":";AAIA;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;qFAmBxB,CAAA"}
@@ -0,0 +1,9 @@
1
+ declare type InjectedProps = {
2
+ $active: boolean;
3
+ };
4
+ export declare const SwitcherListStyle: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
5
+ export declare const SwitcherIndicatorStyle: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
6
+ export declare const SwitcherLabelStyle: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, InjectedProps, never>;
7
+ export declare const SwitcherItemStyle: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, InjectedProps, never>;
8
+ export {};
9
+ //# sourceMappingURL=SwitcherStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitcherStyles.d.ts","sourceRoot":"","sources":["../../../packages/switcher/SwitcherStyles.tsx"],"names":[],"mappings":"AAEA,aAAK,aAAa,GAAG;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAOD,eAAO,MAAM,iBAAiB,yGAY7B,CAAA;AAED,eAAO,MAAM,sBAAsB,0GAelC,CAAA;AAED,eAAO,MAAM,kBAAkB,qHAQ9B,CAAA;AAED,eAAO,MAAM,iBAAiB,uHA4B7B,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './Switcher.js';
2
+ export * from './SwitcherItem.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/switcher/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ import { LidoComponentProps } from '../utils';
3
+ export type { Theme } from '../theme/index.js';
4
+ export declare type SwitcherProps = LidoComponentProps<'div', {
5
+ children?: ReactNode;
6
+ }>;
7
+ export declare type SwitcherItemProps = LidoComponentProps<'button', {
8
+ active?: boolean;
9
+ children?: ReactNode;
10
+ }>;
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../packages/switcher/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,YAAY,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,oBAAY,aAAa,GAAG,kBAAkB,CAC5C,KAAK,EACL;IACE,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CACF,CAAA;AAED,oBAAY,iBAAiB,GAAG,kBAAkB,CAChD,QAAQ,EACR;IACE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CACF,CAAA"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ export declare const Tab: import("react").ForwardRefExoticComponent<{
3
+ active?: boolean | undefined;
4
+ children?: import("react").ReactNode;
5
+ } & Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
6
+ as?: keyof JSX.IntrinsicElements | undefined;
7
+ forwardedAs?: keyof JSX.IntrinsicElements | undefined;
8
+ }, "ref" | "children" | "active"> & import("react").RefAttributes<HTMLButtonElement>>;
9
+ //# sourceMappingURL=Tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../../packages/tabs/Tab.tsx"],"names":[],"mappings":";AAIA,eAAO,MAAM,GAAG;;;;;;qFAmBf,CAAA"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ export declare const Tabs: import("react").ForwardRefExoticComponent<{
3
+ children?: import("react").ReactNode;
4
+ } & Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
5
+ as?: keyof JSX.IntrinsicElements | undefined;
6
+ forwardedAs?: keyof JSX.IntrinsicElements | undefined;
7
+ }, "ref" | "children"> & import("react").RefAttributes<HTMLDivElement>>;
8
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../packages/tabs/Tabs.tsx"],"names":[],"mappings":";AAKA,eAAO,MAAM,IAAI;;;;;uEAsGhB,CAAA"}