@alfalab/core-components-navigation-bar 2.0.1 → 2.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.
Files changed (47) hide show
  1. package/Component.d.ts +1 -1
  2. package/Component.js.map +1 -1
  3. package/components/action-icon-addon/index.css +7 -7
  4. package/components/action-icon-addon/index.module.css.js +1 -1
  5. package/components/action-icon-addon/index.module.css.js.map +1 -1
  6. package/components/action-text-addon/index.css +2 -2
  7. package/components/action-text-addon/index.module.css.js +1 -1
  8. package/components/action-text-addon/index.module.css.js.map +1 -1
  9. package/cssm/Component.d.ts +1 -1
  10. package/cssm/Component.js.map +1 -1
  11. package/cssm/components/action-icon-addon/index.module.css +1 -1
  12. package/cssm/index.module.css +2 -2
  13. package/esm/Component.d.ts +1 -1
  14. package/esm/Component.js.map +1 -1
  15. package/esm/components/action-icon-addon/index.css +7 -7
  16. package/esm/components/action-icon-addon/index.module.css.js +1 -1
  17. package/esm/components/action-icon-addon/index.module.css.js.map +1 -1
  18. package/esm/components/action-text-addon/index.css +2 -2
  19. package/esm/components/action-text-addon/index.module.css.js +1 -1
  20. package/esm/components/action-text-addon/index.module.css.js.map +1 -1
  21. package/esm/index.css +18 -18
  22. package/esm/index.module.css.js +1 -1
  23. package/esm/index.module.css.js.map +1 -1
  24. package/index.css +18 -18
  25. package/index.module.css.js +1 -1
  26. package/index.module.css.js.map +1 -1
  27. package/modern/Component.d.ts +1 -1
  28. package/modern/Component.js.map +1 -1
  29. package/modern/components/action-icon-addon/index.css +7 -7
  30. package/modern/components/action-icon-addon/index.module.css.js +1 -1
  31. package/modern/components/action-icon-addon/index.module.css.js.map +1 -1
  32. package/modern/components/action-text-addon/index.css +2 -2
  33. package/modern/components/action-text-addon/index.module.css.js +1 -1
  34. package/modern/components/action-text-addon/index.module.css.js.map +1 -1
  35. package/modern/index.css +18 -18
  36. package/modern/index.module.css.js +1 -1
  37. package/modern/index.module.css.js.map +1 -1
  38. package/moderncssm/Component.d.ts +1 -1
  39. package/moderncssm/Component.js.map +1 -1
  40. package/moderncssm/components/action-icon-addon/index.module.css +3 -1
  41. package/moderncssm/components/action-text-addon/index.module.css +2 -0
  42. package/moderncssm/index.module.css +4 -2
  43. package/package.json +3 -3
  44. package/src/Component.tsx +1 -1
  45. package/src/components/action-icon-addon/index.module.css +1 -1
  46. package/src/components/action-text-addon/index.module.css +1 -1
  47. package/src/index.module.css +1 -1
