From 48be2f38923738fe4e401df641519a788df8aa51 Mon Sep 17 00:00:00 2001 From: hextion <100ishundred@gmail.com> Date: Thu, 2 Oct 2025 10:03:53 +0300 Subject: [PATCH 1/7] feat(button): added BaseButtonCandidate --- .../src/__snapshots__/Component.test.tsx.snap | 4 +- packages/button/src/Component.responsive.tsx | 4 +- packages/button/src/Component.test.tsx | 41 +- .../src/__snapshots__/Component.test.tsx.snap | 44 +- .../base-button-candidate/Component.tsx | 81 ++ .../base-button-candidate/index.module.css | 52 + .../components/base-button-candidate/index.ts | 2 + .../components/base-button-candidate/types.ts | 86 ++ .../src/components/base-button/Component.tsx | 237 ++--- .../components/base-button/default.module.css | 224 ++-- .../components/base-button/index.module.css | 318 ++---- .../base-button/inverted.module.css | 220 ++-- .../components/button-component/Component.tsx | 50 + .../button-component/index.module.css | 16 + .../src/components/button-component/index.ts | 1 + .../button/src/desktop/Component.desktop.tsx | 10 +- .../src/desktop/default.desktop.module.css | 116 ++- .../button/src/desktop/desktop.module.css | 36 +- .../src/desktop/inverted.desktop.module.css | 117 ++- .../button/src/mobile/Component.mobile.tsx | 10 +- .../src/mobile/default.mobile.module.css | 110 +- .../src/mobile/inverted.mobile.module.css | 110 +- packages/button/src/mobile/mobile.module.css | 36 +- packages/button/src/shared/hooks.ts | 32 + packages/button/src/shared/index.ts | 1 + packages/button/src/typings.ts | 104 +- packages/button/src/vars.css | 3 + .../src/__snapshots__/Component.test.tsx.snap | 260 ++--- .../src/__snapshots__/Component.test.tsx.snap | 128 +-- .../src/__snapshots__/Component.test.tsx.snap | 956 +++++++++--------- .../__snapshots__/Component.test.tsx.snap | 16 +- .../src/__snapshots__/Component.test.tsx.snap | 4 +- .../src/__snapshots__/Component.test.tsx.snap | 12 +- .../src/__snapshots__/Component.test.tsx.snap | 90 +- .../src/Component.test.tsx | 4 +- .../src/__snapshots__/Component.test.tsx.snap | 72 +- .../src/__snapshots__/Component.test.tsx.snap | 18 +- .../src/__snapshots__/Component.test.tsx.snap | 18 +- .../src/__snapshots__/Component.test.tsx.snap | 12 +- .../src/__snapshots__/Component.test.tsx.snap | 16 +- .../src/__snapshots__/Component.test.tsx.snap | 8 +- .../src/__snapshots__/component.test.tsx.snap | 12 +- .../src/__snapshots__/Component.test.tsx.snap | 4 +- .../src/__snapshots__/component.test.tsx.snap | 136 +-- .../src/__snapshots__/component.test.tsx.snap | 88 +- .../src/__snapshots__/component.test.tsx.snap | 4 +- packages/picker-button/src/Component.test.tsx | 4 +- .../src/__snapshots__/Component.test.tsx.snap | 36 +- packages/plate/src/Component.test.tsx | 6 +- .../src/__snapshots__/Component.test.tsx.snap | 16 +- packages/vars/src/mixins.css | 13 + 51 files changed, 2061 insertions(+), 1937 deletions(-) create mode 100644 packages/button/src/components/base-button-candidate/Component.tsx create mode 100644 packages/button/src/components/base-button-candidate/index.module.css create mode 100644 packages/button/src/components/base-button-candidate/index.ts create mode 100644 packages/button/src/components/base-button-candidate/types.ts create mode 100644 packages/button/src/components/button-component/Component.tsx create mode 100644 packages/button/src/components/button-component/index.module.css create mode 100644 packages/button/src/components/button-component/index.ts create mode 100644 packages/button/src/shared/hooks.ts diff --git a/packages/attach/src/__snapshots__/Component.test.tsx.snap b/packages/attach/src/__snapshots__/Component.test.tsx.snap index e6274801c6..beeae5e8c4 100644 --- a/packages/attach/src/__snapshots__/Component.test.tsx.snap +++ b/packages/attach/src/__snapshots__/Component.test.tsx.snap @@ -6,11 +6,11 @@ exports[`Attach Snapshots tests should match snapshot 1`] = ` class="component size-48" > + ); +}); diff --git a/packages/button/src/components/button-component/index.module.css b/packages/button/src/components/button-component/index.module.css new file mode 100644 index 0000000000..10c21dd579 --- /dev/null +++ b/packages/button/src/components/button-component/index.module.css @@ -0,0 +1,16 @@ +@import '@alfalab/core-components-vars/src/no-typography-index.css'; +@import '../../vars.css'; + +.component { + margin: unset; + padding: unset; + text-decoration: none; + outline: none; + box-shadow: none; + user-select: none; + appearance: none; + background: none; + border: none; + cursor: pointer; + box-sizing: border-box; /* same as button's default */ +} diff --git a/packages/button/src/components/button-component/index.ts b/packages/button/src/components/button-component/index.ts new file mode 100644 index 0000000000..cb7a81fb3c --- /dev/null +++ b/packages/button/src/components/button-component/index.ts @@ -0,0 +1 @@ +export { ButtonComponent } from './Component'; diff --git a/packages/button/src/desktop/Component.desktop.tsx b/packages/button/src/desktop/Component.desktop.tsx index ceba7cc4df..27a3751e8a 100644 --- a/packages/button/src/desktop/Component.desktop.tsx +++ b/packages/button/src/desktop/Component.desktop.tsx @@ -1,7 +1,7 @@ import React, { forwardRef } from 'react'; import { BaseButton } from '../components/base-button'; -import { type CommonButtonProps } from '../typings'; +import { type ButtonRef, type CommonButtonProps } from '../typings'; import defaultColors from './default.desktop.module.css'; import styles from './desktop.module.css'; @@ -12,8 +12,6 @@ const colorStyles = { inverted: invertedColors, }; -export const ButtonDesktop = forwardRef( - (restProps, ref) => ( - - ), -); +export const ButtonDesktop = forwardRef((restProps, ref) => ( + +)); diff --git a/packages/button/src/desktop/default.desktop.module.css b/packages/button/src/desktop/default.desktop.module.css index 1634b5a452..98c1819992 100644 --- a/packages/button/src/desktop/default.desktop.module.css +++ b/packages/button/src/desktop/default.desktop.module.css @@ -1,78 +1,86 @@ @import '../vars.css'; -.accent { - &:not([disabled]) .hint { - color: var(--button-accent-hint-color); +.component { + &.accent { + @mixin not-disabled { + .hint { + color: var(--button-accent-hint-color); + } + } } -} -.primary { - color: var(--button-primary-color); - background-color: var(--button-primary-base-bg-color); + &.primary { + color: var(--button-primary-color); + background-color: var(--button-primary-base-bg-color); - &:not([disabled]) .hint { - color: var(--button-primary-hint-color); - } + @mixin not-disabled { + @mixin hover { + background-color: var(--button-primary-hover-bg-color); + } - @media (hover: hover) { - &:hover { - background-color: var(--button-primary-hover-bg-color); - } - } + &:active { + background-color: var(--button-primary-active-bg-color); + } - &:active { - background-color: var(--button-primary-active-bg-color); - } + .hint { + color: ar(--button-primary-hint-color); + } + } - & > .loader { - color: var(--button-spinner-primary-color); + & .loader { + color: var(--button-spinner-primary-color); + } } -} -.secondary { - background-color: var(--button-secondary-base-bg-color); + &.secondary { + background-color: var(--button-secondary-base-bg-color); - &:hover { - background-color: var(--button-secondary-hover-bg-color); - } + @mixin not-disabled { + @mixin hover { + background-color: var(--button-secondary-hover-bg-color); + } - &:active { - background-color: var(--button-secondary-active-bg-color); + &:active { + background-color: var(--button-secondary-active-bg-color); + } + } } -} -.text { - &:active { - color: var(--button-text-active-color); + &.text { + @mixin not-disabled { + &:active { + color: var(--button-text-active-color); + } + } } -} -.component[disabled] { - &.primary { - color: var(--button-primary-disabled-color); - background-color: var(--button-primary-disabled-bg-color); + @mixin disabled { + &.primary { + color: var(--button-primary-disabled-color); + background-color: var(--button-primary-disabled-bg-color); - &.loading { - color: var(--button-primary-color); - background-color: var(--button-primary-base-bg-color); + &.loading { + color: var(--button-primary-color); + background-color: var(--button-primary-base-bg-color); + } } - } - &.secondary { - color: var(--button-secondary-disabled-color); - background-color: var(--button-secondary-disabled-bg-color); - } + &.secondary { + color: var(--button-secondary-disabled-color); + background-color: var(--button-secondary-disabled-bg-color); + } - &.outlined { - color: var(--button-outlined-disabled-color); - border-color: var(--button-outlined-disabled-border-color); - } + &.outlined { + color: var(--button-outlined-disabled-color); + border-color: var(--button-outlined-disabled-border-color); + } - &.transparent { - color: var(--button-transparent-disabled-color); - } + &.transparent { + color: var(--button-transparent-disabled-color); + } - &.text { - color: var(--button-text-disabled-color); + &.text { + color: var(--button-text-disabled-color); + } } } diff --git a/packages/button/src/desktop/desktop.module.css b/packages/button/src/desktop/desktop.module.css index 058252f7e2..4b2b8b23e3 100644 --- a/packages/button/src/desktop/desktop.module.css +++ b/packages/button/src/desktop/desktop.module.css @@ -1,25 +1,27 @@ @import '../vars.css'; -.size-32 { - border-radius: var(--button-xxs-size-border-radius); -} +.component { + &.size32 { + border-radius: var(--button-xxs-size-border-radius); + } -.size-40 { - border-radius: var(--button-xs-size-border-radius); -} + &.size40 { + border-radius: var(--button-xs-size-border-radius); + } -.size-48 { - border-radius: var(--button-s-size-border-radius); -} + &.size48 { + border-radius: var(--button-s-size-border-radius); + } -.size-56 { - border-radius: var(--button-m-size-border-radius); -} + &.size56 { + border-radius: var(--button-m-size-border-radius); + } -.size-64 { - border-radius: var(--button-l-size-border-radius); -} + &.size64 { + border-radius: var(--button-l-size-border-radius); + } -.size-72 { - border-radius: var(--button-xl-size-border-radius); + &.size72 { + border-radius: var(--button-xl-size-border-radius); + } } diff --git a/packages/button/src/desktop/inverted.desktop.module.css b/packages/button/src/desktop/inverted.desktop.module.css index e1aa64135e..90a6a6794d 100644 --- a/packages/button/src/desktop/inverted.desktop.module.css +++ b/packages/button/src/desktop/inverted.desktop.module.css @@ -1,78 +1,85 @@ @import '../vars.css'; -.accent { - &:not([disabled]) .hint { - color: var(--button-inverted-accent-hint-color); +.component { + &.accent { + @mixin not-disabled { + .hint { + color: var(--button-inverted-accent-hint-color); + } + } } -} -.primary { - color: var(--button-inverted-primary-color); - background-color: var(--button-inverted-primary-base-bg-color); - - &:not([disabled]) .hint { - color: var(--button-inverted-primary-hint-color); - } + &.primary { + color: var(--button-inverted-primary-color); + background-color: var(--button-inverted-primary-base-bg-color); - @media (hover: hover) { - &:hover { - background-color: var(--button-inverted-primary-hover-bg-color); - } - } + @mixin not-disabled { + @mixin hover { + background-color: var(--button-inverted-primary-hover-bg-color); + } - &:active { - background-color: var(--button-inverted-primary-active-bg-color); - } + &:active { + background-color: var(--button-inverted-primary-active-bg-color); + } - & > .loader { - color: var(--button-spinner-inverted-primary-color); + .hint { + color: var(--button-inverted-primary-hint-color); + } + } + & .loader { + color: var(--button-spinner-inverted-primary-color); + } } -} -.secondary { - background-color: var(--button-inverted-secondary-base-bg-color); + &.secondary { + background-color: var(--button-inverted-secondary-base-bg-color); - &:hover { - background-color: var(--button-inverted-secondary-hover-bg-color); - } + @mixin not-disabled { + @mixin hover { + background-color: var(--button-inverted-secondary-hover-bg-color); + } - &:active { - background-color: var(--button-inverted-secondary-active-bg-color); + &:active { + background-color: var(--button-inverted-secondary-active-bg-color); + } + } } -} -.text { - &:active { - color: var(--button-inverted-text-active-color); + &.text { + @mixin not-disabled { + &:active { + color: var(--button-inverted-text-active-color); + } + } } -} -.component[disabled] { - &.primary { - color: var(--button-inverted-primary-disabled-color); - background-color: var(--button-inverted-primary-disabled-bg-color); + @mixin disabled { + &.primary { + color: var(--button-inverted-primary-disabled-color); + background-color: var(--button-inverted-primary-disabled-bg-color); - &.loading { - color: var(--button-inverted-primary-color); - background-color: var(--button-inverted-primary-base-bg-color); + &.loading { + color: var(--button-inverted-primary-color); + background-color: var(--button-inverted-primary-base-bg-color); + } } - } - &.secondary { - color: var(--button-inverted-secondary-disabled-color); - background-color: var(--button-inverted-secondary-disabled-bg-color); - } + &.secondary { + color: var(--button-inverted-secondary-disabled-color); + background-color: var(--button-inverted-secondary-disabled-bg-color); + } - &.outlined { - color: var(--button-inverted-outlined-disabled-color); - border-color: var(--button-inverted-outlined-disabled-border-color); - } + &.outlined { + color: var(--button-inverted-outlined-disabled-color); + border-color: var(--button-inverted-outlined-disabled-border-color); + } - &.transparent { - color: var(--button-inverted-transparent-disabled-color); - } + &.transparent { + color: var(--button-inverted-transparent-disabled-color); + } - &.text { - color: var(--button-inverted-text-disabled-color); + &.text { + color: var(--button-inverted-text-disabled-color); + } } } diff --git a/packages/button/src/mobile/Component.mobile.tsx b/packages/button/src/mobile/Component.mobile.tsx index a21fe394e0..35112f78d1 100644 --- a/packages/button/src/mobile/Component.mobile.tsx +++ b/packages/button/src/mobile/Component.mobile.tsx @@ -1,7 +1,7 @@ import React, { forwardRef } from 'react'; import { BaseButton } from '../components/base-button'; -import { type CommonButtonProps } from '../typings'; +import { type ButtonRef, type CommonButtonProps } from '../typings'; import defaultColors from './default.mobile.module.css'; import invertedColors from './inverted.mobile.module.css'; @@ -12,8 +12,6 @@ const colorStyles = { inverted: invertedColors, }; -export const ButtonMobile = forwardRef( - (restProps, ref) => ( - - ), -); +export const ButtonMobile = forwardRef((restProps, ref) => ( + +)); diff --git a/packages/button/src/mobile/default.mobile.module.css b/packages/button/src/mobile/default.mobile.module.css index a87a6b6180..615e91f447 100644 --- a/packages/button/src/mobile/default.mobile.module.css +++ b/packages/button/src/mobile/default.mobile.module.css @@ -1,74 +1,84 @@ @import '../vars.css'; -.accent { - &:not([disabled]) .hint { - color: var(--button-mobile-accent-hint-color); +.component { + &.accent { + @mixin not-disabled { + .hint { + color: var(--button-mobile-accent-hint-color); + } + } } -} -.primary { - color: var(--button-primary-mobile-color); - background-color: var(--button-primary-mobile-base-bg-color); + &.primary { + color: var(--button-primary-mobile-color); + background-color: var(--button-primary-mobile-base-bg-color); - &:not([disabled]) .hint { - color: var(--button-mobile-primary-hint-color); - } + @mixin not-disabled { + @mixin hover { + background-color: var(--button-primary-mobile-hover-bg-color); + } - @media (hover: hover) { - &:hover { - background-color: var(--button-primary-mobile-hover-bg-color); + &:active { + background-color: var(--button-primary-mobile-active-bg-color); + } } - } - &:active { - background-color: var(--button-primary-mobile-active-bg-color); - } + & .loader { + color: var(--button-spinner-primary-mobile-color); + } - & > .loader { - color: var(--button-spinner-primary-mobile-color); + @mixin not-disabled { + .hint { + color: var(--button-mobile-primary-hint-color); + } + } } -} -.secondary { - background-color: var(--button-secondary-mobile-base-bg-color); + &.secondary { + background-color: var(--button-secondary-mobile-base-bg-color); - &:active { - background-color: var(--button-secondary-mobile-active-bg-color); + @mixin not-disabled { + &:active { + background-color: var(--button-secondary-mobile-active-bg-color); + } + } } -} -.text { - &:active { - color: var(--button-text-mobile-active-color); + &.text { + @mixin not-disabled { + &:active { + color: var(--button-text-mobile-active-color); + } + } } -} -.component[disabled] { - &.primary { - color: var(--button-primary-mobile-disabled-color); - background-color: var(--button-primary-mobile-disabled-bg-color); + @mixin disabled { + &.primary { + color: var(--button-primary-mobile-disabled-color); + background-color: var(--button-primary-mobile-disabled-bg-color); - &.loading { - color: var(--button-primary-mobile-color); - background-color: var(--button-primary-mobile-base-bg-color); + &.loading { + color: var(--button-primary-mobile-color); + background-color: var(--button-primary-mobile-base-bg-color); + } } - } - &.secondary { - color: var(--button-secondary-mobile-disabled-color); - background-color: var(--button-secondary-mobile-disabled-bg-color); - } + &.secondary { + color: var(--button-secondary-mobile-disabled-color); + background-color: var(--button-secondary-mobile-disabled-bg-color); + } - &.outlined { - color: var(--button-outlined-mobile-disabled-color); - border-color: var(--button-outlined-mobile-disabled-border-color); - } + &.outlined { + color: var(--button-outlined-mobile-disabled-color); + border-color: var(--button-outlined-mobile-disabled-border-color); + } - &.transparent { - color: var(--button-transparent-mobile-disabled-color); - } + &.transparent { + color: var(--button-transparent-mobile-disabled-color); + } - &.text { - color: var(--button-text-mobile-disabled-color); + &.text { + color: var(--button-text-mobile-disabled-color); + } } } diff --git a/packages/button/src/mobile/inverted.mobile.module.css b/packages/button/src/mobile/inverted.mobile.module.css index 18da950338..e5ed89e107 100644 --- a/packages/button/src/mobile/inverted.mobile.module.css +++ b/packages/button/src/mobile/inverted.mobile.module.css @@ -1,74 +1,84 @@ @import '../vars.css'; -.accent { - &:not([disabled]) .hint { - color: var(--button-mobile-inverted-accent-hint-color); +.component { + &.accent { + @mixin not-disabled { + .hint { + color: var(--button-mobile-inverted-accent-hint-color); + } + } } -} -.primary { - color: var(--button-inverted-primary-mobile-color); - background-color: var(--button-inverted-primary-mobile-base-bg-color); + &.primary { + color: var(--button-inverted-primary-mobile-color); + background-color: var(--button-inverted-primary-mobile-base-bg-color); - &:not([disabled]) .hint { - color: var(--button-mobile-inverted-primary-hint-color); - } + @mixin not-disabled { + @mixin hover { + background-color: var(--button-inverted-primary-mobile-hover-bg-color); + } - @media (hover: hover) { - &:hover { - background-color: var(--button-inverted-primary-mobile-hover-bg-color); + &:active { + background-color: var(--button-inverted-primary-mobile-active-bg-color); + } } - } - &:active { - background-color: var(--button-inverted-primary-mobile-active-bg-color); - } + & .loader { + color: var(--button-spinner-inverted-primary-mobile-color); + } - & > .loader { - color: var(--button-spinner-inverted-primary-mobile-color); + @mixin not-disabled { + .hint { + color: var(--button-mobile-inverted-primary-hint-color); + } + } } -} -.secondary { - background-color: var(--button-inverted-secondary-mobile-base-bg-color); + &.secondary { + background-color: var(--button-inverted-secondary-mobile-base-bg-color); - &:active { - background-color: var(--button-inverted-secondary-mobile-active-bg-color); + @mixin not-disabled { + &:active { + background-color: var(--button-inverted-secondary-mobile-active-bg-color); + } + } } -} -.text { - &:active { - color: var(--button-inverted-text-mobile-active-color); + &.text { + @mixin not-disabled { + &:active { + color: var(--button-inverted-text-mobile-active-color); + } + } } -} -.component[disabled] { - &.primary { - color: var(--button-inverted-primary-mobile-disabled-color); - background-color: var(--button-inverted-primary-mobile-disabled-bg-color); + @mixin disabled { + &.primary { + color: var(--button-inverted-primary-mobile-disabled-color); + background-color: var(--button-inverted-primary-mobile-disabled-bg-color); - &.loading { - color: var(--button-inverted-primary-mobile-color); - background-color: var(--button-inverted-primary-mobile-base-bg-color); + &.loading { + color: var(--button-inverted-primary-mobile-color); + background-color: var(--button-inverted-primary-mobile-base-bg-color); + } } - } - &.secondary { - color: var(--button-inverted-secondary-mobile-disabled-color); - background-color: var(--button-inverted-secondary-mobile-disabled-bg-color); - } + &.secondary { + color: var(--button-inverted-secondary-mobile-disabled-color); + background-color: var(--button-inverted-secondary-mobile-disabled-bg-color); + } - &.outlined { - color: var(--button-inverted-outlined-mobile-disabled-color); - border-color: var(--button-inverted-outlined-mobile-disabled-border-color); - } + &.outlined { + color: var(--button-inverted-outlined-mobile-disabled-color); + border-color: var(--button-inverted-outlined-mobile-disabled-border-color); + } - &.transparent { - color: var(--button-inverted-transparent-mobile-disabled-color); - } + &.transparent { + color: var(--button-inverted-transparent-mobile-disabled-color); + } - &.text { - color: var(--button-inverted-text-mobile-disabled-color); + &.text { + color: var(--button-inverted-text-mobile-disabled-color); + } } } diff --git a/packages/button/src/mobile/mobile.module.css b/packages/button/src/mobile/mobile.module.css index 3d1ca92448..704b1c9429 100644 --- a/packages/button/src/mobile/mobile.module.css +++ b/packages/button/src/mobile/mobile.module.css @@ -1,25 +1,27 @@ @import '../vars.css'; -.size-32 { - border-radius: var(--button-xxs-size-mobile-border-radius); -} +.component { + &.size32 { + border-radius: var(--button-xxs-size-mobile-border-radius); + } -.size-40 { - border-radius: var(--button-xs-size-mobile-border-radius); -} + &.size40 { + border-radius: var(--button-xs-size-mobile-border-radius); + } -.size-48 { - border-radius: var(--button-s-size-mobile-border-radius); -} + &.size48 { + border-radius: var(--button-s-size-mobile-border-radius); + } -.size-56 { - border-radius: var(--button-m-size-mobile-border-radius); -} + &.size56 { + border-radius: var(--button-m-size-mobile-border-radius); + } -.size-64 { - border-radius: var(--button-l-size-mobile-border-radius); -} + &.size64 { + border-radius: var(--button-l-size-mobile-border-radius); + } -.size-72 { - border-radius: var(--button-xl-size-mobile-border-radius); + &.size72 { + border-radius: var(--button-xl-size-mobile-border-radius); + } } diff --git a/packages/button/src/shared/hooks.ts b/packages/button/src/shared/hooks.ts new file mode 100644 index 0000000000..8056641449 --- /dev/null +++ b/packages/button/src/shared/hooks.ts @@ -0,0 +1,32 @@ +import { useEffect, useRef, useState } from 'react'; + +import { isNonNullable } from '@alfalab/core-components-shared'; + +import { LOADER_MIN_DISPLAY_INTERVAL } from '../constants/loader-min-display-interval'; + +export function useLoading(loading: boolean | undefined = false) { + const [loaderTimePassed, setLoaderTimePassed] = useState(true); + const timerId = useRef(null); + + useEffect(() => { + if (loading) { + setLoaderTimePassed(false); + + timerId.current = window.setTimeout(() => { + setLoaderTimePassed(true); + timerId.current = null; + }, LOADER_MIN_DISPLAY_INTERVAL); + } + }, [loading]); + + useEffect( + () => () => { + if (isNonNullable(timerId.current)) { + window.clearTimeout(timerId.current); + } + }, + [], + ); + + return loading || !loaderTimePassed; +} diff --git a/packages/button/src/shared/index.ts b/packages/button/src/shared/index.ts index 21115f7b85..4af5142953 100644 --- a/packages/button/src/shared/index.ts +++ b/packages/button/src/shared/index.ts @@ -1 +1,2 @@ export { getButtonTestIds } from '../utils'; +export { useLoading } from './hooks'; diff --git a/packages/button/src/typings.ts b/packages/button/src/typings.ts index bc55f9567a..297c02dc58 100644 --- a/packages/button/src/typings.ts +++ b/packages/button/src/typings.ts @@ -1,20 +1,22 @@ +import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ReactNode } from 'react'; + import { - type AnchorHTMLAttributes, - type ButtonHTMLAttributes, - type ElementType, - type ReactNode, -} from 'react'; - -export type StyleColors = { - default: { - [key: string]: string; - }; - inverted: { - [key: string]: string; - }; -}; - -type ComponentProps = { + type ComponentProps as BaseButtonComponentProps, + type MaybeAnchorAttributes, +} from './components/base-button-candidate'; + +interface StylesMap { + [key: string]: string; +} + +export interface StyleColors { + default: StylesMap; + inverted: StylesMap; +} + +type OmitStrict = Omit; + +export interface ComponentProps extends OmitStrict { /** * Тип кнопки * @default secondary @@ -34,7 +36,7 @@ type ComponentProps = { textResizing?: 'fill' | 'hug'; /** - * Подпись под лейблом (видна только в размерах >= m) + * Подпись под лейблом. Видна только при размерах `>=56` */ hint?: ReactNode; @@ -54,44 +56,12 @@ type ComponentProps = { */ size?: 32 | 40 | 48 | 56 | 64 | 72; - /** - * Растягивает компонент на ширину контейнера - * @default false - */ - block?: boolean; - - /** - * Дополнительный класс - */ - className?: string; - /** * Дополнительный класс для спиннера + * @deprecated Используйте `loaderClassName` */ spinnerClassName?: string; - /** - * Выводит ссылку в виде кнопки - */ - href?: string; - - /** - * Позволяет использовать кастомный компонент для кнопки (например Link из роутера) - */ - Component?: ElementType; - - /** - * Идентификатор для систем автоматизированного тестирования. - * Для спиннера используется модификатор -loader - */ - dataTestId?: string; - - /** - * Показать лоадер - * @default false - */ - loading?: boolean; - /** * Не переносить текст кнопки на новую строку * @default false @@ -108,29 +78,35 @@ type ComponentProps = { * @description Может привести к просадке fps и другим багам. Старайтесь не размещать слишком много заблюреных элементов на одной странице. */ allowBackdropBlur?: boolean; +} - /** - * Дочерние элементы. - */ - children?: ReactNode; -}; - -export type PrivateButtonProps = { +export interface PrivateButtonProps { /** * Основные стили компонента. */ - styles: { [key: string]: string }; + styles: StylesMap; /** * Стили компонента для default и inverted режима. */ colorStylesMap: StyleColors; -}; +} -export type CommonButtonProps = ComponentProps & - Partial | ButtonHTMLAttributes>; +export type ButtonRef = HTMLElement; -export type ButtonProps = CommonButtonProps & { +interface AnchorLikeProps + extends MaybeAnchorAttributes, + ComponentProps, + Omit, keyof ComponentProps> {} + +interface ButtonLikeProps + extends MaybeAnchorAttributes, + ComponentProps, + Omit, keyof ComponentProps> {} + +export type CommonButtonProps = AnchorLikeProps | ButtonLikeProps; + +export interface ResponsiveProps { /** * Контрольная точка, с нее начинается desktop версия * @default 1024 @@ -147,4 +123,6 @@ export type ButtonProps = CommonButtonProps & { * @deprecated Используйте client */ defaultMatchMediaValue?: boolean | (() => boolean); -}; +} + +export type ButtonProps = CommonButtonProps & ResponsiveProps; diff --git a/packages/button/src/vars.css b/packages/button/src/vars.css index 8bd67df7b8..9dd38762fa 100644 --- a/packages/button/src/vars.css +++ b/packages/button/src/vars.css @@ -1,6 +1,9 @@ @import '@alfalab/core-components-vars/src/no-typography-index.css'; :root { + /* misc */ + --button-border-width: 1px; + /* border-radius desktop */ --button-xxs-size-border-radius: var(--border-radius-8); --button-xs-size-border-radius: var(--border-radius-10); diff --git a/packages/calendar-range/src/__snapshots__/Component.test.tsx.snap b/packages/calendar-range/src/__snapshots__/Component.test.tsx.snap index 1829d219e9..70dfad89dd 100644 --- a/packages/calendar-range/src/__snapshots__/Component.test.tsx.snap +++ b/packages/calendar-range/src/__snapshots__/Component.test.tsx.snap @@ -51,12 +51,12 @@ exports[`CalendarRange Display tests should match snapshot 1`] = ` >
@@ -206,11 +210,11 @@ exports[`PassCodeV1 Snapshot tests should match snapshot with error prop 1`] = ` class="component" >
diff --git a/packages/pass-code/src/__snapshots__/component.test.tsx.snap b/packages/pass-code/src/__snapshots__/component.test.tsx.snap index 0fdc1d4e03..8f8164dda9 100644 --- a/packages/pass-code/src/__snapshots__/component.test.tsx.snap +++ b/packages/pass-code/src/__snapshots__/component.test.tsx.snap @@ -53,101 +53,105 @@ exports[`PassCode Snapshot tests should match snapshot with code length 1`] = ` class="component" >
@@ -179,101 +183,105 @@ exports[`PassCode Snapshot tests should match snapshot with unknown code length class="component" >
diff --git a/packages/password-input/src/__snapshots__/component.test.tsx.snap b/packages/password-input/src/__snapshots__/component.test.tsx.snap index 3c73293a09..d13456d044 100644 --- a/packages/password-input/src/__snapshots__/component.test.tsx.snap +++ b/packages/password-input/src/__snapshots__/component.test.tsx.snap @@ -26,12 +26,12 @@ exports[`PasswordInput snapshots tests should match snapshot 1`] = ` class="addons rightAddons rightAddons size-48" >
@@ -969,30 +961,26 @@ exports[`CalendarRange Display tests should match snapshot 1`] = ` >
diff --git a/packages/calendar/src/__snapshots__/Component.test.tsx.snap b/packages/calendar/src/__snapshots__/Component.test.tsx.snap index 0a25776e18..0750204a59 100644 --- a/packages/calendar/src/__snapshots__/Component.test.tsx.snap +++ b/packages/calendar/src/__snapshots__/Component.test.tsx.snap @@ -3386,30 +3386,26 @@ exports[`Calendar Display tests should match selectorView="month-only" snapshot >
diff --git a/packages/calendar/src/components/period-slider/__snapshots__/Component.test.tsx.snap b/packages/calendar/src/components/period-slider/__snapshots__/Component.test.tsx.snap index b28330d84e..eab5657e72 100644 --- a/packages/calendar/src/components/period-slider/__snapshots__/Component.test.tsx.snap +++ b/packages/calendar/src/components/period-slider/__snapshots__/Component.test.tsx.snap @@ -9,31 +9,27 @@ exports[`PeriodSlider empty PeriodSlider empty PeriodSlider default title snapsh > @@ -83,31 +75,27 @@ exports[`PeriodSlider empty PeriodSlider empty PeriodSlider specific title snaps > diff --git a/packages/file-upload-item-v1/src/__snapshots__/Component.test.tsx.snap b/packages/file-upload-item-v1/src/__snapshots__/Component.test.tsx.snap index 3b6367ee51..db5d6229a0 100644 --- a/packages/file-upload-item-v1/src/__snapshots__/Component.test.tsx.snap +++ b/packages/file-upload-item-v1/src/__snapshots__/Component.test.tsx.snap @@ -51,57 +51,49 @@ exports[`FileUploadItemV1 Snapshots tests should match snapshot 1`] = `
- - - - - + + @@ -154,57 +146,49 @@ exports[`FileUploadItemV1 Snapshots tests should match snapshot 1`] = ` - - - - - + + diff --git a/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-0-snap.png b/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-0-snap.png index 55c90c17e8..33ff2c237a 100644 --- a/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-0-snap.png +++ b/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-0-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e53491bfb3fc6f57e699eb2c415dbcb9f83afb4df39ca93933ba24df1fe97ac -size 746 +oid sha256:62097e0415d97675a2f7450354d02030659f8f27758cf13087b9c659efd39b6c +size 666 diff --git a/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-1-snap.png b/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-1-snap.png index b6e213019c..47efd91ae2 100644 --- a/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-1-snap.png +++ b/packages/icon-button/src/__image_snapshots__/icon-button-screenshots-disabled-view-2-colors-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67d0e1565e1e3c8b6453dfbe05895aee84aae9c28dd30fbc55eab831ab0a6d0b -size 623 +oid sha256:0fc8bbcebdb89d7e81c629a0d947c3fe8892af7bdc60225f8d0fd5a200ceae17 +size 711 diff --git a/packages/icon-button/src/__snapshots__/Component.test.tsx.snap b/packages/icon-button/src/__snapshots__/Component.test.tsx.snap index dd4f1958b5..382a21a065 100644 --- a/packages/icon-button/src/__snapshots__/Component.test.tsx.snap +++ b/packages/icon-button/src/__snapshots__/Component.test.tsx.snap @@ -7,43 +7,9 @@ exports[`IconButton Href tests should set \`href\` attribute and be link 1`] = ` - , - "container":
- - + +
+ , + "container": , @@ -125,40 +117,8 @@ exports[`IconButton Snapshots tests should match snapshot 1`] = ` "baseElement":
-
- , - "container":
- +
+ , + "container":
+
, diff --git a/packages/icon-button/src/components/base-icon-button/Component.tsx b/packages/icon-button/src/components/base-icon-button/Component.tsx index f1e7ae525a..f31b51d3cc 100644 --- a/packages/icon-button/src/components/base-icon-button/Component.tsx +++ b/packages/icon-button/src/components/base-icon-button/Component.tsx @@ -1,8 +1,8 @@ import React, { forwardRef, type ReactElement } from 'react'; import cn from 'classnames'; -import { ButtonDesktop } from '@alfalab/core-components-button/desktop'; -import { ButtonMobile } from '@alfalab/core-components-button/mobile'; +import { BaseButtonCandidate } from '@alfalab/core-components-button/components/base-button-candidate'; +import { useLoading } from '@alfalab/core-components-button/shared'; import { type IconButtonProps } from '../../types/icon-button-props'; @@ -15,12 +15,12 @@ const colorStyles = { inverted: invertedColors, }; -type BaseIconButtonProps = { - client: 'desktop' | 'mobile'; - clientStyles: Record; -}; - -export const BaseIconButton = forwardRef( +export const BaseIconButton = forwardRef< + HTMLButtonElement, + IconButtonProps & { + clientStyles: Record; + } +>( ( { className, @@ -30,19 +30,20 @@ export const BaseIconButton = forwardRef { - const Component = client === 'desktop' ? ButtonDesktop : ButtonMobile; + const loading = useLoading(loadingFromProps); return ( - {React.isValidElement(Icon) ? ( @@ -69,7 +69,7 @@ export const BaseIconButton = forwardRef )} - + ); }, ); diff --git a/packages/icon-button/src/components/base-icon-button/default.module.css b/packages/icon-button/src/components/base-icon-button/default.module.css index 231494d1f5..3620310b2c 100644 --- a/packages/icon-button/src/components/base-icon-button/default.module.css +++ b/packages/icon-button/src/components/base-icon-button/default.module.css @@ -36,60 +36,70 @@ &.primary { color: var(--icon-button-primary-base-color); - @mixin hover { - color: var(--icon-button-primary-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-primary-hover-color); + } - &:active { - color: var(--icon-button-primary-active-color); + &:active { + color: var(--icon-button-primary-active-color); + } } } &.secondary { color: var(--icon-button-secondary-base-color); - @mixin hover { - color: var(--icon-button-secondary-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-secondary-hover-color); + } - &:active { - color: var(--icon-button-secondary-active-color); + &:active { + color: var(--icon-button-secondary-active-color); + } } } &.transparent { color: var(--icon-button-transparent-base-color); - @mixin hover { - color: var(--icon-button-transparent-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-transparent-hover-color); + } - &:active { - color: var(--icon-button-transparent-active-color); + &:active { + color: var(--icon-button-transparent-active-color); + } } } &.negative { color: var(--icon-button-negative-base-color); - @mixin hover { - color: var(--icon-button-negative-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-negative-hover-color); + } - &:active { - color: var(--icon-button-negative-active-color); + &:active { + color: var(--icon-button-negative-active-color); + } } } &.tertiary { color: var(--icon-button-tertiary-base-color); - @mixin hover { - color: var(--icon-button-tertiary-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-tertiary-hover-color); + } - &:active { - color: var(--icon-button-tertiary-active-color); + &:active { + color: var(--icon-button-tertiary-active-color); + } } } @@ -97,87 +107,105 @@ &.primary { color: var(--color-light-text-primary); - @mixin hover { - background: var(--color-light-transparent-default-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-hover); + } - &:active { - background: var(--color-light-transparent-default-press); + &:active { + background: var(--color-light-transparent-default-press); + } } } &.secondary { color: var(--color-light-text-secondary); - @mixin hover { - background: var(--color-light-transparent-default-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-hover); + } - &:active { - background: var(--color-light-transparent-default-press); + &:active { + background: var(--color-light-transparent-default-press); + } } } &.negative { color: var(--color-light-text-negative); - @mixin hover { - background: var(--color-light-transparent-default-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-hover); + } - &:active { - background: var(--color-light-transparent-default-press); + &:active { + background: var(--color-light-transparent-default-press); + } } } &.tertiary { color: var(--color-light-text-tertiary); - @mixin hover { - background: var(--color-light-transparent-default-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-hover); + } - &:active { - background: var(--color-light-transparent-default-press); + &:active { + background: var(--color-light-transparent-default-press); + } } } } - &.component:disabled { - &.primary { - color: var(--icon-button-primary-disabled-color); + &.component { + @mixin disabled { + &.primary { + color: var(--icon-button-primary-disabled-color); - &.loader { - color: var(--icon-button-primary-base-color); + &.loader { + color: var(--icon-button-primary-base-color); + } } - } - &.secondary { - color: var(--icon-button-secondary-disabled-color); + &.secondary { + color: var(--icon-button-secondary-disabled-color); - &.loader { - color: var(--icon-button-secondary-base-color); + &.loader { + color: var(--icon-button-secondary-base-color); + } } - } - &.negative { - color: var(--icon-button-negative-disabled-color); + &.transparent { + color: var(--icon-button-transparent-disabled-color); - &.loader { - color: var(--icon-button-negative-base-color); + &.loader { + color: var(--icon-button-transparent-base-color); + } } - } - &.tertiary { - color: var(--icon-button-tertiary-disabled-color); + &.negative { + color: var(--icon-button-negative-disabled-color); - &.loader { - color: var(--icon-button-tertiary-base-color); + &.loader { + color: var(--icon-button-negative-base-color); + } } - } - &.transparentBg { - background: transparent; + &.tertiary { + color: var(--icon-button-tertiary-disabled-color); + + &.loader { + color: var(--icon-button-tertiary-base-color); + } + } + + &.transparentBg { + background: transparent; + } } } } diff --git a/packages/icon-button/src/components/base-icon-button/inverted.module.css b/packages/icon-button/src/components/base-icon-button/inverted.module.css index 0b6f20d65e..81727ecd37 100644 --- a/packages/icon-button/src/components/base-icon-button/inverted.module.css +++ b/packages/icon-button/src/components/base-icon-button/inverted.module.css @@ -66,60 +66,70 @@ &.primary { color: var(--icon-button-inverted-primary-base-color); - @mixin hover { - color: var(--icon-button-inverted-primary-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-inverted-primary-hover-color); + } - &:active { - color: var(--icon-button-inverted-primary-active-color); + &:active { + color: var(--icon-button-inverted-primary-active-color); + } } } &.secondary { color: var(--icon-button-inverted-secondary-base-color); - @mixin hover { - color: var(--icon-button-inverted-secondary-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-inverted-secondary-hover-color); + } - &:active { - color: var(--icon-button-inverted-secondary-active-color); + &:active { + color: var(--icon-button-inverted-secondary-active-color); + } } } &.transparent { color: var(--icon-button-inverted-transparent-base-color); - @mixin hover { - color: var(--icon-button-inverted-transparent-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-inverted-transparent-hover-color); + } - &:active { - color: var(--icon-button-inverted-transparent-active-color); + &:active { + color: var(--icon-button-inverted-transparent-active-color); + } } } &.negative { color: var(--icon-button-inverted-negative-base-color); - @mixin hover { - color: var(--icon-button-inverted-negative-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-inverted-negative-hover-color); + } - &:active { - color: var(--icon-button-inverted-negative-active-color); + &:active { + color: var(--icon-button-inverted-negative-active-color); + } } } &.tertiary { color: var(--icon-button-inverted-tertiary-base-color); - @mixin hover { - color: var(--icon-button-inverted-tertiary-hover-color); - } + @mixin not-disabled { + @mixin hover { + color: var(--icon-button-inverted-tertiary-hover-color); + } - &:active { - color: var(--icon-button-inverted-tertiary-active-color); + &:active { + color: var(--icon-button-inverted-tertiary-active-color); + } } } @@ -127,87 +137,105 @@ &.primary { color: var(--color-light-text-primary-inverted); - @mixin hover { - background: var(--color-light-transparent-default-inverted-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-inverted-hover); + } - &:active { - background: var(--color-light-transparent-default-inverted-press); + &:active { + background: var(--color-light-transparent-default-inverted-press); + } } } &.secondary { color: var(--color-light-text-secondary-inverted); - @mixin hover { - background: var(--color-light-transparent-default-inverted-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-inverted-hover); + } - &:active { - background: var(--color-light-transparent-default-inverted-press); + &:active { + background: var(--color-light-transparent-default-inverted-press); + } } } &.negative { color: var(--color-light-text-negative-inverted); - @mixin hover { - background: var(--color-light-transparent-default-inverted-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-inverted-hover); + } - &:active { - background: var(--color-light-transparent-default-inverted-press); + &:active { + background: var(--color-light-transparent-default-inverted-press); + } } } &.tertiary { color: var(--color-light-text-tertiary-inverted); - @mixin hover { - background: var(--color-light-transparent-default-inverted-hover); - } + @mixin not-disabled { + @mixin hover { + background: var(--color-light-transparent-default-inverted-hover); + } - &:active { - background: var(--color-light-transparent-default-inverted-press); + &:active { + background: var(--color-light-transparent-default-inverted-press); + } } } } - &.component:disabled { - &.primary { - color: var(--icon-button-inverted-primary-disabled-color); + &.component { + @mixin disabled { + &.primary { + color: var(--icon-button-inverted-primary-disabled-color); - &.loader { - color: var(--icon-button-inverted-primary-base-color); + &.loader { + color: var(--icon-button-inverted-primary-base-color); + } } - } - &.secondary { - color: var(--icon-button-inverted-secondary-disabled-color); + &.secondary { + color: var(--icon-button-inverted-secondary-disabled-color); - &.loader { - color: var(--icon-button-inverted-secondary-base-color); + &.loader { + color: var(--icon-button-inverted-secondary-base-color); + } } - } - &.negative { - color: var(--icon-button-inverted-negative-disabled-color); + &.transparent { + color: var(--icon-button-inverted-transparent-disabled-color); - &.loader { - color: var(--icon-button-inverted-negative-base-color); + &.loader { + color: var(--icon-button-inverted-transparent-base-color); + } } - } - &.tertiary { - color: var(--icon-button-inverted-tertiary-disabled-color); + &.negative { + color: var(--icon-button-inverted-negative-disabled-color); - &.loader { - color: var(--icon-button-inverted-tertiary-base-color); + &.loader { + color: var(--icon-button-inverted-negative-base-color); + } } - } - &.transparentBg { - background: transparent; + &.tertiary { + color: var(--icon-button-inverted-tertiary-disabled-color); + + &.loader { + color: var(--icon-button-inverted-tertiary-base-color); + } + } + + &.transparentBg { + background: transparent; + } } } } diff --git a/packages/icon-button/src/desktop/Component.desktop.tsx b/packages/icon-button/src/desktop/Component.desktop.tsx index 0a3a29e900..a30cef0621 100644 --- a/packages/icon-button/src/desktop/Component.desktop.tsx +++ b/packages/icon-button/src/desktop/Component.desktop.tsx @@ -8,9 +8,7 @@ import clientStyles from './desktop.module.css'; export type IconButtonDesktopProps = IconButtonProps; export const IconButtonDesktop = forwardRef( - (props, ref) => ( - - ), + (props, ref) => , ); IconButtonDesktop.displayName = 'IconButtonDesktop'; diff --git a/packages/icon-button/src/mobile/Component.mobile.tsx b/packages/icon-button/src/mobile/Component.mobile.tsx index eee2df61c5..9dcb03211c 100644 --- a/packages/icon-button/src/mobile/Component.mobile.tsx +++ b/packages/icon-button/src/mobile/Component.mobile.tsx @@ -8,9 +8,7 @@ import clientStyles from './mobile.module.css'; export type IconButtonMobileProps = IconButtonProps; export const IconButtonMobile = forwardRef( - (props, ref) => ( - - ), + (props, ref) => , ); IconButtonMobile.displayName = 'IconButtonMobile'; diff --git a/packages/input-autocomplete/src/__snapshots__/Component.test.tsx.snap b/packages/input-autocomplete/src/__snapshots__/Component.test.tsx.snap index 3fd4eabf86..0cde288a48 100644 --- a/packages/input-autocomplete/src/__snapshots__/Component.test.tsx.snap +++ b/packages/input-autocomplete/src/__snapshots__/Component.test.tsx.snap @@ -145,29 +145,25 @@ exports[`InputAutocompleteMobile Snapshots tests should match snapshot in open s > diff --git a/packages/modal/src/__snapshots__/Component.test.tsx.snap b/packages/modal/src/__snapshots__/Component.test.tsx.snap index d1b68c45c2..131b9ff059 100644 --- a/packages/modal/src/__snapshots__/Component.test.tsx.snap +++ b/packages/modal/src/__snapshots__/Component.test.tsx.snap @@ -74,29 +74,25 @@ exports[`ModalDesktop snapshots tests should match snapshot 1`] = ` > @@ -212,29 +208,25 @@ exports[`ModalMobile snapshots tests should match snapshot 1`] = ` > diff --git a/packages/navigation-bar-private/src/__snapshots__/Component.test.tsx.snap b/packages/navigation-bar-private/src/__snapshots__/Component.test.tsx.snap index 0488d5913b..ebe60dab5c 100644 --- a/packages/navigation-bar-private/src/__snapshots__/Component.test.tsx.snap +++ b/packages/navigation-bar-private/src/__snapshots__/Component.test.tsx.snap @@ -66,30 +66,26 @@ exports[`Navigation Bar Snapshots tests should match snapshot 1`] = ` > diff --git a/packages/notification-manager/src/__snapshots__/component.test.tsx.snap b/packages/notification-manager/src/__snapshots__/component.test.tsx.snap index 6481b45f91..829a5b1fc8 100644 --- a/packages/notification-manager/src/__snapshots__/component.test.tsx.snap +++ b/packages/notification-manager/src/__snapshots__/component.test.tsx.snap @@ -57,29 +57,25 @@ exports[`NotificationManager Snapshots tests should match snapshot 1`] = ` > @@ -120,29 +116,25 @@ exports[`NotificationManager Snapshots tests should match snapshot 1`] = ` > @@ -183,29 +175,25 @@ exports[`NotificationManager Snapshots tests should match snapshot 1`] = ` > diff --git a/packages/notification/src/__snapshots__/Component.test.tsx.snap b/packages/notification/src/__snapshots__/Component.test.tsx.snap index 6d04068aee..bf840e6dbe 100644 --- a/packages/notification/src/__snapshots__/Component.test.tsx.snap +++ b/packages/notification/src/__snapshots__/Component.test.tsx.snap @@ -67,29 +67,25 @@ exports[`Notification Snapshots tests should match snapshot 1`] = ` > diff --git a/packages/pass-code-v1/src/components/KeyPadButton/index.module.css b/packages/pass-code-v1/src/components/KeyPadButton/index.module.css index 60277952b2..8825bb539f 100644 --- a/packages/pass-code-v1/src/components/KeyPadButton/index.module.css +++ b/packages/pass-code-v1/src/components/KeyPadButton/index.module.css @@ -6,64 +6,54 @@ justify-content: center; align-items: center; padding: var(--gap-0); -} - -.button.button { - @mixin action_component_secondary; - border-radius: var(--border-radius-circle); - padding: var(--gap-0); - min-width: 64px; - width: 64px; - height: 64px; - text-align: center; + .button.button { + @mixin action_component_secondary; - & > span { - vertical-align: middle; + border-radius: var(--border-radius-circle); + width: 64px; + height: 64px; + text-align: center; - & > * { + & > span { vertical-align: middle; - } - } -} - -.secondary.secondary { - color: var(--color-light-text-primary); - background: var(--button-bg-color); - - &:hover { - color: var(--color-light-text-primary); - } - - &:active { - background: var(--button-bg-color-active); - } -} -.ghost.ghost { - color: var(--color-light-text-primary); - - &:hover { - color: var(--color-light-text-primary); - } + & > * { + vertical-align: middle; + } + } - &:active { - background: var(--button-bg-color-active); - } -} + &.secondary.secondary { + padding: var(--gap-0); + min-width: 64px; + color: var(--color-light-text-primary); + background: var(--button-bg-color); + + @mixin not-disabled { + @mixin hover { + color: var(--color-light-text-primary); + } + + &:active { + background: var(--button-bg-color-active); + } + } + } -@media screen and (min-width: 360px) { - .button.button { - min-width: 76px; - height: 76px; - width: 76px; - } -} + @media screen and (min-width: 360px) { + & { + min-width: 76px; + height: 76px; + width: 76px; + } + } -@media screen and (min-width: 390px) { - .button.button { - min-width: 86px; - width: 86px; - height: 86px; + @media screen and (min-width: 390px) { + & { + min-width: 86px; + width: 86px; + height: 86px; + } + } } } diff --git a/packages/password-input/src/__snapshots__/component.test.tsx.snap b/packages/password-input/src/__snapshots__/component.test.tsx.snap index d13456d044..8e822d7bed 100644 --- a/packages/password-input/src/__snapshots__/component.test.tsx.snap +++ b/packages/password-input/src/__snapshots__/component.test.tsx.snap @@ -26,35 +26,31 @@ exports[`PasswordInput snapshots tests should match snapshot 1`] = ` class="addons rightAddons rightAddons size-48" > diff --git a/packages/picker-button/src/__snapshots__/Component.test.tsx.snap b/packages/picker-button/src/__snapshots__/Component.test.tsx.snap index 2ca8b8b20d..624bfa36ae 100644 --- a/packages/picker-button/src/__snapshots__/Component.test.tsx.snap +++ b/packages/picker-button/src/__snapshots__/Component.test.tsx.snap @@ -360,29 +360,25 @@ exports[`Snapshots tests should display opened correctly 4`] = ` > @@ -851,29 +847,25 @@ exports[`Snapshots tests should display opened correctly 6`] = ` > diff --git a/packages/side-panel/src/__snapshots__/Component.test.tsx.snap b/packages/side-panel/src/__snapshots__/Component.test.tsx.snap index cb3dc71511..a3ebc9eed6 100644 --- a/packages/side-panel/src/__snapshots__/Component.test.tsx.snap +++ b/packages/side-panel/src/__snapshots__/Component.test.tsx.snap @@ -77,29 +77,25 @@ exports[`SidePanelDesktop snapshots tests should match snapshot 1`] = ` > @@ -219,29 +215,25 @@ exports[`SidePanelMobile snapshots tests should match snapshot 1`] = ` > From ae32fe1290aa8c05c355a6b3f6ef073461d3498c Mon Sep 17 00:00:00 2001 From: hextion <100ishundred@gmail.com> Date: Tue, 7 Oct 2025 15:45:02 +0300 Subject: [PATCH 3/7] refactor(pass-code-v1): used BaseButtonCandidate --- .../src/__snapshots__/component.test.tsx.snap | 588 +++++------------- packages/pass-code-v1/src/component.test.tsx | 2 +- .../src/components/KeyPad/Component.tsx | 6 +- .../src/components/KeyPadButton/Component.tsx | 42 +- .../components/KeyPadButton/index.module.css | 69 +- 5 files changed, 220 insertions(+), 487 deletions(-) diff --git a/packages/pass-code-v1/src/__snapshots__/component.test.tsx.snap b/packages/pass-code-v1/src/__snapshots__/component.test.tsx.snap index 97a9d3d703..eccff4798d 100644 --- a/packages/pass-code-v1/src/__snapshots__/component.test.tsx.snap +++ b/packages/pass-code-v1/src/__snapshots__/component.test.tsx.snap @@ -35,147 +35,67 @@ exports[`PassCodeV1 Snapshot tests should match snapshot with code length 1`] =
-
- -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
+ 9 +
-
- -
+ 0 +
@@ -206,177 +126,89 @@ exports[`PassCodeV1 Snapshot tests should match snapshot with error prop 1`] = `
-
- -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
+ 9 +
-
- -
-
+ -
+ + + +
@@ -404,147 +236,67 @@ exports[`PassCodeV1 Snapshot tests should match snapshot with unknown code lengt
-
- -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
-
+ -
+ 9 +
-
- -
+ 0 +
diff --git a/packages/pass-code-v1/src/component.test.tsx b/packages/pass-code-v1/src/component.test.tsx index 697ce3c939..ce3f89adc7 100644 --- a/packages/pass-code-v1/src/component.test.tsx +++ b/packages/pass-code-v1/src/component.test.tsx @@ -39,7 +39,7 @@ describe('PassCodeV1', () => { const { getByText } = render(); - const button = getByText(pressedDigit).parentNode as HTMLButtonElement; + const button = getByText(pressedDigit) as HTMLButtonElement; fireEvent.click(button); diff --git a/packages/pass-code-v1/src/components/KeyPad/Component.tsx b/packages/pass-code-v1/src/components/KeyPad/Component.tsx index 3f0a5c6c3b..cbd8c5f5a5 100644 --- a/packages/pass-code-v1/src/components/KeyPad/Component.tsx +++ b/packages/pass-code-v1/src/components/KeyPad/Component.tsx @@ -81,10 +81,14 @@ export const KeyPad: React.FC = ({ return
; } + const handleDigitClick = () => { + onClick(digit); + }; + return ( = { +export type KeyPadButtonProps = { /** * Вид кнопки. */ - view: ButtonMobileProps['view']; + view: 'secondary' | 'text'; /** * Значение. */ - children: T; + children?: ReactNode; /** * Дополнительный класс. @@ -29,7 +29,7 @@ export type KeyPadButtonProps = { /** * Коллбэк нажатия на кнопку. */ - onClick?: (payload: T) => void; + onClick?: () => void; /** * Идентификатор для систем автоматизированного тестирования. @@ -37,24 +37,18 @@ export type KeyPadButtonProps = { dataTestId?: string; }; -export function KeyPadButton({ - children, - onClick, - className, +export const KeyPadButton: FC = ({ view = 'secondary', buttonClassName, + children, dataTestId, -}: KeyPadButtonProps) { - return ( -
- onClick?.(children)} - dataTestId={dataTestId} - > - {children} - -
- ); -} + onClick, +}) => ( + + {children} + +); diff --git a/packages/pass-code-v1/src/components/KeyPadButton/index.module.css b/packages/pass-code-v1/src/components/KeyPadButton/index.module.css index 8825bb539f..57c7c16ea9 100644 --- a/packages/pass-code-v1/src/components/KeyPadButton/index.module.css +++ b/packages/pass-code-v1/src/components/KeyPadButton/index.module.css @@ -2,58 +2,41 @@ @import '../../vars.css'; .component { - display: flex; - justify-content: center; - align-items: center; - padding: var(--gap-0); + @mixin action_component_secondary; - .button.button { - @mixin action_component_secondary; + border-radius: var(--border-radius-circle); + width: 64px; + height: 64px; - border-radius: var(--border-radius-circle); - width: 64px; - height: 64px; - text-align: center; + justify-content: center; + align-items: center; + color: var(--color-light-text-primary); - & > span { - vertical-align: middle; + &.secondary { + background: var(--button-bg-color); - & > * { - vertical-align: middle; - } + &:active { + background: var(--button-bg-color-active); } + } - &.secondary.secondary { - padding: var(--gap-0); - min-width: 64px; - color: var(--color-light-text-primary); - background: var(--button-bg-color); - - @mixin not-disabled { - @mixin hover { - color: var(--color-light-text-primary); - } - - &:active { - background: var(--button-bg-color-active); - } - } + &.text { + @mixin hover { + color: var(--color-light-text-primary-hover); } - @media screen and (min-width: 360px) { - & { - min-width: 76px; - height: 76px; - width: 76px; - } + &:active { + color: var(--color-light-text-primary-press); } + } - @media screen and (min-width: 390px) { - & { - min-width: 86px; - width: 86px; - height: 86px; - } - } + @media screen and (min-width: 360px) { + height: 76px; + width: 76px; + } + + @media screen and (min-width: 390px) { + width: 86px; + height: 86px; } } From b50bec6688c10cefbf43e6d594e91fb728601894 Mon Sep 17 00:00:00 2001 From: hextion <100ishundred@gmail.com> Date: Tue, 7 Oct 2025 20:06:50 +0300 Subject: [PATCH 4/7] refactor(pass-code): used BaseButtonCandidate --- .../src/__snapshots__/component.test.tsx.snap | 160 +++++------------- packages/pass-code/src/component.test.tsx | 2 +- .../src/components/KeyPad/Component.tsx | 10 +- .../src/components/KeyPadButton/Component.tsx | 62 +++---- .../components/KeyPadButton/index.module.css | 27 +-- .../pass-code/src/docs/Component.stories.tsx | 6 +- packages/pass-code/src/docs/description.mdx | 16 +- 7 files changed, 82 insertions(+), 201 deletions(-) diff --git a/packages/pass-code/src/__snapshots__/component.test.tsx.snap b/packages/pass-code/src/__snapshots__/component.test.tsx.snap index 8f8164dda9..800ae4abd7 100644 --- a/packages/pass-code/src/__snapshots__/component.test.tsx.snap +++ b/packages/pass-code/src/__snapshots__/component.test.tsx.snap @@ -53,105 +53,65 @@ exports[`PassCode Snapshot tests should match snapshot with code length 1`] = ` class="component" >
@@ -183,105 +143,65 @@ exports[`PassCode Snapshot tests should match snapshot with unknown code length class="component" >
diff --git a/packages/pass-code/src/component.test.tsx b/packages/pass-code/src/component.test.tsx index 94ad123caf..359d07bb7e 100644 --- a/packages/pass-code/src/component.test.tsx +++ b/packages/pass-code/src/component.test.tsx @@ -45,7 +45,7 @@ describe('PassCode', () => { const { getByText } = render(); - const button = getByText(pressedDigit).parentNode as HTMLButtonElement; + const button = getByText(pressedDigit) as HTMLButtonElement; fireEvent.click(button); diff --git a/packages/pass-code/src/components/KeyPad/Component.tsx b/packages/pass-code/src/components/KeyPad/Component.tsx index 3f8cbc41fd..f35dda2d64 100644 --- a/packages/pass-code/src/components/KeyPad/Component.tsx +++ b/packages/pass-code/src/components/KeyPad/Component.tsx @@ -74,9 +74,8 @@ export const KeyPad: React.FC = ({ @@ -98,11 +97,14 @@ export const KeyPad: React.FC = ({ return
; } + const handleDigitClick = () => { + onClick(digit); + }; + return ( diff --git a/packages/pass-code/src/components/KeyPadButton/Component.tsx b/packages/pass-code/src/components/KeyPadButton/Component.tsx index 88d080f6b1..7b1a4f34b0 100644 --- a/packages/pass-code/src/components/KeyPadButton/Component.tsx +++ b/packages/pass-code/src/components/KeyPadButton/Component.tsx @@ -1,64 +1,48 @@ -import React, { type ReactNode } from 'react'; +import React, { type FC, type ReactNode } from 'react'; import cn from 'classnames'; -import { ButtonMobile, type ButtonMobileProps } from '@alfalab/core-components-button/mobile'; +import { BaseButtonCandidate } from '@alfalab/core-components-button/components/base-button-candidate'; import styles from './index.module.css'; -export type KeyPadButtonProps = { +export interface KeyPadButtonProps { /** - * Вид кнопки + * Значение. */ - view: ButtonMobileProps['view']; + children?: ReactNode; /** - * Значение - */ - children: T; - - /** - * Дополнительный класс + * Дополнительный класс. */ className?: string; /** - * Дополнительный класс кнопки + * Дополнительный класс кнопки. */ buttonClassName?: string; /** - * Коллбэк нажатия на кнопку + * Коллбэк нажатия на кнопку. */ - onClick?: (payload: T) => void; + onClick?: () => void; /** - * Идентификатор для систем автоматизированного тестирования + * Идентификатор для систем автоматизированного тестирования. */ dataTestId?: string; +} - /** - * Заголовок кнопки - */ - title?: string; -}; - -export function KeyPadButton({ - children, - onClick, - view = 'secondary', +export const KeyPadButton: FC = ({ buttonClassName, + children, dataTestId, - title, -}: KeyPadButtonProps) { - return ( - onClick?.(children)} - dataTestId={dataTestId} - {...(title && { title })} - > - {children} - - ); -} + onClick, +}) => ( + + {children} + +); diff --git a/packages/pass-code/src/components/KeyPadButton/index.module.css b/packages/pass-code/src/components/KeyPadButton/index.module.css index 5db8662c3e..d2adc43d10 100644 --- a/packages/pass-code/src/components/KeyPadButton/index.module.css +++ b/packages/pass-code/src/components/KeyPadButton/index.module.css @@ -1,35 +1,20 @@ @import '@alfalab/core-components-vars/src/no-typography-index.css'; @import '../../vars.css'; -.button.button { +.component { @mixin action_component_secondary; border-radius: var(--border-radius-circle); - padding: var(--gap-0); - min-width: var(--pass-code-button-min-width); width: var(--pass-code-button-width); height: var(--pass-code-button-height); - text-align: center; - - & > span { - vertical-align: middle; - - & > * { - vertical-align: middle; - } - } -} - -.secondary.secondary, -.button.button { + justify-content: center; + align-items: center; color: var(--color-light-text-primary); - background-color: var(--color-light-transparent-default); + background: var(--color-light-transparent-default); - @media (hover: hover) { - &:hover { - background-color: var(--color-light-transparent-default-hover); - } + @mixin hover { + background-color: var(--color-light-transparent-default-hover); } &:active { diff --git a/packages/pass-code/src/docs/Component.stories.tsx b/packages/pass-code/src/docs/Component.stories.tsx index 385b8bee03..bbd72d53ab 100644 --- a/packages/pass-code/src/docs/Component.stories.tsx +++ b/packages/pass-code/src/docs/Component.stories.tsx @@ -38,14 +38,12 @@ export const pass_code: Story = { disabled={boolean('disabled', false)} leftAddons={ boolean('leftAddons', false) && ( - - Забыли код? - + Забыли код? ) } rightAddons={ boolean('rightAddons', false) && ( - + ) diff --git a/packages/pass-code/src/docs/description.mdx b/packages/pass-code/src/docs/description.mdx index fffa676749..f47a30ac4f 100644 --- a/packages/pass-code/src/docs/description.mdx +++ b/packages/pass-code/src/docs/description.mdx @@ -215,13 +215,9 @@ render(() => { onChange={handleChange} error={error} success={isSuccess} - leftAddons={ - - Забыли код? - - } + leftAddons={Забыли код?} rightAddons={ - + } @@ -272,13 +268,9 @@ render(() => { onChange={handleChange} error={error} success={isSuccess} - leftAddons={ - - Забыли код? - - } + leftAddons={Забыли код?} rightAddons={ - + } From 9a49d70ddf2e218e09644d7ff029c7fa24209956 Mon Sep 17 00:00:00 2001 From: hextion <100ishundred@gmail.com> Date: Wed, 8 Oct 2025 12:07:05 +0300 Subject: [PATCH 5/7] refactor(pattern-lock-v1): button styles --- .../src/__snapshots__/component.test.tsx.snap | 4 +-- .../base-pattern-lock/Component.tsx | 35 ++++++++++--------- .../base-pattern-lock/index.module.css | 9 +++-- .../src/desktop/desktop.module.css | 2 +- .../src/mobile/mobile.module.css | 10 ++++-- 5 files changed, 35 insertions(+), 25 deletions(-) diff --git a/packages/pattern-lock-v1/src/__snapshots__/component.test.tsx.snap b/packages/pattern-lock-v1/src/__snapshots__/component.test.tsx.snap index 630991db6c..d92d76a7ad 100644 --- a/packages/pattern-lock-v1/src/__snapshots__/component.test.tsx.snap +++ b/packages/pattern-lock-v1/src/__snapshots__/component.test.tsx.snap @@ -9,7 +9,7 @@ exports[`PatternLockV1 test Snapshot tests should match snapshot 1`] = ` class="message" />
@@ -26,7 +26,7 @@ exports[`PatternLockV1 test Snapshot tests should match snapshot with error prop Error message
diff --git a/packages/pattern-lock-v1/src/components/base-pattern-lock/Component.tsx b/packages/pattern-lock-v1/src/components/base-pattern-lock/Component.tsx index ca07026e6e..b7830a5299 100644 --- a/packages/pattern-lock-v1/src/components/base-pattern-lock/Component.tsx +++ b/packages/pattern-lock-v1/src/components/base-pattern-lock/Component.tsx @@ -126,23 +126,24 @@ export const BasePatternLock = forwardRef< extraBounds={extraBounds} hover={hover} /> - - {showForgotCodeBtn ? ( - - {forgotCodeBtnText} - - ) : ( -
- )} +
+ {showForgotCodeBtn && ( + + {forgotCodeBtnText} + + )} +
); }, diff --git a/packages/pattern-lock-v1/src/components/base-pattern-lock/index.module.css b/packages/pattern-lock-v1/src/components/base-pattern-lock/index.module.css index a9b297ba41..e02b49b74d 100644 --- a/packages/pattern-lock-v1/src/components/base-pattern-lock/index.module.css +++ b/packages/pattern-lock-v1/src/components/base-pattern-lock/index.module.css @@ -28,7 +28,12 @@ color: var(--color-light-text-negative); } -.forgotBtn { - display: block; +.forgotBtnContainer { + display: flex; + justify-content: center; +} + +.forgotBtnContainer, +.forgotBtn.forgotBtn.forgotBtn { min-height: var(--size-xs-height); } diff --git a/packages/pattern-lock-v1/src/desktop/desktop.module.css b/packages/pattern-lock-v1/src/desktop/desktop.module.css index f9a14de1e5..d580c66f7e 100644 --- a/packages/pattern-lock-v1/src/desktop/desktop.module.css +++ b/packages/pattern-lock-v1/src/desktop/desktop.module.css @@ -6,7 +6,7 @@ margin: var(--gap-8) var(--gap-0) var(--gap-24) var(--gap-0); } -.forgotBtn { +.forgotBtnContainer { margin: var(--gap-24) auto var(--gap-0); } diff --git a/packages/pattern-lock-v1/src/mobile/mobile.module.css b/packages/pattern-lock-v1/src/mobile/mobile.module.css index 771c91fc56..9caaaa80e1 100644 --- a/packages/pattern-lock-v1/src/mobile/mobile.module.css +++ b/packages/pattern-lock-v1/src/mobile/mobile.module.css @@ -6,13 +6,16 @@ margin: var(--gap-8) var(--gap-0) var(--gap-24) var(--gap-0); } -.forgotBtn { +.forgotBtnContainer { margin: var(--gap-24) auto var(--gap-0); } @media screen and (min-width: 360px) { - .forgotBtn { + .forgotBtnContainer { margin-top: var(--gap-32); + } + .forgotBtnContainer, + .forgotBtn.forgotBtn.forgotBtn { min-height: var(--size-s-height); } @@ -22,7 +25,8 @@ } @media screen and (min-width: 390px) { - .forgotBtn { + .forgotBtnContainer, + .forgotBtn.forgotBtn.forgotBtn { min-height: var(--size-m-height); } From 5604c36d5b22cdd8d17a5d47f07fdcbcbe056125 Mon Sep 17 00:00:00 2001 From: hextion <100ishundred@gmail.com> Date: Wed, 8 Oct 2025 12:34:47 +0300 Subject: [PATCH 6/7] refactor(pattern-lock): button styles --- .../src/__snapshots__/component.test.tsx.snap | 2 +- .../base-pattern-lock/Component.tsx | 21 ++++++++++--------- .../base-pattern-lock/index.module.css | 7 ++++--- .../src/desktop/Component.desktop.tsx | 4 +--- .../src/desktop/desktop.module.css | 15 ------------- .../src/mobile/Component.mobile.tsx | 4 +--- .../pattern-lock/src/mobile/mobile.module.css | 11 ---------- packages/pattern-lock/src/typings.ts | 4 ---- 8 files changed, 18 insertions(+), 50 deletions(-) delete mode 100644 packages/pattern-lock/src/desktop/desktop.module.css delete mode 100644 packages/pattern-lock/src/mobile/mobile.module.css diff --git a/packages/pattern-lock/src/__snapshots__/component.test.tsx.snap b/packages/pattern-lock/src/__snapshots__/component.test.tsx.snap index 575242d8d9..bf276cc7fa 100644 --- a/packages/pattern-lock/src/__snapshots__/component.test.tsx.snap +++ b/packages/pattern-lock/src/__snapshots__/component.test.tsx.snap @@ -3,7 +3,7 @@ exports[`PatternLock test Snapshot tests should match snapshot 1`] = `
{showForgotCodeBtn && ( - - {forgotCodeBtnText} - +
+ + {forgotCodeBtnText} + +
)}
); diff --git a/packages/pattern-lock/src/components/base-pattern-lock/index.module.css b/packages/pattern-lock/src/components/base-pattern-lock/index.module.css index 8afcb3af9c..38ff009988 100644 --- a/packages/pattern-lock/src/components/base-pattern-lock/index.module.css +++ b/packages/pattern-lock/src/components/base-pattern-lock/index.module.css @@ -35,7 +35,8 @@ min-height: var(--pattern-lock-with-forgot-btn-min-height); } -.forgotBtn { - display: block; - min-height: var(--size-xs-height); +.forgotBtnContainer { + display: flex; + justify-content: center; + margin: var(--gap-8) auto var(--gap-0); } diff --git a/packages/pattern-lock/src/desktop/Component.desktop.tsx b/packages/pattern-lock/src/desktop/Component.desktop.tsx index be765912c1..880305a092 100644 --- a/packages/pattern-lock/src/desktop/Component.desktop.tsx +++ b/packages/pattern-lock/src/desktop/Component.desktop.tsx @@ -5,10 +5,8 @@ import { type TPatternLockInstance } from '@alfalab/react-canvas-pattern-lock'; import { BasePatternLock } from '../components/base-pattern-lock'; import { type CommonPatternLockProps } from '../typings'; -import styles from './desktop.module.css'; - export const PatternLockDesktop = forwardRef( - (restProps, ref) => , + (restProps, ref) => , ); PatternLockDesktop.displayName = 'PatternLockDesktop'; diff --git a/packages/pattern-lock/src/desktop/desktop.module.css b/packages/pattern-lock/src/desktop/desktop.module.css deleted file mode 100644 index 6c6b96266e..0000000000 --- a/packages/pattern-lock/src/desktop/desktop.module.css +++ /dev/null @@ -1,15 +0,0 @@ -@import '@alfalab/core-components-vars/src/no-typography-index.css'; -@import '../vars.css'; - -.component { - margin: var(--gap-0) auto; - min-width: var(--pattern-lock-min-width); -} - -.forgotBtn { - margin: var(--gap-8) auto var(--gap-0); -} - -.hiddenBtn { - display: none; -} diff --git a/packages/pattern-lock/src/mobile/Component.mobile.tsx b/packages/pattern-lock/src/mobile/Component.mobile.tsx index 98efd99c02..36735aab1d 100644 --- a/packages/pattern-lock/src/mobile/Component.mobile.tsx +++ b/packages/pattern-lock/src/mobile/Component.mobile.tsx @@ -5,10 +5,8 @@ import { type TPatternLockInstance } from '@alfalab/react-canvas-pattern-lock'; import { BasePatternLock } from '../components/base-pattern-lock'; import { type CommonPatternLockProps } from '../typings'; -import styles from './mobile.module.css'; - export const PatternLockMobile = forwardRef( - (restProps, ref) => , + (restProps, ref) => , ); PatternLockMobile.displayName = 'PatternLockMobile'; diff --git a/packages/pattern-lock/src/mobile/mobile.module.css b/packages/pattern-lock/src/mobile/mobile.module.css deleted file mode 100644 index 57d3ff2840..0000000000 --- a/packages/pattern-lock/src/mobile/mobile.module.css +++ /dev/null @@ -1,11 +0,0 @@ -@import '@alfalab/core-components-vars/src/no-typography-index.css'; -@import '../vars.css'; - -.component { - margin: var(--gap-0) auto; - min-width: var(--pattern-lock-min-width); -} - -.forgotBtn { - margin: var(--gap-8) auto var(--gap-0); -} diff --git a/packages/pattern-lock/src/typings.ts b/packages/pattern-lock/src/typings.ts index e17ec2e02b..e8d6b1d102 100644 --- a/packages/pattern-lock/src/typings.ts +++ b/packages/pattern-lock/src/typings.ts @@ -75,10 +75,6 @@ export type PrivatePatternLockProps = { * Включает ховер-эффект */ hover?: boolean; - /** - * Стили компонента - */ - styles: { [key: string]: string }; }; export type PatternLockProps = CommonPatternLockProps & { From 30f62609c180be4a31a2234de1acc1c1f5582850 Mon Sep 17 00:00:00 2001 From: hextion <100ishundred@gmail.com> Date: Sat, 28 Feb 2026 15:39:41 +0300 Subject: [PATCH 7/7] test: updated screenshots --- ...-lock-screenshots-default-with-forgot-code-button-snap.png | 4 ++-- .../tabs-text-style-prop-text-style-13-snap.png | 4 ++-- .../tabs-text-style-prop-text-style-2-snap.png | 4 ++-- .../tabs-text-style-prop-text-style-5-snap.png | 4 ++-- .../tabs-text-style-prop-text-style-8-snap.png | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/pattern-lock/src/__image_snapshots__/pattern-lock-screenshots-default-with-forgot-code-button-snap.png b/packages/pattern-lock/src/__image_snapshots__/pattern-lock-screenshots-default-with-forgot-code-button-snap.png index 678ec1c6d2..dc230a1366 100644 --- a/packages/pattern-lock/src/__image_snapshots__/pattern-lock-screenshots-default-with-forgot-code-button-snap.png +++ b/packages/pattern-lock/src/__image_snapshots__/pattern-lock-screenshots-default-with-forgot-code-button-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a8cc30205a0fdb528b64a54dbbd964a50b854d6a090b50cea8d2386e56df0d0 -size 9019 +oid sha256:bc7add260dd67f0f0bc65e793dec0b4f5bc8d617ee1624f013d3cab03f07de79 +size 8754 diff --git a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-13-snap.png b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-13-snap.png index 08611e4447..e3478b185e 100644 --- a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-13-snap.png +++ b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-13-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c572698e7a2e6b6aeb77c40a9ca443c03e0931b5790e58a383bd02cb3094af18 -size 7987 +oid sha256:699e84b4e35ad13f7201dbc5f96010d60011b7c08c69a45e5a85b747ea152ee8 +size 8080 diff --git a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-2-snap.png b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-2-snap.png index 294994425a..b1f440a8dd 100644 --- a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-2-snap.png +++ b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-2-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9750825ae110dd40bde417cf16122bc38db622435a9513925873b1123ad7c325 -size 7351 +oid sha256:af7c24f6602e818ae138537b17ef602e8dd26971de8ddec945caa782aa013c9b +size 7369 diff --git a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-5-snap.png b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-5-snap.png index d66f0440fa..c82d9fc6cc 100644 --- a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-5-snap.png +++ b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-5-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac058c0ff04f565cd6208bd5ede546cbaea78c1f85d3bb508c3efbf6ad827c56 -size 7610 +oid sha256:cd1cb94c931408904930ae306883ef68861a3553993c4ede7e576b57ec7928b8 +size 7738 diff --git a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-8-snap.png b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-8-snap.png index a98d0227ee..d2efdd3305 100644 --- a/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-8-snap.png +++ b/packages/tabs/src/__image_snapshots__/tabs-text-style-prop-text-style-8-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a4f1bf6046223e353ac71e2ab94df0d05c05d51d770f03317d24a65fc5f2250 -size 7824 +oid sha256:008ac7a1272a95c5c3dc345d30e81705d9ba1fb98911da94418ce0f004870c8a +size 7837