@alfalab/core-components-tab-bar 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Component.d.ts +1 -1
- package/Component.js.map +1 -1
- package/components/tab/Component.d.ts +1 -1
- package/components/tab/Component.js.map +1 -1
- package/components/tab/index.css +10 -8
- package/components/tab/index.module.css.js +1 -1
- package/components/tab/index.module.css.js.map +1 -1
- package/cssm/Component.d.ts +1 -1
- package/cssm/Component.js.map +1 -1
- package/cssm/components/tab/Component.d.ts +1 -1
- package/cssm/components/tab/Component.js.map +1 -1
- package/cssm/components/tab/index.module.css +3 -1
- package/cssm/index.module.css +2 -2
- package/cssm/types.d.ts +2 -2
- package/esm/Component.d.ts +1 -1
- package/esm/Component.js.map +1 -1
- package/esm/components/tab/Component.d.ts +1 -1
- package/esm/components/tab/Component.js.map +1 -1
- package/esm/components/tab/index.css +10 -8
- package/esm/components/tab/index.module.css.js +1 -1
- package/esm/components/tab/index.module.css.js.map +1 -1
- package/esm/index.css +7 -7
- package/esm/index.module.css.js +1 -1
- package/esm/index.module.css.js.map +1 -1
- package/esm/types.d.ts +2 -2
- package/index.css +7 -7
- package/index.module.css.js +1 -1
- package/index.module.css.js.map +1 -1
- package/modern/Component.d.ts +1 -1
- package/modern/Component.js.map +1 -1
- package/modern/components/tab/Component.d.ts +1 -1
- package/modern/components/tab/Component.js.map +1 -1
- package/modern/components/tab/index.css +10 -8
- package/modern/components/tab/index.module.css.js +1 -1
- package/modern/components/tab/index.module.css.js.map +1 -1
- package/modern/index.css +7 -7
- package/modern/index.module.css.js +1 -1
- package/modern/index.module.css.js.map +1 -1
- package/modern/types.d.ts +2 -2
- package/moderncssm/Component.d.ts +1 -1
- package/moderncssm/Component.js.map +1 -1
- package/moderncssm/components/tab/Component.d.ts +1 -1
- package/moderncssm/components/tab/Component.js.map +1 -1
- package/moderncssm/components/tab/index.module.css +3 -1
- package/moderncssm/index.module.css +8 -2
- package/moderncssm/types.d.ts +2 -2
- package/package.json +3 -3
- package/src/Component.tsx +1 -1
- package/src/components/tab/Component.tsx +2 -2
- package/src/components/tab/index.module.css +1 -1
- package/src/index.module.css +1 -1
- package/src/types.ts +9 -9
- package/types.d.ts +2 -2
package/Component.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TabBarProps } from './types';
|
|
2
|
+
import { type TabBarProps } from './types';
|
|
3
3
|
export declare const TabBar: React.ForwardRefExoticComponent<TabBarProps & React.RefAttributes<HTMLDivElement>> & {
|
|
4
4
|
Tab: React.ForwardRefExoticComponent<import("./types").TabProps & React.RefAttributes<HTMLElement>>;
|
|
5
5
|
};
|
package/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":["forwardRef","__rest","Children","React","cn","styles","cloneElement","getDataTestId","Tab"],"mappings":";;;;;;;;;;;;;;;;AAUA,IAAM,eAAe,GAAGA,gBAAU,CAC9B,UACI,EAWC,EACD,GAAG,EAAA;;AAXC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,mBAAuB,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAAC,YAAA,CAAA,EAAA,EAVhB,sHAWC,CADe;IAIhB,IAAIC,cAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACIC,6EACkB,UAAU,EAAA,EACpB,SAAS,EACb,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,SAAS,EAAEA,YAAM,CAAC,OAAO,CAAC,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACtD,YAAA,EAAA,CAACA,YAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACzB,YAAA,EAAA,EAAA,EAAA,CAAA,EAEDH,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAA;QACxB,OAAAI,kBAAY,CAAC,GAAG,EAAE;AACd,YAAA,OAAO,EAAA,OAAA;AACP,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;AACrC,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,UAAU,EAAEC,kCAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC;KAAA,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAAC,aAAA,EAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { type TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":["forwardRef","__rest","Children","React","cn","styles","cloneElement","getDataTestId","Tab"],"mappings":";;;;;;;;;;;;;;;;AAUA,IAAM,eAAe,GAAGA,gBAAU,CAC9B,UACI,EAWC,EACD,GAAG,EAAA;;AAXC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,mBAAuB,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAAC,YAAA,CAAA,EAAA,EAVhB,sHAWC,CADe;IAIhB,IAAIC,cAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACIC,6EACkB,UAAU,EAAA,EACpB,SAAS,EACb,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,SAAS,EAAEA,YAAM,CAAC,OAAO,CAAC,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACtD,YAAA,EAAA,CAACA,YAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACzB,YAAA,EAAA,EAAA,EAAA,CAAA,EAEDH,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAA;QACxB,OAAAI,kBAAY,CAAC,GAAG,EAAE;AACd,YAAA,OAAO,EAAA,OAAA;AACP,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;AACrC,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,UAAU,EAAEC,kCAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC;KAAA,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAAC,aAAA,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { PrivateTabProps, TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":["forwardRef","__rest","React","__assign","cn","styles","isValidElement","cloneElement","Text","Indicator","INDICATOR_BORDER_COLOR","INDICATOR_BG_COLOR"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, type MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { type PrivateTabProps, type TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":["forwardRef","__rest","React","__assign","cn","styles","isValidElement","cloneElement","Text","Indicator","INDICATOR_BORDER_COLOR","INDICATOR_BG_COLOR"],"mappings":";;;;;;;;;;;;;;;;;AAWA,IAAM,YAAY,GAAGA,gBAAU,CAC3B,UACI,EAoB6B,EAC7B,GAAG,EAAA;;AApBC,IAAA,IAAA,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,IAAI,UAAA,EACJ,EAAE,QAAA,EACF,QAAQ,cAAA,EACR,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAkB,GAAA,EAAA,CAAA,aAAA,EAAlB,aAAa,GAAG,EAAA,KAAA,MAAA,GAAA,EAAE,GAAA,EAAA,EAClB,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EACjB,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,IAAI,UAAA,EACJ,EAAA,GAAA,EAAA,CAAA,SAAiC,EAAjC,SAAS,mBAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAA,EAAA,EACjC,EAAuB,GAAA,EAAA,CAAA,WAAA,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAAC,YAAA,CAAA,EAAA,EAnBhB,gPAoBC,CADe;IAIhB,IAAM,WAAW,GAAG,UAAC,KAAiB,EAAA;AAClC,QAAA,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAG,EAAE,CAAC;AACd,QAAA,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAG,KAAK,CAAC;AACpB,KAAC;AAGG,IAAA,IAAW,eAAe,GAI1B,aAAa,UAJa,EACV,oBAAoB,GAGpC,aAAa,CAAA,cAHuB,EACjB,uBAAuB,GAE1C,aAAa,CAF6B,iBAAA,EAC3B,mBAAmB,GAClC,aAAa,cADqB;AAGtC,IAAA,QACIC,sBAAA,CAAA,aAAA,CAAC,SAAS,EAAAC,cAAA,CAAA,EAAA,cAAA,EACQ,UAAU,EACxB,QAAQ,EAAE,CAAC,EAAA,GACN,SAAS,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,GACnD,SAAS,EAAA,EACb,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CACTC,YAAM,CAAC,SAAS,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,IAAI,uBAAuB,EACnC,QAAQ,IAAI,iBAAiB,GAAA,EAAA,GAAA,EAAA;AAEzB,YAAA,EAAA,CAACA,YAAM,CAAC,WAAW,CAAC,IAAG,QAAQ;gBAEtC,EACD,OAAO,EAAE,WAAW,EAAA,CAAA;AAEpB,QAAAH,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEE,mBAAE,CAACC,YAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,EAC9DC,oBAAc,CAAC,IAAI,CAAC,GAAGC,kBAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAA,QAAA,EAAE,CAAC,GAAG,IAAI,CAC7D;QAENL,sBAAC,CAAA,aAAA,CAAAM,6BAAI,IACD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAEJ,mBAAE,CAACC,YAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,cAAc,GAAA,EAAA,GAAA,EAAA;AAC5D,gBAAA,EAAA,CAACA,YAAM,CAAC,aAAa,CAAA,GAAG,QAAQ;oBAClC,EAED,EAAAC,oBAAc,CAAC,KAAK,CAAC,GAAGC,kBAAY,CAAC,KAAK,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,GAAG,KAAK,CAC/D;AAEN,QAAA,aAAa,KACVL,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEG,YAAM,CAAC,SAAS,EAAA;YAC5BH,sBAAC,CAAA,aAAA,CAAAO,iCAAS,EACFN,cAAA,CAAA,EAAA,EAAA,cAAc,EAClB,EAAA,MAAM,EAAE,CAAA,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,MAAA,GAAA,MAAA,GAAA,cAAc,CAAE,KAAK,IAAG,EAAE,GAAG,SAAS,EAC9C,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAEO,6BAAsB,CAAC,OAAO,CAAC;iBACzC,EACD,eAAe,EAAEC,yBAAkB,CAAC,WAAW,CAAC,EAAA,CAAA,CAClD,CACA,CACT,CACO;AAEpB,CAAC,CACJ;AAEM,IAAM,GAAG,GAAG;;;;"}
|
package/components/tab/index.css
CHANGED
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
--color-light-accent-secondary: #212124;
|
|
4
4
|
--color-light-neutral-translucent-700: rgba(4, 4, 21, 0.47);
|
|
5
5
|
--color-light-text-secondary: rgba(4, 4, 19, 0.55);
|
|
6
|
+
} :root {
|
|
7
|
+
--border-radius-0: 0;
|
|
6
8
|
} :root {
|
|
7
9
|
--gap-2xs: 4px;
|
|
8
10
|
--gap-xs: 8px;
|
|
9
11
|
--gap-0: 0px;
|
|
10
12
|
--gap-4: var(--gap-2xs);
|
|
11
13
|
--gap-8: var(--gap-xs);
|
|
12
|
-
} .tab-
|
|
14
|
+
} .tab-bar__component_zwktl {
|
|
13
15
|
-webkit-tap-highlight-color: transparent;
|
|
14
16
|
box-sizing: border-box;
|
|
15
17
|
background-color: transparent;
|
|
@@ -17,7 +19,7 @@
|
|
|
17
19
|
border: 0;
|
|
18
20
|
margin: var(--gap-0);
|
|
19
21
|
box-shadow: none;
|
|
20
|
-
border-radius: 0;
|
|
22
|
+
border-radius: var(--border-radius-0);
|
|
21
23
|
-webkit-user-select: none;
|
|
22
24
|
-moz-user-select: none;
|
|
23
25
|
user-select: none;
|
|
@@ -36,17 +38,17 @@
|
|
|
36
38
|
align-items: center;
|
|
37
39
|
padding: var(--gap-8) var(--gap-0);
|
|
38
40
|
color: var(--color-light-neutral-translucent-700);
|
|
39
|
-
} .tab-
|
|
41
|
+
} .tab-bar__primary_zwktl {
|
|
40
42
|
color: var(--color-light-accent-primary);
|
|
41
|
-
} .tab-
|
|
43
|
+
} .tab-bar__secondary_zwktl {
|
|
42
44
|
color: var(--color-light-accent-secondary);
|
|
43
|
-
} .tab-
|
|
45
|
+
} .tab-bar__icon_zwktl {
|
|
44
46
|
display: flex;
|
|
45
47
|
align-items: center;
|
|
46
48
|
justify-content: center;
|
|
47
49
|
flex-grow: 1;
|
|
48
50
|
width: 100%;
|
|
49
|
-
} .tab-
|
|
51
|
+
} .tab-bar__label_zwktl {
|
|
50
52
|
-webkit-line-clamp: 1;
|
|
51
53
|
display: -webkit-box;
|
|
52
54
|
-webkit-box-orient: vertical;
|
|
@@ -55,9 +57,9 @@
|
|
|
55
57
|
flex-shrink: 0;
|
|
56
58
|
|
|
57
59
|
color: var(--color-light-text-secondary);
|
|
58
|
-
} .tab-
|
|
60
|
+
} .tab-bar__labelSelected_zwktl {
|
|
59
61
|
color: inherit;
|
|
60
|
-
} .tab-
|
|
62
|
+
} .tab-bar__indicator_zwktl {
|
|
61
63
|
position: absolute;
|
|
62
64
|
top: 3px;
|
|
63
65
|
left: calc(50% + var(--gap-4));
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"tab-
|
|
5
|
+
var styles = {"component":"tab-bar__component_zwktl","primary":"tab-bar__primary_zwktl","secondary":"tab-bar__secondary_zwktl","icon":"tab-bar__icon_zwktl","label":"tab-bar__label_zwktl","labelSelected":"tab-bar__labelSelected_zwktl","indicator":"tab-bar__indicator_zwktl"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tab/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n @mixin button-reset;\n\n position: relative;\n display: inline-flex;\n flex-direction: column;\n flex: 1 0 0;\n align-items: center;\n padding: var(--gap-8) var(--gap-0);\n color: var(--color-light-neutral-translucent-700);\n}\n\n.primary {\n color: var(--color-light-accent-primary);\n}\n\n.secondary {\n color: var(--color-light-accent-secondary);\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n width: 100%;\n}\n\n.label {\n @mixin row_limit 1;\n word-break: break-all;\n flex-shrink: 0;\n\n color: var(--color-light-text-secondary);\n}\n\n.labelSelected {\n color: inherit;\n}\n\n.indicator {\n position: absolute;\n top: 3px;\n left: calc(50% + var(--gap-4));\n height: 16px;\n min-width: 16px;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,0BAA0B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tab/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n @mixin button-reset;\n\n position: relative;\n display: inline-flex;\n flex-direction: column;\n flex: 1 0 0;\n align-items: center;\n padding: var(--gap-8) var(--gap-0);\n color: var(--color-light-neutral-translucent-700);\n}\n\n.primary {\n color: var(--color-light-accent-primary);\n}\n\n.secondary {\n color: var(--color-light-accent-secondary);\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n width: 100%;\n}\n\n.label {\n @mixin row_limit 1;\n word-break: break-all;\n flex-shrink: 0;\n\n color: var(--color-light-text-secondary);\n}\n\n.labelSelected {\n color: inherit;\n}\n\n.indicator {\n position: absolute;\n top: 3px;\n left: calc(50% + var(--gap-4));\n height: 16px;\n min-width: 16px;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,0BAA0B,CAAC;;;;"}
|
package/cssm/Component.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TabBarProps } from './types';
|
|
2
|
+
import { type TabBarProps } from './types';
|
|
3
3
|
export declare const TabBar: React.ForwardRefExoticComponent<TabBarProps & React.RefAttributes<HTMLDivElement>> & {
|
|
4
4
|
Tab: React.ForwardRefExoticComponent<import("./types").TabProps & React.RefAttributes<HTMLElement>>;
|
|
5
5
|
};
|
package/cssm/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":["forwardRef","__rest","Children","React","cn","styles","cloneElement","getDataTestId","Tab"],"mappings":";;;;;;;;;;;;;;;;;AAUA,IAAM,eAAe,GAAGA,gBAAU,CAC9B,UACI,EAWC,EACD,GAAG,EAAA;;AAXC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,mBAAuB,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAAC,YAAA,CAAA,EAAA,EAVhB,sHAWC,CADe;IAIhB,IAAIC,cAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACIC,6EACkB,UAAU,EAAA,EACpB,SAAS,EACb,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CAACC,uBAAM,CAAC,SAAS,EAAEA,uBAAM,CAAC,OAAO,CAAC,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACtD,YAAA,EAAA,CAACA,uBAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACzB,YAAA,EAAA,EAAA,EAAA,CAAA,EAEDH,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAA;QACxB,OAAAI,kBAAY,CAAC,GAAG,EAAE;AACd,YAAA,OAAO,EAAA,OAAA;AACP,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;AACrC,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,UAAU,EAAEC,kBAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC;KAAA,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAAC,aAAA,EAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { type TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":["forwardRef","__rest","Children","React","cn","styles","cloneElement","getDataTestId","Tab"],"mappings":";;;;;;;;;;;;;;;;;AAUA,IAAM,eAAe,GAAGA,gBAAU,CAC9B,UACI,EAWC,EACD,GAAG,EAAA;;AAXC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,mBAAuB,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAAC,YAAA,CAAA,EAAA,EAVhB,sHAWC,CADe;IAIhB,IAAIC,cAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACIC,6EACkB,UAAU,EAAA,EACpB,SAAS,EACb,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CAACC,uBAAM,CAAC,SAAS,EAAEA,uBAAM,CAAC,OAAO,CAAC,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACtD,YAAA,EAAA,CAACA,uBAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACzB,YAAA,EAAA,EAAA,EAAA,CAAA,EAEDH,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAA;QACxB,OAAAI,kBAAY,CAAC,GAAG,EAAE;AACd,YAAA,OAAO,EAAA,OAAA;AACP,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;AACrC,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,UAAU,EAAEC,kBAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC;KAAA,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAAC,aAAA,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { PrivateTabProps, TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":["forwardRef","__rest","React","__assign","cn","styles","isValidElement","cloneElement","Text","Indicator","INDICATOR_BORDER_COLOR","INDICATOR_BG_COLOR"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, type MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { type PrivateTabProps, type TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":["forwardRef","__rest","React","__assign","cn","styles","isValidElement","cloneElement","Text","Indicator","INDICATOR_BORDER_COLOR","INDICATOR_BG_COLOR"],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
--color-light-accent-secondary: #212124;
|
|
4
4
|
--color-light-neutral-translucent-700: rgba(4, 4, 21, 0.47);
|
|
5
5
|
--color-light-text-secondary: rgba(4, 4, 19, 0.55);
|
|
6
|
+
} :root {
|
|
7
|
+
--border-radius-0: 0;
|
|
6
8
|
} :root {
|
|
7
9
|
--gap-2xs: 4px;
|
|
8
10
|
--gap-xs: 8px;
|
|
@@ -17,7 +19,7 @@
|
|
|
17
19
|
border: 0;
|
|
18
20
|
margin: var(--gap-0);
|
|
19
21
|
box-shadow: none;
|
|
20
|
-
border-radius: 0;
|
|
22
|
+
border-radius: var(--border-radius-0);
|
|
21
23
|
-webkit-user-select: none;
|
|
22
24
|
-moz-user-select: none;
|
|
23
25
|
user-select: none;
|
package/cssm/index.module.css
CHANGED
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
max-height: 64px;
|
|
14
14
|
box-sizing: border-box;
|
|
15
15
|
overflow: hidden;
|
|
16
|
-
transition: box-shadow 0.2s ease
|
|
16
|
+
transition: box-shadow 0.2s ease;
|
|
17
17
|
} .component.modal-bg-primary {
|
|
18
18
|
background-color: var(--color-light-base-bg-primary);
|
|
19
19
|
} .component.modal-bg-alt-primary {
|
|
20
20
|
background-color: var(--color-light-base-bg-alt-primary);
|
|
21
21
|
} @media (display-mode: standalone) { .component {
|
|
22
|
-
padding-bottom: var(--sab)
|
|
22
|
+
padding-bottom: var(--sab);
|
|
23
23
|
}
|
|
24
24
|
} .border {
|
|
25
25
|
box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);
|
package/cssm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type AllHTMLAttributes, type ElementType, type ForwardRefExoticComponent, type HTMLAttributes, type ReactElement, type ReactNode, type RefAttributes } from 'react';
|
|
2
|
+
import { type IndicatorProps } from '@alfalab/core-components-indicator/cssm';
|
|
3
3
|
declare type TabElementType = ReactElement<TabProps, ForwardRefExoticComponent<TabProps & RefAttributes<HTMLElement>>>;
|
|
4
4
|
export interface TabBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
5
|
/**
|
package/esm/Component.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TabBarProps } from './types';
|
|
2
|
+
import { type TabBarProps } from './types';
|
|
3
3
|
export declare const TabBar: React.ForwardRefExoticComponent<TabBarProps & React.RefAttributes<HTMLDivElement>> & {
|
|
4
4
|
Tab: React.ForwardRefExoticComponent<import("./types").TabProps & React.RefAttributes<HTMLElement>>;
|
|
5
5
|
};
|
package/esm/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":[],"mappings":";;;;;;;AAUA,IAAM,eAAe,GAAG,UAAU,CAC9B,UACI,EAWC,EACD,GAAG,EAAA;;AAXC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,mBAAuB,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAA,MAAA,CAAA,EAAA,EAVhB,sHAWC,CADe;IAIhB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACI,sDACkB,UAAU,EAAA,EACpB,SAAS,EACb,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACtD,YAAA,EAAA,CAAC,MAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACzB,YAAA,EAAA,EAAA,EAAA,CAAA,EAED,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAA;QACxB,OAAA,YAAY,CAAC,GAAG,EAAE;AACd,YAAA,OAAO,EAAA,OAAA;AACP,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;AACrC,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC;KAAA,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAA,GAAA,EAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { type TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":[],"mappings":";;;;;;;AAUA,IAAM,eAAe,GAAG,UAAU,CAC9B,UACI,EAWC,EACD,GAAG,EAAA;;AAXC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,mBAAuB,EAAvB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACvB,EAAA,GAAA,EAAA,CAAA,OAA4B,EAA5B,OAAO,mBAAG,kBAAkB,GAAA,EAAA,EACzB,SAAS,GAAA,MAAA,CAAA,EAAA,EAVhB,sHAWC,CADe;IAIhB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACI,sDACkB,UAAU,EAAA,EACpB,SAAS,EACb,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACtD,YAAA,EAAA,CAAC,MAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACzB,YAAA,EAAA,EAAA,EAAA,CAAA,EAED,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAA;QACxB,OAAA,YAAY,CAAC,GAAG,EAAE;AACd,YAAA,OAAO,EAAA,OAAA;AACP,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;AACrC,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC;KAAA,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAA,GAAA,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { PrivateTabProps, TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, type MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { type PrivateTabProps, type TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
--color-light-accent-secondary: #212124;
|
|
4
4
|
--color-light-neutral-translucent-700: rgba(4, 4, 21, 0.47);
|
|
5
5
|
--color-light-text-secondary: rgba(4, 4, 19, 0.55);
|
|
6
|
+
} :root {
|
|
7
|
+
--border-radius-0: 0;
|
|
6
8
|
} :root {
|
|
7
9
|
--gap-2xs: 4px;
|
|
8
10
|
--gap-xs: 8px;
|
|
9
11
|
--gap-0: 0px;
|
|
10
12
|
--gap-4: var(--gap-2xs);
|
|
11
13
|
--gap-8: var(--gap-xs);
|
|
12
|
-
} .tab-
|
|
14
|
+
} .tab-bar__component_zwktl {
|
|
13
15
|
-webkit-tap-highlight-color: transparent;
|
|
14
16
|
box-sizing: border-box;
|
|
15
17
|
background-color: transparent;
|
|
@@ -17,7 +19,7 @@
|
|
|
17
19
|
border: 0;
|
|
18
20
|
margin: var(--gap-0);
|
|
19
21
|
box-shadow: none;
|
|
20
|
-
border-radius: 0;
|
|
22
|
+
border-radius: var(--border-radius-0);
|
|
21
23
|
-webkit-user-select: none;
|
|
22
24
|
-moz-user-select: none;
|
|
23
25
|
user-select: none;
|
|
@@ -36,17 +38,17 @@
|
|
|
36
38
|
align-items: center;
|
|
37
39
|
padding: var(--gap-8) var(--gap-0);
|
|
38
40
|
color: var(--color-light-neutral-translucent-700);
|
|
39
|
-
} .tab-
|
|
41
|
+
} .tab-bar__primary_zwktl {
|
|
40
42
|
color: var(--color-light-accent-primary);
|
|
41
|
-
} .tab-
|
|
43
|
+
} .tab-bar__secondary_zwktl {
|
|
42
44
|
color: var(--color-light-accent-secondary);
|
|
43
|
-
} .tab-
|
|
45
|
+
} .tab-bar__icon_zwktl {
|
|
44
46
|
display: flex;
|
|
45
47
|
align-items: center;
|
|
46
48
|
justify-content: center;
|
|
47
49
|
flex-grow: 1;
|
|
48
50
|
width: 100%;
|
|
49
|
-
} .tab-
|
|
51
|
+
} .tab-bar__label_zwktl {
|
|
50
52
|
-webkit-line-clamp: 1;
|
|
51
53
|
display: -webkit-box;
|
|
52
54
|
-webkit-box-orient: vertical;
|
|
@@ -55,9 +57,9 @@
|
|
|
55
57
|
flex-shrink: 0;
|
|
56
58
|
|
|
57
59
|
color: var(--color-light-text-secondary);
|
|
58
|
-
} .tab-
|
|
60
|
+
} .tab-bar__labelSelected_zwktl {
|
|
59
61
|
color: inherit;
|
|
60
|
-
} .tab-
|
|
62
|
+
} .tab-bar__indicator_zwktl {
|
|
61
63
|
position: absolute;
|
|
62
64
|
top: 3px;
|
|
63
65
|
left: calc(50% + var(--gap-4));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"component":"tab-
|
|
3
|
+
var styles = {"component":"tab-bar__component_zwktl","primary":"tab-bar__primary_zwktl","secondary":"tab-bar__secondary_zwktl","icon":"tab-bar__icon_zwktl","label":"tab-bar__label_zwktl","labelSelected":"tab-bar__labelSelected_zwktl","indicator":"tab-bar__indicator_zwktl"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tab/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n @mixin button-reset;\n\n position: relative;\n display: inline-flex;\n flex-direction: column;\n flex: 1 0 0;\n align-items: center;\n padding: var(--gap-8) var(--gap-0);\n color: var(--color-light-neutral-translucent-700);\n}\n\n.primary {\n color: var(--color-light-accent-primary);\n}\n\n.secondary {\n color: var(--color-light-accent-secondary);\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n width: 100%;\n}\n\n.label {\n @mixin row_limit 1;\n word-break: break-all;\n flex-shrink: 0;\n\n color: var(--color-light-text-secondary);\n}\n\n.labelSelected {\n color: inherit;\n}\n\n.indicator {\n position: absolute;\n top: 3px;\n left: calc(50% + var(--gap-4));\n height: 16px;\n min-width: 16px;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,0BAA0B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tab/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n @mixin button-reset;\n\n position: relative;\n display: inline-flex;\n flex-direction: column;\n flex: 1 0 0;\n align-items: center;\n padding: var(--gap-8) var(--gap-0);\n color: var(--color-light-neutral-translucent-700);\n}\n\n.primary {\n color: var(--color-light-accent-primary);\n}\n\n.secondary {\n color: var(--color-light-accent-secondary);\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n width: 100%;\n}\n\n.label {\n @mixin row_limit 1;\n word-break: break-all;\n flex-shrink: 0;\n\n color: var(--color-light-text-secondary);\n}\n\n.labelSelected {\n color: inherit;\n}\n\n.indicator {\n position: absolute;\n top: 3px;\n left: calc(50% + var(--gap-4));\n height: 16px;\n min-width: 16px;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,0BAA0B,CAAC;;;;"}
|
package/esm/index.css
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
--gap-0: 0px;
|
|
7
7
|
} :root {
|
|
8
8
|
--sab: env(safe-area-inset-bottom, var(--gap-0));
|
|
9
|
-
} .tab-
|
|
9
|
+
} .tab-bar__component_evcd0 {
|
|
10
10
|
display: flex;
|
|
11
11
|
justify-content: center;
|
|
12
12
|
height: 64px;
|
|
13
13
|
max-height: 64px;
|
|
14
14
|
box-sizing: border-box;
|
|
15
15
|
overflow: hidden;
|
|
16
|
-
transition: box-shadow 0.2s ease
|
|
17
|
-
} .tab-
|
|
16
|
+
transition: box-shadow 0.2s ease;
|
|
17
|
+
} .tab-bar__component_evcd0.tab-bar__modal-bg-primary_evcd0 {
|
|
18
18
|
background-color: var(--color-light-base-bg-primary);
|
|
19
|
-
} .tab-
|
|
19
|
+
} .tab-bar__component_evcd0.tab-bar__modal-bg-alt-primary_evcd0 {
|
|
20
20
|
background-color: var(--color-light-base-bg-alt-primary);
|
|
21
|
-
} @media (display-mode: standalone) { .tab-
|
|
22
|
-
padding-bottom: var(--sab)
|
|
21
|
+
} @media (display-mode: standalone) { .tab-bar__component_evcd0 {
|
|
22
|
+
padding-bottom: var(--sab);
|
|
23
23
|
}
|
|
24
|
-
} .tab-
|
|
24
|
+
} .tab-bar__border_evcd0 {
|
|
25
25
|
box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);
|
|
26
26
|
}
|
package/esm/index.module.css.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"component":"tab-
|
|
3
|
+
var styles = {"component":"tab-bar__component_evcd0","modal-bg-primary":"tab-bar__modal-bg-primary_evcd0","modal-bg-alt-primary":"tab-bar__modal-bg-alt-primary_evcd0","border":"tab-bar__border_evcd0"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '@alfalab/core-components-vars/src/safe-area.css';\n\n.component {\n display: flex;\n justify-content: center;\n height: 64px;\n max-height: 64px;\n box-sizing: border-box;\n overflow: hidden;\n transition: box-shadow 0.2s ease;\n\n &.modal-bg-primary {\n background-color: var(--color-light-base-bg-primary);\n }\n\n &.modal-bg-alt-primary {\n background-color: var(--color-light-base-bg-alt-primary);\n }\n\n @media (display-mode: standalone) {\n padding-bottom: var(--sab);\n }\n}\n\n.border {\n box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n@import '@alfalab/core-components-vars/src/safe-area.css';\n\n.component {\n display: flex;\n justify-content: center;\n height: 64px;\n max-height: 64px;\n box-sizing: border-box;\n overflow: hidden;\n transition: box-shadow 0.2s ease;\n\n &.modal-bg-primary {\n background-color: var(--color-light-base-bg-primary);\n }\n\n &.modal-bg-alt-primary {\n background-color: var(--color-light-base-bg-alt-primary);\n }\n\n @media (display-mode: standalone) {\n padding-bottom: var(--sab);\n }\n}\n\n.border {\n box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;;;;"}
|
package/esm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type AllHTMLAttributes, type ElementType, type ForwardRefExoticComponent, type HTMLAttributes, type ReactElement, type ReactNode, type RefAttributes } from 'react';
|
|
2
|
+
import { type IndicatorProps } from '@alfalab/core-components-indicator/esm';
|
|
3
3
|
declare type TabElementType = ReactElement<TabProps, ForwardRefExoticComponent<TabProps & RefAttributes<HTMLElement>>>;
|
|
4
4
|
export interface TabBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
5
|
/**
|
package/index.css
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
--gap-0: 0px;
|
|
7
7
|
} :root {
|
|
8
8
|
--sab: env(safe-area-inset-bottom, var(--gap-0));
|
|
9
|
-
} .tab-
|
|
9
|
+
} .tab-bar__component_evcd0 {
|
|
10
10
|
display: flex;
|
|
11
11
|
justify-content: center;
|
|
12
12
|
height: 64px;
|
|
13
13
|
max-height: 64px;
|
|
14
14
|
box-sizing: border-box;
|
|
15
15
|
overflow: hidden;
|
|
16
|
-
transition: box-shadow 0.2s ease
|
|
17
|
-
} .tab-
|
|
16
|
+
transition: box-shadow 0.2s ease;
|
|
17
|
+
} .tab-bar__component_evcd0.tab-bar__modal-bg-primary_evcd0 {
|
|
18
18
|
background-color: var(--color-light-base-bg-primary);
|
|
19
|
-
} .tab-
|
|
19
|
+
} .tab-bar__component_evcd0.tab-bar__modal-bg-alt-primary_evcd0 {
|
|
20
20
|
background-color: var(--color-light-base-bg-alt-primary);
|
|
21
|
-
} @media (display-mode: standalone) { .tab-
|
|
22
|
-
padding-bottom: var(--sab)
|
|
21
|
+
} @media (display-mode: standalone) { .tab-bar__component_evcd0 {
|
|
22
|
+
padding-bottom: var(--sab);
|
|
23
23
|
}
|
|
24
|
-
} .tab-
|
|
24
|
+
} .tab-bar__border_evcd0 {
|
|
25
25
|
box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);
|
|
26
26
|
}
|
package/index.module.css.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"tab-
|
|
5
|
+
var styles = {"component":"tab-bar__component_evcd0","modal-bg-primary":"tab-bar__modal-bg-primary_evcd0","modal-bg-alt-primary":"tab-bar__modal-bg-alt-primary_evcd0","border":"tab-bar__border_evcd0"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
package/index.module.css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '@alfalab/core-components-vars/src/safe-area.css';\n\n.component {\n display: flex;\n justify-content: center;\n height: 64px;\n max-height: 64px;\n box-sizing: border-box;\n overflow: hidden;\n transition: box-shadow 0.2s ease;\n\n &.modal-bg-primary {\n background-color: var(--color-light-base-bg-primary);\n }\n\n &.modal-bg-alt-primary {\n background-color: var(--color-light-base-bg-alt-primary);\n }\n\n @media (display-mode: standalone) {\n padding-bottom: var(--sab);\n }\n}\n\n.border {\n box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n@import '@alfalab/core-components-vars/src/safe-area.css';\n\n.component {\n display: flex;\n justify-content: center;\n height: 64px;\n max-height: 64px;\n box-sizing: border-box;\n overflow: hidden;\n transition: box-shadow 0.2s ease;\n\n &.modal-bg-primary {\n background-color: var(--color-light-base-bg-primary);\n }\n\n &.modal-bg-alt-primary {\n background-color: var(--color-light-base-bg-alt-primary);\n }\n\n @media (display-mode: standalone) {\n padding-bottom: var(--sab);\n }\n}\n\n.border {\n box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;;;;"}
|
package/modern/Component.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TabBarProps } from './types';
|
|
2
|
+
import { type TabBarProps } from './types';
|
|
3
3
|
export declare const TabBar: React.ForwardRefExoticComponent<TabBarProps & React.RefAttributes<HTMLDivElement>> & {
|
|
4
4
|
Tab: React.ForwardRefExoticComponent<import("./types").TabProps & React.RefAttributes<HTMLElement>>;
|
|
5
5
|
};
|
package/modern/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":[],"mappings":";;;;;;AAUA,MAAM,eAAe,GAAG,UAAU,CAC9B,CACI,EACI,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACf,EACD,GAAG,KACH;IACA,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACI,KACkB,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,cAAA,EAAA,UAAU,EACpB,GAAA,SAAS,EACb,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE;AACxD,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;AAC1B,SAAA,CAAC,EAED,EAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KACxB,YAAY,CAAC,GAAG,EAAE;QACd,OAAO;QACP,WAAW;AACX,QAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;QACrC,QAAQ;QACR,aAAa;AACb,QAAA,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;KAC/C,CAAC,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { type TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":[],"mappings":";;;;;;AAUA,MAAM,eAAe,GAAG,UAAU,CAC9B,CACI,EACI,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACf,EACD,GAAG,KACH;IACA,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACI,KACkB,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,cAAA,EAAA,UAAU,EACpB,GAAA,SAAS,EACb,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE;AACxD,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;AAC1B,SAAA,CAAC,EAED,EAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KACxB,YAAY,CAAC,GAAG,EAAE;QACd,OAAO;QACP,WAAW;AACX,QAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;QACrC,QAAQ;QACR,aAAa;AACb,QAAA,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;KAC/C,CAAC,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { PrivateTabProps, TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":[],"mappings":";;;;;;;AAWA,MAAM,YAAY,GAAG,UAAU,CAC3B,CACI,EACI,aAAa,EACb,cAAc,EACd,KAAK,EACL,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,EAAE,EAClB,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,SAAS,GAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,EACjC,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACa,EAC7B,GAAG,KACH;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,KAAiB,KAAI;AACtC,QAAA,QAAQ,GAAG,EAAE,CAAC;AACd,QAAA,OAAO,GAAG,KAAK,CAAC;AACpB,KAAC;AAED,IAAA,MAAM,EACF,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,uBAAuB,EAC1C,aAAa,EAAE,mBAAmB,GACrC,GAAG,aAAa;AAEjB,IAAA,QACI,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAA,cAAA,EACQ,UAAU,EACxB,QAAQ,EAAE,CAAC,EAAA,IACN,SAAS,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAA,GACpD,SAAS,EACb,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACT,MAAM,CAAC,SAAS,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,IAAI,uBAAuB,EACnC,QAAQ,IAAI,iBAAiB,EAC7B;AACI,YAAA,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ;SAClC,CACJ,EACD,OAAO,EAAE,WAAW,EAAA;AAEpB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,EAC9D,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAC7D;QAEN,KAAC,CAAA,aAAA,CAAA,IAAI,IACD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE;AAC9D,gBAAA,CAAC,MAAM,CAAC,aAAa,GAAG,QAAQ;aACnC,CAAC,EAAA,EAED,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAC/D;AAEN,QAAA,aAAa,KACV,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA;AAC5B,YAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EACF,EAAA,GAAA,cAAc,EAClB,MAAM,EAAE,cAAc,EAAE,KAAK,GAAG,EAAE,GAAG,SAAS,EAC9C,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC;iBACzC,EACD,eAAe,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAA,CAClD,CACA,CACT,CACO;AAEpB,CAAC,CACJ;AAEM,MAAM,GAAG,GAAG;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, type MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { type PrivateTabProps, type TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":[],"mappings":";;;;;;;AAWA,MAAM,YAAY,GAAG,UAAU,CAC3B,CACI,EACI,aAAa,EACb,cAAc,EACd,KAAK,EACL,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,EAAE,EAClB,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,SAAS,GAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,EACjC,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACa,EAC7B,GAAG,KACH;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,KAAiB,KAAI;AACtC,QAAA,QAAQ,GAAG,EAAE,CAAC;AACd,QAAA,OAAO,GAAG,KAAK,CAAC;AACpB,KAAC;AAED,IAAA,MAAM,EACF,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,uBAAuB,EAC1C,aAAa,EAAE,mBAAmB,GACrC,GAAG,aAAa;AAEjB,IAAA,QACI,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAA,cAAA,EACQ,UAAU,EACxB,QAAQ,EAAE,CAAC,EAAA,IACN,SAAS,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAA,GACpD,SAAS,EACb,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACT,MAAM,CAAC,SAAS,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,IAAI,uBAAuB,EACnC,QAAQ,IAAI,iBAAiB,EAC7B;AACI,YAAA,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ;SAClC,CACJ,EACD,OAAO,EAAE,WAAW,EAAA;AAEpB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,EAC9D,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAC7D;QAEN,KAAC,CAAA,aAAA,CAAA,IAAI,IACD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE;AAC9D,gBAAA,CAAC,MAAM,CAAC,aAAa,GAAG,QAAQ;aACnC,CAAC,EAAA,EAED,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAC/D;AAEN,QAAA,aAAa,KACV,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA;AAC5B,YAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EACF,EAAA,GAAA,cAAc,EAClB,MAAM,EAAE,cAAc,EAAE,KAAK,GAAG,EAAE,GAAG,SAAS,EAC9C,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC;iBACzC,EACD,eAAe,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAA,CAClD,CACA,CACT,CACO;AAEpB,CAAC,CACJ;AAEM,MAAM,GAAG,GAAG;;;;"}
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
--color-light-accent-secondary: #212124;
|
|
4
4
|
--color-light-neutral-translucent-700: rgba(4, 4, 21, 0.47);
|
|
5
5
|
--color-light-text-secondary: rgba(4, 4, 19, 0.55);
|
|
6
|
+
} :root {
|
|
7
|
+
--border-radius-0: 0;
|
|
6
8
|
} :root {
|
|
7
9
|
--gap-2xs: 4px;
|
|
8
10
|
--gap-xs: 8px;
|
|
9
11
|
--gap-0: 0px;
|
|
10
12
|
--gap-4: var(--gap-2xs);
|
|
11
13
|
--gap-8: var(--gap-xs);
|
|
12
|
-
} .tab-
|
|
14
|
+
} .tab-bar__component_zwktl {
|
|
13
15
|
-webkit-tap-highlight-color: transparent;
|
|
14
16
|
box-sizing: border-box;
|
|
15
17
|
background-color: transparent;
|
|
@@ -17,7 +19,7 @@
|
|
|
17
19
|
border: 0;
|
|
18
20
|
margin: var(--gap-0);
|
|
19
21
|
box-shadow: none;
|
|
20
|
-
border-radius: 0;
|
|
22
|
+
border-radius: var(--border-radius-0);
|
|
21
23
|
-webkit-user-select: none;
|
|
22
24
|
-moz-user-select: none;
|
|
23
25
|
user-select: none;
|
|
@@ -36,17 +38,17 @@
|
|
|
36
38
|
align-items: center;
|
|
37
39
|
padding: var(--gap-8) var(--gap-0);
|
|
38
40
|
color: var(--color-light-neutral-translucent-700);
|
|
39
|
-
} .tab-
|
|
41
|
+
} .tab-bar__primary_zwktl {
|
|
40
42
|
color: var(--color-light-accent-primary);
|
|
41
|
-
} .tab-
|
|
43
|
+
} .tab-bar__secondary_zwktl {
|
|
42
44
|
color: var(--color-light-accent-secondary);
|
|
43
|
-
} .tab-
|
|
45
|
+
} .tab-bar__icon_zwktl {
|
|
44
46
|
display: flex;
|
|
45
47
|
align-items: center;
|
|
46
48
|
justify-content: center;
|
|
47
49
|
flex-grow: 1;
|
|
48
50
|
width: 100%;
|
|
49
|
-
} .tab-
|
|
51
|
+
} .tab-bar__label_zwktl {
|
|
50
52
|
-webkit-line-clamp: 1;
|
|
51
53
|
display: -webkit-box;
|
|
52
54
|
-webkit-box-orient: vertical;
|
|
@@ -55,9 +57,9 @@
|
|
|
55
57
|
flex-shrink: 0;
|
|
56
58
|
|
|
57
59
|
color: var(--color-light-text-secondary);
|
|
58
|
-
} .tab-
|
|
60
|
+
} .tab-bar__labelSelected_zwktl {
|
|
59
61
|
color: inherit;
|
|
60
|
-
} .tab-
|
|
62
|
+
} .tab-bar__indicator_zwktl {
|
|
61
63
|
position: absolute;
|
|
62
64
|
top: 3px;
|
|
63
65
|
left: calc(50% + var(--gap-4));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
const styles = {"component":"tab-
|
|
3
|
+
const styles = {"component":"tab-bar__component_zwktl","primary":"tab-bar__primary_zwktl","secondary":"tab-bar__secondary_zwktl","icon":"tab-bar__icon_zwktl","label":"tab-bar__label_zwktl","labelSelected":"tab-bar__labelSelected_zwktl","indicator":"tab-bar__indicator_zwktl"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tab/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n @mixin button-reset;\n\n position: relative;\n display: inline-flex;\n flex-direction: column;\n flex: 1 0 0;\n align-items: center;\n padding: var(--gap-8) var(--gap-0);\n color: var(--color-light-neutral-translucent-700);\n}\n\n.primary {\n color: var(--color-light-accent-primary);\n}\n\n.secondary {\n color: var(--color-light-accent-secondary);\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n width: 100%;\n}\n\n.label {\n @mixin row_limit 1;\n word-break: break-all;\n flex-shrink: 0;\n\n color: var(--color-light-text-secondary);\n}\n\n.labelSelected {\n color: inherit;\n}\n\n.indicator {\n position: absolute;\n top: 3px;\n left: calc(50% + var(--gap-4));\n height: 16px;\n min-width: 16px;\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,0BAA0B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tab/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n @mixin button-reset;\n\n position: relative;\n display: inline-flex;\n flex-direction: column;\n flex: 1 0 0;\n align-items: center;\n padding: var(--gap-8) var(--gap-0);\n color: var(--color-light-neutral-translucent-700);\n}\n\n.primary {\n color: var(--color-light-accent-primary);\n}\n\n.secondary {\n color: var(--color-light-accent-secondary);\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n width: 100%;\n}\n\n.label {\n @mixin row_limit 1;\n word-break: break-all;\n flex-shrink: 0;\n\n color: var(--color-light-text-secondary);\n}\n\n.labelSelected {\n color: inherit;\n}\n\n.indicator {\n position: absolute;\n top: 3px;\n left: calc(50% + var(--gap-4));\n height: 16px;\n min-width: 16px;\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,0BAA0B,CAAC;;;;"}
|
package/modern/index.css
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
--gap-0: 0px;
|
|
7
7
|
} :root {
|
|
8
8
|
--sab: env(safe-area-inset-bottom, var(--gap-0));
|
|
9
|
-
} .tab-
|
|
9
|
+
} .tab-bar__component_evcd0 {
|
|
10
10
|
display: flex;
|
|
11
11
|
justify-content: center;
|
|
12
12
|
height: 64px;
|
|
13
13
|
max-height: 64px;
|
|
14
14
|
box-sizing: border-box;
|
|
15
15
|
overflow: hidden;
|
|
16
|
-
transition: box-shadow 0.2s ease
|
|
17
|
-
} .tab-
|
|
16
|
+
transition: box-shadow 0.2s ease;
|
|
17
|
+
} .tab-bar__component_evcd0.tab-bar__modal-bg-primary_evcd0 {
|
|
18
18
|
background-color: var(--color-light-base-bg-primary);
|
|
19
|
-
} .tab-
|
|
19
|
+
} .tab-bar__component_evcd0.tab-bar__modal-bg-alt-primary_evcd0 {
|
|
20
20
|
background-color: var(--color-light-base-bg-alt-primary);
|
|
21
|
-
} @media (display-mode: standalone) { .tab-
|
|
22
|
-
padding-bottom: var(--sab)
|
|
21
|
+
} @media (display-mode: standalone) { .tab-bar__component_evcd0 {
|
|
22
|
+
padding-bottom: var(--sab);
|
|
23
23
|
}
|
|
24
|
-
} .tab-
|
|
24
|
+
} .tab-bar__border_evcd0 {
|
|
25
25
|
box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);
|
|
26
26
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
const styles = {"component":"tab-
|
|
3
|
+
const styles = {"component":"tab-bar__component_evcd0","modal-bg-primary":"tab-bar__modal-bg-primary_evcd0","modal-bg-alt-primary":"tab-bar__modal-bg-alt-primary_evcd0","border":"tab-bar__border_evcd0"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '@alfalab/core-components-vars/src/safe-area.css';\n\n.component {\n display: flex;\n justify-content: center;\n height: 64px;\n max-height: 64px;\n box-sizing: border-box;\n overflow: hidden;\n transition: box-shadow 0.2s ease;\n\n &.modal-bg-primary {\n background-color: var(--color-light-base-bg-primary);\n }\n\n &.modal-bg-alt-primary {\n background-color: var(--color-light-base-bg-alt-primary);\n }\n\n @media (display-mode: standalone) {\n padding-bottom: var(--sab);\n }\n}\n\n.border {\n box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n@import '@alfalab/core-components-vars/src/safe-area.css';\n\n.component {\n display: flex;\n justify-content: center;\n height: 64px;\n max-height: 64px;\n box-sizing: border-box;\n overflow: hidden;\n transition: box-shadow 0.2s ease;\n\n &.modal-bg-primary {\n background-color: var(--color-light-base-bg-primary);\n }\n\n &.modal-bg-alt-primary {\n background-color: var(--color-light-base-bg-alt-primary);\n }\n\n @media (display-mode: standalone) {\n padding-bottom: var(--sab);\n }\n}\n\n.border {\n box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;;;;"}
|
package/modern/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type AllHTMLAttributes, type ElementType, type ForwardRefExoticComponent, type HTMLAttributes, type ReactElement, type ReactNode, type RefAttributes } from 'react';
|
|
2
|
+
import { type IndicatorProps } from '@alfalab/core-components-indicator/modern';
|
|
3
3
|
declare type TabElementType = ReactElement<TabProps, ForwardRefExoticComponent<TabProps & RefAttributes<HTMLElement>>>;
|
|
4
4
|
export interface TabBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TabBarProps } from './types';
|
|
2
|
+
import { type TabBarProps } from './types';
|
|
3
3
|
export declare const TabBar: React.ForwardRefExoticComponent<TabBarProps & React.RefAttributes<HTMLDivElement>> & {
|
|
4
4
|
Tab: React.ForwardRefExoticComponent<import("./types").TabProps & React.RefAttributes<HTMLElement>>;
|
|
5
5
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":[],"mappings":";;;;;;AAUA,MAAM,eAAe,GAAG,UAAU,CAC9B,CACI,EACI,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACf,EACD,GAAG,KACH;IACA,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACI,KACkB,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,cAAA,EAAA,UAAU,EACpB,GAAA,SAAS,EACb,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE;AACxD,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;AAC1B,SAAA,CAAC,EAED,EAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KACxB,YAAY,CAAC,GAAG,EAAE;QACd,OAAO;QACP,WAAW;AACX,QAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;QACrC,QAAQ;QACR,aAAa;AACb,QAAA,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;KAC/C,CAAC,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { Children, cloneElement, forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { Tab } from './components/tab';\nimport { type TabBarProps } from './types';\n\nimport styles from './index.module.css';\n\nconst TabBarComponent = forwardRef<HTMLDivElement, TabBarProps>(\n (\n {\n children,\n className,\n selectedId,\n border,\n dataTestId,\n tabClassNames,\n onChange,\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n },\n ref,\n ) => {\n if (Children.count(children) > 5) {\n // eslint-disable-next-line no-console\n console.error('Компонент TabBar не может содержать больше 5 табов');\n }\n\n return (\n <nav\n data-test-id={dataTestId}\n {...restProps}\n ref={ref}\n className={cn(styles.component, styles[bgColor], className, {\n [styles.border]: border,\n })}\n >\n {Children.map(children, (tab) =>\n cloneElement(tab, {\n bgColor,\n accentColor,\n selected: tab.props.id === selectedId,\n onChange,\n tabClassNames,\n dataTestId: getDataTestId(dataTestId, 'tab'),\n }),\n )}\n </nav>\n );\n },\n);\n\nTabBarComponent.displayName = 'TabBarComponent';\n\nexport const TabBar = Object.assign(TabBarComponent, { Tab });\n"],"names":[],"mappings":";;;;;;AAUA,MAAM,eAAe,GAAG,UAAU,CAC9B,CACI,EACI,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACf,EACD,GAAG,KACH;IACA,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACtE;IAED,QACI,KACkB,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,cAAA,EAAA,UAAU,EACpB,GAAA,SAAS,EACb,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE;AACxD,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;AAC1B,SAAA,CAAC,EAED,EAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KACxB,YAAY,CAAC,GAAG,EAAE;QACd,OAAO;QACP,WAAW;AACX,QAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU;QACrC,QAAQ;QACR,aAAa;AACb,QAAA,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;KAC/C,CAAC,CACL,CACC;AAEd,CAAC,CACJ;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAExC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { PrivateTabProps, TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":[],"mappings":";;;;;;;AAWA,MAAM,YAAY,GAAG,UAAU,CAC3B,CACI,EACI,aAAa,EACb,cAAc,EACd,KAAK,EACL,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,EAAE,EAClB,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,SAAS,GAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,EACjC,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACa,EAC7B,GAAG,KACH;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,KAAiB,KAAI;AACtC,QAAA,QAAQ,GAAG,EAAE,CAAC;AACd,QAAA,OAAO,GAAG,KAAK,CAAC;AACpB,KAAC;AAED,IAAA,MAAM,EACF,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,uBAAuB,EAC1C,aAAa,EAAE,mBAAmB,GACrC,GAAG,aAAa;AAEjB,IAAA,QACI,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAA,cAAA,EACQ,UAAU,EACxB,QAAQ,EAAE,CAAC,EAAA,IACN,SAAS,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAA,GACpD,SAAS,EACb,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACT,MAAM,CAAC,SAAS,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,IAAI,uBAAuB,EACnC,QAAQ,IAAI,iBAAiB,EAC7B;AACI,YAAA,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ;SAClC,CACJ,EACD,OAAO,EAAE,WAAW,EAAA;AAEpB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,EAC9D,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAC7D;QAEN,KAAC,CAAA,aAAA,CAAA,IAAI,IACD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE;AAC9D,gBAAA,CAAC,MAAM,CAAC,aAAa,GAAG,QAAQ;aACnC,CAAC,EAAA,EAED,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAC/D;AAEN,QAAA,aAAa,KACV,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA;AAC5B,YAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EACF,EAAA,GAAA,cAAc,EAClB,MAAM,EAAE,cAAc,EAAE,KAAK,GAAG,EAAE,GAAG,SAAS,EAC9C,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC;iBACzC,EACD,eAAe,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAA,CAClD,CACA,CACT,CACO;AAEpB,CAAC,CACJ;AAEM,MAAM,GAAG,GAAG;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/tab/Component.tsx"],"sourcesContent":["import React, { cloneElement, forwardRef, isValidElement, type MouseEvent } from 'react';\nimport cn from 'classnames';\n\nimport { Indicator } from '@alfalab/core-components-indicator';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';\nimport { type PrivateTabProps, type TabProps } from '../../types';\n\nimport styles from './index.module.css';\n\nconst TabComponent = forwardRef(\n (\n {\n showIndicator,\n indicatorProps,\n label,\n icon,\n id,\n selected,\n onChange,\n onClick,\n tabClassNames = {},\n dataTestId,\n className,\n labelClassName,\n selectedClassName,\n iconClassName,\n href,\n Component = href ? 'a' : 'button',\n accentColor = 'primary',\n bgColor = 'modal-bg-primary',\n ...restProps\n }: PrivateTabProps & TabProps,\n ref,\n ) => {\n const handleClick = (event: MouseEvent) => {\n onChange?.(id);\n onClick?.(event);\n };\n\n const {\n className: commonClassName,\n labelClassName: commonLabelClassName,\n selectedClassName: commonSelectedClassName,\n iconClassName: commonIconClassName,\n } = tabClassNames;\n\n return (\n <Component\n data-test-id={dataTestId}\n tabIndex={0}\n {...(Component === 'button' ? { type: 'button' } : null)}\n {...restProps}\n href={href}\n id={id}\n ref={ref}\n className={cn(\n styles.component,\n commonClassName,\n className,\n selected && commonSelectedClassName,\n selected && selectedClassName,\n {\n [styles[accentColor]]: selected,\n },\n )}\n onClick={handleClick}\n >\n <div className={cn(styles.icon, commonIconClassName, iconClassName)}>\n {isValidElement(icon) ? cloneElement(icon, { selected }) : icon}\n </div>\n\n <Text\n weight='medium'\n view='secondary-small'\n className={cn(styles.label, commonLabelClassName, labelClassName, {\n [styles.labelSelected]: selected,\n })}\n >\n {isValidElement(label) ? cloneElement(label, { selected }) : label}\n </Text>\n\n {showIndicator && (\n <div className={styles.indicator}>\n <Indicator\n {...indicatorProps}\n height={indicatorProps?.value ? 16 : undefined}\n border={{\n width: 2,\n color: INDICATOR_BORDER_COLOR[bgColor],\n }}\n backgroundColor={INDICATOR_BG_COLOR[accentColor]}\n />\n </div>\n )}\n </Component>\n );\n },\n);\n\nexport const Tab = TabComponent as React.ForwardRefExoticComponent<\n TabProps & React.RefAttributes<HTMLElement>\n>;\n"],"names":[],"mappings":";;;;;;;AAWA,MAAM,YAAY,GAAG,UAAU,CAC3B,CACI,EACI,aAAa,EACb,cAAc,EACd,KAAK,EACL,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,EAAE,EAClB,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,SAAS,GAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,EACjC,WAAW,GAAG,SAAS,EACvB,OAAO,GAAG,kBAAkB,EAC5B,GAAG,SAAS,EACa,EAC7B,GAAG,KACH;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,KAAiB,KAAI;AACtC,QAAA,QAAQ,GAAG,EAAE,CAAC;AACd,QAAA,OAAO,GAAG,KAAK,CAAC;AACpB,KAAC;AAED,IAAA,MAAM,EACF,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,uBAAuB,EAC1C,aAAa,EAAE,mBAAmB,GACrC,GAAG,aAAa;AAEjB,IAAA,QACI,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAA,cAAA,EACQ,UAAU,EACxB,QAAQ,EAAE,CAAC,EAAA,IACN,SAAS,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAA,GACpD,SAAS,EACb,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACT,MAAM,CAAC,SAAS,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,IAAI,uBAAuB,EACnC,QAAQ,IAAI,iBAAiB,EAC7B;AACI,YAAA,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ;SAClC,CACJ,EACD,OAAO,EAAE,WAAW,EAAA;AAEpB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,EAC9D,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAC7D;QAEN,KAAC,CAAA,aAAA,CAAA,IAAI,IACD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE;AAC9D,gBAAA,CAAC,MAAM,CAAC,aAAa,GAAG,QAAQ;aACnC,CAAC,EAAA,EAED,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAC/D;AAEN,QAAA,aAAa,KACV,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA;AAC5B,YAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EACF,EAAA,GAAA,cAAc,EAClB,MAAM,EAAE,cAAc,EAAE,KAAK,GAAG,EAAE,GAAG,SAAS,EAC9C,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC;iBACzC,EACD,eAAe,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAA,CAClD,CACA,CACT,CACO;AAEpB,CAAC,CACJ;AAEM,MAAM,GAAG,GAAG;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
.component {
|
|
2
4
|
-webkit-tap-highlight-color: transparent;
|
|
3
5
|
box-sizing: border-box;
|
|
@@ -6,7 +8,7 @@
|
|
|
6
8
|
border: 0;
|
|
7
9
|
margin: var(--gap-0);
|
|
8
10
|
box-shadow: none;
|
|
9
|
-
border-radius: 0;
|
|
11
|
+
border-radius: var(--border-radius-0);
|
|
10
12
|
-webkit-user-select: none;
|
|
11
13
|
-moz-user-select: none;
|
|
12
14
|
user-select: none;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
--sab: env(safe-area-inset-bottom, var(--gap-0));
|
|
3
3
|
}
|
|
4
|
+
|
|
4
5
|
.component {
|
|
5
6
|
display: flex;
|
|
6
7
|
justify-content: center;
|
|
@@ -8,19 +9,24 @@
|
|
|
8
9
|
max-height: 64px;
|
|
9
10
|
box-sizing: border-box;
|
|
10
11
|
overflow: hidden;
|
|
11
|
-
transition: box-shadow 0.2s ease
|
|
12
|
+
transition: box-shadow 0.2s ease;
|
|
12
13
|
}
|
|
14
|
+
|
|
13
15
|
.component.modal-bg-primary {
|
|
14
16
|
background-color: var(--color-light-base-bg-primary);
|
|
15
17
|
}
|
|
18
|
+
|
|
16
19
|
.component.modal-bg-alt-primary {
|
|
17
20
|
background-color: var(--color-light-base-bg-alt-primary);
|
|
18
21
|
}
|
|
22
|
+
|
|
19
23
|
@media (display-mode: standalone) {
|
|
24
|
+
|
|
20
25
|
.component {
|
|
21
|
-
padding-bottom: var(--sab)
|
|
26
|
+
padding-bottom: var(--sab);
|
|
22
27
|
}
|
|
23
28
|
}
|
|
29
|
+
|
|
24
30
|
.border {
|
|
25
31
|
box-shadow: 0 -1px 0 0 var(--color-light-neutral-translucent-300);
|
|
26
32
|
}
|
package/moderncssm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type AllHTMLAttributes, type ElementType, type ForwardRefExoticComponent, type HTMLAttributes, type ReactElement, type ReactNode, type RefAttributes } from 'react';
|
|
2
|
+
import { type IndicatorProps } from '@alfalab/core-components-indicator/moderncssm';
|
|
3
3
|
declare type TabElementType = ReactElement<TabProps, ForwardRefExoticComponent<TabProps & RefAttributes<HTMLElement>>>;
|
|
4
4
|
export interface TabBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
5
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfalab/core-components-tab-bar",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@alfalab/core-components-indicator": "^3.0.0",
|
|
14
14
|
"@alfalab/core-components-shared": "^1.1.0",
|
|
15
|
-
"@alfalab/core-components-typography": "^5.0.
|
|
15
|
+
"@alfalab/core-components-typography": "^5.0.2",
|
|
16
16
|
"classnames": "^2.5.1",
|
|
17
17
|
"tslib": "^2.4.0"
|
|
18
18
|
},
|
|
@@ -24,6 +24,6 @@
|
|
|
24
24
|
"access": "public",
|
|
25
25
|
"directory": "dist"
|
|
26
26
|
},
|
|
27
|
-
"themesVersion": "14.1.
|
|
27
|
+
"themesVersion": "14.1.2",
|
|
28
28
|
"varsVersion": "10.1.0"
|
|
29
29
|
}
|
package/src/Component.tsx
CHANGED
|
@@ -4,7 +4,7 @@ import cn from 'classnames';
|
|
|
4
4
|
import { getDataTestId } from '@alfalab/core-components-shared';
|
|
5
5
|
|
|
6
6
|
import { Tab } from './components/tab';
|
|
7
|
-
import { TabBarProps } from './types';
|
|
7
|
+
import { type TabBarProps } from './types';
|
|
8
8
|
|
|
9
9
|
import styles from './index.module.css';
|
|
10
10
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import React, { cloneElement, forwardRef, isValidElement, MouseEvent } from 'react';
|
|
1
|
+
import React, { cloneElement, forwardRef, isValidElement, type MouseEvent } from 'react';
|
|
2
2
|
import cn from 'classnames';
|
|
3
3
|
|
|
4
4
|
import { Indicator } from '@alfalab/core-components-indicator';
|
|
5
5
|
import { Text } from '@alfalab/core-components-typography';
|
|
6
6
|
|
|
7
7
|
import { INDICATOR_BG_COLOR, INDICATOR_BORDER_COLOR } from '../../consts';
|
|
8
|
-
import { PrivateTabProps, TabProps } from '../../types';
|
|
8
|
+
import { type PrivateTabProps, type TabProps } from '../../types';
|
|
9
9
|
|
|
10
10
|
import styles from './index.module.css';
|
|
11
11
|
|
package/src/index.module.css
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
AllHTMLAttributes,
|
|
3
|
-
ElementType,
|
|
4
|
-
ForwardRefExoticComponent,
|
|
5
|
-
HTMLAttributes,
|
|
6
|
-
ReactElement,
|
|
7
|
-
ReactNode,
|
|
8
|
-
RefAttributes,
|
|
1
|
+
import {
|
|
2
|
+
type AllHTMLAttributes,
|
|
3
|
+
type ElementType,
|
|
4
|
+
type ForwardRefExoticComponent,
|
|
5
|
+
type HTMLAttributes,
|
|
6
|
+
type ReactElement,
|
|
7
|
+
type ReactNode,
|
|
8
|
+
type RefAttributes,
|
|
9
9
|
} from 'react';
|
|
10
10
|
|
|
11
|
-
import type
|
|
11
|
+
import { type IndicatorProps } from '@alfalab/core-components-indicator';
|
|
12
12
|
|
|
13
13
|
type TabElementType = ReactElement<
|
|
14
14
|
TabProps,
|
package/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type AllHTMLAttributes, type ElementType, type ForwardRefExoticComponent, type HTMLAttributes, type ReactElement, type ReactNode, type RefAttributes } from 'react';
|
|
2
|
+
import { type IndicatorProps } from '@alfalab/core-components-indicator';
|
|
3
3
|
declare type TabElementType = ReactElement<TabProps, ForwardRefExoticComponent<TabProps & RefAttributes<HTMLElement>>>;
|
|
4
4
|
export interface TabBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
5
|
/**
|