package/Component.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
2
  export interface NavigationBarProps {
3
3
  /**
4
4
  * Заголовок
package/Component.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":["forwardRef","useState","useRef","useEffect","React","cn","styles","__assign","getDataTestId"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":["forwardRef","useState","useRef","useEffect","React","cn","styles","__assign","getDataTestId"],"mappings":"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"}
@@ -6,11 +6,11 @@
6
6
  } :root {
7
7
  --border-radius-circle: 50%;
8
8
  --border-radius-pill: 99px;
9
- } .navigation-bar__component_1f633 {
9
+ } .navigation-bar__component_143tk {
10
10
  height: 100%;
11
11
  border-radius: var(--border-radius-pill);
12
12
  min-width: 48px;
13
- } .navigation-bar__iconWrapper_1f633 {
13
+ } .navigation-bar__iconWrapper_143tk {
14
14
  display: inline-flex;
15
15
  align-items: center;
16
16
  justify-content: center;
@@ -18,13 +18,13 @@
18
18
  width: 30px;
19
19
  border-radius: var(--border-radius-circle);
20
20
  background: var(--color-light-neutral-translucent-100);
21
- vertical-align: middle
22
- } .navigation-bar__iconWrapper_1f633.navigation-bar__back_1f633 {
21
+ vertical-align: middle;
22
+ } .navigation-bar__iconWrapper_143tk.navigation-bar__back_143tk {
23
23
  background: transparent;
24
- } .navigation-bar__floating_1f633 path {
24
+ } .navigation-bar__floating_143tk path {
25
25
  fill: var(--color-light-neutral-translucent-700);
26
- } .navigation-bar__floating_1f633:hover path {
26
+ } .navigation-bar__floating_143tk:hover path {
27
27
  fill: var(--color-light-neutral-translucent-700-hover);
28
- } .navigation-bar__floating_1f633:active path {
28
+ } .navigation-bar__floating_143tk:active path {
29
29
  fill: var(--color-light-neutral-translucent-700-press);
30
30
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"component":"navigation-bar__component_1f633","iconWrapper":"navigation-bar__iconWrapper_1f633","back":"navigation-bar__back_1f633","floating":"navigation-bar__floating_1f633"};
5
+ var styles = {"component":"navigation-bar__component_143tk","iconWrapper":"navigation-bar__iconWrapper_143tk","back":"navigation-bar__back_143tk","floating":"navigation-bar__floating_143tk"};
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/action-icon-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n border-radius: var(--border-radius-pill);\n min-width: 48px;\n}\n\n.iconWrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 30px;\n width: 30px;\n border-radius: var(--border-radius-circle);\n background: var(--color-light-neutral-translucent-100);\n vertical-align: middle;\n\n &.back {\n background: transparent;\n }\n}\n\n.floating {\n & path {\n fill: var(--color-light-neutral-translucent-700);\n }\n\n &:hover {\n & path {\n fill: var(--color-light-neutral-translucent-700-hover);\n }\n }\n\n &:active {\n & path {\n fill: var(--color-light-neutral-translucent-700-press);\n }\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,gCAAgC,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/action-icon-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n height: 100%;\n border-radius: var(--border-radius-pill);\n min-width: 48px;\n}\n\n.iconWrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 30px;\n width: 30px;\n border-radius: var(--border-radius-circle);\n background: var(--color-light-neutral-translucent-100);\n vertical-align: middle;\n\n &.back {\n background: transparent;\n }\n}\n\n.floating {\n & path {\n fill: var(--color-light-neutral-translucent-700);\n }\n\n &:hover {\n & path {\n fill: var(--color-light-neutral-translucent-700-hover);\n }\n }\n\n &:active {\n & path {\n fill: var(--color-light-neutral-translucent-700-press);\n }\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,gCAAgC,CAAC;;;;"}
@@ -3,8 +3,8 @@
3
3
  --gap-m: 16px;
4
4
  --gap-8: var(--gap-xs);
5
5
  --gap-16: var(--gap-m);
6
- } .navigation-bar__component_b4ffc {
6
+ } .navigation-bar__component_183p4 {
7
7
  height: 100%;
8
- } .navigation-bar__text_b4ffc {
8
+ } .navigation-bar__text_183p4 {
9
9
  padding: var(--gap-8) var(--gap-16);
10
10
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"component":"navigation-bar__component_b4ffc","text":"navigation-bar__text_b4ffc"};
5
+ var styles = {"component":"navigation-bar__component_183p4","text":"navigation-bar__text_183p4"};
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/action-text-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n}\n\n.text {\n padding: var(--gap-8) var(--gap-16);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,MAAM,CAAC,4BAA4B,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/action-text-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n height: 100%;\n}\n\n.text {\n padding: var(--gap-8) var(--gap-16);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,MAAM,CAAC,4BAA4B,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
2
  export interface NavigationBarProps {
3
3
  /**
4
4
  * Заголовок
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":["forwardRef","useState","useRef","useEffect","React","cn","styles","__assign","getDataTestId"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":["forwardRef","useState","useRef","useEffect","React","cn","styles","__assign","getDataTestId"],"mappings":"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"}
@@ -18,7 +18,7 @@
18
18
  width: 30px;
19
19
  border-radius: var(--border-radius-circle);
20
20
  background: var(--color-light-neutral-translucent-100);
21
- vertical-align: middle
21
+ vertical-align: middle;
22
22
  } .iconWrapper.back {
23
23
  background: transparent;
24
24
  } .floating path {
@@ -37,7 +37,7 @@
37
37
  flex-grow: 1;
38
38
  justify-content: center;
39
39
  flex-flow: column nowrap;
40
- color: var(--color-light-text-primary)
40
+ color: var(--color-light-text-primary);
41
41
  } .content.left {
42
42
  padding: var(--gap-0) var(--gap-16);
43
43
  } .content > .title,
@@ -50,7 +50,7 @@
50
50
  } .title {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
- font-weight: 500
53
+ font-weight: 500;
54
54
  } .title.left {
55
55
  font-size: 20px;
56
56
  line-height: 28px;
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
2
  export interface NavigationBarProps {
3
3
  /**
4
4
  * Заголовок
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":[],"mappings":"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"}
@@ -6,11 +6,11 @@
6
6
  } :root {
7
7
  --border-radius-circle: 50%;
8
8
  --border-radius-pill: 99px;
9
- } .navigation-bar__component_1f633 {
9
+ } .navigation-bar__component_143tk {
10
10
  height: 100%;
11
11
  border-radius: var(--border-radius-pill);
12
12
  min-width: 48px;
13
- } .navigation-bar__iconWrapper_1f633 {
13
+ } .navigation-bar__iconWrapper_143tk {
14
14
  display: inline-flex;
15
15
  align-items: center;
16
16
  justify-content: center;
@@ -18,13 +18,13 @@
18
18
  width: 30px;
19
19
  border-radius: var(--border-radius-circle);
20
20
  background: var(--color-light-neutral-translucent-100);
21
- vertical-align: middle
22
- } .navigation-bar__iconWrapper_1f633.navigation-bar__back_1f633 {
21
+ vertical-align: middle;
22
+ } .navigation-bar__iconWrapper_143tk.navigation-bar__back_143tk {
23
23
  background: transparent;
24
- } .navigation-bar__floating_1f633 path {
24
+ } .navigation-bar__floating_143tk path {
25
25
  fill: var(--color-light-neutral-translucent-700);
26
- } .navigation-bar__floating_1f633:hover path {
26
+ } .navigation-bar__floating_143tk:hover path {
27
27
  fill: var(--color-light-neutral-translucent-700-hover);
28
- } .navigation-bar__floating_1f633:active path {
28
+ } .navigation-bar__floating_143tk:active path {
29
29
  fill: var(--color-light-neutral-translucent-700-press);
30
30
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- var styles = {"component":"navigation-bar__component_1f633","iconWrapper":"navigation-bar__iconWrapper_1f633","back":"navigation-bar__back_1f633","floating":"navigation-bar__floating_1f633"};
3
+ var styles = {"component":"navigation-bar__component_143tk","iconWrapper":"navigation-bar__iconWrapper_143tk","back":"navigation-bar__back_143tk","floating":"navigation-bar__floating_143tk"};
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/action-icon-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n border-radius: var(--border-radius-pill);\n min-width: 48px;\n}\n\n.iconWrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 30px;\n width: 30px;\n border-radius: var(--border-radius-circle);\n background: var(--color-light-neutral-translucent-100);\n vertical-align: middle;\n\n &.back {\n background: transparent;\n }\n}\n\n.floating {\n & path {\n fill: var(--color-light-neutral-translucent-700);\n }\n\n &:hover {\n & path {\n fill: var(--color-light-neutral-translucent-700-hover);\n }\n }\n\n &:active {\n & path {\n fill: var(--color-light-neutral-translucent-700-press);\n }\n }\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,gCAAgC,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/action-icon-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n height: 100%;\n border-radius: var(--border-radius-pill);\n min-width: 48px;\n}\n\n.iconWrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 30px;\n width: 30px;\n border-radius: var(--border-radius-circle);\n background: var(--color-light-neutral-translucent-100);\n vertical-align: middle;\n\n &.back {\n background: transparent;\n }\n}\n\n.floating {\n & path {\n fill: var(--color-light-neutral-translucent-700);\n }\n\n &:hover {\n & path {\n fill: var(--color-light-neutral-translucent-700-hover);\n }\n }\n\n &:active {\n & path {\n fill: var(--color-light-neutral-translucent-700-press);\n }\n }\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,gCAAgC,CAAC;;;;"}
@@ -3,8 +3,8 @@
3
3
  --gap-m: 16px;
4
4
  --gap-8: var(--gap-xs);
5
5
  --gap-16: var(--gap-m);
6
- } .navigation-bar__component_b4ffc {
6
+ } .navigation-bar__component_183p4 {
7
7
  height: 100%;
8
- } .navigation-bar__text_b4ffc {
8
+ } .navigation-bar__text_183p4 {
9
9
  padding: var(--gap-8) var(--gap-16);
10
10
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- var styles = {"component":"navigation-bar__component_b4ffc","text":"navigation-bar__text_b4ffc"};
3
+ var styles = {"component":"navigation-bar__component_183p4","text":"navigation-bar__text_183p4"};
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/action-text-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n}\n\n.text {\n padding: var(--gap-8) var(--gap-16);\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,MAAM,CAAC,4BAA4B,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/action-text-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n height: 100%;\n}\n\n.text {\n padding: var(--gap-8) var(--gap-16);\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,MAAM,CAAC,4BAA4B,CAAC;;;;"}
package/esm/index.css CHANGED
@@ -10,60 +10,60 @@
10
10
  --gap-4: var(--gap-2xs);
11
11
  --gap-8: var(--gap-xs);
12
12
  --gap-16: var(--gap-m);
13
- } .navigation-bar__component_1q5nn {
13
+ } .navigation-bar__component_495rc {
14
14
  padding: var(--gap-8) var(--gap-4);
15
15
  box-sizing: border-box;
16
16
  width: 100%;
17
- } .navigation-bar__sticky_1q5nn {
17
+ } .navigation-bar__sticky_495rc {
18
18
  position: sticky;
19
19
  top: var(--gap-0);
20
20
  z-index: 1;
21
- } .navigation-bar__border_1q5nn {
21
+ } .navigation-bar__border_495rc {
22
22
  box-shadow: 0 1px 0 0 var(--color-light-neutral-300);
23
- } .navigation-bar__mainLine_1q5nn {
23
+ } .navigation-bar__mainLine_495rc {
24
24
  display: flex;
25
25
  background-color: inherit;
26
26
  justify-content: space-between;
27
27
  min-height: 40px;
28
28
  align-items: stretch;
29
- } .navigation-bar__left_1q5nn {
29
+ } .navigation-bar__left_495rc {
30
30
  text-align: left;
31
- } .navigation-bar__center_1q5nn {
31
+ } .navigation-bar__center_495rc {
32
32
  text-align: center;
33
- } .navigation-bar__children_1q5nn {
33
+ } .navigation-bar__children_495rc {
34
34
  width: 100%;
35
- } .navigation-bar__content_1q5nn {
35
+ } .navigation-bar__content_495rc {
36
36
  display: flex;
37
37
  flex-grow: 1;
38
38
  justify-content: center;
39
39
  flex-flow: column nowrap;
40
- color: var(--color-light-text-primary)
41
- } .navigation-bar__content_1q5nn.navigation-bar__left_1q5nn {
40
+ color: var(--color-light-text-primary);
41
+ } .navigation-bar__content_495rc.navigation-bar__left_495rc {
42
42
  padding: var(--gap-0) var(--gap-16);
43
- } .navigation-bar__content_1q5nn > .navigation-bar__title_1q5nn,
44
- .navigation-bar__content_1q5nn > .navigation-bar__subtitle_1q5nn {
43
+ } .navigation-bar__content_495rc > .navigation-bar__title_495rc,
44
+ .navigation-bar__content_495rc > .navigation-bar__subtitle_495rc {
45
45
  -webkit-line-clamp: 1;
46
46
  display: -webkit-box;
47
47
  -webkit-box-orient: vertical;
48
48
  overflow: hidden;
49
49
  word-break: break-all;
50
- } .navigation-bar__title_1q5nn {
50
+ } .navigation-bar__title_495rc {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
- font-weight: 500
54
- } .navigation-bar__title_1q5nn.navigation-bar__left_1q5nn {
53
+ font-weight: 500;
54
+ } .navigation-bar__title_495rc.navigation-bar__left_495rc {
55
55
  font-size: 20px;
56
56
  line-height: 28px;
57
57
  font-weight: 600;
58
- } .navigation-bar__subtitle_1q5nn {
58
+ } .navigation-bar__subtitle_495rc {
59
59
  font-size: 14px;
60
60
  line-height: 20px;
61
61
  font-weight: 400;
62
62
  color: var(--color-light-text-secondary);
63
- } .navigation-bar__addons_1q5nn {
63
+ } .navigation-bar__addons_495rc {
64
64
  min-width: 48px;
65
65
  display: flex;
66
66
  justify-content: center;
67
- } .navigation-bar__rightAddons_1q5nn {
67
+ } .navigation-bar__rightAddons_495rc {
68
68
  margin-left: auto;
69
69
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- var styles = {"component":"navigation-bar__component_1q5nn","sticky":"navigation-bar__sticky_1q5nn","border":"navigation-bar__border_1q5nn","mainLine":"navigation-bar__mainLine_1q5nn","left":"navigation-bar__left_1q5nn","center":"navigation-bar__center_1q5nn","children":"navigation-bar__children_1q5nn","content":"navigation-bar__content_1q5nn","title":"navigation-bar__title_1q5nn","subtitle":"navigation-bar__subtitle_1q5nn","addons":"navigation-bar__addons_1q5nn","rightAddons":"navigation-bar__rightAddons_1q5nn"};
3
+ var styles = {"component":"navigation-bar__component_495rc","sticky":"navigation-bar__sticky_495rc","border":"navigation-bar__border_495rc","mainLine":"navigation-bar__mainLine_495rc","left":"navigation-bar__left_495rc","center":"navigation-bar__center_495rc","children":"navigation-bar__children_495rc","content":"navigation-bar__content_495rc","title":"navigation-bar__title_495rc","subtitle":"navigation-bar__subtitle_495rc","addons":"navigation-bar__addons_495rc","rightAddons":"navigation-bar__rightAddons_495rc"};
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\n.component {\n padding: var(--gap-8) var(--gap-4);\n box-sizing: border-box;\n width: 100%;\n}\n\n.sticky {\n position: sticky;\n top: var(--gap-0);\n z-index: 1;\n}\n\n.border {\n box-shadow: 0 1px 0 0 var(--color-light-neutral-300);\n}\n\n.mainLine {\n display: flex;\n background-color: inherit;\n justify-content: space-between;\n min-height: 40px;\n align-items: stretch;\n}\n\n.left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.children {\n width: 100%;\n}\n\n.content {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n flex-flow: column nowrap;\n color: var(--color-light-text-primary);\n\n &.left {\n padding: var(--gap-0) var(--gap-16);\n }\n\n & > .title,\n & > .subtitle {\n @mixin row_limit 1;\n word-break: break-all;\n }\n}\n\n.title {\n @mixin action_component_primary;\n\n &.left {\n @mixin headline-system-mobile_small;\n }\n}\n\n.subtitle {\n @mixin paragraph_primary_small;\n color: var(--color-light-text-secondary);\n}\n\n.addons {\n min-width: 48px;\n display: flex;\n justify-content: center;\n}\n\n.rightAddons {\n margin-left: auto;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,SAAS,CAAC,+BAA+B,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,gCAAgC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,aAAa,CAAC,mCAAmC,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\n.component {\n padding: var(--gap-8) var(--gap-4);\n box-sizing: border-box;\n width: 100%;\n}\n\n.sticky {\n position: sticky;\n top: var(--gap-0);\n z-index: 1;\n}\n\n.border {\n box-shadow: 0 1px 0 0 var(--color-light-neutral-300);\n}\n\n.mainLine {\n display: flex;\n background-color: inherit;\n justify-content: space-between;\n min-height: 40px;\n align-items: stretch;\n}\n\n.left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.children {\n width: 100%;\n}\n\n.content {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n flex-flow: column nowrap;\n color: var(--color-light-text-primary);\n\n &.left {\n padding: var(--gap-0) var(--gap-16);\n }\n\n & > .title,\n & > .subtitle {\n @mixin row_limit 1;\n word-break: break-all;\n }\n}\n\n.title {\n @mixin action_component_primary;\n\n &.left {\n @mixin headline-system-mobile_small;\n }\n}\n\n.subtitle {\n @mixin paragraph_primary_small;\n color: var(--color-light-text-secondary);\n}\n\n.addons {\n min-width: 48px;\n display: flex;\n justify-content: center;\n}\n\n.rightAddons {\n margin-left: auto;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,SAAS,CAAC,+BAA+B,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,gCAAgC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,aAAa,CAAC,mCAAmC,CAAC;;;;"}
package/index.css CHANGED
@@ -10,60 +10,60 @@
10
10
  --gap-4: var(--gap-2xs);
11
11
  --gap-8: var(--gap-xs);
12
12
  --gap-16: var(--gap-m);
13
- } .navigation-bar__component_1q5nn {
13
+ } .navigation-bar__component_495rc {
14
14
  padding: var(--gap-8) var(--gap-4);
15
15
  box-sizing: border-box;
16
16
  width: 100%;
17
- } .navigation-bar__sticky_1q5nn {
17
+ } .navigation-bar__sticky_495rc {
18
18
  position: sticky;
19
19
  top: var(--gap-0);
20
20
  z-index: 1;
21
- } .navigation-bar__border_1q5nn {
21
+ } .navigation-bar__border_495rc {
22
22
  box-shadow: 0 1px 0 0 var(--color-light-neutral-300);
23
- } .navigation-bar__mainLine_1q5nn {
23
+ } .navigation-bar__mainLine_495rc {
24
24
  display: flex;
25
25
  background-color: inherit;
26
26
  justify-content: space-between;
27
27
  min-height: 40px;
28
28
  align-items: stretch;
29
- } .navigation-bar__left_1q5nn {
29
+ } .navigation-bar__left_495rc {
30
30
  text-align: left;
31
- } .navigation-bar__center_1q5nn {
31
+ } .navigation-bar__center_495rc {
32
32
  text-align: center;
33
- } .navigation-bar__children_1q5nn {
33
+ } .navigation-bar__children_495rc {
34
34
  width: 100%;
35
- } .navigation-bar__content_1q5nn {
35
+ } .navigation-bar__content_495rc {
36
36
  display: flex;
37
37
  flex-grow: 1;
38
38
  justify-content: center;
39
39
  flex-flow: column nowrap;
40
- color: var(--color-light-text-primary)
41
- } .navigation-bar__content_1q5nn.navigation-bar__left_1q5nn {
40
+ color: var(--color-light-text-primary);
41
+ } .navigation-bar__content_495rc.navigation-bar__left_495rc {
42
42
  padding: var(--gap-0) var(--gap-16);
43
- } .navigation-bar__content_1q5nn > .navigation-bar__title_1q5nn,
44
- .navigation-bar__content_1q5nn > .navigation-bar__subtitle_1q5nn {
43
+ } .navigation-bar__content_495rc > .navigation-bar__title_495rc,
44
+ .navigation-bar__content_495rc > .navigation-bar__subtitle_495rc {
45
45
  -webkit-line-clamp: 1;
46
46
  display: -webkit-box;
47
47
  -webkit-box-orient: vertical;
48
48
  overflow: hidden;
49
49
  word-break: break-all;
50
- } .navigation-bar__title_1q5nn {
50
+ } .navigation-bar__title_495rc {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
- font-weight: 500
54
- } .navigation-bar__title_1q5nn.navigation-bar__left_1q5nn {
53
+ font-weight: 500;
54
+ } .navigation-bar__title_495rc.navigation-bar__left_495rc {
55
55
  font-size: 20px;
56
56
  line-height: 28px;
57
57
  font-weight: 600;
58
- } .navigation-bar__subtitle_1q5nn {
58
+ } .navigation-bar__subtitle_495rc {
59
59
  font-size: 14px;
60
60
  line-height: 20px;
61
61
  font-weight: 400;
62
62
  color: var(--color-light-text-secondary);
63
- } .navigation-bar__addons_1q5nn {
63
+ } .navigation-bar__addons_495rc {
64
64
  min-width: 48px;
65
65
  display: flex;
66
66
  justify-content: center;
67
- } .navigation-bar__rightAddons_1q5nn {
67
+ } .navigation-bar__rightAddons_495rc {
68
68
  margin-left: auto;
69
69
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"component":"navigation-bar__component_1q5nn","sticky":"navigation-bar__sticky_1q5nn","border":"navigation-bar__border_1q5nn","mainLine":"navigation-bar__mainLine_1q5nn","left":"navigation-bar__left_1q5nn","center":"navigation-bar__center_1q5nn","children":"navigation-bar__children_1q5nn","content":"navigation-bar__content_1q5nn","title":"navigation-bar__title_1q5nn","subtitle":"navigation-bar__subtitle_1q5nn","addons":"navigation-bar__addons_1q5nn","rightAddons":"navigation-bar__rightAddons_1q5nn"};
5
+ var styles = {"component":"navigation-bar__component_495rc","sticky":"navigation-bar__sticky_495rc","border":"navigation-bar__border_495rc","mainLine":"navigation-bar__mainLine_495rc","left":"navigation-bar__left_495rc","center":"navigation-bar__center_495rc","children":"navigation-bar__children_495rc","content":"navigation-bar__content_495rc","title":"navigation-bar__title_495rc","subtitle":"navigation-bar__subtitle_495rc","addons":"navigation-bar__addons_495rc","rightAddons":"navigation-bar__rightAddons_495rc"};
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/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n padding: var(--gap-8) var(--gap-4);\n box-sizing: border-box;\n width: 100%;\n}\n\n.sticky {\n position: sticky;\n top: var(--gap-0);\n z-index: 1;\n}\n\n.border {\n box-shadow: 0 1px 0 0 var(--color-light-neutral-300);\n}\n\n.mainLine {\n display: flex;\n background-color: inherit;\n justify-content: space-between;\n min-height: 40px;\n align-items: stretch;\n}\n\n.left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.children {\n width: 100%;\n}\n\n.content {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n flex-flow: column nowrap;\n color: var(--color-light-text-primary);\n\n &.left {\n padding: var(--gap-0) var(--gap-16);\n }\n\n & > .title,\n & > .subtitle {\n @mixin row_limit 1;\n word-break: break-all;\n }\n}\n\n.title {\n @mixin action_component_primary;\n\n &.left {\n @mixin headline-system-mobile_small;\n }\n}\n\n.subtitle {\n @mixin paragraph_primary_small;\n color: var(--color-light-text-secondary);\n}\n\n.addons {\n min-width: 48px;\n display: flex;\n justify-content: center;\n}\n\n.rightAddons {\n margin-left: auto;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,SAAS,CAAC,+BAA+B,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,gCAAgC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,aAAa,CAAC,mCAAmC,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\n.component {\n padding: var(--gap-8) var(--gap-4);\n box-sizing: border-box;\n width: 100%;\n}\n\n.sticky {\n position: sticky;\n top: var(--gap-0);\n z-index: 1;\n}\n\n.border {\n box-shadow: 0 1px 0 0 var(--color-light-neutral-300);\n}\n\n.mainLine {\n display: flex;\n background-color: inherit;\n justify-content: space-between;\n min-height: 40px;\n align-items: stretch;\n}\n\n.left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.children {\n width: 100%;\n}\n\n.content {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n flex-flow: column nowrap;\n color: var(--color-light-text-primary);\n\n &.left {\n padding: var(--gap-0) var(--gap-16);\n }\n\n & > .title,\n & > .subtitle {\n @mixin row_limit 1;\n word-break: break-all;\n }\n}\n\n.title {\n @mixin action_component_primary;\n\n &.left {\n @mixin headline-system-mobile_small;\n }\n}\n\n.subtitle {\n @mixin paragraph_primary_small;\n color: var(--color-light-text-secondary);\n}\n\n.addons {\n min-width: 48px;\n display: flex;\n justify-content: center;\n}\n\n.rightAddons {\n margin-left: auto;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,SAAS,CAAC,+BAA+B,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,gCAAgC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,aAAa,CAAC,mCAAmC,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
2
  export interface NavigationBarProps {
3
3
  /**
4
4
  * Заголовок
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":[],"mappings":"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"}
@@ -6,11 +6,11 @@
6
6
  } :root {
7
7
  --border-radius-circle: 50%;
8
8
  --border-radius-pill: 99px;
9
- } .navigation-bar__component_1f633 {
9
+ } .navigation-bar__component_143tk {
10
10
  height: 100%;
11
11
  border-radius: var(--border-radius-pill);
12
12
  min-width: 48px;
13
- } .navigation-bar__iconWrapper_1f633 {
13
+ } .navigation-bar__iconWrapper_143tk {
14
14
  display: inline-flex;
15
15
  align-items: center;
16
16
  justify-content: center;
@@ -18,13 +18,13 @@
18
18
  width: 30px;
19
19
  border-radius: var(--border-radius-circle);
20
20
  background: var(--color-light-neutral-translucent-100);
21
- vertical-align: middle
22
- } .navigation-bar__iconWrapper_1f633.navigation-bar__back_1f633 {
21
+ vertical-align: middle;
22
+ } .navigation-bar__iconWrapper_143tk.navigation-bar__back_143tk {
23
23
  background: transparent;
24
- } .navigation-bar__floating_1f633 path {
24
+ } .navigation-bar__floating_143tk path {
25
25
  fill: var(--color-light-neutral-translucent-700);
26
- } .navigation-bar__floating_1f633:hover path {
26
+ } .navigation-bar__floating_143tk:hover path {
27
27
  fill: var(--color-light-neutral-translucent-700-hover);
28
- } .navigation-bar__floating_1f633:active path {
28
+ } .navigation-bar__floating_143tk:active path {
29
29
  fill: var(--color-light-neutral-translucent-700-press);
30
30
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- const styles = {"component":"navigation-bar__component_1f633","iconWrapper":"navigation-bar__iconWrapper_1f633","back":"navigation-bar__back_1f633","floating":"navigation-bar__floating_1f633"};
3
+ const styles = {"component":"navigation-bar__component_143tk","iconWrapper":"navigation-bar__iconWrapper_143tk","back":"navigation-bar__back_143tk","floating":"navigation-bar__floating_143tk"};
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/action-icon-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n border-radius: var(--border-radius-pill);\n min-width: 48px;\n}\n\n.iconWrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 30px;\n width: 30px;\n border-radius: var(--border-radius-circle);\n background: var(--color-light-neutral-translucent-100);\n vertical-align: middle;\n\n &.back {\n background: transparent;\n }\n}\n\n.floating {\n & path {\n fill: var(--color-light-neutral-translucent-700);\n }\n\n &:hover {\n & path {\n fill: var(--color-light-neutral-translucent-700-hover);\n }\n }\n\n &:active {\n & path {\n fill: var(--color-light-neutral-translucent-700-press);\n }\n }\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,gCAAgC,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/action-icon-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n height: 100%;\n border-radius: var(--border-radius-pill);\n min-width: 48px;\n}\n\n.iconWrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 30px;\n width: 30px;\n border-radius: var(--border-radius-circle);\n background: var(--color-light-neutral-translucent-100);\n vertical-align: middle;\n\n &.back {\n background: transparent;\n }\n}\n\n.floating {\n & path {\n fill: var(--color-light-neutral-translucent-700);\n }\n\n &:hover {\n & path {\n fill: var(--color-light-neutral-translucent-700-hover);\n }\n }\n\n &:active {\n & path {\n fill: var(--color-light-neutral-translucent-700-press);\n }\n }\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,aAAa,CAAC,mCAAmC,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,gCAAgC,CAAC;;;;"}
@@ -3,8 +3,8 @@
3
3
  --gap-m: 16px;
4
4
  --gap-8: var(--gap-xs);
5
5
  --gap-16: var(--gap-m);
6
- } .navigation-bar__component_b4ffc {
6
+ } .navigation-bar__component_183p4 {
7
7
  height: 100%;
8
- } .navigation-bar__text_b4ffc {
8
+ } .navigation-bar__text_183p4 {
9
9
  padding: var(--gap-8) var(--gap-16);
10
10
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- const styles = {"component":"navigation-bar__component_b4ffc","text":"navigation-bar__text_b4ffc"};
3
+ const styles = {"component":"navigation-bar__component_183p4","text":"navigation-bar__text_183p4"};
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/action-text-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n}\n\n.text {\n padding: var(--gap-8) var(--gap-16);\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,MAAM,CAAC,4BAA4B,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/action-text-addon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n height: 100%;\n}\n\n.text {\n padding: var(--gap-8) var(--gap-16);\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,MAAM,CAAC,4BAA4B,CAAC;;;;"}
package/modern/index.css CHANGED
@@ -10,60 +10,60 @@
10
10
  --gap-4: var(--gap-2xs);
11
11
  --gap-8: var(--gap-xs);
12
12
  --gap-16: var(--gap-m);
13
- } .navigation-bar__component_1q5nn {
13
+ } .navigation-bar__component_495rc {
14
14
  padding: var(--gap-8) var(--gap-4);
15
15
  box-sizing: border-box;
16
16
  width: 100%;
17
- } .navigation-bar__sticky_1q5nn {
17
+ } .navigation-bar__sticky_495rc {
18
18
  position: sticky;
19
19
  top: var(--gap-0);
20
20
  z-index: 1;
21
- } .navigation-bar__border_1q5nn {
21
+ } .navigation-bar__border_495rc {
22
22
  box-shadow: 0 1px 0 0 var(--color-light-neutral-300);
23
- } .navigation-bar__mainLine_1q5nn {
23
+ } .navigation-bar__mainLine_495rc {
24
24
  display: flex;
25
25
  background-color: inherit;
26
26
  justify-content: space-between;
27
27
  min-height: 40px;
28
28
  align-items: stretch;
29
- } .navigation-bar__left_1q5nn {
29
+ } .navigation-bar__left_495rc {
30
30
  text-align: left;
31
- } .navigation-bar__center_1q5nn {
31
+ } .navigation-bar__center_495rc {
32
32
  text-align: center;
33
- } .navigation-bar__children_1q5nn {
33
+ } .navigation-bar__children_495rc {
34
34
  width: 100%;
35
- } .navigation-bar__content_1q5nn {
35
+ } .navigation-bar__content_495rc {
36
36
  display: flex;
37
37
  flex-grow: 1;
38
38
  justify-content: center;
39
39
  flex-flow: column nowrap;
40
- color: var(--color-light-text-primary)
41
- } .navigation-bar__content_1q5nn.navigation-bar__left_1q5nn {
40
+ color: var(--color-light-text-primary);
41
+ } .navigation-bar__content_495rc.navigation-bar__left_495rc {
42
42
  padding: var(--gap-0) var(--gap-16);
43
- } .navigation-bar__content_1q5nn > .navigation-bar__title_1q5nn,
44
- .navigation-bar__content_1q5nn > .navigation-bar__subtitle_1q5nn {
43
+ } .navigation-bar__content_495rc > .navigation-bar__title_495rc,
44
+ .navigation-bar__content_495rc > .navigation-bar__subtitle_495rc {
45
45
  -webkit-line-clamp: 1;
46
46
  display: -webkit-box;
47
47
  -webkit-box-orient: vertical;
48
48
  overflow: hidden;
49
49
  word-break: break-all;
50
- } .navigation-bar__title_1q5nn {
50
+ } .navigation-bar__title_495rc {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
- font-weight: 500
54
- } .navigation-bar__title_1q5nn.navigation-bar__left_1q5nn {
53
+ font-weight: 500;
54
+ } .navigation-bar__title_495rc.navigation-bar__left_495rc {
55
55
  font-size: 20px;
56
56
  line-height: 28px;
57
57
  font-weight: 600;
58
- } .navigation-bar__subtitle_1q5nn {
58
+ } .navigation-bar__subtitle_495rc {
59
59
  font-size: 14px;
60
60
  line-height: 20px;
61
61
  font-weight: 400;
62
62
  color: var(--color-light-text-secondary);
63
- } .navigation-bar__addons_1q5nn {
63
+ } .navigation-bar__addons_495rc {
64
64
  min-width: 48px;
65
65
  display: flex;
66
66
  justify-content: center;
67
- } .navigation-bar__rightAddons_1q5nn {
67
+ } .navigation-bar__rightAddons_495rc {
68
68
  margin-left: auto;
69
69
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- const styles = {"component":"navigation-bar__component_1q5nn","sticky":"navigation-bar__sticky_1q5nn","border":"navigation-bar__border_1q5nn","mainLine":"navigation-bar__mainLine_1q5nn","left":"navigation-bar__left_1q5nn","center":"navigation-bar__center_1q5nn","children":"navigation-bar__children_1q5nn","content":"navigation-bar__content_1q5nn","title":"navigation-bar__title_1q5nn","subtitle":"navigation-bar__subtitle_1q5nn","addons":"navigation-bar__addons_1q5nn","rightAddons":"navigation-bar__rightAddons_1q5nn"};
3
+ const styles = {"component":"navigation-bar__component_495rc","sticky":"navigation-bar__sticky_495rc","border":"navigation-bar__border_495rc","mainLine":"navigation-bar__mainLine_495rc","left":"navigation-bar__left_495rc","center":"navigation-bar__center_495rc","children":"navigation-bar__children_495rc","content":"navigation-bar__content_495rc","title":"navigation-bar__title_495rc","subtitle":"navigation-bar__subtitle_495rc","addons":"navigation-bar__addons_495rc","rightAddons":"navigation-bar__rightAddons_495rc"};
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\n.component {\n padding: var(--gap-8) var(--gap-4);\n box-sizing: border-box;\n width: 100%;\n}\n\n.sticky {\n position: sticky;\n top: var(--gap-0);\n z-index: 1;\n}\n\n.border {\n box-shadow: 0 1px 0 0 var(--color-light-neutral-300);\n}\n\n.mainLine {\n display: flex;\n background-color: inherit;\n justify-content: space-between;\n min-height: 40px;\n align-items: stretch;\n}\n\n.left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.children {\n width: 100%;\n}\n\n.content {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n flex-flow: column nowrap;\n color: var(--color-light-text-primary);\n\n &.left {\n padding: var(--gap-0) var(--gap-16);\n }\n\n & > .title,\n & > .subtitle {\n @mixin row_limit 1;\n word-break: break-all;\n }\n}\n\n.title {\n @mixin action_component_primary;\n\n &.left {\n @mixin headline-system-mobile_small;\n }\n}\n\n.subtitle {\n @mixin paragraph_primary_small;\n color: var(--color-light-text-secondary);\n}\n\n.addons {\n min-width: 48px;\n display: flex;\n justify-content: center;\n}\n\n.rightAddons {\n margin-left: auto;\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,SAAS,CAAC,+BAA+B,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,gCAAgC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,aAAa,CAAC,mCAAmC,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\n.component {\n padding: var(--gap-8) var(--gap-4);\n box-sizing: border-box;\n width: 100%;\n}\n\n.sticky {\n position: sticky;\n top: var(--gap-0);\n z-index: 1;\n}\n\n.border {\n box-shadow: 0 1px 0 0 var(--color-light-neutral-300);\n}\n\n.mainLine {\n display: flex;\n background-color: inherit;\n justify-content: space-between;\n min-height: 40px;\n align-items: stretch;\n}\n\n.left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.children {\n width: 100%;\n}\n\n.content {\n display: flex;\n flex-grow: 1;\n justify-content: center;\n flex-flow: column nowrap;\n color: var(--color-light-text-primary);\n\n &.left {\n padding: var(--gap-0) var(--gap-16);\n }\n\n & > .title,\n & > .subtitle {\n @mixin row_limit 1;\n word-break: break-all;\n }\n}\n\n.title {\n @mixin action_component_primary;\n\n &.left {\n @mixin headline-system-mobile_small;\n }\n}\n\n.subtitle {\n @mixin paragraph_primary_small;\n color: var(--color-light-text-secondary);\n}\n\n.addons {\n min-width: 48px;\n display: flex;\n justify-content: center;\n}\n\n.rightAddons {\n margin-left: auto;\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,SAAS,CAAC,+BAA+B,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,gCAAgC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,aAAa,CAAC,mCAAmC,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
2
  export interface NavigationBarProps {
3
3
  /**
4
4
  * Заголовок
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport styles from './index.module.css';\n\nexport interface NavigationBarProps {\n /**\n * Заголовок\n */\n title?: string;\n\n /**\n * Подзаголовок\n */\n subtitle?: string;\n\n /**\n * Контент шапки\n */\n children?: ReactNode;\n\n /**\n * Выравнивание заголовка\n * @default center\n */\n align?: 'left' | 'center';\n\n /**\n * Цвет фона\n */\n backgroundColor?: string;\n\n /**\n * Наличие бордера\n */\n border?: boolean;\n\n /**\n * Фиксирует шапку\n */\n sticky?: boolean;\n\n /**\n * Слот снизу\n */\n bottomAddons?: ReactNode;\n\n /**\n * Слот слева\n */\n leftAddons?: ReactNode;\n\n /**\n * Слот справа\n */\n rightAddons?: ReactNode;\n\n /**\n * Дополнительный класс для контента\n */\n contentClassName?: string;\n\n /**\n * Дополнительный класс для обертки контента\n */\n contentWrapperClassName?: string;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для правого аддона\n */\n rightAddonsClassName?: string;\n\n /**\n * Дополнительный класс для левого аддона\n */\n leftAddonsClassName?: string;\n\n /**\n * Дополнительный класс для нижнего аддона\n */\n bottomAddonsClassName?: string;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n */\n dataTestId?: string;\n}\n\nexport const NavigationBar = forwardRef<HTMLDivElement, NavigationBarProps>(\n (\n {\n align = 'center',\n rightAddons,\n leftAddons,\n bottomAddons,\n sticky,\n border,\n subtitle,\n title,\n children,\n backgroundColor = 'var(--color-light-base-bg-primary)',\n contentWrapperClassName,\n className,\n contentClassName,\n rightAddonsClassName,\n leftAddonsClassName,\n bottomAddonsClassName,\n dataTestId,\n },\n ref,\n ) => {\n const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });\n const leftAddonsRef = useRef<HTMLDivElement>(null);\n const rightAddonsRef = useRef<HTMLDivElement>(null);\n const hasLeftAddons = leftAddons && align !== 'left';\n\n // добавляет отступ для того чтобы title находился по центру не зависимо от ширины аддонов\n useEffect(() => {\n const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;\n const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;\n\n const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);\n const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;\n\n setTitleMargin((prev) => {\n const newState = shouldAddLeftMargin\n ? { left: marginSize, right: 0 }\n : { left: 0, right: marginSize };\n\n const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;\n\n return isStateChanged ? newState : prev;\n });\n }, [hasLeftAddons, leftAddons, rightAddons]);\n\n return (\n <div\n ref={ref}\n className={cn(\n styles.component,\n {\n [styles.border]: border,\n [styles.sticky]: sticky,\n },\n className,\n )}\n style={{\n ...(backgroundColor && { backgroundColor }),\n }}\n data-test-id={dataTestId}\n >\n <div className={cn(styles.mainLine, styles[align], contentClassName)}>\n {hasLeftAddons && (\n <div className={cn(styles.addons, leftAddonsClassName)} ref={leftAddonsRef}>\n {leftAddons}\n </div>\n )}\n\n {children && <div className={styles.children}>{children}</div>}\n\n {title && (\n <div\n className={cn(styles.content, contentWrapperClassName, {\n [styles[align]]: !hasLeftAddons,\n })}\n style={{\n ...(align === 'center'\n ? {\n marginLeft: titleMargin.left,\n marginRight: titleMargin.right,\n }\n : null),\n }}\n >\n <div\n className={cn(styles.title, {\n [styles[align]]: !hasLeftAddons && !subtitle,\n })}\n data-test-id={getDataTestId(dataTestId, 'title')}\n >\n {title}\n </div>\n\n {subtitle && (\n <div\n className={styles.subtitle}\n data-test-id={getDataTestId(dataTestId, 'subtitle')}\n >\n {subtitle}\n </div>\n )}\n </div>\n )}\n\n {rightAddons && (\n <div\n className={cn(styles.rightAddons, styles.addons, rightAddonsClassName)}\n ref={rightAddonsRef}\n >\n {rightAddons}\n </div>\n )}\n </div>\n\n {bottomAddons && <div className={bottomAddonsClassName}>{bottomAddons}</div>}\n </div>\n );\n },\n);\n\nNavigationBar.displayName = 'NavigationBar';\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  .component {
2
4
  height: 100%;
