@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.
- package/Component.d.ts +1 -1
- package/Component.js.map +1 -1
- package/components/action-icon-addon/index.css +7 -7
- package/components/action-icon-addon/index.module.css.js +1 -1
- package/components/action-icon-addon/index.module.css.js.map +1 -1
- package/components/action-text-addon/index.css +2 -2
- package/components/action-text-addon/index.module.css.js +1 -1
- package/components/action-text-addon/index.module.css.js.map +1 -1
- package/cssm/Component.d.ts +1 -1
- package/cssm/Component.js.map +1 -1
- package/cssm/components/action-icon-addon/index.module.css +1 -1
- package/cssm/index.module.css +2 -2
- package/esm/Component.d.ts +1 -1
- package/esm/Component.js.map +1 -1
- package/esm/components/action-icon-addon/index.css +7 -7
- package/esm/components/action-icon-addon/index.module.css.js +1 -1
- package/esm/components/action-icon-addon/index.module.css.js.map +1 -1
- package/esm/components/action-text-addon/index.css +2 -2
- package/esm/components/action-text-addon/index.module.css.js +1 -1
- package/esm/components/action-text-addon/index.module.css.js.map +1 -1
- package/esm/index.css +18 -18
- package/esm/index.module.css.js +1 -1
- package/esm/index.module.css.js.map +1 -1
- package/index.css +18 -18
- 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/action-icon-addon/index.css +7 -7
- package/modern/components/action-icon-addon/index.module.css.js +1 -1
- package/modern/components/action-icon-addon/index.module.css.js.map +1 -1
- package/modern/components/action-text-addon/index.css +2 -2
- package/modern/components/action-text-addon/index.module.css.js +1 -1
- package/modern/components/action-text-addon/index.module.css.js.map +1 -1
- package/modern/index.css +18 -18
- package/modern/index.module.css.js +1 -1
- package/modern/index.module.css.js.map +1 -1
- package/moderncssm/Component.d.ts +1 -1
- package/moderncssm/Component.js.map +1 -1
- package/moderncssm/components/action-icon-addon/index.module.css +3 -1
- package/moderncssm/components/action-text-addon/index.module.css +2 -0
- package/moderncssm/index.module.css +4 -2
- package/package.json +3 -3
- package/src/Component.tsx +1 -1
- package/src/components/action-icon-addon/index.module.css +1 -1
- package/src/components/action-text-addon/index.module.css +1 -1
- package/src/index.module.css +1 -1
package/Component.d.ts
CHANGED
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":";;;;;;;;;;;;;;;IA+Fa,aAAa,GAAGA,gBAAU,CACnC,UACI,EAkBC,EACD,GAAG,EAAA;;QAlBC,EAAgB,GAAA,EAAA,CAAA,KAAA,EAAhB,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAA,EAAA,EAChB,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,YAAY,kBAAA,EACZ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,cAAA,EACR,EAAA,GAAA,EAAA,CAAA,eAAsD,EAAtD,eAAe,GAAG,EAAA,KAAA,MAAA,GAAA,oCAAoC,GAAA,EAAA,EACtD,uBAAuB,GAAA,EAAA,CAAA,uBAAA,EACvB,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,oBAAoB,GAAA,EAAA,CAAA,oBAAA,EACpB,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EACnB,qBAAqB,GAAA,EAAA,CAAA,qBAAA,EACrB,UAAU,GAAA,EAAA,CAAA,UAAA;AAIR,IAAA,IAAA,KAAgCC,cAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAA9D,WAAW,QAAA,EAAE,cAAc,QAAmC;AACrE,IAAA,IAAM,aAAa,GAAGC,YAAM,CAAiB,IAAI,CAAC;AAClD,IAAA,IAAM,cAAc,GAAGA,YAAM,CAAiB,IAAI,CAAC;AACnD,IAAA,IAAM,aAAa,GAAG,UAAU,IAAI,KAAK,KAAK,MAAM;;AAGpD,IAAAC,eAAS,CAAC,YAAA;;QACN,IAAM,eAAe,GAAG,CAAA,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,WAAW,KAAI,CAAC;QAC/D,IAAM,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAA,cAAc,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,WAAW,KAAI,CAAC;QAEjE,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,eAAe,CAAC;AAC/D,QAAA,IAAM,mBAAmB,GAAG,gBAAgB,GAAG,eAAe,GAAG,CAAC;QAElE,cAAc,CAAC,UAAC,IAAI,EAAA;YAChB,IAAM,QAAQ,GAAG;kBACX,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;kBAC5B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;AAEpC,YAAA,IAAM,cAAc,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAEnF,OAAO,cAAc,GAAG,QAAQ,GAAG,IAAI;AAC3C,SAAC,CAAC;KACL,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAE5C,IAAA,QACIC,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CACTC,YAAM,CAAC,SAAS,GAAA,EAAA,GAAA,EAAA;AAEZ,YAAA,EAAA,CAACA,YAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACvB,YAAA,EAAA,CAACA,YAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AAE3B,YAAA,EAAA,GAAA,SAAS,CACZ,EACD,KAAK,EAAAC,cAAA,CAAA,EAAA,GACG,eAAe,IAAI,EAAE,eAAe,EAAA,eAAA,EAAE,oBAEhC,UAAU,EAAA;AAExB,QAAAH,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,QAAQ,EAAEA,YAAM,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,EAAA;YAC/D,aAAa,KACVF,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,GAAG,EAAE,aAAa,EACrE,EAAA,UAAU,CACT,CACT;YAEA,QAAQ,IAAIF,8CAAK,SAAS,EAAEE,YAAM,CAAC,QAAQ,EAAG,EAAA,QAAQ,CAAO;YAE7D,KAAK,KACFF,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,OAAO,EAAE,uBAAuB,GAAA,EAAA,GAAA,EAAA;AACjD,oBAAA,EAAA,CAACA,YAAM,CAAC,KAAK,CAAC,CAAA,GAAG,CAAC,aAAa;AACjC,oBAAA,EAAA,EAAA,EACF,KAAK,EAAAC,cAAA,CAAA,EAAA,GACG,KAAK,KAAK;AACV,sBAAE;wBACI,UAAU,EAAE,WAAW,CAAC,IAAI;wBAC5B,WAAW,EAAE,WAAW,CAAC,KAAK;AACjC;sBACD,IAAI,EAAC,EAAA;AAGf,gBAAAH,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,KAAK,GAAA,EAAA,GAAA,EAAA;wBACtB,EAAC,CAAAA,YAAM,CAAC,KAAK,CAAC,IAAG,CAAC,aAAa,IAAI,CAAC,QAAQ;4BAC9C,EACY,cAAA,EAAAE,kCAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAAA,EAE/C,KAAK,CACJ;gBAEL,QAAQ,KACLJ,sBACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEE,YAAM,CAAC,QAAQ,EACZ,cAAA,EAAAE,kCAAa,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA,EAElD,QAAQ,CACP,CACT,CACC,CACT;YAEA,WAAW,KACRJ,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAEC,mBAAE,CAACC,YAAM,CAAC,WAAW,EAAEA,YAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EACtE,GAAG,EAAE,cAAc,EAElB,EAAA,WAAW,CACV,CACT,CACC;QAEL,YAAY,IAAIF,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,qBAAqB,IAAG,YAAY,CAAO,CAC1E;AAEd,CAAC;AAGL,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
} :root {
|
|
7
7
|
--border-radius-circle: 50%;
|
|
8
8
|
--border-radius-pill: 99px;
|
|
9
|
-
} .navigation-
|
|
9
|
+
} .navigation-bar__component_143tk {
|
|
10
10
|
height: 100%;
|
|
11
11
|
border-radius: var(--border-radius-pill);
|
|
12
12
|
min-width: 48px;
|
|
13
|
-
} .navigation-
|
|
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-
|
|
21
|
+
vertical-align: middle;
|
|
22
|
+
} .navigation-bar__iconWrapper_143tk.navigation-bar__back_143tk {
|
|
23
23
|
background: transparent;
|
|
24
|
-
} .navigation-
|
|
24
|
+
} .navigation-bar__floating_143tk path {
|
|
25
25
|
fill: var(--color-light-neutral-translucent-700);
|
|
26
|
-
} .navigation-
|
|
26
|
+
} .navigation-bar__floating_143tk:hover path {
|
|
27
27
|
fill: var(--color-light-neutral-translucent-700-hover);
|
|
28
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
6
|
+
} .navigation-bar__component_183p4 {
|
|
7
7
|
height: 100%;
|
|
8
|
-
} .navigation-
|
|
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-
|
|
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;;;;"}
|
package/cssm/Component.d.ts
CHANGED
package/cssm/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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"}
|
package/cssm/index.module.css
CHANGED
|
@@ -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;
|
package/esm/Component.d.ts
CHANGED
package/esm/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":[],"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-
|
|
9
|
+
} .navigation-bar__component_143tk {
|
|
10
10
|
height: 100%;
|
|
11
11
|
border-radius: var(--border-radius-pill);
|
|
12
12
|
min-width: 48px;
|
|
13
|
-
} .navigation-
|
|
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-
|
|
21
|
+
vertical-align: middle;
|
|
22
|
+
} .navigation-bar__iconWrapper_143tk.navigation-bar__back_143tk {
|
|
23
23
|
background: transparent;
|
|
24
|
-
} .navigation-
|
|
24
|
+
} .navigation-bar__floating_143tk path {
|
|
25
25
|
fill: var(--color-light-neutral-translucent-700);
|
|
26
|
-
} .navigation-
|
|
26
|
+
} .navigation-bar__floating_143tk:hover path {
|
|
27
27
|
fill: var(--color-light-neutral-translucent-700-hover);
|
|
28
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
6
|
+
} .navigation-bar__component_183p4 {
|
|
7
7
|
height: 100%;
|
|
8
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
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-
|
|
17
|
+
} .navigation-bar__sticky_495rc {
|
|
18
18
|
position: sticky;
|
|
19
19
|
top: var(--gap-0);
|
|
20
20
|
z-index: 1;
|
|
21
|
-
} .navigation-
|
|
21
|
+
} .navigation-bar__border_495rc {
|
|
22
22
|
box-shadow: 0 1px 0 0 var(--color-light-neutral-300);
|
|
23
|
-
} .navigation-
|
|
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-
|
|
29
|
+
} .navigation-bar__left_495rc {
|
|
30
30
|
text-align: left;
|
|
31
|
-
} .navigation-
|
|
31
|
+
} .navigation-bar__center_495rc {
|
|
32
32
|
text-align: center;
|
|
33
|
-
} .navigation-
|
|
33
|
+
} .navigation-bar__children_495rc {
|
|
34
34
|
width: 100%;
|
|
35
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
44
|
-
.navigation-
|
|
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-
|
|
50
|
+
} .navigation-bar__title_495rc {
|
|
51
51
|
font-size: 16px;
|
|
52
52
|
line-height: 20px;
|
|
53
|
-
font-weight: 500
|
|
54
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
63
|
+
} .navigation-bar__addons_495rc {
|
|
64
64
|
min-width: 48px;
|
|
65
65
|
display: flex;
|
|
66
66
|
justify-content: center;
|
|
67
|
-
} .navigation-
|
|
67
|
+
} .navigation-bar__rightAddons_495rc {
|
|
68
68
|
margin-left: auto;
|
|
69
69
|
}
|
package/esm/index.module.css.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"component":"navigation-
|
|
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-
|
|
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-
|
|
17
|
+
} .navigation-bar__sticky_495rc {
|
|
18
18
|
position: sticky;
|
|
19
19
|
top: var(--gap-0);
|
|
20
20
|
z-index: 1;
|
|
21
|
-
} .navigation-
|
|
21
|
+
} .navigation-bar__border_495rc {
|
|
22
22
|
box-shadow: 0 1px 0 0 var(--color-light-neutral-300);
|
|
23
|
-
} .navigation-
|
|
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-
|
|
29
|
+
} .navigation-bar__left_495rc {
|
|
30
30
|
text-align: left;
|
|
31
|
-
} .navigation-
|
|
31
|
+
} .navigation-bar__center_495rc {
|
|
32
32
|
text-align: center;
|
|
33
|
-
} .navigation-
|
|
33
|
+
} .navigation-bar__children_495rc {
|
|
34
34
|
width: 100%;
|
|
35
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
44
|
-
.navigation-
|
|
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-
|
|
50
|
+
} .navigation-bar__title_495rc {
|
|
51
51
|
font-size: 16px;
|
|
52
52
|
line-height: 20px;
|
|
53
|
-
font-weight: 500
|
|
54
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
63
|
+
} .navigation-bar__addons_495rc {
|
|
64
64
|
min-width: 48px;
|
|
65
65
|
display: flex;
|
|
66
66
|
justify-content: center;
|
|
67
|
-
} .navigation-
|
|
67
|
+
} .navigation-bar__rightAddons_495rc {
|
|
68
68
|
margin-left: auto;
|
|
69
69
|
}
|
package/index.module.css.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"navigation-
|
|
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
|
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\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/modern/Component.d.ts
CHANGED
package/modern/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":[],"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-
|
|
9
|
+
} .navigation-bar__component_143tk {
|
|
10
10
|
height: 100%;
|
|
11
11
|
border-radius: var(--border-radius-pill);
|
|
12
12
|
min-width: 48px;
|
|
13
|
-
} .navigation-
|
|
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-
|
|
21
|
+
vertical-align: middle;
|
|
22
|
+
} .navigation-bar__iconWrapper_143tk.navigation-bar__back_143tk {
|
|
23
23
|
background: transparent;
|
|
24
|
-
} .navigation-
|
|
24
|
+
} .navigation-bar__floating_143tk path {
|
|
25
25
|
fill: var(--color-light-neutral-translucent-700);
|
|
26
|
-
} .navigation-
|
|
26
|
+
} .navigation-bar__floating_143tk:hover path {
|
|
27
27
|
fill: var(--color-light-neutral-translucent-700-hover);
|
|
28
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
6
|
+
} .navigation-bar__component_183p4 {
|
|
7
7
|
height: 100%;
|
|
8
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
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-
|
|
17
|
+
} .navigation-bar__sticky_495rc {
|
|
18
18
|
position: sticky;
|
|
19
19
|
top: var(--gap-0);
|
|
20
20
|
z-index: 1;
|
|
21
|
-
} .navigation-
|
|
21
|
+
} .navigation-bar__border_495rc {
|
|
22
22
|
box-shadow: 0 1px 0 0 var(--color-light-neutral-300);
|
|
23
|
-
} .navigation-
|
|
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-
|
|
29
|
+
} .navigation-bar__left_495rc {
|
|
30
30
|
text-align: left;
|
|
31
|
-
} .navigation-
|
|
31
|
+
} .navigation-bar__center_495rc {
|
|
32
32
|
text-align: center;
|
|
33
|
-
} .navigation-
|
|
33
|
+
} .navigation-bar__children_495rc {
|
|
34
34
|
width: 100%;
|
|
35
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
44
|
-
.navigation-
|
|
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-
|
|
50
|
+
} .navigation-bar__title_495rc {
|
|
51
51
|
font-size: 16px;
|
|
52
52
|
line-height: 20px;
|
|
53
|
-
font-weight: 500
|
|
54
|
-
} .navigation-
|
|
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-
|
|
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-
|
|
63
|
+
} .navigation-bar__addons_495rc {
|
|
64
64
|
min-width: 48px;
|
|
65
65
|
display: flex;
|
|
66
66
|
justify-content: center;
|
|
67
|
-
} .navigation-
|
|
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-
|
|
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 +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
|
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.
|
|
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.
|
|
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.
|
|
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';
|
package/src/index.module.css
CHANGED