3
5
  border-radius: var(--border-radius-pill);
@@ -12,7 +14,7 @@
12
14
  width: 30px;
13
15
  border-radius: var(--border-radius-circle);
14
16
  background: var(--color-light-neutral-translucent-100);
15
- vertical-align: middle
17
+ vertical-align: middle;
16
18
  }
17
19
 
18
20
  .iconWrapper.back {
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  .component {
2
4
  height: 100%;
3
5
  }
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  .component {
2
4
  padding: var(--gap-8) var(--gap-4);
3
5
  box-sizing: border-box;
@@ -39,7 +41,7 @@
39
41
  flex-grow: 1;
40
42
  justify-content: center;
41
43
  flex-flow: column nowrap;
42
- color: var(--color-light-text-primary)
44
+ color: var(--color-light-text-primary);
43
45
  }
44
46
 
45
47
  .content.left {
@@ -58,7 +60,7 @@
58
60
  .title {
59
61
  font-size: 16px;
60
62
  line-height: 20px;
61
- font-weight: 500
63
+ font-weight: 500;
62
64
  }
63
65
 
64
66
  .title.left {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-navigation-bar",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "NavigationBar",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "@alfalab/core-components-button": "^12.0.1",
14
14
  "@alfalab/core-components-shared": "^1.1.0",
15
- "@alfalab/core-components-typography": "^5.0.1",
15
+ "@alfalab/core-components-typography": "^5.0.2",
16
16
  "@alfalab/icons-glyph": "^2.247.0",
17
17
  "classnames": "^2.5.1",
18
18
  "tslib": "^2.4.0"
@@ -25,6 +25,6 @@
25
25
  "access": "public",
26
26
  "directory": "dist"
27
27
  },
28
- "themesVersion": "14.1.0",
28
+ "themesVersion": "14.1.2",
29
29
  "varsVersion": "10.1.0"
30
30
  }
package/src/Component.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, ReactNode, useEffect, useRef, useState } from 'react';
1
+ import React, { forwardRef, type ReactNode, useEffect, useRef, useState } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { getDataTestId } from '@alfalab/core-components-shared';
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/index.css';
1
+ @import '@alfalab/core-components-vars/src/no-typography-index.css';
2
2
 
3
3
  .component {
4
4
  height: 100%;
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/index.css';
1
+ @import '@alfalab/core-components-vars/src/no-typography-index.css';
2
2
 
3
3
  .component {
4
4
  height: 100%;
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/index.css';
1
+ @import '@alfalab/core-components-vars/src/no-typography-index.css';
2
2
 
3
3
  .component {
4
4
  padding: var(--gap-8) var(--gap-4);