diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d7aa53d378..7b52fd210f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -77,6 +77,9 @@ updates: patterns: - '@swc/*' - 'swc-plugin-*' + rspack: + patterns: + - '@rspack/*' versioning-strategy: increase open-pull-requests-limit: 20 reviewers: diff --git a/README.md b/README.md index 36393f9536..435a8a120e 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ const Example = () => { VKUI - Items}> + Items}> Hello World diff --git a/benchmark/package.json b/benchmark/package.json index d1c3ca5dc5..9df4cbd518 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -9,17 +9,17 @@ "runtime:start:ci": "yarn run -T playwright test --config runtime/playwright.config.ts" }, "dependencies": { - "@playwright/test": "1.48.1", - "@swc/core": "^1.7.36", + "@playwright/test": "1.48.2", + "@swc/core": "^1.8.0", "@vkontakte/vkui": "workspace:packages/vkui", "cli-table3": "^0.6.1", "css-loader": "^6.10.0", "css-minimizer-webpack-plugin": "^7.0.0", "dotenv": "^16.4.5", "finalhandler": "1.3.1", - "html-webpack-plugin": "^5.6.2", - "mini-css-extract-plugin": "^2.9.1", - "playwright": "1.48.1", + "html-webpack-plugin": "^5.6.3", + "mini-css-extract-plugin": "^2.9.2", + "playwright": "1.48.2", "postcss": "^8.4.47", "postcss-modules": "^6.0.0", "react": "^18.3.1", @@ -27,6 +27,6 @@ "serve-static": "1.16.2", "swc-loader": "^0.2.6", "terser-webpack-plugin": "^5.3.10", - "webpack": "^5.95.0" + "webpack": "^5.96.1" } } diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index e540f59894..d4f701c76d 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -42,7 +42,7 @@ git config blame.ignoreRevsFile .git-blame-ignore-revs > Не используем композицию, т.к. в ней нет необходимости, > а также в будущем она может усложнить переход на другое решение. -- CSS-классы должны быть в формате camelCase: `elementNameModification`. [Гайд по написанию стилей](https://github.com/VKCOM/VKUI/blob/master/docs/CSS_GUIDE.md) +- CSS-классы должны быть в формате camelCase: `elementNameModification`. [Гайд по написанию стилей](CSS_GUIDE.md) - Свойства `className` и `style` навешиваются на корневой элемент компонента - Свойства, не используемые в коде компонента, навешиваются на **главный** элемент компонента. По умолчанию главным является корневой элемент: @@ -83,10 +83,10 @@ git config blame.ignoreRevsFile .git-blame-ignore-revs - Для цветов, скруглений, размеров, отступов и теней используются css-переменные из [vkui-tokens](https://github.com/VKCOM/vkui-tokens) - Для типографии используются компоненты [Typography](https://vkcom.github.io/VKUI/#!/Typography) там, где это возможно - Добавлен `export` компонента и его свойств в `packages/vkui/src/index.ts` -- Компонент покрыт юнит- и скриншотными тестами. [Гайд по тестированию](https://github.com/VKCOM/VKUI/blob/master/docs/TESTING.md) +- Компонент покрыт юнит- и скриншотными тестами. [Гайд по тестированию](TESTING.md) - Компонент корректно отображается на всех платформах, размерах и цветовых схемах. В styleguide для всех этих параметров есть переключатели - Код корректно работает на [поддерживаемых нами браузерах](https://github.com/VKCOM/VKUI#%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D1%8B) -- Для поддержки адаптивности следует придерживаться [гайда по написанию адаптивных компонентов](https://github.com/VKCOM/VKUI/blob/master/docs/ADAPTIVITY_GUIDE.md) +- Для поддержки адаптивности следует придерживаться [гайда по написанию адаптивных компонентов](ADAPTIVITY_GUIDE.md) - `a11y` (см. пример хорошего PR с внедрением доступности, на который можно равняться [#3337](https://github.com/VKCOM/VKUI/issues/3337)): - Компонент соответствует требованиям `a11y` diff --git a/docs/MAINTAINERS.md b/docs/MAINTAINERS.md index b65000ffce..936f741557 100644 --- a/docs/MAINTAINERS.md +++ b/docs/MAINTAINERS.md @@ -2,7 +2,7 @@ Данный документ содержит базовую информацию по сопровождению и процессам разработки и будет полезен в первую очередь сопровождающим (maintainers) репозитория **VKUI**. Информацию по правилам работы с кодом можно найти в -[требованиях к разработке](https://github.com/VKCOM/VKUI/blob/master/docs/CONTRIBUTING.md). +[требованиях к разработке](CONTRIBUTING.md). ## Глоссарий @@ -101,9 +101,8 @@ > ⚠️ Обратите внимание > > Несмотря на то, что черновой список изменений создаётся и обновляется автоматически при слиянии `Pull Request`, бывают случае, -> когда нужно вручную добавить или отредактировать изменение. Тогда нужно учитывать, что ссылка на черновик меняется после каждого -> его сохранения. Поэтому если вносить изменения одновременно с кем-то, то последний сохранивший документ получит ошибку, что он уже -> неактуален. В этом случае, нужно будет открыть черновик по новой ссылке и снова внести свои изменения. +> когда нужно вручную добавить или отредактировать изменение. Тогда нужно учитывать, что кто-то параллельно тоже может начать +> редактировать черновик и тот, кто последний сохранит, затрёт изменение другого. > > Чтобы избежать таких неудобств, лучше всего сообщить коллегам в чате, что вы собираетесь вносить изменения, а после отписаться, > что вы закончили работы. @@ -160,7 +159,7 @@ дедупликацию зависимостей в ветке. Если безопасно вносить изменения в ветку напрямую, то можно отметить `push directly to the branch`, иначе будет создан `PR` с изменениями в выбранную ветку. Бывает полезно запускать эту автоматизацию после обновления зависимостей в ветке - у нас настроен [Dependabot](https://docs.github.com/en/code-security/getting-started/dependabot-quickstart-guide), - который [обновляет зависимости](https://github.com/VKCOM/VKUI/blob/master/.github/dependabot.yml) в начале каждой недели. + который [обновляет зависимости](../.github/dependabot.yml) в начале каждой недели. - [Update screenshots](https://github.com/VKCOM/VKUI/actions/workflows/update_screens.yml): данная автоматизация позволяет запускать обновление скриншотов в выбранной ветке вручную (если вы забыли это сделать локально, например), а так же отвечает за обновление скриншотов в `stable`-ветках в автоматическом режиме (потому что мы не дублируем diff --git a/package.json b/package.json index 27e4449491..fa6a6c7922 100644 --- a/package.json +++ b/package.json @@ -11,24 +11,24 @@ }, "devDependencies": { "@csstools/postcss-global-data": "3.0.0", - "@playwright/experimental-ct-react": "1.48.1", - "@playwright/test": "1.48.1", - "@rspack/cli": "^v1.0.11", - "@rspack/core": "^v1.0.11", + "@playwright/experimental-ct-react": "1.48.2", + "@playwright/test": "1.48.2", + "@rspack/cli": "^v1.0.14", + "@rspack/core": "^v1.0.14", "@size-limit/file": "^11.1.6", "@size-limit/webpack": "^11.1.6", "@size-limit/webpack-css": "^11.1.6", - "@swc/cli": "^0.4.0", - "@swc/core": "1.7.36", - "@swc/jest": "^0.2.36", + "@swc/cli": "^0.5.0", + "@swc/core": "1.8.0", + "@swc/jest": "^0.2.37", "@testing-library/dom": "^10.4.0", - "@testing-library/jest-dom": "^6.6.2", + "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", - "@types/jest": "^29.5.13", + "@types/jest": "^29.5.14", "@types/jest-axe": "^3.5.9", - "@types/node": "^22.7.7", - "@types/react": "^18.3.11", + "@types/node": "^22.8.7", + "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/webpack": "^5.28.5", "@typescript-eslint/eslint-plugin": "^7.5.0", @@ -64,10 +64,10 @@ "jest-environment-node": "^29.7.0", "jest-preset-stylelint": "^7.1.0", "lint-staged": "^15.2.10", - "mini-css-extract-plugin": "^2.9.1", + "mini-css-extract-plugin": "^2.9.2", "postcss": "^8.4.47", "postcss-cli": "^11.0.0", - "postcss-custom-media": "^11.0.3", + "postcss-custom-media": "^11.0.5", "postcss-gap-properties": "^6.0.0", "postcss-import": "^16.1.0", "postcss-loader": "^8.1.1", @@ -94,7 +94,7 @@ "ts-node": "^10.9.2", "typescript": "^5.6.3", "typescript-plugin-css-modules": "^5.1.0", - "webpack": "^5.95.0", + "webpack": "^5.96.1", "webpack-cli": "^5.1.4", "webpack-merge": "^6.0.1", "yargs": "^17.7.2" diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 847515bcf8..da8a45d1d1 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -17,17 +17,17 @@ "chalk": "^4.1.2", "commander": "^12.1.0", "cross-spawn": "^7.0.3", - "jscodeshift": "^17.0.0", + "jscodeshift": "^17.1.1", "prompts": "^2.4.2", "typescript": "^5.6.3" }, "devDependencies": { - "@swc/core": "^1.7.36", - "@swc/jest": "^0.2.36", + "@swc/core": "^1.8.0", + "@swc/jest": "^0.2.37", "@types/cross-spawn": "^6.0.6", - "@types/jest": "^29.5.13", + "@types/jest": "^29.5.14", "@types/jscodeshift": "^0.12.0", - "@types/node": "^22.7.7", + "@types/node": "^22.8.7", "@types/prompts": "^2.4.9", "jest": "^29.7.0", "ts-node": "^10.9.2" diff --git a/packages/codemods/src/transforms/v7/__testfixtures__/cell-button/basic.input.tsx b/packages/codemods/src/transforms/v7/__testfixtures__/cell-button/basic.input.tsx index 8dbee448ab..a0d09b8b85 100644 --- a/packages/codemods/src/transforms/v7/__testfixtures__/cell-button/basic.input.tsx +++ b/packages/codemods/src/transforms/v7/__testfixtures__/cell-button/basic.input.tsx @@ -33,6 +33,11 @@ const App = () => { Создать что-нибудь + + {/* rename subhead -> overtitle */} + + Создать что-нибудь + ); }; diff --git a/packages/codemods/src/transforms/v7/__testfixtures__/cell/basic.input.tsx b/packages/codemods/src/transforms/v7/__testfixtures__/cell/basic.input.tsx index 64276f4223..5f3a2c1b7c 100644 --- a/packages/codemods/src/transforms/v7/__testfixtures__/cell/basic.input.tsx +++ b/packages/codemods/src/transforms/v7/__testfixtures__/cell/basic.input.tsx @@ -19,6 +19,15 @@ const App = () => { > Геолокация + + {/* rename subhead -> overtitle */} + {}} + indicator="При использовании" + > + Геолокация + ); }; diff --git a/packages/codemods/src/transforms/v7/__testfixtures__/header/basic.input.tsx b/packages/codemods/src/transforms/v7/__testfixtures__/header/basic.input.tsx index 89de681f87..948a31090f 100644 --- a/packages/codemods/src/transforms/v7/__testfixtures__/header/basic.input.tsx +++ b/packages/codemods/src/transforms/v7/__testfixtures__/header/basic.input.tsx @@ -12,16 +12,15 @@ const App = () => { return ( {/* Проверка изменения size */} -
+
Кто может писать мне личные сообщения
-
+
Кто может писать мне личные сообщения
{/* Проверка замены aside на after */}
{ } />
+ + {/* Проверка удаления mode */} + {/* замена Large Primary на xl */} +
+ + {/* замена Large tertiary на m */} +
+ {/* замена Regular tertiary на m */} +
+ {/* замена Regular primary на m */} +
+ {/* замена Large secondary на m */} +
+ {/* замена Regular secondary на s */} +
); }; diff --git a/packages/codemods/src/transforms/v7/__testfixtures__/simple-cell/basic.input.tsx b/packages/codemods/src/transforms/v7/__testfixtures__/simple-cell/basic.input.tsx index 7eb68fe467..c98a6cc8ba 100644 --- a/packages/codemods/src/transforms/v7/__testfixtures__/simple-cell/basic.input.tsx +++ b/packages/codemods/src/transforms/v7/__testfixtures__/simple-cell/basic.input.tsx @@ -19,6 +19,16 @@ const App = () => { > Геолокация + + + {/* rename subhead -> overtitle */} + {}} + subhead={"Subhead"} + indicator="При использовании" + > + Геолокация + ); }; diff --git a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell-button.ts.snap b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell-button.ts.snap index aae725ef24..0ba2f0ef80 100644 --- a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell-button.ts.snap +++ b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell-button.ts.snap @@ -31,6 +31,10 @@ const App = () => { Создать что-нибудь + {/* rename subhead -> overtitle */} + + Создать что-нибудь + ) ); };" diff --git a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell.ts.snap b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell.ts.snap index 7753d6e8c6..46c0a1f072 100644 --- a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell.ts.snap +++ b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/cell.ts.snap @@ -21,6 +21,14 @@ const App = () => { > Геолокация + {/* rename subhead -> overtitle */} + {}} + indicator="При использовании" + > + Геолокация + ) ); };" diff --git a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/form-item.ts.snap b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/form-item.ts.snap index e22d581422..1fdc162923 100644 --- a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/form-item.ts.snap +++ b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/form-item.ts.snap @@ -23,7 +23,7 @@ const App = () => { {/* test 2: should find TopLabel inside topNode prop */} Дополнительная информация 0/100 diff --git a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/header.ts.snap b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/header.ts.snap index 77b774efcd..1c41cfd5ff 100644 --- a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/header.ts.snap +++ b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/header.ts.snap @@ -15,15 +15,14 @@ const App = () => { return ( ( {/* Проверка изменения size */} -
+
Кто может писать мне личные сообщения
-
+
Кто может писать мне личные сообщения
{/* Проверка замены aside на after */}
{ } />
+ {/* Проверка удаления mode */} + {/* замена Large Primary на xl */} +
+ {/* замена Large tertiary на m */} +
+ {/* замена Regular tertiary на m */} +
+ {/* замена Regular primary на m */} +
+ {/* замена Large secondary на m */} +
+ {/* замена Regular secondary на s */} +
) ); };" diff --git a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/simple-cell.ts.snap b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/simple-cell.ts.snap index 451a6a1d0a..d1253bd820 100644 --- a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/simple-cell.ts.snap +++ b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/simple-cell.ts.snap @@ -21,6 +21,14 @@ const App = () => { > Геолокация + {/* rename subhead -> overtitle */} + {}} + overTitle={"Subhead"} + indicator="При использовании" + > + Геолокация + ) ); };" diff --git a/packages/codemods/src/transforms/v7/cell-button.ts b/packages/codemods/src/transforms/v7/cell-button.ts index e760c36ad2..e0eb60299d 100644 --- a/packages/codemods/src/transforms/v7/cell-button.ts +++ b/packages/codemods/src/transforms/v7/cell-button.ts @@ -1,5 +1,5 @@ import { API, FileInfo, JSXAttribute } from 'jscodeshift'; -import { getImportInfo } from '../../codemod-helpers'; +import { getImportInfo, renameProp } from '../../codemod-helpers'; import { report } from '../../report'; import { JSCodeShiftOptions } from '../../types'; @@ -14,6 +14,8 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi return source.toSource(); } + renameProp(j, source, localName, { subhead: 'overTitle' }); + const attributeToReplace = 'mode'; const newAttributeName = 'appearance'; diff --git a/packages/codemods/src/transforms/v7/cell.ts b/packages/codemods/src/transforms/v7/cell.ts index 979d496f14..0816bfa3ef 100644 --- a/packages/codemods/src/transforms/v7/cell.ts +++ b/packages/codemods/src/transforms/v7/cell.ts @@ -12,6 +12,7 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi if (localName) { renameProp(j, source, localName, { + subhead: 'overTitle', expandable: 'chevron', }); } diff --git a/packages/codemods/src/transforms/v7/common/warnSelectOnChange.ts b/packages/codemods/src/transforms/v7/common/warnSelectOnChange.ts new file mode 100644 index 0000000000..3840180ddc --- /dev/null +++ b/packages/codemods/src/transforms/v7/common/warnSelectOnChange.ts @@ -0,0 +1,16 @@ +import { API, Collection } from 'jscodeshift'; +import { report } from '../../../report'; + +export const warnSelectOnChange = (api: API, source: Collection, componentName: string) => { + const j = api.jscodeshift; + source + .find(j.JSXOpeningElement, { name: { name: componentName } }) + .find(j.JSXAttribute) + .filter((attr) => attr.node.name.name === 'onChange') + .forEach(() => { + report( + api, + `Manual changes required for ${componentName}'s "onChange" prop: need to change event argument to select value`, + ); + }); +}; diff --git a/packages/codemods/src/transforms/v7/custom-select.ts b/packages/codemods/src/transforms/v7/custom-select.ts index 6a34a10823..da8beb446d 100644 --- a/packages/codemods/src/transforms/v7/custom-select.ts +++ b/packages/codemods/src/transforms/v7/custom-select.ts @@ -1,6 +1,7 @@ import { API, FileInfo } from 'jscodeshift'; import { getImportInfo, removeProps } from '../../codemod-helpers'; import { JSCodeShiftOptions } from '../../types'; +import { warnSelectOnChange } from './common/warnSelectOnChange'; export const parser = 'tsx'; @@ -19,6 +20,7 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi removeProps(j, api, source, localName, PROPS_TO_REMOVE, () => { return `need to remove props ${PROPS_TO_REMOVE.join(', ')}`; }); + warnSelectOnChange(api, source, localName); return source.toSource(); } diff --git a/packages/codemods/src/transforms/v7/date-picker.ts b/packages/codemods/src/transforms/v7/date-picker.ts new file mode 100644 index 0000000000..175daa5bbd --- /dev/null +++ b/packages/codemods/src/transforms/v7/date-picker.ts @@ -0,0 +1,31 @@ +import { API, FileInfo } from 'jscodeshift'; +import { getImportInfo } from '../../codemod-helpers'; +import { report } from '../../report'; +import { JSCodeShiftOptions } from '../../types'; + +export const parser = 'tsx'; + +export default function transformer(file: FileInfo, api: API, options: JSCodeShiftOptions) { + const { alias } = options; + const j = api.jscodeshift; + const source = j(file.source); + const { localName } = getImportInfo(j, file, 'DatePicker', alias); + + if (!localName) { + return source.toSource(); + } + source + .find(j.JSXElement, { + openingElement: { + name: { name: localName }, + }, + }) + .forEach(() => { + report( + api, + `Manual changes required for ${localName}. component DatePicker was removed in v7.0.0, please use Input, Select or DateInput component`, + ); + }); + + return source.toSource(); +} diff --git a/packages/codemods/src/transforms/v7/form-item.ts b/packages/codemods/src/transforms/v7/form-item.ts index 75cef58a46..1653144edb 100644 --- a/packages/codemods/src/transforms/v7/form-item.ts +++ b/packages/codemods/src/transforms/v7/form-item.ts @@ -1,5 +1,5 @@ import { API, FileInfo, JSXAttribute, JSXElement, JSXExpressionContainer } from 'jscodeshift'; -import { getImportInfo } from '../../codemod-helpers'; +import { getImportInfo, renameProp } from '../../codemod-helpers'; import { JSCodeShiftOptions } from '../../types'; export const parser = 'tsx'; @@ -58,6 +58,8 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi return undefined; } + renameProp(j, source, localName, { topNode: 'top' }); + source.find(j.JSXElement, { openingElement: { name: { name: localName } } }).forEach((path) => { const formItem = path.node; let topMultiline: JSXAttribute | undefined; @@ -91,10 +93,7 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi // Ищем FormItem.TopLabel в пропе top и topNode formItemAttributes?.forEach((attr) => { - if ( - attr.type === 'JSXAttribute' && - (attr.name.name === 'top' || attr.name.name === 'topNode') - ) { + if (attr.type === 'JSXAttribute' && attr.name.name === 'top') { if (attr.value?.type === 'JSXElement') { topLabelMultiline = findTopLabelRecursive(attr.value); } else if ( diff --git a/packages/codemods/src/transforms/v7/header.ts b/packages/codemods/src/transforms/v7/header.ts index bb89e39ad0..766c8d4d46 100644 --- a/packages/codemods/src/transforms/v7/header.ts +++ b/packages/codemods/src/transforms/v7/header.ts @@ -1,10 +1,92 @@ -import { API, FileInfo } from 'jscodeshift'; +import { + API, + Collection, + FileInfo, + JSCodeshift, + JSXAttribute, + JSXSpreadAttribute, +} from 'jscodeshift'; +import { report } from '../../report'; import { remapSizePropValue } from './common/remapSizePropValue'; -import { getImportInfo, renameProp } from '../../codemod-helpers'; +import { getImportInfo, removeAttribute, renameProp } from '../../codemod-helpers'; import { JSCodeShiftOptions } from '../../types'; export const parser = 'tsx'; +function removePropMode(j: JSCodeshift, api: API, source: Collection, localName: string) { + const getValueFromAttribute = (attr: JSXAttribute): string | null => { + if (attr.value?.type === 'StringLiteral') { + return attr.value.value; + } + if (attr.value?.type === 'JSXExpressionContainer') { + const expression = attr.value.expression; + if (expression.type === 'StringLiteral') { + return expression.value; + } + } + return null; + }; + + const changeAttributeValue = ( + attributes: Array | undefined, + attribute: JSXAttribute | undefined, + attrName: string, + newValue: string, + ) => { + if (attribute) { + attribute.value = j.stringLiteral(newValue); + } else { + attributes?.push(j.jsxAttribute(j.jsxIdentifier(attrName), j.stringLiteral(newValue))); + } + }; + + source + .find(j.JSXOpeningElement, { + name: { + name: localName, + }, + }) + .forEach((path) => { + const attributes = path.node.attributes; + const modeAttr = + (attributes?.find( + (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'mode', + ) as JSXAttribute) || undefined; + const sizeAttr = + (attributes?.find( + (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'size', + ) as JSXAttribute) || undefined; + const hasSpread = !!attributes?.some((attr) => attr.type === 'JSXSpreadAttribute'); + if (!modeAttr) { + if (hasSpread) { + report( + api, + `: ${localName} has been changed. Manual changes required: remove mode attribute and replace it by size prop`, + ); + } + return; + } + removeAttribute(attributes, modeAttr); + const modeValue = getValueFromAttribute(modeAttr); + if (!modeValue) { + report( + api, + `: ${localName} has been changed. Manual changes required: remove mode attribute and replace it by size prop`, + ); + return; + } + const sizeValue = getValueFromAttribute(sizeAttr); + + if (modeValue === 'primary' && sizeValue === 'l') { + changeAttributeValue(attributes, sizeAttr, 'size', 'xl'); + } else if (modeValue === 'tertiary' || (modeValue === 'primary' && sizeValue === 'm')) { + changeAttributeValue(attributes, sizeAttr, 'size', 'm'); + } else if (modeValue === 'secondary') { + changeAttributeValue(attributes, sizeAttr, 'size', 's'); + } + }); +} + export default function transformer(file: FileInfo, api: API, options: JSCodeShiftOptions) { const { alias } = options; const j = api.jscodeshift; @@ -27,5 +109,7 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi renameProp(j, source, localName, { aside: 'after' }); + removePropMode(j, api, source, localName); + return source.toSource(); } diff --git a/packages/codemods/src/transforms/v7/native-select.ts b/packages/codemods/src/transforms/v7/native-select.ts new file mode 100644 index 0000000000..56ff172599 --- /dev/null +++ b/packages/codemods/src/transforms/v7/native-select.ts @@ -0,0 +1,21 @@ +import { API, FileInfo } from 'jscodeshift'; +import { getImportInfo } from '../../codemod-helpers'; +import { JSCodeShiftOptions } from '../../types'; +import { warnSelectOnChange } from './common/warnSelectOnChange'; + +export const parser = 'tsx'; + +export default function transformer(file: FileInfo, api: API, options: JSCodeShiftOptions) { + const { alias } = options; + const j = api.jscodeshift; + const source = j(file.source); + const { localName } = getImportInfo(j, file, 'NativeSelect', alias); + + if (!localName) { + return source.toSource(); + } + + warnSelectOnChange(api, source, localName); + + return source.toSource(); +} diff --git a/packages/codemods/src/transforms/v7/select.ts b/packages/codemods/src/transforms/v7/select.ts index de1d59af25..1fcb3bef5f 100644 --- a/packages/codemods/src/transforms/v7/select.ts +++ b/packages/codemods/src/transforms/v7/select.ts @@ -1,6 +1,7 @@ import { API, FileInfo } from 'jscodeshift'; import { getImportInfo, removeProps } from '../../codemod-helpers'; import { JSCodeShiftOptions } from '../../types'; +import { warnSelectOnChange } from './common/warnSelectOnChange'; export const parser = 'tsx'; @@ -19,6 +20,7 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi removeProps(j, api, source, localName, PROPS_TO_REMOVE, () => { return `need to remove props ${PROPS_TO_REMOVE.join(', ')}`; }); + warnSelectOnChange(api, source, localName); return source.toSource(); } diff --git a/packages/codemods/src/transforms/v7/simple-cell.ts b/packages/codemods/src/transforms/v7/simple-cell.ts index 1c356a97ec..809a00679b 100644 --- a/packages/codemods/src/transforms/v7/simple-cell.ts +++ b/packages/codemods/src/transforms/v7/simple-cell.ts @@ -13,6 +13,7 @@ export default function transformer(file: FileInfo, api: API, options: JSCodeShi if (localName) { renameProp(j, source, localName, { expandable: 'chevron', + subhead: 'overTitle', }); } diff --git a/packages/token-translator/package.json b/packages/token-translator/package.json index f829d15052..8d91d6d4a3 100644 --- a/packages/token-translator/package.json +++ b/packages/token-translator/package.json @@ -14,7 +14,7 @@ "node": ">12.0.0" }, "dependencies": { - "@types/node": "^22.7.7", + "@types/node": "^22.8.7", "postcss": "^8.4.47", "postcss-less": "^6.0.0", "postcss-scss": "^4.0.9", @@ -22,9 +22,9 @@ "typescript": "^5.6.3" }, "devDependencies": { - "@swc/core": "1.7.36", - "@swc/jest": "^0.2.36", - "@types/jest": "^29.5.13", + "@swc/core": "1.8.0", + "@swc/jest": "^0.2.37", + "@types/jest": "^29.5.14", "@types/postcss-less": "^4.0.6", "jest": "^29.7.0", "ts-node": "^10.9.2" diff --git a/packages/vkui-floating-ui/package.json b/packages/vkui-floating-ui/package.json index 07334edcda..df30fc69b8 100644 --- a/packages/vkui-floating-ui/package.json +++ b/packages/vkui-floating-ui/package.json @@ -83,9 +83,9 @@ "@swc/helpers": "^0.5.13" }, "devDependencies": { - "@swc/core": "^1.7.36", - "@swc/jest": "^0.2.36", - "@types/jest": "^29.5.13", + "@swc/core": "^1.8.0", + "@swc/jest": "^0.2.37", + "@types/jest": "^29.5.14", "jest": "^29.7.0", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/packages/vkui/package.json b/packages/vkui/package.json index 739ff70f3b..e5bebc3f64 100644 --- a/packages/vkui/package.json +++ b/packages/vkui/package.json @@ -83,12 +83,12 @@ "date-fns": "^4.1.0" }, "devDependencies": { - "@storybook/react": "8.3.6", - "@storybook/react-webpack5": "8.3.6", + "@storybook/react": "8.4.2", + "@storybook/react-webpack5": "8.4.2", "@types/node": "*", "react": "^18.3.1", "react-dom": "^18.3.1", - "storybook": "8.3.6", + "storybook": "8.4.2", "ts-node": "*" }, "size-limit": [ diff --git a/packages/vkui/package.swcrc b/packages/vkui/package.swcrc index 3a34698ab2..1bbf58ad2d 100644 --- a/packages/vkui/package.swcrc +++ b/packages/vkui/package.swcrc @@ -29,7 +29,7 @@ [ "swc-plugin-css-modules", { - "generate_scoped_name": "vkui[folder]__[local]" + "generate_scoped_name": "[folder]__[local]--[hash:base64:5]" } ], [ diff --git a/packages/vkui/rspack.styles.config.ts b/packages/vkui/rspack.styles.config.ts index d4d01aff6d..f44aba2b71 100644 --- a/packages/vkui/rspack.styles.config.ts +++ b/packages/vkui/rspack.styles.config.ts @@ -55,7 +55,7 @@ const config: Configuration = { [ 'swc-plugin-css-modules', { - generate_scoped_name: 'vkui[folder]_[local]', + generate_scoped_name: '[folder]__[local]--[hash:base64:5]', }, ], ], diff --git a/packages/vkui/scripts/postcss.js b/packages/vkui/scripts/postcss.js index 1d5089fc61..3f392049a7 100644 --- a/packages/vkui/scripts/postcss.js +++ b/packages/vkui/scripts/postcss.js @@ -90,7 +90,7 @@ function makePostcssPlugins({ ); } - // TODO [>=7]: Проверить браузерную поддержку + // TODO [>=8]: Проверить браузерную поддержку // // https://caniuse.com/mdn-css_properties_gap_grid_context if (!isESNext) { diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png index 77e9240ba7..13c94c9cf2 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3887de3da8cbad39ffa90ca19883932afcd96490675c9ee20179ec7b6cda417c -size 50874 +oid sha256:2edcfa443cefc6ed74d247aa3b625aee2ced6e847769f743bc1d9619a7e19c2e +size 50805 diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png index f62c81196b..4e393c3dda 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b229ebbb6a703fc0d298233be33ccdb00815b097c52f0209c238b374add2dd6 -size 51411 +oid sha256:b804be805a7bf3b855400f08478358c1bee659fb4c149391c6618bdd9befd958 +size 51758 diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png index afb7ad47fc..13f33bd0c6 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6389d10a377075f54445bd8f844d7fe003c7cdbade03fece2b45107dc4ca828c -size 85629 +oid sha256:4c4bd0f6620cbe98e8f889b3ceb010bdef0ecbc1a4ccdb744d5fe1e311b5d0d7 +size 85734 diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png index 3ee9938304..dc228b503b 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75b21c1e428e2b0e29e9bdb93fdc7d1dbad10436c16707d344301a4785cee741 -size 85905 +oid sha256:178f5f8057b6b69e35c5d3cbeb3a3a3309f7bd9d667d040537caeb74da5d3b3b +size 86534 diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png index 6c7e4b525b..4ffd10f5a5 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:485aa2dad0c74575145fd6752bd9b69aa511c3c671863395bbbd8c68a97b6106 -size 52111 +oid sha256:3354f9a3f1e84446a057b8858bb86c4155ec6dcd698d296b0863f0bc71c173a7 +size 51976 diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png index c670ebac05..977530d05a 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e439a954e13e833e1d6342fff88ac7928009e8a71f77387cfdde60951525c786 -size 52748 +oid sha256:c4e466c370761400a93da9880814da99b7f13bb0f04ee22105073838419aed16 +size 52875 diff --git a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-ios-webkit-light-1-snap.png b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-ios-webkit-light-1-snap.png index 0be91dd831..5126c28236 100644 --- a/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb109a2fdc6fe9396f7ba97f55116303fc578fb0cd729d7ef6cb128d5fe915c6 -size 50145 +oid sha256:89438c5a492d4b6a6c7566dc88766442df48f9aae79e6f1895e167b4a2b7c990 +size 50142 diff --git a/packages/vkui/src/components/AppRoot/ScrollContext.test.tsx b/packages/vkui/src/components/AppRoot/ScrollContext.test.tsx new file mode 100644 index 0000000000..2d8bef5309 --- /dev/null +++ b/packages/vkui/src/components/AppRoot/ScrollContext.test.tsx @@ -0,0 +1,284 @@ +import { createRef, type RefObject, useContext, useEffect } from 'react'; +import { render, renderHook } from '@testing-library/react'; +import { noop } from '@vkontakte/vkjs'; +import { setRef } from '../../lib/utils'; +import { + ElementScrollController, + GlobalScrollController, + ScrollContext, + type ScrollContextInterface, + useScrollLock, +} from './ScrollContext'; + +type ChildWithContextProps = { + contextRef?: RefObject; + beforeScrollLockFn?: VoidFunction; +}; +const ChildWithContext = ({ contextRef, beforeScrollLockFn }: ChildWithContextProps) => { + const context = useContext(ScrollContext); + useEffect(() => { + if (context.beforeScrollLockFnSetRef?.current && beforeScrollLockFn) { + context.beforeScrollLockFnSetRef?.current.add(beforeScrollLockFn); + } + setRef(context, contextRef); + }, [beforeScrollLockFn, context, contextRef]); + return
; +}; + +describe(useScrollLock, () => { + describe('ScrollContext', () => { + test('default', () => { + const h = renderHook(() => useContext(ScrollContext)); + expect(h.result.current.getScroll()).toEqual({ x: 0, y: 0 }); + }); + }); + + describe(GlobalScrollController, () => { + test.each([true, false])('default behavior (width scroll: %s)', (withScroll) => { + const clearWindowMeasuresMock = withScroll ? noop : mockWindowMeasures(-1, -1); + + const beforeScrollLockFn = jest.fn(); + const h = renderHook(useScrollLock, { + wrapper: ({ children }) => ( + ()}> + {children} + + + ), + }); + expect(beforeScrollLockFn).toHaveBeenCalled(); + + expect(getStyleAttributeObject(document.body)).toEqual({ + position: 'fixed', + top: `-${0}px`, + left: `-${0}px`, + right: '0px', + ...(withScroll + ? { + 'overflow-x': 'scroll', + 'overflow-y': 'scroll', + } + : {}), + }); + expect(jestWorkaroundGetOverscrollBehaviorPropertyValue(document.body)).toBe('none'); + expect(jestWorkaroundGetOverscrollBehaviorPropertyValue(document.documentElement)).toBe('none'); // prettier-ignore + + h.rerender(false); + expect(getStyleAttributeObject(document.body)).toEqual({}); + expect(jestWorkaroundGetOverscrollBehaviorPropertyValue(document.body)).toBe(''); + expect(jestWorkaroundGetOverscrollBehaviorPropertyValue(document.documentElement)).toBe(''); + + clearWindowMeasuresMock(); + }); + + test('context api', () => { + const contextRef = createRef(); + render( + ()}> + + , + ); + + const clearWindowMeasuresMock = mockWindowMeasures(50, 50); + const clearElementScrollMock = mockElementScroll(document.body, 100, 100); + const clearMockWindowScrollToMock = mockWindowScrollTo(); + + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 50 }); + expect(contextRef.current?.getScroll({ compensateKeyboardHeight: false })).toEqual({ + x: 0, + y: 0, + }); + contextRef.current?.scrollTo(10, 10); + expect(contextRef.current?.getScroll()).toEqual({ x: 10, y: 60 }); + contextRef.current?.scrollTo(); + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 50 }); + + clearWindowMeasuresMock(); + clearElementScrollMock(); + clearMockWindowScrollToMock(); + }); + }); + + describe(ElementScrollController, () => { + test.each([true, false])('default behavior (width scroll: %s)', (withScroll) => { + const elRef = createRef(); + setRef(document.createElement('div'), elRef); + + const clearElementMeasuresMock = withScroll + ? mockElementMeasures(elRef.current!, -1, -1) + : mockElementMeasures(elRef.current!, 1, 1); + + const beforeScrollLockFn = jest.fn(); + const h = renderHook(useScrollLock, { + wrapper: ({ children }) => ( + + {children} + + + ), + }); + expect(beforeScrollLockFn).toHaveBeenCalled(); + + expect(getStyleAttributeObject(elRef.current)).toEqual({ + position: 'absolute', + top: `-${0}px`, + left: `-${0}px`, + right: '0px', + ...(withScroll + ? { + 'overflow-x': 'scroll', + 'overflow-y': 'scroll', + } + : {}), + }); + + h.rerender(false); + expect(getStyleAttributeObject(elRef.current)).toEqual({}); + + clearElementMeasuresMock(); + }); + + test('el is null', () => { + const elRef = createRef(); + const h = renderHook(useScrollLock, { + wrapper: ({ children }) => ( + {children} + ), + }); + expect(getStyleAttributeObject(elRef.current)).toBeNull(); + + h.rerender(false); + expect(getStyleAttributeObject(elRef.current)).toBeNull(); + }); + + test('context api', () => { + const contextRef = createRef(); + const elRef = createRef(); + setRef(document.createElement('div'), elRef); + render( + + + , + ); + + const clearElementMeasuresMock = mockElementMeasures(elRef.current!, 50, 50); + const clearElementScrollMock = mockElementScroll(elRef.current!, 100, 100); + const clearElementScrollToMock = mockElementScrollTo(elRef.current!); + + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 0 }); + contextRef.current?.scrollTo(10, 10); + expect(contextRef.current?.getScroll()).toEqual({ x: 10, y: 10 }); + contextRef.current?.scrollTo(); + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 0 }); + + clearElementMeasuresMock(); + clearElementScrollMock(); + clearElementScrollToMock(); + }); + + test('context api when el is null', () => { + const contextRef = createRef(); + const elRef = createRef(); + render( + + + , + ); + + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 0 }); + contextRef.current?.scrollTo(10, 10); + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 0 }); + contextRef.current?.scrollTo(); + expect(contextRef.current?.getScroll()).toEqual({ x: 0, y: 0 }); + }); + }); +}); + +/** + * В Jest через `el.getAttribute('style')` не получается получить свойство. + */ +function jestWorkaroundGetOverscrollBehaviorPropertyValue(el: HTMLElement) { + return el.style.overscrollBehavior; +} + +function getStyleAttributeObject(el: HTMLElement | null) { + const style = el ? el.getAttribute('style') : null; + + if (style === null) { + return null; + } + + return Object.fromEntries( + style + .split(';') + .map((style) => + style + .trim() + .split(':') + .map((part) => part && part.trim()), + ) + .filter(([key, value]) => key && value) + .map(([key, value]) => [key, value]), + ); +} + +function mockWindowMeasures(width: number, height: number) { + const originalW = window.innerWidth; + const originalH = window.innerHeight; + Object.defineProperty(window, 'innerWidth', { configurable: true, value: width }); + Object.defineProperty(window, 'innerHeight', { configurable: true, value: height }); + return function clearMock() { + Object.defineProperty(window, 'innerWidth', { configurable: true, value: originalW }); + Object.defineProperty(window, 'innerHeight', { configurable: true, value: originalH }); + }; +} + +function mockWindowScrollTo() { + const original = window.scrollTo; + Object.defineProperty(window, 'scrollTo', { + configurable: true, + value: (x: number, y: number) => { + Object.defineProperty(window, 'pageXOffset', { configurable: true, value: x }); + Object.defineProperty(window, 'pageYOffset', { configurable: true, value: y }); + }, + }); + return function clearMock() { + Object.defineProperty(window, 'scrollTo', { configurable: true, value: original }); + }; +} + +function mockElementMeasures(el: HTMLElement, width: number, height: number) { + const originalW = el.clientWidth; + const originalH = el.clientHeight; + Object.defineProperty(el, 'clientWidth', { configurable: true, value: width }); + Object.defineProperty(el, 'clientHeight', { configurable: true, value: height }); + return function clearMock() { + Object.defineProperty(el, 'clientWidth', { configurable: true, value: originalW }); + Object.defineProperty(el, 'clientHeight', { configurable: true, value: originalH }); + }; +} + +function mockElementScroll(el: HTMLElement, width: number, height: number) { + const originalW = el.scrollWidth; + const originalH = el.scrollHeight; + Object.defineProperty(el, 'scrollWidth', { configurable: true, value: width }); + Object.defineProperty(el, 'scrollHeight', { configurable: true, value: height }); + return function clearMock() { + Object.defineProperty(el, 'scrollWidth', { configurable: true, value: originalW }); + Object.defineProperty(el, 'scrollHeight', { configurable: true, value: originalH }); + }; +} + +function mockElementScrollTo(el: HTMLElement) { + const original = el.scrollTo.bind(el); + Object.defineProperty(el, 'scrollTo', { + configurable: true, + value: (x: number, y: number) => { + Object.defineProperty(el, 'scrollLeft', { configurable: true, value: x }); + Object.defineProperty(el, 'scrollTop', { configurable: true, value: y }); + }, + }); + return function clearMock() { + Object.defineProperty(el, 'scrollTo', { configurable: true, value: original }); + }; +} diff --git a/packages/vkui/src/components/AppRoot/ScrollContext.tsx b/packages/vkui/src/components/AppRoot/ScrollContext.tsx index b7ca230642..93c80091de 100644 --- a/packages/vkui/src/components/AppRoot/ScrollContext.tsx +++ b/packages/vkui/src/components/AppRoot/ScrollContext.tsx @@ -13,6 +13,7 @@ const clearDisableScrollStyle = (node: HTMLElement) => { top: '', left: '', right: '', + overscrollBehavior: '', overflowY: '', overflowX: '', }); @@ -60,11 +61,8 @@ export const useScroll = (): ScrollContextInterface => React.useContext(ScrollCo * Если счетчик больше нуля, требуется заблокировать прокрутку */ function useScrollLockController(enableScrollLock: () => void, disableScrollLock: () => void) { - const { - count, - increment: incrementScrollLockCounter, - decrement: decrementScrollLockCounter, - } = useCounter(0); + const [count, { increment: incrementScrollLockCounter, decrement: decrementScrollLockCounter }] = + useCounter(0); const needLockScroll = count > 0; @@ -120,11 +118,13 @@ export const GlobalScrollController = ({ children }: ScrollControllerProps): Rea const overflowY = window!.innerWidth > document!.documentElement.clientWidth ? 'scroll' : ''; const overflowX = window!.innerHeight > document!.documentElement.clientHeight ? 'scroll' : ''; + Object.assign(document!.documentElement.style, { overscrollBehavior: 'none' }); Object.assign(document!.body.style, { position: 'fixed', top: `-${scrollY}px`, left: `-${scrollX}px`, right: '0', + overscrollBehavior: 'none', overflowY, overflowX, }); @@ -134,6 +134,7 @@ export const GlobalScrollController = ({ children }: ScrollControllerProps): Rea const scrollY = document!.body.style.top; const scrollX = document!.body.style.left; + Object.assign(document!.documentElement.style, { overscrollBehavior: '' }); clearDisableScrollStyle(document!.body); window!.scrollTo(-parseInt(scrollX || '0'), -parseInt(scrollY || '0')); }, [document, window]); diff --git a/packages/vkui/src/components/Avatar/Readme.md b/packages/vkui/src/components/Avatar/Readme.md index f16b90476f..5185a87150 100644 --- a/packages/vkui/src/components/Avatar/Readme.md +++ b/packages/vkui/src/components/Avatar/Readme.md @@ -10,7 +10,7 @@ ```jsx const Default = () => { return ( - По умолчанию
}> + По умолчанию
}> }>Татьяна Плуталова ); @@ -19,7 +19,7 @@ const Default = () => { const Fallbacks = () => { return ( Фолбеки
} + header={
Фолбеки
} description="На случаи если аватарка не загрузилась или она отсутсвует" > { const [overlay, setOverlay] = React.useState(); return ( - Другие возможности
}> + Другие возможности
}> setGradientColor(e.target.value)} + onChange={setGradientColor} /> @@ -196,7 +196,7 @@ const AvatarPropsForm = ({ { label: 'preset="online-mobile"', value: 'online-mobile' }, ]} value={badge} - onChange={(e) => setBadge(e.target.value)} + onChange={setBadge} /> @@ -208,7 +208,7 @@ const AvatarPropsForm = ({ ]} value={badgeBackground} disabled={badge !== 'children'} - onChange={(e) => setBadgeBackground(e.target.value)} + onChange={setBadgeBackground} /> @@ -231,7 +231,7 @@ const AvatarPropsForm = ({ ]} value={overlayTheme} disabled={!overlay} - onChange={(e) => setOverlayTheme(e.target.value)} + onChange={setOverlayTheme} /> @@ -243,7 +243,7 @@ const AvatarPropsForm = ({ ]} value={overlayVisibility} disabled={!overlay} - onChange={(e) => setOverlayVisibility(e.target.value)} + onChange={setOverlayVisibility} /> diff --git a/packages/vkui/src/components/Badge/Badge.tsx b/packages/vkui/src/components/Badge/Badge.tsx index fa8dfb30d1..ce898210cf 100644 --- a/packages/vkui/src/components/Badge/Badge.tsx +++ b/packages/vkui/src/components/Badge/Badge.tsx @@ -14,8 +14,6 @@ export interface BadgeProps extends RootComponentProps { /** * @see https://vkcom.github.io/VKUI/#/Badge - * - * TODO [>=7]: переименовать в Dot */ export const Badge = ({ mode = 'new', children, ...restProps }: BadgeProps): React.ReactNode => ( { Бейдж - В пунктах меню
}> + В пунктах меню
}> } @@ -24,7 +24,7 @@ const Example = () => { - В переключателях
}> + В переключателях
}> ({ diff --git a/packages/vkui/src/components/Button/Button.module.css b/packages/vkui/src/components/Button/Button.module.css index 23c0f0fbc6..2d667330c1 100644 --- a/packages/vkui/src/components/Button/Button.module.css +++ b/packages/vkui/src/components/Button/Button.module.css @@ -18,8 +18,9 @@ border-radius: var(--vkui--size_border_radius_rounded--regular); } -.loading { - cursor: progress; +.loading:not(.disabled) { + /* stylelint-disable-next-line declaration-no-important -- перебиваем disabled из Clickable */ + cursor: progress !important; } .singleIcon { @@ -59,28 +60,22 @@ text-align: start; } -.alignCenter { -} - .alignRight .in { justify-content: flex-end; text-align: end; } -.host[disabled] { +.disabled { opacity: var(--vkui--opacity_disable); } -.modePrimary[disabled]:not(.appearanceOverlay):not(.appearanceNegative):not(.appearancePositive), -.modeSecondary[disabled]:not(.appearanceOverlay), -.modeTertiary[disabled]:not(.appearanceOverlay), -.modeOutline[disabled]:not(.appearanceOverlay) { +.modePrimary.disabled:not(.appearanceOverlay):not(.appearanceNegative):not(.appearancePositive), +.modeSecondary.disabled:not(.appearanceOverlay), +.modeTertiary.disabled:not(.appearanceOverlay), +.modeOutline.disabled:not(.appearanceOverlay) { opacity: 0.64; } -.withIcon { -} - .content { white-space: nowrap; text-overflow: ellipsis; @@ -189,7 +184,6 @@ } .spinner { - color: currentColor; position: absolute; inset: 0; } @@ -237,15 +231,15 @@ } .modePrimary.appearanceNeutral { - background-color: var(--vkui--color_background_secondary); + background-color: var(--vkui--color_background_content_inverse); } .modePrimary.appearanceNeutral.hover { - background-color: var(--vkui--color_background_secondary--hover); + background-color: var(--vkui--color_background_content_inverse--hover); } .modePrimary.appearanceNeutral.active { - background-color: var(--vkui--color_background_secondary--active); + background-color: var(--vkui--color_background_content_inverse--active); } .modePrimary.appearanceAccentInvariable { @@ -308,6 +302,10 @@ color: var(--vkui--color_text_primary); } +.host.modePrimary.appearanceNeutral { + color: var(--vkui--color_text_contrast_themed); +} + .host.appearanceAccentInvariable { color: var(--vkui--color_text_accent); } @@ -651,8 +649,8 @@ } .modePrimary.appearanceNeutral { - --vkui_internal--counter_inherit_background: var(--vkui--color_background_contrast); - --vkui_internal--counter_inherit_color: var(--vkui--color_text_primary_invariably); + --vkui_internal--counter_inherit_background: var(--vkui--color_text_contrast_themed); + --vkui_internal--counter_inherit_color: var(--vkui--color_background_content_inverse); } .modeSecondary.appearanceNeutral, diff --git a/packages/vkui/src/components/Button/Button.tsx b/packages/vkui/src/components/Button/Button.tsx index c9e04ddfb2..0320e872b3 100644 --- a/packages/vkui/src/components/Button/Button.tsx +++ b/packages/vkui/src/components/Button/Button.tsx @@ -36,7 +36,6 @@ const stylesAppearance = { const stylesAlign = { left: styles.alignLeft, - center: styles.alignCenter, right: styles.alignRight, }; @@ -77,9 +76,9 @@ export const Button = ({ className, disableSpinnerAnimation, rounded, + disabled, ...restProps }: ButtonProps): React.ReactNode => { - const hasIcons = Boolean(before || after); const hasIconOnly = !children && Boolean(after) !== Boolean(before); const { sizeY = 'none' } = useAdaptivity(); const platform = usePlatform(); @@ -90,6 +89,7 @@ export const Button = ({ activeMode={styles.active} Component={restProps.href ? 'a' : 'button'} focusVisibleMode="outside" + disabled={loading || disabled} {...restProps} onClick={loading ? undefined : onClick} className={classNames( @@ -98,19 +98,24 @@ export const Button = ({ stylesSize[size], stylesMode[mode], stylesAppearance[appearance], - stylesAlign[align], + align !== 'center' && stylesAlign[align], sizeY !== 'compact' && sizeYClassNames[sizeY], platform === 'ios' && styles.ios, stretched && styles.stretched, - hasIcons && styles.withIcon, hasIconOnly && !stretched && styles.singleIcon, loading && styles.loading, rounded && styles.rounded, + disabled && styles.disabled, )} getRootRef={getRootRef} > {loading && ( - + )} {hasReactNode(before) && ( diff --git a/packages/vkui/src/components/Button/Readme.md b/packages/vkui/src/components/Button/Readme.md index 3188f5d5fc..0c03463f64 100644 --- a/packages/vkui/src/components/Button/Readme.md +++ b/packages/vkui/src/components/Button/Readme.md @@ -71,7 +71,7 @@ const Example = () => { setSize(e.target.value)} + onChange={setSize} options={[ { label: 's', value: 's' }, { label: 'm', value: 'm' }, @@ -96,7 +96,7 @@ const Example = () => { setSizeY(e.target.value)} + onChange={setSizeY} options={[ { label: 'compact', value: 'compact' }, { diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-dark-1-snap.png index 789925d9e6..dc0851d1ed 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3092aa36146890972f90d116a50fc8a952e1e4da62474c3e5d73b818b15dab07 -size 388892 +oid sha256:22396a491235de9ec922909316de6fdf098efac7bb6014a2d0997770a58af83a +size 388806 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-light-1-snap.png index feb8fe1f25..1b615f5516 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dd6e3238c159fa30bb5923f6940af26c2458fe1931b2dddcc3adae0a0127f4f -size 395901 +oid sha256:0d0fc459e6d7cfe4cb69b5170e226b379d3318a7cfe0244ee2e58519b5f868f8 +size 396056 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-dark-1-snap.png index 644eeea004..fd784d1edc 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88c3f0cf2c0d305f4fed7c0662e465b364f5c4188a8c52b37166830f933eaa9a -size 176602 +oid sha256:6f239cdb306f665b4552b035c3b8957a283da650683096a573dc314b4c4185b3 +size 176490 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-light-1-snap.png index 2ad9bd4a21..c31fbc2059 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbe903780cbc610056a43890a7be9bbc5c85d5d6a613cec33d2ccc0c276e378a -size 177219 +oid sha256:fbbcd70550e8e81a0427bf33b7465a85b13811f2be9fa3769abefc0ad5670497 +size 177624 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-dark-1-snap.png index c2863b8ab6..afa5ce3553 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62924e27016ef61ca84101a63d7e55678be337325af7e963215614793fe7ef2c -size 184119 +oid sha256:a669a6fe9f21f658c39792cb6abed11a29e2b8206c079d981cba9a209587c7c5 +size 184032 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-light-1-snap.png index 0fb3116361..2b01e127e8 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea6ca76acd0974d076f475061cf9ecbcb7e2e8fbf3fc2467de7fda6e883e34bc -size 184631 +oid sha256:e680815ec32f32bdbb77e43e588593563392871275cc211708e1449639be6450 +size 185057 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-dark-1-snap.png index f6dbc3cdd4..0b4fca098e 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:919133aa1bb643c9ba22c3ae9e0b5edfd9973cdde4b29830e9ede4874df33ac0 -size 163416 +oid sha256:cf2b790bc7adbe7ccc8bb5f8b94dc9627418c430c6ea1a624656fe2dc2de229e +size 163345 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-light-1-snap.png index 301eaa6b96..1d7361669a 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58420ebdbc7599fc8b4455dbec6fa43660753beffad845a8fdee8a5aec9dd2d1 -size 165530 +oid sha256:0e13c279a7914ba1eebef7a93db428a85aedac7ad44a9805417edc1adb8a7da7 +size 165772 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-dark-1-snap.png index 8be6ee574d..a6fb12da28 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d65c491fbf077542ff8c3c9ebd7688d9ce688eac63718bc968c22ea38b88c96 -size 223806 +oid sha256:5bb7a596e7e427249626a75759260662e3fbeb00d2de4f8d7944d30cf0f5d7de +size 223563 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-light-1-snap.png index 12adc9e2b3..c2ff8734c9 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd8d8ebb1afdf16f5a74892fb3e49784d4ad46176f92a1bfa6102055ac5fe20c -size 225931 +oid sha256:1cddc21c0246522cb814792148f62a7bb821a0a6e3683dd15b278702e5cbd2cb +size 225665 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-dark-1-snap.png index 92a2a5e711..3cff152e19 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e4ef4b4ed4d85071459aed8b132e425791256ae02ef1ef4efa8ec9aa7045599 -size 167058 +oid sha256:b1476e80ddb7eaa32c9245d7e3f79da75d2cb61cb0aaef9adacf3263aef15e71 +size 167051 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-light-1-snap.png index f0a404c777..61843d792c 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-counter-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7255147eefe9cef5fe0dc276b95eb3e693b07f47d67bd4720e17f9a3a2f56d0b -size 169220 +oid sha256:8b64c498d86952c125316fd130a38a3fe276a31b5c9abb31d4ac31230b38aa1d +size 169293 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-dark-1-snap.png index 88b969abb6..40d142db36 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce416b594934bf9567a51395027f1f88f12a45cbb03e16237eb714f03c3a819f -size 406922 +oid sha256:6f13ee04cdf34ab9e90c89b49ca52bf2add18d93ca04ed2ff9ee22eeab244056 +size 406891 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-light-1-snap.png index 0878c41001..d47d04d66f 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5fa52a93d06fd81eef472a76afa449a01cfe9b5379d10a1818585068a2f1daf -size 411941 +oid sha256:5a24debe5c1e3f6aaa90bab72c6cfed3ac0a7af72e8cff24da9bd27f2c6c5d69 +size 412145 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-dark-1-snap.png index c4d3bdc989..469317db8c 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:777852c783e169ddce84d93f51ceb45ce8998d9e204d9e204d86be0a06db8358 -size 300373 +oid sha256:e1bfbc375511e209aa17ea9bb539e3837142827f74d2d22b501c6bd26188a927 +size 300204 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-light-1-snap.png index 15b7efef15..31e80a3ee6 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07f5b910286af8236b650af2400d73fc061549a5da209f8550b4e58bc2b683c3 -size 301670 +oid sha256:a2c4011444851e1268117596a8fcf81faedff64bc212eac8be52b2e3ac8fa65e +size 301292 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-dark-1-snap.png index 9423a5c578..7e0cddd2f4 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:972c6d22a34ef0c2f0ec8f7818a1bee9752497193c8268ca08810c4c833c0348 -size 310975 +oid sha256:0a03ddc4419460e2276a4337203af50dd64a7e82180cda59f38ee47045acde22 +size 311040 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-light-1-snap.png index 2dfb322bab..210ce20afe 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12e5495a5f1c1a8a07c7bec2e9219497b959113f1bb580cbb44439710f19d392 -size 312614 +oid sha256:1f9a1f4a0e40e98cae1143743e28790607d86726c93e28ae204e252d755deb03 +size 312205 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-dark-1-snap.png index bf383a09bf..7dbd899cf8 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c794f1356f3e67bac6a7b451b4e3c6b5497d45d99a2dd986feeda3961317979a -size 298606 +oid sha256:d0b3ce249d8af2135be1c9bfc72c9e2a2a6a2207d26393ab5954777d60e6bf1e +size 298699 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-light-1-snap.png index 086990c74c..36c34ee6f1 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16ba15653052de5c467b32ebe2e914d53a3de8288eb299c5cb77606da8fe1952 -size 301643 +oid sha256:a7df39f22ddf887a60be7f8934ae6ca8b55a1cd2403b84241a960ae60586203e +size 301042 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-dark-1-snap.png index 2d867f048a..8333852b0d 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02b9cfb4f5412821de210b2275dd9a8cf9a8f8083c51a903fd6cf7be3db248d3 -size 391155 +oid sha256:5dd728652b82b982ae3dd0b9e704107b394ccc49c73fc17d85b9d205041f831d +size 391397 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-light-1-snap.png index 8b7aa3f8e9..85864523b6 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dee3de39b803f6cfa94b8afadec4fae2f4a2c271e782eddc7cca524f2b2492b -size 402039 +oid sha256:e4c1ec019760f116b828dad8b87a4b6a5fd4f2b574d3da7a030f49bccffba987 +size 401657 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-dark-1-snap.png index d55da2609e..3f54ca7047 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b638402977875968f232be3b9791f64833097c8cc7e389962ba31511f5bc7887 -size 304979 +oid sha256:e38ee4bf852652c879f9c904f4e14dc27f064e54667d833d7c5da42cd065891c +size 305077 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-light-1-snap.png index 1ab11f1973..18ab665174 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-state-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10176d2e85ee457ce3655af40b0e9c9a0bc586d0712b7d423d121b16e7148c94 -size 309389 +oid sha256:061adb8eef3e75a7f90a4a86966c0c7636cb59e2764e1c8816b4a2123dc7c80b +size 308723 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-dark-1-snap.png index bc7ef5ea65..87d2c2ed2d 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b276da32f91164640df931f14b559a416d2db5b3451cbd59189d145ccdb888fc -size 300121 +oid sha256:e73bbcc6d5eb0b18de9692ebabfaaa9ddb2e7af633b3b38cf93154536a4fff2f +size 300097 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-light-1-snap.png index 3a825016e2..058219513d 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de99ea144b3bae0375d94867f3dc5164a618178e40a5e054599a184ac3ccc36b -size 300327 +oid sha256:bba2462a6aa21159db3b598db58f8ad4deee90c6a652485d304d7737d65649b2 +size 300589 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-dark-1-snap.png index 9837661073..76e58c2a6b 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20c84b4d5867fd70ca9a3676aa2f7075d7cdcf4d23de3fb4a37117a5514a1d5f -size 439091 +oid sha256:caae5e8fb7e8f0035352c8d5826fdcfbfccc234bd3c2aa843cf1e74632f7a068 +size 438961 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-light-1-snap.png index c8288886d5..108ad918db 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c2700835a3ce1175b13cafa443270da563620ca85ff04c2f76b4cd4ed86b9a5 -size 435555 +oid sha256:5c5e2866ffd964ff22b62dfccc54a281a690e36f28d18c793e5406f72601677d +size 435217 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-dark-1-snap.png index 68ffeb2e48..54339ad589 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59d1fd71c8c6da53724fd82310f9b62d3d919c7f64f100f2703c82e93977314d -size 307561 +oid sha256:adab8e11ac4cd328c2df9517b67979d0737694eb7173495f628e41972e551df1 +size 307583 diff --git a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-light-1-snap.png index f1585465a0..3c4b52e722 100644 --- a/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Button/__image_snapshots__/button-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c426e7965bcc1e1f271663c45e94e35790d16b23f3c6844bd1b8f1b2c0d6c839 -size 307181 +oid sha256:9ed6fad2fd0b779dfb1e20b565cb9376551a7480d844d5383b470199ef376eb7 +size 307221 diff --git a/packages/vkui/src/components/ButtonGroup/Readme.md b/packages/vkui/src/components/ButtonGroup/Readme.md index 04ef8cd919..619937b0d2 100644 --- a/packages/vkui/src/components/ButtonGroup/Readme.md +++ b/packages/vkui/src/components/ButtonGroup/Readme.md @@ -32,7 +32,7 @@ const ButtonGroupPropsForm = ({ handleChange('gap', e.target.value)} + onChange={(newValue) => handleChange('gap', newValue)} options={[ { label: 'none', value: 'none' }, { label: 'space', value: 'space' }, @@ -55,7 +55,7 @@ const ButtonGroupPropsForm = ({ setSizeY(e.target.value)} + onChange={setSizeY} options={[ { label: 'compact', value: 'compact' }, { label: 'regular', value: 'regular' }, diff --git a/packages/vkui/src/components/Calendar/Readme.md b/packages/vkui/src/components/Calendar/Readme.md index 423f0e6715..0b0ad69404 100644 --- a/packages/vkui/src/components/Calendar/Readme.md +++ b/packages/vkui/src/components/Calendar/Readme.md @@ -60,7 +60,7 @@ const Example = () => { setSize(e.target.value)} + onChange={setSize} options={[ { label: 's', diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-dark-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-dark-1-snap.png index 704ce9b593..69a37b0f97 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f06ec74481cd32106c3fb4b491d57bf3de03779b321621e53bea6acfab5eb873 -size 277952 +oid sha256:229888482e06d53a3775b717ba81f3cf1f6d2c04df9f0e14e011c390b4b640ca +size 277954 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-light-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-light-1-snap.png index 9804c9979c..08c1d5ca4e 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:555bdd4d0b4db09cc696b52de6f74bdf8961163fb1d479169cc854a903fee482 -size 276830 +oid sha256:4ec410338ad4c2f192c672fec781975ea957a93043ada846dbf88ef918120ab3 +size 276832 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-dark-1-snap.png index b505a93dcd..399675032b 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20ac360db98796a85758f30f70ade565ed3517f10b1a9bb2f99c04154eab64bf -size 288998 +oid sha256:0632bc18aa2f604cd0bf936b72781ab2c933f9afdf59c0de947eca7008cbb883 +size 289036 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-light-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-light-1-snap.png index efff732205..5539694e2a 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a6f3c9335a0cbd01d74e5d8ae91ba58ea039157a0f8ada4c17804a5c749c615 -size 286851 +oid sha256:06ae7446bfa379b01af1379eb5ebde2b5a5d3a508dfc12511a6e1801a22e282b +size 286925 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-dark-1-snap.png index ae850a975d..aaa2b998b6 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:034c6122bed6985cae91748dbdf375833fbf66151bad96eccf6250f7c86cbf0b -size 282847 +oid sha256:0783b793cae29a30e87fd4d0698a60c987886542dbb61253f7ec94f9bb85cf7c +size 282782 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-light-1-snap.png index 03f8bf195e..7394a76acd 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:071dc745a23353675717ad2bd1e1d52dcb1f5306ede9962a92ae46536093c2d5 -size 287356 +oid sha256:ded1d02f13da45e85a783beb00d95b7feb7a11fa2e1b4a541d90c97a522540ea +size 287378 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-dark-1-snap.png index 6a43b312ef..9267de1c5c 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:527f64064d75a02f19d25590d8b25e5e698201683393311e28beb04c0d65c9df -size 467658 +oid sha256:b18d52c0ed919daf17b5bcf788d9c70b5987876590997b0edcf8b0e0c603d63b +size 467531 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-light-1-snap.png index 2e831d594e..e152de59aa 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74cebadd843079a33ae0ce8138887701269f7dedb7d35acbba716833593e7c52 -size 461846 +oid sha256:17a7aa9817be19e7f0752deaef411bb019d23089518bb953d5b0bc5192fd213e +size 461650 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-dark-1-snap.png index 5e519a59e1..8a819d369e 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c82b3940c831f7889dbe86b1980d967ef798878ab68bc694f34f940975adce98 -size 293360 +oid sha256:7ac03164ac54fc9089388d898badba320259612358972ad40fd6dd7d2024ec29 +size 293338 diff --git a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-light-1-snap.png index d4dbe6f816..5e1d7e5f39 100644 --- a/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Calendar/__image_snapshots__/calendar-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc8a07ff6f9a72de1c72f134726ba34e760e87e1ece5048aa20192075c7ecc99 -size 298489 +oid sha256:fc51188bf46efdac54291c54e304d64c93f3eb1fa30b56053d7e551e76a8f004 +size 298522 diff --git a/packages/vkui/src/components/CalendarHeader/CalendarHeader.tsx b/packages/vkui/src/components/CalendarHeader/CalendarHeader.tsx index 5d26a0dc45..29d0e67426 100644 --- a/packages/vkui/src/components/CalendarHeader/CalendarHeader.tsx +++ b/packages/vkui/src/components/CalendarHeader/CalendarHeader.tsx @@ -12,7 +12,7 @@ import { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, getMonths, getYears } from '../../l import type { HTMLAttributesWithRootRef } from '../../types'; import { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider'; import { useConfigProvider } from '../ConfigProvider/ConfigProviderContext'; -import { CustomSelect } from '../CustomSelect/CustomSelect'; +import { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect'; import { RootComponent } from '../RootComponent/RootComponent'; import { Tappable } from '../Tappable/Tappable'; import { Paragraph } from '../Typography/Paragraph/Paragraph'; @@ -80,13 +80,11 @@ export const CalendarHeader = ({ }: CalendarHeaderProps): React.ReactNode => { const { locale } = useConfigProvider(); const onMonthsChange = React.useCallback( - (event: React.ChangeEvent) => - onChange(setMonth(viewDate, Number(event.target.value))), + (newValue: SelectProps['value']) => onChange(setMonth(viewDate, Number(newValue))), [onChange, viewDate], ); const onYearChange = React.useCallback( - (event: React.ChangeEvent) => - onChange(setYear(viewDate, Number(event.target.value))), + (newValue: SelectProps['value']) => onChange(setYear(viewDate, Number(newValue))), [onChange, viewDate], ); diff --git a/packages/vkui/src/components/CalendarRange/Readme.md b/packages/vkui/src/components/CalendarRange/Readme.md index b4c96ce412..4faf95dad3 100644 --- a/packages/vkui/src/components/CalendarRange/Readme.md +++ b/packages/vkui/src/components/CalendarRange/Readme.md @@ -37,7 +37,7 @@ const Example = () => { setLocale(e.target.value)} + onChange={setLocale} options={[ { label: 'ru', diff --git a/packages/vkui/src/components/DatePicker/DatePicker.e2e-playground.tsx b/packages/vkui/src/components/DatePicker/DatePicker.e2e-playground.tsx deleted file mode 100644 index dc352916c6..0000000000 --- a/packages/vkui/src/components/DatePicker/DatePicker.e2e-playground.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { ComponentPlayground, type ComponentPlaygroundProps } from '@vkui-e2e/playground-helpers'; -import { - AdaptivityProvider, - type AdaptivityProviderProps, -} from '../AdaptivityProvider/AdaptivityProvider'; -import { DatePicker, type DatePickerProps } from './DatePicker'; - -type DatePickerPropsWithAdaptivity = DatePickerProps & - Pick; - -export const DatePickerPlayground = (props: ComponentPlaygroundProps) => { - return ( - - {({ hasPointer, sizeY, ...props }: DatePickerPropsWithAdaptivity) => ( - - - - )} - - ); -}; diff --git a/packages/vkui/src/components/DatePicker/DatePicker.e2e.tsx b/packages/vkui/src/components/DatePicker/DatePicker.e2e.tsx deleted file mode 100644 index ad65e8761c..0000000000 --- a/packages/vkui/src/components/DatePicker/DatePicker.e2e.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { test } from '@vkui-e2e/test'; -import { DatePickerPlayground } from './DatePicker.e2e-playground'; - -test('DatePicker', async ({ - mount, - expectScreenshotClippedToContent, - componentPlaygroundProps, -}) => { - await mount(); - await expectScreenshotClippedToContent(); -}); diff --git a/packages/vkui/src/components/DatePicker/DatePicker.module.css b/packages/vkui/src/components/DatePicker/DatePicker.module.css deleted file mode 100644 index 310d5a57be..0000000000 --- a/packages/vkui/src/components/DatePicker/DatePicker.module.css +++ /dev/null @@ -1,31 +0,0 @@ -.host { - margin: 0; - padding: 0; - border: 0; -} - -.container { - inline-size: 100%; - display: flex; - flex-direction: row; -} - -.day { - min-inline-size: 72px; -} - -.month { - min-inline-size: 0; - display: flex; - flex: 1 0 0; - padding-block: 0; - padding-inline: 8px; -} - -.year { - min-inline-size: 92px; -} - -.monthSelect { - inline-size: 100%; -} diff --git a/packages/vkui/src/components/DatePicker/DatePicker.stories.tsx b/packages/vkui/src/components/DatePicker/DatePicker.stories.tsx deleted file mode 100644 index 48b54587bd..0000000000 --- a/packages/vkui/src/components/DatePicker/DatePicker.stories.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import { fn } from '@storybook/test'; -import { CanvasFullLayout, DisableCartesianParam } from '../../storybook/constants'; -import { DatePicker, type DatePickerProps } from './DatePicker'; - -const story: Meta = { - title: 'Forms/DatePicker', - component: DatePicker, - parameters: { ...CanvasFullLayout, ...DisableCartesianParam }, - args: { onDateChange: fn() }, -}; - -export default story; - -type Story = StoryObj; - -export const Playground: Story = { - args: { - min: { day: 1, month: 1, year: 1901 }, - max: { day: 1, month: 1, year: 2006 }, - dayPlaceholder: 'ДД', - monthPlaceholder: 'ММММ', - yearPlaceholder: 'ГГГГ', - }, -}; diff --git a/packages/vkui/src/components/DatePicker/DatePicker.test.tsx b/packages/vkui/src/components/DatePicker/DatePicker.test.tsx deleted file mode 100644 index f5ffc5e5ec..0000000000 --- a/packages/vkui/src/components/DatePicker/DatePicker.test.tsx +++ /dev/null @@ -1,216 +0,0 @@ -import { fireEvent, render, screen } from '@testing-library/react'; -import { baselineComponent, fakeTimers, userEvent } from '../../testing/utils'; -import { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider'; -import { DatePicker, type DatePickerProps } from './DatePicker'; - -const getDate = (year = 2021, month = 1, day = 1) => ({ year, month, day }); -const getByName = (name: string) => document.getElementsByName(name)[0] as HTMLInputElement; - -const DatePickerCustom = (props: DatePickerProps) => { - return ( - - - - ); -}; -const DatePickerNative = (props: DatePickerProps) => { - return ( - - - - ); -}; - -describe('DatePicker', () => { - fakeTimers(); - baselineComponent(DatePicker, { - // TODO [a11y]: "Exceeded timeout of 5000 ms for a test. - // Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." - a11y: false, - }); - - describe('custom', () => { - const select = async (name: string, value: number) => - await userEvent.selectOptions(getByName(name), String(value)); - - it.each([ - ['uncontrolled', 'defaultValue'], - ['controlled', 'value'], - ])('renders value when %s', (_type, propName) => { - const props = { [propName]: getDate() }; - render(); - expect(getByName('year')).toHaveValue('2021'); - expect(getByName('month')).toHaveValue('1'); - expect(getByName('day')).toHaveValue('1'); - expect(getByName('date')).toHaveValue('2021-01-01'); - }); - - it('fires change', async () => { - let date = getDate(); - render( (date = v)} />); - - await select('year', 2019); - expect(date).toEqual(getDate(2019, 1, 1)); - expect(getByName('date')).toHaveValue('2019-01-01'); - - await select('month', 5); - expect(date).toEqual(getDate(2019, 5, 1)); - expect(getByName('date')).toHaveValue('2019-05-01'); - - await select('day', 5); - expect(date).toEqual(getDate(2019, 5, 5)); - expect(getByName('date')).toHaveValue('2019-05-05'); - }); - - describe('renders options', () => { - const getOptions = (name: string) => - Array.from(getByName(name).querySelectorAll('option')).map((e) => e.value); - - it('year, with min/max', () => { - render(); - expect(getOptions('year')).toEqual(['2020', '2019', '2018']); - }); - - describe('month', () => { - const months = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']; - - it('without min / max', () => { - render(); - expect(getOptions('month')).toEqual(months); - }); - - it.skip('respects min', async () => { - render(); - expect(getOptions('month')).toEqual(months); - await select('year', 2022); - expect(getOptions('month')).toEqual(['11', '12']); - }); - - it.skip('respects max', async () => { - render(); - expect(getOptions('month')).toEqual(months); - await select('year', 2018); - expect(getOptions('month')).toEqual(['1', '2']); - }); - }); - - describe('day', () => { - const days = (count: number) => new Array(count).fill(0).map((_, i) => String(i + 1)); - - it('depends on month', async () => { - render(); - // allows 31 by default - expect(getOptions('day')).toEqual(days(31)); - - await select('month', 5); - expect(getOptions('day')).toEqual(days(31)); - - await select('month', 4); - expect(getOptions('day')).toEqual(days(30)); - }); - - describe('respects gap year', () => { - it('allows 29 by default', async () => { - render(); - await select('month', 2); - expect(getOptions('day')).toEqual(days(29)); - }); - - it('allows 29 in gap year', () => { - render(); - expect(getOptions('day')).toEqual(days(29)); - }); - - it('allows 28 in non-gap year', () => { - render(); - expect(getOptions('day')).toEqual(days(28)); - }); - }); - - it.skip('respects min', () => { - const min = getDate(2022, 11, 29); - render(); - expect(getOptions('day')).toEqual(['29', '30']); - }); - - it.skip('respects max', () => { - const max = getDate(2018, 2, 2); - render(); - expect(getOptions('day')).toEqual(['1', '2']); - }); - }); - }); - - it('respects outer value when controlled', async () => { - const { rerender } = render(); - expect(getByName('date')).toHaveValue('2021-01-01'); - rerender(); - expect(getByName('date')).toHaveValue('2021-01-02'); - }); - }); - - describe('native', () => { - const getInput = () => document.querySelector('input') as Element; - - it.each([ - ['uncontrolled', 'defaultValue'], - ['controlled', 'value'], - ])('renders value when %s', (_type, propName) => { - const props = { [propName]: getDate() }; - render(); - expect(getInput()).toHaveValue('2021-01-01'); - }); - - it('sets min/max', () => { - render(); - expect(getInput()).toHaveAttribute('min', '2021-01-01'); - expect(getInput()).toHaveAttribute('max', '2021-01-01'); - }); - - it('fires change', async () => { - let date = getDate(); - render( (date = v)} />); - - await userEvent.type(getInput(), '2019-05-05'); - expect(date).toEqual(getDate(2019, 5, 5)); - }); - - it('resets form when uncontrolled', () => { - render( -
- - , - ); - fireEvent.change(getByName('date'), { target: { value: '2024-02-03' } }); - expect(getByName('date')).toHaveValue('2024-02-03'); - screen.getByTestId('form').reset(); - expect(getByName('date')).toHaveValue(''); - }); - it('resets form with defaultValue when uncontrolled', () => { - render( -
- - , - ); - fireEvent.change(getByName('date'), { target: { value: '2024-02-03' } }); - expect(getByName('date')).toHaveValue('2024-02-03'); - screen.getByTestId('form').reset(); - expect(getByName('date')).toHaveValue('2021-01-01'); - }); - - it('respects outer value when controlled', async () => { - const { rerender } = render( -
- - , - ); - expect(getByName('date')).toHaveValue('2021-01-01'); - rerender( -
- - , - ); - expect(getByName('date')).toHaveValue('2021-01-02'); - }); - }); -}); diff --git a/packages/vkui/src/components/DatePicker/DatePicker.tsx b/packages/vkui/src/components/DatePicker/DatePicker.tsx deleted file mode 100644 index d09e2f6497..0000000000 --- a/packages/vkui/src/components/DatePicker/DatePicker.tsx +++ /dev/null @@ -1,244 +0,0 @@ -'use client'; - -import * as React from 'react'; -import { leadingZero } from '@vkontakte/vkjs'; -import { clamp } from '../../helpers/math'; -import { range } from '../../helpers/range'; -import { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer'; -import { useCustomEnsuredControl } from '../../hooks/useEnsuredControl'; -import { useNativeFormResetListener } from '../../hooks/useNativeFormResetListener'; -import type { HasOnlyExpectedProps, HTMLAttributesWithRootRef } from '../../types'; -import { CustomSelect } from '../CustomSelect/CustomSelect'; -import { Input, type InputProps } from '../Input/Input'; -import { RootComponent } from '../RootComponent/RootComponent'; -import styles from './DatePicker.module.css'; - -const DefaultMonths: string[] = [ - 'Января', - 'Февраля', - 'Марта', - 'Апреля', - 'Мая', - 'Июня', - 'Июля', - 'Августа', - 'Сентября', - 'Октября', - 'Ноября', - 'Декабря', -]; - -export type DatePickerDateFormat = { - day: number; - month: number; - year: number; -}; - -const DEFAULT_EMPTY_DATE = { day: 0, month: 0, year: 0 }; - -export interface DatePickerProps - extends Omit< - HTMLAttributesWithRootRef, - 'defaultValue' | 'value' | 'min' | 'max' - > { - min?: DatePickerDateFormat; - max?: DatePickerDateFormat; - name?: string; - defaultValue?: DatePickerDateFormat; - value?: DatePickerDateFormat; - popupDirection?: 'top' | 'bottom'; - monthNames?: string[]; - dayPlaceholder?: string; - monthPlaceholder?: string; - yearPlaceholder?: string; - onDateChange?: (value: DatePickerDateFormat) => void; // TODO [>=7] заменить на onChange - disabled?: boolean; -} - -// Переводим state к формату гг-мм-дд -function convertToInputFormat(value: Partial | undefined) { - if (!value) { - return undefined; - } - const { day = 0, month = 0, year = 0 } = value; - return `${year}-${leadingZero(month)}-${leadingZero(day)}`; -} - -// Переводим дату формата гг-мм-дд к объекту -function parseInputDate(date: string): DatePickerDateFormat { - if (date.length === 0) { - return DEFAULT_EMPTY_DATE; - } - const splited = date.split('-'); - - return { - day: Number(splited[2]), - month: Number(splited[1]), - year: Number(splited[0]), - }; -} - -function getMonthMaxDay(month?: number, year?: number) { - return month ? new Date(year || 2016, month, 0).getDate() : 31; -} - -const DatePickerCustom = ({ - name, - min = { day: 0, month: 0, year: 0 }, - max = { day: 31, month: 12, year: 2100 }, - dayPlaceholder, - monthPlaceholder, - yearPlaceholder, - popupDirection, - value, - monthNames, - onDateChange, - disabled, - defaultValue = DEFAULT_EMPTY_DATE, - ...restProps -}: DatePickerProps) => { - const isControlled = value !== undefined; - const [internalValue, setInternalValue] = useCustomEnsuredControl({ value, defaultValue }); - const hiddenInput = React.useRef(null); - - const onSelectChange: React.ChangeEventHandler = (e) => { - const nextDate = { - day: internalValue.day, - month: internalValue.month, - year: internalValue.year, - }; - nextDate[e.target.name as keyof typeof nextDate] = Number(e.target.value); - nextDate.day = nextDate.day - ? clamp(nextDate.day, 1, getMonthMaxDay(nextDate.month, nextDate.year)) - : nextDate.day; - setInternalValue(nextDate); - onDateChange?.(nextDate); - }; - const dayOptions = range(1, getMonthMaxDay(internalValue.month, internalValue.year)).map( - (value) => ({ - label: String(value), - value, - }), - ); - const monthOptions = (monthNames || DefaultMonths).map((name, index) => ({ - label: name, - value: index + 1, - })); - const yearOptions = range(max.year, min.year).map((value) => ({ - label: String(value), - value: value, - })); - - useNativeFormResetListener(hiddenInput, () => { - if (!isControlled) { - setInternalValue(defaultValue); - } - }); - - return ( - -
-
- -
-
- -
-
- -
-
- -
- ); -}; - -const DatePickerNative = ({ - min = { day: 0, month: 0, year: 0 }, - max = { day: 31, month: 12, year: 2100 }, - monthNames, - popupDirection, - dayPlaceholder, - monthPlaceholder, - yearPlaceholder, - value, - defaultValue = DEFAULT_EMPTY_DATE, - onDateChange, - ...restProps -}: DatePickerProps) => { - const onStringChange: React.ChangeEventHandler = React.useCallback( - (e) => { - onDateChange?.(parseInputDate(e.currentTarget.value)); - }, - [onDateChange], - ); - const inputProps: HasOnlyExpectedProps< - typeof restProps & Pick, - InputProps - > = restProps; - - const valueProps = value - ? { value: convertToInputFormat(value) } - : { defaultValue: convertToInputFormat(defaultValue) }; - - return ( - - ); -}; - -/** - * @see https://vkcom.github.io/VKUI/#/DatePicker - * - * @deprecated 6.2.0 - * - * Компонент устарел и будет удален в v7. Используйте вместо него компоненты - * [Input](https://vkcom.github.io/VKUI/#/Input) и - * [Select](https://vkcom.github.io/VKUI/#/Select). - */ -export const DatePicker = ({ onDateChange, ...props }: DatePickerProps): React.ReactNode => { - const hasPointer = useAdaptivityHasPointer(); - - const onChange = (update: DatePickerDateFormat) => { - onDateChange && onDateChange({ ...update }); - }; - - const Cmp = hasPointer ? DatePickerCustom : DatePickerNative; - return ; -}; diff --git a/packages/vkui/src/components/DatePicker/Readme.md b/packages/vkui/src/components/DatePicker/Readme.md deleted file mode 100644 index db630e9fc8..0000000000 --- a/packages/vkui/src/components/DatePicker/Readme.md +++ /dev/null @@ -1,39 +0,0 @@ -Компонент выбора даты. Для десктопа - это три [CustomSelect-a](#!/CustomSelect). Для мобильного вида - input c `type="date"` - -Принимает значения `min` (минимальная доступная дата), `max` (максимальная), `defaultValue` (для неконтролируемого компонента) и `value` (для контролируемого компонента) в формате `{day: 1, month: 1, year: 1901}`, - -`onDateChange` - используется для получения значения DatePicker-а. - -Для десктопного вида можно передать массив с названиями месяцев, иначе будут использоваться дефолтные русские в родительном падеже. - -```jsx - - - DatePicker - - - { - console.log(value); - }} - dayPlaceholder="ДД" - monthPlaceholder="ММММ" - yearPlaceholder="ГГГГ" - /> - - - { - console.log(value); - }} - /> - - - - -``` diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-android-chromium-dark-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-android-chromium-dark-1-snap.png deleted file mode 100644 index edb7cbd04c..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-android-chromium-dark-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:302638e082d6752993efef9ef1212dc46900fd66554bea5bee7a13c9a0e01d9f -size 56177 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-android-chromium-light-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-android-chromium-light-1-snap.png deleted file mode 100644 index 9e6536acd4..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-android-chromium-light-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c0e091944abcd74b3c1e7f3123bf2425dce21e8bf9c9801341153eb03274d88a -size 56784 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-ios-webkit-dark-1-snap.png deleted file mode 100644 index cf16ac9e4f..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-ios-webkit-dark-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2d6a465e7eb0a170828f1b75cb6243a889b517698b80ed281a4a7385a9eb22cf -size 50431 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-ios-webkit-light-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-ios-webkit-light-1-snap.png deleted file mode 100644 index 82fb8ce79a..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-ios-webkit-light-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd6e48e6c22c0c240011a79cb3bc005ffc415e3b3a04c8c45a812cb9bbd4170b -size 50710 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-chromium-dark-1-snap.png deleted file mode 100644 index a2a6fd9c3e..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-chromium-dark-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f4a2af06daf37a0d3ed7e21063f538194fbb7bdcc7c6648bc7b7641c05e1dea -size 52880 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-chromium-light-1-snap.png deleted file mode 100644 index cddb5c3650..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-chromium-light-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2053da3b0ea6129a2d838d7cfe20dfb2b42ab807964c0910e6e891a6c8946262 -size 47869 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-firefox-dark-1-snap.png deleted file mode 100644 index e27369f021..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-firefox-dark-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69ccb9fe221b5b55cd61b0cefaed3b1e08e475fc64726be9010c2bece169e1ea -size 68837 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-firefox-light-1-snap.png deleted file mode 100644 index 360c3bdd83..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-firefox-light-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a6ecf29094391c0c02e0d669c7a7936897950a261b60191fe66dbedcd6d4160b -size 70248 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-webkit-dark-1-snap.png deleted file mode 100644 index c79f164d8a..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-webkit-dark-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:08d15668d926e5e9ac59eefd9bf1071042a3cc95ebbc083992534e4d6c6ca86c -size 45944 diff --git a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-webkit-light-1-snap.png deleted file mode 100644 index ac00a63e6a..0000000000 --- a/packages/vkui/src/components/DatePicker/__image_snapshots__/datepicker-vkcom-webkit-light-1-snap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:64b8238114f1b168a5b4c9480027077dfb0f11b89a8d6925ebea942d78f0abce -size 46457 diff --git a/packages/vkui/src/components/DateRangeInput/Readme.md b/packages/vkui/src/components/DateRangeInput/Readme.md index 6d21ab56af..fc7d9438f1 100644 --- a/packages/vkui/src/components/DateRangeInput/Readme.md +++ b/packages/vkui/src/components/DateRangeInput/Readme.md @@ -48,7 +48,7 @@ const Example = () => { setGap(e.target.value)} - options={GapSelectValues} - /> + setRowGap(e.target.value)} - options={GapSelectValues} - /> + setColumnGap(e.target.value)} - options={GapSelectValues} - /> + setAlign(e.target.value)} + onChange={setAlign} placeholder="Не выбрано" options={[ { label: 'start', value: 'start' }, @@ -185,7 +173,7 @@ const Example = () => { onSelectChange('purpose', newValue)} value={purpose} name="purpose" required @@ -246,7 +249,7 @@ const Example = () => { /> О себе {about.length}/100 diff --git a/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.e2e-playground.tsx b/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.e2e-playground.tsx index 914b850b3f..444b631b52 100644 --- a/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.e2e-playground.tsx +++ b/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.e2e-playground.tsx @@ -4,7 +4,7 @@ import { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider'; import { ChipsInput } from '../ChipsInput/ChipsInput'; import { ChipsSelect } from '../ChipsSelect/ChipsSelect'; import { CustomSelect } from '../CustomSelect/CustomSelect'; -import { DatePicker } from '../DatePicker/DatePicker'; +import { DateInput } from '../DateInput/DateInput'; import { FormItem } from '../FormItem/FormItem'; import { Input } from '../Input/Input'; import { NativeSelect } from '../NativeSelect/NativeSelect'; @@ -75,7 +75,10 @@ export const FormLayoutGroupPlayground = (props: ComponentPlaygroundProps) => { , - + @@ -193,7 +196,7 @@ export const FormLayoutGroupPlayground = (props: ComponentPlaygroundProps) => { - + , ], diff --git a/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.module.css b/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.module.css index 15cb0e6e63..2160fbef64 100644 --- a/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.module.css +++ b/packages/vkui/src/components/FormLayoutGroup/FormLayoutGroup.module.css @@ -2,6 +2,7 @@ border: 0; padding: 0; margin: 0; + min-inline-size: auto; } .modeHorizontal { diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-dark-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-dark-1-snap.png index ace57ddad9..73cc109ed3 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c46cdc1b72ef7e5f4c1118208bb8e9a34dbefbe04207c87fffa1d7804ef8cdcb -size 155130 +oid sha256:ce9fa7112299f07ebee9e8367ac68362e2064e44cf94559712da8431216b2d76 +size 153594 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-light-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-light-1-snap.png index b725b85fb0..2b759221b2 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b1d121b5323b72b033798e4b12d8f2a152399f1b5a6faabf91ffdd5e13af7a7 -size 157443 +oid sha256:b533eab7102e3fedd1d20da5a6bddcc2970c6693c1342781aea05b44ff616278 +size 156158 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-dark-1-snap.png index 8d7217b4b8..61750f1470 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5bb5876090f2e3a5275e1fc2db73d71685d4cb6903d4e38209e5f79aaa14995 -size 159347 +oid sha256:baf9596b5fb5a1b9b092a64effb3c1d530f71764a773881c5eb0d2de844e1562 +size 159122 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-light-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-light-1-snap.png index d2e2fe7a33..4aa8a82338 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f1af1a17e6e4f8e1be85cd18e82752a9d72d7fcac8dc1d2a9a9c39a019fd9fe -size 160923 +oid sha256:b0400ddf8ba0cdbe0aa78e6368f66e6058b45ef6fd0885a3d5df6cec9eaf14dd +size 160784 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-dark-1-snap.png index ba31aac0da..a8a765d722 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b739ed0f558bc7f744299be1cd24f9cb519a9ed64ca02a972d4be30a71318172 -size 176148 +oid sha256:d2313fdb141137cc182a618834137fedd7fd772422c28103fb2a19c2a1e8d8a6 +size 161098 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-light-1-snap.png index ce841abb6e..6bdf5d624a 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4abfd421b1e6c34b3844a09f1d88a006ce90fa9ba0ee6180ed32e3a29c654d47 -size 159352 +oid sha256:6651097f4494541e61f6e67fb7e877b2baff9fb704e55ef2b52c359050023e99 +size 164812 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-dark-1-snap.png index a0e3bceef7..e8d22c961a 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a23acf25e8a7b3bfa0c510ad4f2f38ae3b83d6c5007793f0f3822773961ab6b -size 238718 +oid sha256:eb49b6d1c0bac3bf45ce9f25b07d8661554b2144f7c78f3511c50308ac913166 +size 260787 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-light-1-snap.png index bd28679f67..1c7bbf86d1 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b9357a353b8cc43997b335538eed6e6d06fb2e0ca181d17d8562a18d4ba19ea -size 246495 +oid sha256:5f695b9817a8c66055c0ca0b5f2a952c211ba3207e70a5102ab1e2c746fa075a +size 269233 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-dark-1-snap.png index c8552180af..8af0acb01b 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b5202bd87178e1ace6c49e30f81d8daf34633319e5a40aee4793c81512b972a -size 155268 +oid sha256:91026c46f7731c812c3279d584be22c96a40aee119f9073846de076db79de528 +size 163646 diff --git a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-light-1-snap.png index 27595fe109..d31f258e64 100644 --- a/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9f19cfd9cec51bdf7fb4469dec8a99205f74a64503d56e862fe5ca55bc2c47d -size 157851 +oid sha256:655b120571109ac825522cab26b5f7630113393b4ab1c47d3fffe55ec31bc2db +size 166341 diff --git a/packages/vkui/src/components/Gallery/Gallery.test.tsx b/packages/vkui/src/components/Gallery/Gallery.test.tsx index 67b81eeb37..3131864f76 100644 --- a/packages/vkui/src/components/Gallery/Gallery.test.tsx +++ b/packages/vkui/src/components/Gallery/Gallery.test.tsx @@ -73,13 +73,14 @@ const setup = ({ looped, containerWidth: defaultContainerWidth, isCustomSlideWidth = false, - viewPortWidth, + viewPortWidth: defaultViewPortWidth, align, onChange, onNext, onPrev, onDragStart, onDragEnd, + numberOfSlides = 5, }: { defaultSlideIndex: number; looped: boolean; @@ -87,6 +88,7 @@ const setup = ({ isCustomSlideWidth?: boolean; containerWidth: number; viewPortWidth: number; + numberOfSlides?: number; align?: AlignType; onChange: VoidFunction; onNext?: VoidFunction; @@ -99,6 +101,7 @@ const setup = ({ let layerTransform = ''; let viewPort: HTMLDivElement; let containerWidth = defaultContainerWidth; + let viewPortWidth = defaultViewPortWidth; const mockContainerData = (element: HTMLDivElement) => { if (!element) { @@ -161,21 +164,15 @@ const setup = ({ getRootRef={mockContainerData} getRef={mockViewportData} > - mockSlideData(e, 0)}> - 1 - - mockSlideData(e, 1)}> - 2 - - mockSlideData(e, 2)}> - 3 - - mockSlideData(e, 3)}> - 4 - - mockSlideData(e, 4)}> - 5 - + {Array.from({ length: numberOfSlides }).map((_v, index) => ( + mockSlideData(e, index)} + > + {index + 1} + + ))} ); @@ -200,6 +197,9 @@ const setup = ({ set containerWidth(newWidth: number) { containerWidth = newWidth; }, + set viewPortWidth(newWidth: number) { + viewPortWidth = newWidth; + }, }; }; @@ -636,4 +636,70 @@ describe('Gallery', () => { process.env.NODE_ENV = 'test'; }); }); + + it('checks gallery arrows and navigation in center alignment', () => { + const onChange = jest.fn(); + const onDragStart = jest.fn(); + const onDragEnd = jest.fn(); + + // в контейнере недостаточно места для + // двух слайдов с выравниванием по центру + // поэтому мы показываем кнопки и позволяем drag + const mockedData = setup({ + numberOfSlides: 2, + defaultSlideIndex: 2, + slideWidth: 180, + containerWidth: 300, + viewPortWidth: 300, + align: 'center', + looped: false, + onDragStart, + onDragEnd, + onChange, + }); + const { + component: { container }, + rerender, + } = mockedData; + + checkActiveSlide(container, 1); + expect(Array.from(container.getElementsByClassName(styles.arrow))).toHaveLength(1); + + simulateDrag(mockedData.viewPort, [150, 0]); + + expect(onDragStart).toHaveBeenCalledTimes(1); + expect(onDragEnd).toHaveBeenCalledTimes(1); + + // это пограничное состояние при котором слайды ещё + // не помещаются в контейнер, + // при ширине контейнера 540 они уже будут влезать + mockedData.containerWidth = 539; + mockedData.viewPortWidth = 539; + onDragStart.mockClear(); + onDragEnd.mockClear(); + + rerender({ slideIndex: 2 }); + + expect(Array.from(container.getElementsByClassName(styles.arrow))).toHaveLength(1); + + simulateDrag(mockedData.viewPort, [150, 0]); + + expect(onDragStart).toHaveBeenCalledTimes(1); + expect(onDragEnd).toHaveBeenCalledTimes(1); + + // слайды полностью помещаются, поэтому мы отключаем drag и не показываем стрелочки + mockedData.containerWidth = 540; + mockedData.viewPortWidth = 540; + onDragStart.mockClear(); + onDragEnd.mockClear(); + + rerender({ slideIndex: 2 }); + + expect(Array.from(container.getElementsByClassName(styles.arrow))).toHaveLength(0); + + simulateDrag(mockedData.viewPort, [150, 0]); + + expect(onDragStart).not.toHaveBeenCalled(); + expect(onDragEnd).not.toHaveBeenCalled(); + }); }); diff --git a/packages/vkui/src/components/Gallery/Readme.md b/packages/vkui/src/components/Gallery/Readme.md index fed052ba50..1eea3c46d5 100644 --- a/packages/vkui/src/components/Gallery/Readme.md +++ b/packages/vkui/src/components/Gallery/Readme.md @@ -14,14 +14,14 @@ const Example = () => { Gallery - Sticks right
}> + Sticks right
}>
- Sticks left
}> + Sticks left
}>
{
- Centered
}> + Centered
}>
- Custom width
}> + Custom width
}>
{ /> - Arrows
}> + Arrows
}>
- Controlled
}> + Controlled}> { - With looped prop}> + With looped prop}> 1 2 diff --git a/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-dark-1-snap.png index f074492690..2c208a92a1 100644 --- a/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9edfd6d78a6d03029d02ed87d3fc0832b0741e27e111c51b49ecc8b063509eab -size 111193 +oid sha256:fa772b2f8e0ba32dc0e7abf562ed1a1919389d97ff2eb7448164f0512570c0b4 +size 125717 diff --git a/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-light-1-snap.png index 3407688564..e71fe14d19 100644 --- a/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Gallery/__image_snapshots__/gallery-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb1d7e10022c8343708a6641a047ce61eb8b3b157a0faabbb1cd5a6f17dc817c -size 113482 +oid sha256:a82018865406d7318be38b26451e6317e848a62b1dd07097db833479ac627bda +size 126080 diff --git a/packages/vkui/src/components/Gradient/Readme.md b/packages/vkui/src/components/Gradient/Readme.md index 3660f706ce..ef6627d985 100644 --- a/packages/vkui/src/components/Gradient/Readme.md +++ b/packages/vkui/src/components/Gradient/Readme.md @@ -34,7 +34,7 @@ const Example = () => { - Направление to="bottom"}> + Направление to="bottom"}>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a sollicitudin lectus, a diff --git a/packages/vkui/src/components/Group/Readme.md b/packages/vkui/src/components/Group/Readme.md index 9801ff9043..2b6e216f10 100644 --- a/packages/vkui/src/components/Group/Readme.md +++ b/packages/vkui/src/components/Group/Readme.md @@ -45,7 +45,7 @@ const Example = () => { - Модальное окно с Group}> + Модальное окно с Group}> setModalOpened(true)}> Открыть Group в модальном окне @@ -180,8 +180,8 @@ const SharedContent = () => { ```jsx const recentFriends = getRandomUsers(20); -Недавние}> -
HorizontalScroll не учитывает отступы Group по горизонтали
+Недавние}> +
HorizontalScroll не учитывает отступы Group по горизонтали
@@ -195,7 +195,7 @@ const recentFriends = getRandomUsers(20); -
Здесь контент учитывает отступы Group по горизонтали
+
Здесь контент учитывает отступы Group по горизонтали
{recentFriends.map((item) => { return ( diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-dark-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-dark-1-snap.png index d096f1d53e..cdf6ad616c 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2db93987d879f3bbcf7b149d7cdf9507e61664535690e61516d715527baa2e2 -size 28403 +oid sha256:50e9eb28351401b44a1668037bc881232e3da0b1157954d5613234e870c8000f +size 25314 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-light-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-light-1-snap.png index 713655218d..9815abe6e8 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c692d7b01d9ea885183f3115679bae502dd4a7aa45ed2b11337463a9b44e641 -size 27344 +oid sha256:09fa0173d067a920900e7e226c91dc44b8e69f003ab8641f605b799daf673cae +size 24498 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-dark-1-snap.png index e925abe6cf..ee065be38f 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f921ddad42a5af023a2880963f865f9d528525edf8f62c0b97247d8d7524df1 -size 25659 +oid sha256:3f1df819ce627d618639e04e26ab5faa191211150da987fc20768bda07c6bb97 +size 25532 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-light-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-light-1-snap.png index 17d1b025ad..a5ed2c72af 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16ad3382c97e62c16a9cff31d34c7c6d72235c489699f3b05da965683e65f1fb -size 24898 +oid sha256:7fbced186bbb88f0b7979f8d79bf648c09df6e5a3288b0f79a24fc67a00dd8c4 +size 24669 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-dark-1-snap.png index 0eb99a7d27..2f36094a17 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0623e79f9713e2d4d197e95590294a32679c09ebed3412e9c36d8fa19e148e2b -size 26110 +oid sha256:44b9f00953f4e7cc9b147be307037db4169121681aaf76703c8e40ec9d22f291 +size 26044 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-light-1-snap.png index 1d8bc637bb..8da653b89f 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddc3cb314350f7803fb173c7e769226ad844f91a20bc3164362d36172eb4cfd2 -size 28982 +oid sha256:96c94dc351325253c9b6e23fc1d564e6127a274489fc23fd8712776336f844c1 +size 26104 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-dark-1-snap.png index 39d1d2bffd..f995f4da82 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bf02d447e327fb8eac82e587658b79d2e8f3284f5512b3fe3960e3eb913d6ba -size 38936 +oid sha256:bbb1d0441f526bbb90138d97ac9a4f9aaba1e077736c0de50ed683d15bf9adab +size 38764 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-light-1-snap.png index 057eca003d..2f362e659b 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:becd0aaa1166864da38fb9a304bf607b9b8b9d5b794f3d0341b7acc1f4606a41 -size 37998 +oid sha256:8209463c03c0f8017375fe678f41d93553ae74b10ab298da8e8e494221eb95c5 +size 38053 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-dark-1-snap.png index 85318f928e..df548990e1 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2251ed7ba8243d1496887277468c2081e4868175a0b22b40fe7a398791d573bd -size 26448 +oid sha256:85f8501bb38b40c2a92dbfa3370c460a5aa0e76f51d313636ad290465e7892b0 +size 26381 diff --git a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-light-1-snap.png index 4cef137ceb..6386b559cc 100644 --- a/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Group/__image_snapshots__/group-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c1080eab4cc26d728473fb4f9e1f2e56dee9de88487db56a58a4a4cd321901a -size 26367 +oid sha256:34d3bf1fefc5f8dc9a65dc5b5234b998481bc194939ba7a05f329493c983b37f +size 26334 diff --git a/packages/vkui/src/components/Header/Header.e2e-playground.tsx b/packages/vkui/src/components/Header/Header.e2e-playground.tsx index 1c390e8d2d..f84f89289c 100644 --- a/packages/vkui/src/components/Header/Header.e2e-playground.tsx +++ b/packages/vkui/src/components/Header/Header.e2e-playground.tsx @@ -16,20 +16,20 @@ export const HeaderPlayground = (props: ComponentPlaygroundProps) => { {...props} propSets={[ { - mode: ['primary', 'secondary', 'tertiary'], + size: ['s', 'm', 'l', 'xl'], children: ['Кто может оставлять записи на моей странице'], multiline: [undefined, true], }, { - mode: ['primary'], + size: ['m'], after: [Показать все], }, { - mode: ['primary', 'secondary'], + size: ['s', 'm', 'l', 'xl'], subtitle: ['SOHN — Conrad'], }, { - mode: ['primary'], + size: ['m'], indicator: [ 12, @@ -38,13 +38,13 @@ export const HeaderPlayground = (props: ComponentPlaygroundProps) => { ], }, { - mode: ['primary'], + size: ['m'], subtitle: ['SOHN — Conrad'], after: [Показать все], indicator: [12], }, { - mode: ['secondary', 'tertiary'], + size: ['m'], indicator: [ 12, @@ -53,40 +53,36 @@ export const HeaderPlayground = (props: ComponentPlaygroundProps) => { ], }, { - mode: ['primary'], - size: ['m', 'l'], - }, - { - mode: ['primary'], + size: ['m'], children: ['Кто может оставлять записи на моей странице'], before: [], }, { - mode: ['primary'], + size: ['m'], children: ['Кто может оставлять записи на моей странице'], beforeTitle: [], }, { - mode: ['primary'], + size: ['m'], children: ['Кто может оставлять записи на моей странице'], afterTitle: [], multiline: [undefined, true], }, { - mode: ['primary'], + size: ['m'], children: ['Кто может оставлять записи на моей странице'], subtitle: ['SOHN — Conrad'], beforeSubtitle: [], }, { - mode: ['primary'], + size: ['m'], children: ['Кто может оставлять записи на моей странице'], subtitle: ['SOHN — Conrad'], afterSubtitle: [], multiline: [undefined, true], }, { - mode: ['primary', 'secondary', 'tertiary'], + size: ['s', 'm', 'l', 'xl'], children: ['Кто может оставлять записи на моей странице'], before: [], beforeTitle: [], diff --git a/packages/vkui/src/components/Header/Header.module.css b/packages/vkui/src/components/Header/Header.module.css index 8db401f919..e6987c15f5 100644 --- a/packages/vkui/src/components/Header/Header.module.css +++ b/packages/vkui/src/components/Header/Header.module.css @@ -75,8 +75,7 @@ color: var(--vkui--color_text_secondary); } -.modeSecondary:not(.pi):not(.withSubtitle) .main, -.modeTertiary .main { +.sizeS .contentIn { color: var(--vkui--color_text_secondary); } @@ -86,18 +85,10 @@ flex-shrink: 0; } -.modePrimary .indicator { - color: var(--vkui--color_text_subhead); -} - .host:not(.pi) .indicator { align-self: center; } -.modeSecondary .indicator { - margin-inline-start: 8px; -} - .after { display: flex; white-space: nowrap; @@ -109,6 +100,22 @@ margin-inline-start: 12px; } +.sizeS .after.after > * { + margin-block-start: 11px; +} + +.sizeM .after.after > * { + margin-block-start: 13px; +} + +.sizeL .after.after > * { + margin-block-start: 14px; +} + +.sizeXl .after.after > * { + margin-block-start: 16px; +} + /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ .after > :global(.vkuiIcon) { position: relative; @@ -116,17 +123,37 @@ } /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ -.after > :global(.vkuiIcon--24) { +.sizeS .after > :global(.vkuiIcon--24) { + margin-block: 9px 5px; +} +/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ +.sizeM .after > :global(.vkuiIcon--24) { + margin-block: 10px 5px; +} +/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ +.sizeL .after > :global(.vkuiIcon--24) { margin-block: 11px 5px; } +/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ +.sizeXl .after > :global(.vkuiIcon--24) { + margin-block: 12px 5px; +} /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ -.after > :global(.vkuiIcon--16) { +.sizeS .after > :global(.vkuiIcon--16) { + margin-block: 13px 9px; +} +/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ +.sizeM .after > :global(.vkuiIcon--16) { + margin-block: 14px 9px; +} +/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ +.sizeL .after > :global(.vkuiIcon--16) { margin-block: 15px 9px; } - -.modePrimary { - padding-block: 3px 1px; +/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ +.sizeXl .after > :global(.vkuiIcon--16) { + margin-block: 16px 9px; } .content { @@ -137,27 +164,10 @@ margin-block-end: 8px; } -.modeTertiary .content { - margin-block-start: 15px; -} - -.modeTertiary .content:last-child { - margin-block-end: 9px; -} - .subtitleWrapper { margin-block-end: 7px; } -/* Компенсируем 1 пиксель из-за паддинга в .modePrimary */ -.modePrimary .subtitleWrapper { - margin-block-end: 6px; -} - -.large .content { - margin-block: 10px 6px; -} - /** * CMP: * Group @@ -184,20 +194,20 @@ } /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ -:global(.vkuiInternalGroup--mode-card) > .host:not(.modeTertiary):first-child, +:global(.vkuiInternalGroup--mode-card) > .host:not(.sizeM):first-child, :global(.vkuiInternalGroup--mode-card) > :global(.vkuiInternalTappable):first-child - > .host:not(.modeTertiary) { + > .host:not(.sizeM) { margin-block-start: calc(-1 * var(--vkui--spacing_size_xs)); } @media (--sizeX-regular) { /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ :global(.vkuiInternalGroup--sizeX-none.vkuiInternalGroup--mode-none) - > .host:not(.modeTertiary):first-child, + > .host:not(.sizeM):first-child, :global(.vkuiInternalGroup--sizeX-none.vkuiInternalGroup--mode-none) > :global(.vkuiInternalTappable):first-child - > .host:not(.modeTertiary) { + > .host:not(.sizeM) { margin-block-start: calc(-1 * var(--vkui--spacing_size_xs)); } } diff --git a/packages/vkui/src/components/Header/Header.stories.tsx b/packages/vkui/src/components/Header/Header.stories.tsx index 9e13e0efbd..a911dc5888 100644 --- a/packages/vkui/src/components/Header/Header.stories.tsx +++ b/packages/vkui/src/components/Header/Header.stories.tsx @@ -33,7 +33,7 @@ const story: Meta = { requiredIcons: ['Icon12Fire'], }), after: createFieldWithPresets({ - iconSizes: [], + iconSizes: ['16', '24'], additionalPresets: { Link: Показать все, }, @@ -114,6 +114,6 @@ export const WithAllFeatures: Story = { beforeSubtitle: 'Icon12Tag', afterSubtitle: 'Icon12Fire', subtitle: 'SOHN — Conrad', - after: Показать все, + after: 'Link', }, }; diff --git a/packages/vkui/src/components/Header/Header.test.tsx b/packages/vkui/src/components/Header/Header.test.tsx index 4cc8a9cfb7..1fd300fbb9 100644 --- a/packages/vkui/src/components/Header/Header.test.tsx +++ b/packages/vkui/src/components/Header/Header.test.tsx @@ -9,100 +9,72 @@ const getTypographyTagNameByText = (text: string) => screen.getByText(text).tagN describe('Header', () => { baselineComponent((props) =>
Title
); - it('[typography] HeaderContent is h2 on ANDROID regardless of mode and size', () => { + it('[typography] HeaderContent is h2 on ANDROID regardless size', () => { render( -
Русский
-
English
-
Espanõl
-
- Français -
-
- Deutsch -
-
- 中國人 -
+
Русский
+
English
+
Espanõl
+
Français
, ); expect(screen.getByText('Русский').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('English').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('Espanõl').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('Français').parentElement?.tagName.toLowerCase()).toMatch('h2'); - expect(screen.getByText('Deutsch').parentElement?.tagName.toLowerCase()).toMatch('h2'); - expect(screen.getByText('中國人').parentElement?.tagName.toLowerCase()).toMatch('h2'); }); - it('[typography] HeaderContent is h2 on IOS regardless of mode and size', () => { + it('[typography] HeaderContent is h2 on IOS regardless of size', () => { render( -
Русский
-
English
-
Espanõl
-
- Français -
-
- Deutsch -
-
- 中國人 -
+
Русский
+
English
+
Espanõl
+
Français
, ); expect(screen.getByText('Русский').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('English').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('Espanõl').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('Français').parentElement?.tagName.toLowerCase()).toMatch('h2'); - expect(screen.getByText('Deutsch').parentElement?.tagName.toLowerCase()).toMatch('h2'); - expect(screen.getByText('中國人').parentElement?.tagName.toLowerCase()).toMatch('h2'); }); - it('[typography] HeaderContent is h2 on VKCOM regardless of mode and size', () => { + it('[typography] HeaderContent is h2 on VKCOM regardless of size', () => { render( -
Русский
-
English
-
Espanõl
-
- Français -
-
- Deutsch -
-
- 中國人 -
+
Русский
+
English
+
Espanõl
+
Français
, ); expect(screen.getByText('Русский').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('English').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('Espanõl').parentElement?.tagName.toLowerCase()).toMatch('h2'); expect(screen.getByText('Français').parentElement?.tagName.toLowerCase()).toMatch('h2'); - expect(screen.getByText('Deutsch').parentElement?.tagName.toLowerCase()).toMatch('h2'); - expect(screen.getByText('中國人').parentElement?.tagName.toLowerCase()).toMatch('h2'); }); - it('[typography] HeaderSubtitle is span by default regardless of mode', () => { + it('[typography] HeaderSubtitle is span by default regardless of size', () => { render( -
-
-
+
+
+
+
, ); expect(getTypographyTagNameByText('Русский')).toMatch('span'); expect(getTypographyTagNameByText('English')).toMatch('span'); expect(getTypographyTagNameByText('Espanõl')).toMatch('span'); + expect(getTypographyTagNameByText('Français')).toMatch('span'); }); - it('[typography] HeaderSubtitle is h3 with subtitleComponent prop regardless of mode', () => { + it('[typography] HeaderSubtitle is h3 with subtitleComponent prop regardless of size', () => { render( -
-
-
+
+
+
, ); expect(getTypographyTagNameByText('Русский')).toMatch('h3'); diff --git a/packages/vkui/src/components/Header/Header.tsx b/packages/vkui/src/components/Header/Header.tsx index bbf73c2a03..91a55a51c1 100644 --- a/packages/vkui/src/components/Header/Header.tsx +++ b/packages/vkui/src/components/Header/Header.tsx @@ -2,9 +2,9 @@ import * as React from 'react'; import { classNames, hasReactNode, isPrimitiveReactNode } from '@vkontakte/vkjs'; -import { usePlatform } from '../../hooks/usePlatform'; import type { HasComponent, HTMLAttributesWithRootRef } from '../../types'; import { RootComponent } from '../RootComponent/RootComponent'; +import { Caption } from '../Typography/Caption/Caption'; import { Footnote } from '../Typography/Footnote/Footnote'; import { Headline } from '../Typography/Headline/Headline'; import { Paragraph } from '../Typography/Paragraph/Paragraph'; @@ -13,8 +13,7 @@ import { Title } from '../Typography/Title/Title'; import styles from './Header.module.css'; export interface HeaderProps extends HTMLAttributesWithRootRef, HasComponent { - mode?: 'primary' | 'secondary' | 'tertiary'; - size?: 'm' | 'l'; + size?: 's' | 'm' | 'l' | 'xl'; subtitle?: React.ReactNode; /* Позволяет задать тип элемента в который будет обёрнут subtitle */ subtitleComponent?: React.ElementType; @@ -49,54 +48,48 @@ export interface HeaderProps extends HTMLAttributesWithRootRef, Has afterSubtitle?: React.ReactNode; } -type HeaderContentProps = Pick & - HasComponent; - -const HeaderContent = ({ mode, size, ...restProps }: HeaderContentProps) => { - const isLarge = size === 'l'; +const sizeClassNames: Record, string> = { + s: styles.sizeS, + m: styles.sizeM, + l: styles.sizeL, + xl: styles.sizeXl, +}; - const platform = usePlatform(); - if (platform === 'ios') { - switch (mode) { - case 'primary': - return isLarge ? ( - - ) : ( - <Title weight="1" level="3" {...restProps} /> - ); - case 'secondary': - return <Footnote weight="1" caps {...restProps} />; - case 'tertiary': - return <Title weight="1" level="3" {...restProps} />; - } - } +type HeaderContentProps = Pick<HeaderProps, 'children' | 'size' | 'className'> & HasComponent; - switch (mode) { - case 'primary': - return isLarge ? ( - <Title level="2" weight="2" {...restProps} /> - ) : ( - <Headline weight="2" {...restProps} /> - ); - case 'secondary': - return <Footnote weight="1" caps {...restProps} />; - case 'tertiary': - return <Headline weight="2" {...restProps} />; +const HeaderContent = ({ size, ...restProps }: HeaderContentProps) => { + switch (size) { + case 'xl': + return <Title level="2" weight="1" {...restProps} />; + case 'l': + return <Title level="3" weight="1" {...restProps} />; + case 'm': + return <Headline {...restProps} />; + case 's': + return <Footnote caps weight="1" {...restProps} />; } return null; }; -const stylesMode = { - primary: styles.modePrimary, - secondary: styles.modeSecondary, - tertiary: styles.modeTertiary, +const Subtitle: React.FC< + Pick<HeaderProps, 'multiline' | 'subtitleComponent' | 'size'> & { children: React.ReactNode } +> = ({ subtitleComponent, children, multiline, size }) => { + const SubtitleElement = size === 'm' || size === 's' ? Caption : Subhead; + return ( + <SubtitleElement + className={classNames(styles.subtitle, multiline && styles.contentMultiline)} + Component={subtitleComponent} + > + {children} + </SubtitleElement> + ); }; + /** * @see https://vkcom.github.io/VKUI/#/Header */ export const Header = ({ - mode = 'primary', size = 'm', Component = 'h2', children, @@ -117,10 +110,8 @@ export const Header = ({ {...restProps} baseClassName={classNames( styles.host, - stylesMode[mode], - size === 'l' && styles.large, + sizeClassNames[size], isPrimitiveReactNode(indicator) && styles.pi, - hasReactNode(subtitle) && styles.withSubtitle, )} > {before && ( @@ -129,7 +120,7 @@ export const Header = ({ </div> )} <div className={styles.main}> - <HeaderContent className={styles.content} Component={Component} mode={mode} size={size}> + <HeaderContent className={styles.content} Component={Component} size={size}> {beforeTitle && <div className={styles.contentBefore}>{beforeTitle}</div>} <span className={classNames(styles.contentIn, multiline && styles.contentMultiline)}> {children} @@ -144,12 +135,9 @@ export const Header = ({ {hasReactNode(subtitle) && ( <div className={styles.subtitleWrapper}> {beforeSubtitle && <div className={styles.subtitleBefore}>{beforeSubtitle}</div>} - <Subhead - className={classNames(styles.subtitle, multiline && styles.contentMultiline)} - Component={subtitleComponent} - > + <Subtitle multiline={multiline} subtitleComponent={subtitleComponent} size={size}> {subtitle} - </Subhead> + </Subtitle> {afterSubtitle && <div className={styles.subtitleAfter}>{afterSubtitle}</div>} </div> )} diff --git a/packages/vkui/src/components/Header/Readme.md b/packages/vkui/src/components/Header/Readme.md index 6100a43b40..27a978259a 100644 --- a/packages/vkui/src/components/Header/Readme.md +++ b/packages/vkui/src/components/Header/Readme.md @@ -8,7 +8,6 @@ const Example = () => { <PanelHeader>Header</PanelHeader> <Group> <Header - mode="primary" after={ <Link> Показать все @@ -19,7 +18,6 @@ const Example = () => { Плейлисты </Header> <Header - mode="primary" after={ <Link> Показать все @@ -32,7 +30,6 @@ const Example = () => { Плейлисты </Header> <Header - mode="primary" after={ <Link> Показать все @@ -44,7 +41,6 @@ const Example = () => { Плейлисты </Header> <Header - mode="primary" after={ <Link> Показать все @@ -62,7 +58,7 @@ const Example = () => { </Group> <Group> <Header - mode="secondary" + size="s" after={ <Link> Показать все @@ -73,7 +69,7 @@ const Example = () => { Приглашения </Header> <Header - mode="secondary" + size="s" after={ <Link> Показать все @@ -85,7 +81,7 @@ const Example = () => { Фотографии </Header> <Header - mode="secondary" + size="s" after={ <Link> Показать все @@ -102,27 +98,20 @@ const Example = () => { </Header> </Group> <Group> - <Header mode="tertiary">Важные</Header> + <Header>Важные</Header> </Group> <Group> - <Header mode="primary" multiline> - Кто может писать мне личные сообщения - </Header> - <Header mode="tertiary" multiline> - Кто может комментировать мои записи - </Header> - <Header mode="secondary" multiline> + <Header multiline>Кто может писать мне личные сообщения</Header> + <Header multiline>Кто может комментировать мои записи</Header> + <Header size="s" multiline> Кто может оставлять записи на моей странице </Header> </Group> <Group> - <Header mode="primary" size="l"> - Большой заголовок - </Header> + <Header size="xl">Большой заголовок</Header> </Group> <Group> <Header - mode="primary" before={<Icon28UserCircleFillBlue />} beforeTitle={<Icon16LockOutline />} afterTitle={<Icon16UnlockOutline />} @@ -145,7 +134,6 @@ const Example = () => { Плейлисты </Header> <Header - mode="primary" before={<Icon28UserCircleFillBlue />} beforeTitle={<Icon16LockOutline />} afterTitle={<Icon16UnlockOutline />} diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-dark-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-dark-1-snap.png index 5c660976b0..4932086574 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7666611c5e1ed49bf707a02f2bf706c9658951b1f4f7ca58049fb011683bd3e6 -size 284775 +oid sha256:13d32950ea5ca621af75e544f4f25e9e943aa672c3eb8870ef5c77e23aa141a6 +size 319983 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-light-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-light-1-snap.png index 01ad7d4cf8..f8d8325e42 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb5335a42e781e3a86417aec2d384533f3918743c814dfbb30ab6b26b8d0f836 -size 284521 +oid sha256:74421cd0eff434954ceec9c507994db071feafc477490140640318179e17f90f +size 314077 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-dark-1-snap.png index 77af64cfdb..f048a12fd8 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3307493705844b7b913476e68efcc08e6b1f3e61fd1f2414d194d1b445a6bd4 -size 293619 +oid sha256:1be92baaac827f1bf869ba8780c2a9e1e9d55dd813f1ca88a977733ae98c5dfc +size 332742 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-light-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-light-1-snap.png index 7948125cc0..0052162e82 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bd28b3b341ccef41702330979df36e95fb9beab2a1f59555906db8ebbf12d8f -size 289627 +oid sha256:70da983c6191df86528172efc60b1633424da2b995b215bf40be6346cbbb6637 +size 322640 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-dark-1-snap.png index 7d05155744..376665bfa7 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67567d1fe5fe4eb126416104d6c75948b6d1e65a42e40f8e9497494e72924905 -size 284171 +oid sha256:307f15f256f784f9e4c9386f22407def49bc5ffe3c7681132c3175da716ecf28 +size 321398 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-light-1-snap.png index 2e5418fd88..a1304ad5cf 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25cbae3283fd68a7462557fa2094e9e160a73d48403230dd817e119b33e60757 -size 285365 +oid sha256:e71554a82354cafb628d3c04551d2b6213e658a128e770a977f360f8cc610d5a +size 320580 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-dark-1-snap.png index 6e8f3a7365..8a72cec0ab 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efa4bd21a6c016bf8a1c3e81047a00d00bef01c07e600416f344a8f2de0d644d -size 430643 +oid sha256:c206ad95ed6cc3cf059c1aea5bb104bdf465eab9c5c94e3b22025eb6ec147762 +size 490679 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-light-1-snap.png index 1ed7b35fc0..b705af33ec 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3004589e0249214126cf18400e889b34d4d45ef728435df0ac91b9820f489393 -size 421708 +oid sha256:c8e9ec1f3828020db11adbe3bc4d86a3dbaa8557627ea24248b94bfc8def4429 +size 472909 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-dark-1-snap.png index 6d0358445a..dbaf73e872 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43c36d15d38833955b9ef890cf045d41c476a20666c8b7c659cb6a3b6821c35a -size 288625 +oid sha256:e50373cabfd5547fdc93367d56cfbc2ab7306f197e06dd367551131ee9cd80b4 +size 326202 diff --git a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-light-1-snap.png index 3afb8541de..bd2067b7c7 100644 --- a/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/Header/__image_snapshots__/header-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0661f223011437cf3a7254c5202c23d5fe10a4659ad2f96f2f218d3d2a12bb3 -size 290380 +oid sha256:fd56e6b97e8bef41cbda78ece41c3cbe9f5b20808f40251b566d7fe642e0322d +size 325764 diff --git a/packages/vkui/src/components/HorizontalCell/HorizontalCell.test.tsx b/packages/vkui/src/components/HorizontalCell/HorizontalCell.test.tsx index 71ccdfc525..ae984b08bb 100644 --- a/packages/vkui/src/components/HorizontalCell/HorizontalCell.test.tsx +++ b/packages/vkui/src/components/HorizontalCell/HorizontalCell.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { baselineComponent } from '../../testing/utils'; import { CUSTOM_CSS_TOKEN_FOR_CELL_WIDTH, HorizontalCell } from './HorizontalCell'; -import styles from './HorizontaCell.module.css'; +import styles from './HorizontalCell.module.css'; describe('HorizontalCell', () => { baselineComponent((props) => <HorizontalCell {...props}>HorizontalCell</HorizontalCell>); diff --git a/packages/vkui/src/components/HorizontalScroll/HorizontalScroll.stories.tsx b/packages/vkui/src/components/HorizontalScroll/HorizontalScroll.stories.tsx index c98caf7159..3b67eaaec7 100644 --- a/packages/vkui/src/components/HorizontalScroll/HorizontalScroll.stories.tsx +++ b/packages/vkui/src/components/HorizontalScroll/HorizontalScroll.stories.tsx @@ -69,7 +69,7 @@ export const Playground: Story = { }, decorators: [ (Component, context) => ( - <Group header={<Header mode="secondary">Недавние</Header>}> + <Group header={<Header size="s">Недавние</Header>}> <Component args={context.args} /> </Group> ), diff --git a/packages/vkui/src/components/HorizontalScroll/Readme.md b/packages/vkui/src/components/HorizontalScroll/Readme.md index 5d5f3c3ab6..e9014d102d 100644 --- a/packages/vkui/src/components/HorizontalScroll/Readme.md +++ b/packages/vkui/src/components/HorizontalScroll/Readme.md @@ -17,7 +17,7 @@ const HorizontalScrollExample = () => { <View activePanel={activePanel}> <Panel id="basic-case"> <PanelHeader>HorizontalScroll</PanelHeader> - <Group header={<Header mode="secondary">Недавние</Header>}> + <Group header={<Header size="s">Недавние</Header>}> <HorizontalScroll showArrows getScrollToLeft={(i) => i - 120} @@ -34,7 +34,7 @@ const HorizontalScrollExample = () => { </HorizontalScroll> </Group> - <Group header={<Header mode="secondary">Общие друзья</Header>}> + <Group header={<Header size="s">Общие друзья</Header>}> <HorizontalScroll showArrows arrowSize="m" @@ -57,7 +57,7 @@ const HorizontalScrollExample = () => { </HorizontalScroll> </Group> - <Group header={<Header mode="secondary">С кнопкой "Показать всё"</Header>}> + <Group header={<Header size="s">С кнопкой "Показать всё"</Header>}> <CellButton before={<Icon16MoreHorizontal aria-hidden />} onClick={() => setActivePanel('show-more-case')} diff --git a/packages/vkui/src/components/Image/Readme.md b/packages/vkui/src/components/Image/Readme.md index a532a70c5b..df3765bd25 100644 --- a/packages/vkui/src/components/Image/Readme.md +++ b/packages/vkui/src/components/Image/Readme.md @@ -3,7 +3,7 @@ ```jsx const Default = () => { return ( - <Group header={<Header mode="secondary">По умолчанию</Header>}> + <Group header={<Header size="s">По умолчанию</Header>}> <SimpleCell before={<Image src={getAvatarUrl('app_shorm_online')} alt="Приложение шторм онлайн" />} description="Ролевая" @@ -19,9 +19,7 @@ const Responsive = () => { return ( <Group header={ - <Header mode="secondary"> - Изображения без фиксированных размеров с сохранением пропорций - </Header> + <Header size="s">Изображения без фиксированных размеров с сохранением пропорций</Header> } > <Flex margin="auto" direction="column" gap="m"> @@ -47,7 +45,7 @@ const OthersFeatures = () => { const [overlay, setOverlay] = React.useState(); return ( - <Group header={<Header mode="secondary">Другие возможности</Header>}> + <Group header={<Header size="s">Другие возможности</Header>}> <ImagePropsForm onBorderRadiusChange={setBorderRadius} onBadgeChange={setBadge} @@ -143,7 +141,7 @@ const ImagePropsForm = ({ onBorderRadiusChange, onBadgeChange, onOverlayChange } { label: 'l', value: 'l' }, ]} value={borderRadius} - onChange={(e) => setBorderRadius(e.target.value)} + onChange={setBorderRadius} /> </FormItem> @@ -162,7 +160,7 @@ const ImagePropsForm = ({ onBorderRadiusChange, onBadgeChange, onOverlayChange } ]} value={badgeBackground} disabled={!badge} - onChange={(e) => setBadgeBackground(e.target.value)} + onChange={setBadgeBackground} /> </FormItem> </FormLayoutGroup> @@ -185,7 +183,7 @@ const ImagePropsForm = ({ onBorderRadiusChange, onBadgeChange, onOverlayChange } ]} value={overlayTheme} disabled={!overlay} - onChange={(e) => setOverlayTheme(e.target.value)} + onChange={setOverlayTheme} /> </FormItem> <FormItem top="Image.Overlay[visibility]"> @@ -197,7 +195,7 @@ const ImagePropsForm = ({ onBorderRadiusChange, onBadgeChange, onOverlayChange } ]} value={overlayVisibility} disabled={!overlay} - onChange={(e) => setOverlayVisibility(e.target.value)} + onChange={setOverlayVisibility} /> </FormItem> </FormLayoutGroup> diff --git a/packages/vkui/src/components/InfoRow/InfoRow.stories.tsx b/packages/vkui/src/components/InfoRow/InfoRow.stories.tsx index 7eec4f7092..7052fc57b6 100644 --- a/packages/vkui/src/components/InfoRow/InfoRow.stories.tsx +++ b/packages/vkui/src/components/InfoRow/InfoRow.stories.tsx @@ -27,7 +27,7 @@ export const Example: Story = { ...Playground, decorators: [ (Component) => ( - <Group header={<Header mode="secondary">Информация о пользователе</Header>}> + <Group header={<Header size="s">Информация о пользователе</Header>}> <SimpleCell multiline> <Component args={{ header: 'Дата рождения', children: '30 января 1993' }} /> </SimpleCell> diff --git a/packages/vkui/src/components/InfoRow/Readme.md b/packages/vkui/src/components/InfoRow/Readme.md index 2be48761f4..01c762b1ab 100644 --- a/packages/vkui/src/components/InfoRow/Readme.md +++ b/packages/vkui/src/components/InfoRow/Readme.md @@ -10,7 +10,7 @@ <InfoRow header="Общий бюджет">3000 р.</InfoRow> </SimpleCell> </Group> - <Group header={<Header mode="secondary">Информация о пользователе</Header>}> + <Group header={<Header size="s">Информация о пользователе</Header>}> <SimpleCell multiline> <InfoRow header="Дата рождения">30 января 1993</InfoRow> </SimpleCell> diff --git a/packages/vkui/src/components/Input/Readme.md b/packages/vkui/src/components/Input/Readme.md index ed946911dc..7db9295b5a 100644 --- a/packages/vkui/src/components/Input/Readme.md +++ b/packages/vkui/src/components/Input/Readme.md @@ -12,7 +12,7 @@ const ExampleBase = ({ formItemStatus }) => { <FormItem top="align"> <Select value={align} - onChange={(e) => setAlign(e.target.value)} + onChange={setAlign} options={[ { label: 'left', value: 'left' }, { label: 'center', value: 'center' }, @@ -106,7 +106,7 @@ const Example = () => { <FormItem top="AdaptivityProvider[sizeY]"> <Select value={sizeY} - onChange={(e) => setSizeY(e.target.value)} + onChange={setSizeY} options={[ { label: 'compact', value: 'compact' }, { label: 'regular', value: 'regular' }, @@ -116,7 +116,7 @@ const Example = () => { <FormItem top="FormItem[status]"> <Select value={formItemStatus} - onChange={(e) => setFormItemStatus(e.target.value)} + onChange={setFormItemStatus} options={[ { label: 'default', value: 'default' }, { label: 'error', value: 'error' }, diff --git a/packages/vkui/src/components/List/List.tsx b/packages/vkui/src/components/List/List.tsx index 14a860484f..67bf6b2ad9 100644 --- a/packages/vkui/src/components/List/List.tsx +++ b/packages/vkui/src/components/List/List.tsx @@ -27,8 +27,8 @@ export const List = ({ role="list" className={classNames(styles.host, className)} style={{ - ...style, gridGap: gap, + ...style, }} {...restProps} > diff --git a/packages/vkui/src/components/ModalCardBase/ModalCardBase.tsx b/packages/vkui/src/components/ModalCardBase/ModalCardBase.tsx index 7915b62017..9480c3cdfe 100644 --- a/packages/vkui/src/components/ModalCardBase/ModalCardBase.tsx +++ b/packages/vkui/src/components/ModalCardBase/ModalCardBase.tsx @@ -126,8 +126,8 @@ export const ModalCardBase = ({ withSafeZone && styles.withSafeZone, )} style={{ - ...style, maxWidth: size, + ...style, }} > <div diff --git a/packages/vkui/src/components/ModalPage/ModalPage.stories.tsx b/packages/vkui/src/components/ModalPage/ModalPage.stories.tsx index b54a6bcc6a..0ba0a98aec 100644 --- a/packages/vkui/src/components/ModalPage/ModalPage.stories.tsx +++ b/packages/vkui/src/components/ModalPage/ModalPage.stories.tsx @@ -1,3 +1,4 @@ +import { useState } from 'react'; import * as React from 'react'; import type { Meta, StoryObj } from '@storybook/react'; import { Icon24Dismiss, Icon56MoneyTransferOutline } from '@vkontakte/icons'; @@ -9,7 +10,7 @@ import { getRandomUser, getRandomUsers } from '../../testing/mock'; import { Avatar } from '../Avatar/Avatar'; import { CellButton } from '../CellButton/CellButton'; import { Checkbox } from '../Checkbox/Checkbox'; -import { DatePicker } from '../DatePicker/DatePicker'; +import { DateInput } from '../DateInput/DateInput'; import { FormItem } from '../FormItem/FormItem'; import { Gradient } from '../Gradient/Gradient'; import { Group } from '../Group/Group'; @@ -132,7 +133,7 @@ export const FullscreenModalPage: Story = { </Gradient> <Group header={ - <Header mode="secondary" indicator="25"> + <Header size="s" indicator="25"> Друзья </Header> } @@ -153,6 +154,7 @@ export const FullscreenModalPage: Story = { export const ModalPageWithFilters: Story = { render: function Render() { + const [dateOfBirth, setDateOfBirth] = useState<Date | undefined>(new Date(1901, 0, 1)); const { sizeX } = useAdaptivityConditionalRender(); return ( @@ -212,12 +214,11 @@ export const ModalPageWithFilters: Story = { </FormItem> <FormItem top="Дата рождения"> - <DatePicker - min={{ day: 1, month: 1, year: 1901 }} - max={{ day: 1, month: 1, year: 2006 }} - dayPlaceholder="Д" - monthPlaceholder="ММ" - yearPlaceholder="ГГ" + <DateInput + value={dateOfBirth} + onChange={setDateOfBirth} + minDateTime={new Date(1901, 0, 1)} + maxDateTime={new Date(2006, 0, 1)} /> </FormItem> </Group> diff --git a/packages/vkui/src/components/ModalRoot/Readme.md b/packages/vkui/src/components/ModalRoot/Readme.md index 20945bbd68..c503f48ab2 100644 --- a/packages/vkui/src/components/ModalRoot/Readme.md +++ b/packages/vkui/src/components/ModalRoot/Readme.md @@ -105,6 +105,7 @@ const App = () => { const { isDesktop } = useAdaptivityWithJSMediaQueries(); const [activeModal, setActiveModal] = useState(null); const [modalHistory, setModalHistory] = useState([]); + const [dateOfBirth, setDateOfBirth] = useState(new Date(1901, 0, 1)); const [randomUser] = useState(() => getRandomUser()); const [users] = useState(() => 'k' @@ -146,7 +147,7 @@ const App = () => { </Gradient> <Group header={ - <Header mode="secondary" indicator="25"> + <Header size="s" indicator="25"> Друзья </Header> } @@ -302,12 +303,11 @@ const App = () => { </FormItem> <FormItem top="Дата рождения"> - <DatePicker - min={{ day: 1, month: 1, year: 1901 }} - max={{ day: 1, month: 1, year: 2006 }} - dayPlaceholder="Д" - monthPlaceholder="ММ" - yearPlaceholder="ГГ" + <DateInput + value={dateOfBirth} + onChange={setDateOfBirth} + minDateTime={new Date(1901, 0, 1)} + maxDateTime={new Date(2006, 0, 1)} /> </FormItem> </Group> diff --git a/packages/vkui/src/components/NativeSelect/NativeSelect.test.tsx b/packages/vkui/src/components/NativeSelect/NativeSelect.test.tsx index 11488b711d..c24a7fc2e7 100644 --- a/packages/vkui/src/components/NativeSelect/NativeSelect.test.tsx +++ b/packages/vkui/src/components/NativeSelect/NativeSelect.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { render, screen } from '@testing-library/react'; import { baselineComponent, userEvent } from '../../testing/utils'; -import { NativeSelect } from './NativeSelect'; +import { NativeSelect, type NativeSelectProps } from './NativeSelect'; const getTarget = () => screen.getByTestId<HTMLSelectElement>('target'); @@ -18,9 +18,9 @@ describe('NativeSelect', () => { it('works correctly with value and onChange', async () => { const SelectController = () => { - const [value, setValue] = React.useState('0'); + const [value, setValue] = React.useState<NativeSelectProps['value']>('0'); return ( - <NativeSelect data-testid="target" value={value} onChange={(e) => setValue(e.target.value)}> + <NativeSelect data-testid="target" value={value} onChange={setValue}> <option value="0">Mike</option> <option value="1">Josh</option> </NativeSelect> diff --git a/packages/vkui/src/components/NativeSelect/NativeSelect.tsx b/packages/vkui/src/components/NativeSelect/NativeSelect.tsx index e9386d4c1d..aaac37fc25 100644 --- a/packages/vkui/src/components/NativeSelect/NativeSelect.tsx +++ b/packages/vkui/src/components/NativeSelect/NativeSelect.tsx @@ -1,5 +1,6 @@ 'use client'; +import { type ChangeEventHandler } from 'react'; import * as React from 'react'; import { classNames } from '@vkontakte/vkjs'; import { useAdaptivity } from '../../hooks/useAdaptivity'; @@ -19,12 +20,49 @@ const sizeYClassNames = { compact: styles.sizeYCompact, }; +export type SelectValue = Exclude< + React.SelectHTMLAttributes<HTMLSelectElement>['value'], + undefined +> | null; + +export type NativeSelectValue = Exclude<SelectValue, null>; + +export const NOT_SELECTED = { + NATIVE: '__vkui_internal_Select_not_selected__', + CUSTOM: null, +}; + +export const remapFromSelectValueToNativeValue = (value: SelectValue): NativeSelectValue => + value === NOT_SELECTED.CUSTOM ? NOT_SELECTED.NATIVE : value; + +export const remapFromNativeValueToSelectValue = (value: NativeSelectValue): SelectValue => + value === NOT_SELECTED.NATIVE ? NOT_SELECTED.CUSTOM : value; + export interface NativeSelectProps - extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'multiple'>, + extends Omit< + React.SelectHTMLAttributes<HTMLSelectElement>, + 'multiple' | 'value' | 'defaultValue' | 'onChange' + >, HasRef<HTMLSelectElement>, HasRootRef<HTMLDivElement>, HasAlign, Pick<FormFieldProps, 'before' | 'status'> { + /** + * Выбранное значение. + * + * > ⚠️ Важно: При прокидывании `undefined` компонент будет считаться `Uncontrolled`. + * > + * > Не используйте `undefined`, чтобы показать невыбранное состояние. Вместо этого используйте `null` + */ + value?: SelectValue; + /** + * см. `value` + */ + defaultValue?: SelectValue; + /** + * Коллбэк срабатывающий при изменении выбранного значения. + */ + onChange?: (newValue: SelectValue) => void; placeholder?: string; multiline?: boolean; selectType?: SelectType; @@ -58,6 +96,8 @@ const NativeSelect = ({ icon = <DropdownIcon />, before, onChange, + value, + defaultValue, ...restProps }: NativeSelectProps): React.ReactNode => { const [title, setTitle] = React.useState(''); @@ -69,9 +109,14 @@ const NativeSelect = ({ const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex]; if (selectedOption) { setTitle(selectedOption.text); - setEmpty(selectedOption.value === '' && placeholder != null); + setEmpty(selectedOption.value === NOT_SELECTED.NATIVE && placeholder != null); } }; + + const _onChange: ChangeEventHandler<HTMLSelectElement> = (e) => { + const newValue = remapFromNativeValueToSelectValue(e.target.value); + onChange?.(newValue); + }; useIsomorphicLayoutEffect(checkSelectedOption, [children]); return ( @@ -98,12 +143,18 @@ const NativeSelect = ({ > <select {...restProps} + value={value !== undefined ? remapFromSelectValueToNativeValue(value) : value} + defaultValue={ + defaultValue !== undefined + ? remapFromSelectValueToNativeValue(defaultValue) + : defaultValue + } disabled={disabled} className={styles.el} - onChange={callMultiple(onChange, checkSelectedOption)} + onChange={callMultiple(_onChange, checkSelectedOption)} ref={selectRef} > - {placeholder && <option value="">{placeholder}</option>} + {placeholder && <option value={NOT_SELECTED.NATIVE}>{placeholder}</option>} {children} </select> <div className={styles.container} aria-hidden> diff --git a/packages/vkui/src/components/NativeSelect/Readme.md b/packages/vkui/src/components/NativeSelect/Readme.md index 3a66c1260b..1f0c3424c5 100644 --- a/packages/vkui/src/components/NativeSelect/Readme.md +++ b/packages/vkui/src/components/NativeSelect/Readme.md @@ -1,21 +1,78 @@ Надстройка над `<select />`. Компонент принимает все валидные для этого элемента свойства. +> Важно: для отображения невыбранного состояния нужно использовать `value=null` вместо `undefined`. +> +> `undefined` ипользуется только для неконтролируемого компонента. +> +> Также, чтобы отобразить невыбранное состояние необходимо задать `placeholder` + ```jsx -<View activePanel="native-select"> - <Panel id="native-select"> - <PanelHeader>NativeSelect</PanelHeader> - <Group> +const ControlledSelect = () => { + const [selectedOption, setSelectedOption] = useState(null); + + return ( + <Group header={<Header>Controlled</Header>}> <FormItem top="Выберите пол" - htmlFor="select-id" + htmlFor="gender-select-id" bottom="Пример селекта с возможностью выбрать пол пользователя" > - <NativeSelect id="select-id"> + <NativeSelect + id="gender-select-id" + placeholder="Не выбрано" + value={selectedOption} + onChange={setSelectedOption} + > <option value="m">Мужской</option> <option value="f">Женский</option> </NativeSelect> </FormItem> </Group> - </Panel> -</View> + ); +}; + +const UncontrolledSelect = () => { + const cityValueToName = { + 'Moscow': 'Москва', + 'Saint-Petersburg': 'Caнкт-Петербург', + }; + const cities = ['Moscow', 'Saint-Petersburg']; + + const onChange = (newValue) => + newValue + ? console.log('Выбран город', cityValueToName[newValue]) + : console.log('Выбор сброшен'); + + return ( + <Group header={<Header>Uncontrolled</Header>}> + <FormItem + top="Выберите город" + htmlFor="city-select-id" + bottom="Пример селекта с возможностью выбрать город" + > + <NativeSelect id="city-select-id" placeholder="Не выбрано" onChange={onChange}> + {cities.map((city) => ( + <option key={city} value={city}> + {cityValueToName[city]} + </option> + ))} + </NativeSelect> + </FormItem> + </Group> + ); +}; + +const Example = () => { + return ( + <View activePanel="native-select"> + <Panel id="native-select"> + <PanelHeader>Native Select</PanelHeader> + <ControlledSelect /> + <UncontrolledSelect /> + </Panel> + </View> + ); +}; + +<Example />; ``` diff --git a/packages/vkui/src/components/Pagination/Readme.md b/packages/vkui/src/components/Pagination/Readme.md index e2f955e348..207b8eb9d0 100644 --- a/packages/vkui/src/components/Pagination/Readme.md +++ b/packages/vkui/src/components/Pagination/Readme.md @@ -89,7 +89,7 @@ const Example = () => { <FormItem top="sizeY"> <Select value={sizeY} - onChange={(e) => setSizeY(e.target.value)} + onChange={setSizeY} options={[ { label: 'compact', value: 'compact' }, { label: 'regular', value: 'regular' }, @@ -99,7 +99,7 @@ const Example = () => { <FormItem top="prop[navigationButtonsStyle]"> <Select value={navigationButtonsStyle} - onChange={(e) => setNavigationButtonsStyle(e.target.value)} + onChange={setNavigationButtonsStyle} options={[ { label: 'icon', value: 'icon' }, { label: 'caption', value: 'caption' }, diff --git a/packages/vkui/src/components/PanelSpinner/Readme.md b/packages/vkui/src/components/PanelSpinner/Readme.md index edbcc4117d..532b5e911c 100644 --- a/packages/vkui/src/components/PanelSpinner/Readme.md +++ b/packages/vkui/src/components/PanelSpinner/Readme.md @@ -15,7 +15,7 @@ import { PanelSpinner } from '@vkontakte/vkui'; {loading ? ( <PanelSpinner>Панель загружается, пожалуйста, подождите...</PanelSpinner> ) : ( - <Group header={<Header mode="secondary">Информация</Header>}>...</Group> + <Group header={<Header size="s">Информация</Header>}>...</Group> )} </Panel>; ``` diff --git a/packages/vkui/src/components/Popper/Popper.tsx b/packages/vkui/src/components/Popper/Popper.tsx index 145f0bfe94..5764fe936d 100644 --- a/packages/vkui/src/components/Popper/Popper.tsx +++ b/packages/vkui/src/components/Popper/Popper.tsx @@ -166,7 +166,6 @@ export const Popper = ({ baseClassName={styles.host} getRootRef={handleRootRef} style={{ - ...styleProp, ...convertFloatingDataToReactCSSProperties( floatingPositionStrategy, floatingDataX, @@ -174,6 +173,7 @@ export const Popper = ({ sameWidth ? null : undefined, middlewareData, ), + ...styleProp, }} > {arrow && ( diff --git a/packages/vkui/src/components/Progress/Progress.tsx b/packages/vkui/src/components/Progress/Progress.tsx index 32b525dff5..bf2f9d4577 100644 --- a/packages/vkui/src/components/Progress/Progress.tsx +++ b/packages/vkui/src/components/Progress/Progress.tsx @@ -20,13 +20,6 @@ function progressCustomHeightStyle(height: number | undefined): React.CSSPropert : undefined; } -function progressStyle(height: number | undefined, styleProps: React.CSSProperties | undefined) { - const styleHeight = progressCustomHeightStyle(height); - const style = styleHeight ? { ...styleProps, ...styleHeight } : styleProps; - - return style; -} - export interface ProgressProps extends HTMLAttributesWithRootRef<HTMLDivElement> { /** * Стиль отображения прогрессбара @@ -49,19 +42,18 @@ export const Progress = ({ value = 0, appearance = 'accent', height, - style: styleProps, + style, ...restProps }: ProgressProps): React.ReactNode => { const progress = clamp(value, PROGRESS_MIN_VALUE, PROGRESS_MAX_VALUE); const title = `${progress} / ${PROGRESS_MAX_VALUE}`; - - const style = progressStyle(height, styleProps); + const styleHeight = progressCustomHeightStyle(height); return ( <RootComponent aria-valuenow={value} title={title} - style={style} + style={{ ...styleHeight, ...style }} {...restProps} role="progressbar" aria-valuemin={PROGRESS_MIN_VALUE} diff --git a/packages/vkui/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx b/packages/vkui/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx index af6d7089f3..3d33434c2a 100644 --- a/packages/vkui/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx +++ b/packages/vkui/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx @@ -12,8 +12,7 @@ export const ScreenSpinnerLoader: React.FC<Omit<SpinnerProps, 'size'>> = ({ ...restProps }) => { const { label } = React.useContext(ScreenSpinnerContext); - // TODO [>=7]: см. https://github.com/VKCOM/VKUI/pull/7505#discussion_r1754153438 - const a11yText = children ? children : label ?? 'Пожалуйста, подождите...'; + const a11yText = children ?? label; return ( <Spinner className={classNames(styles.spinner, !label && styles.spinnerTransition)} diff --git a/packages/vkui/src/components/Select/Readme.md b/packages/vkui/src/components/Select/Readme.md index 97c49e28c1..0c1ca1f3ad 100644 --- a/packages/vkui/src/components/Select/Readme.md +++ b/packages/vkui/src/components/Select/Readme.md @@ -1,5 +1,9 @@ Отрисовывает [CustomSelect](#!/CustomSelect), если есть мышка, либо [NativeSelect](#!/NativeSelect) +> Важно: для отображения невыбранного состояния нужно использовать `value=null` вместо `undefined`. +> +> `undefined` ипользуется только для неконтролируемого компонента. + ## Цифровая доступность (a11y) Старайтесь сопровождать элемент текстовым описанием, для корректной работы скринридеров. diff --git a/packages/vkui/src/components/Separator/Readme.md b/packages/vkui/src/components/Separator/Readme.md index 575d352d48..ee8eca2d13 100644 --- a/packages/vkui/src/components/Separator/Readme.md +++ b/packages/vkui/src/components/Separator/Readme.md @@ -12,7 +12,7 @@ <Panel id="separator"> <PanelHeader>Separator</PanelHeader> - <Group header={<Header mode="secondary">direction="horizontal"</Header>}> + <Group header={<Header size="s">direction="horizontal"</Header>}> <Cell before={<Icon28Notifications />}>Уведомления</Cell> <Cell before={<Icon28BlockOutline />}>Не беспокоить</Cell> @@ -21,7 +21,7 @@ <Cell before={<Icon28UserOutline />}>Учётная запись</Cell> <Cell before={<Icon28SlidersOutline />}>Основные</Cell> </Group> - <Group header={<Header mode="secondary">direction="vertical"</Header>}> + <Group header={<Header size="s">direction="vertical"</Header>}> <Flex margin="auto"> <Link>Новости</Link> <Separator direction="vertical" size="xl" /> diff --git a/packages/vkui/src/components/SimpleCell/Readme.md b/packages/vkui/src/components/SimpleCell/Readme.md index 66ca6726fe..4b10104258 100644 --- a/packages/vkui/src/components/SimpleCell/Readme.md +++ b/packages/vkui/src/components/SimpleCell/Readme.md @@ -6,7 +6,7 @@ const Example = () => { <View activePanel={activePanel}> <Panel id="list"> <PanelHeader>SimpleCell</PanelHeader> - <Group header={<Header mode="secondary">Меню</Header>}> + <Group header={<Header size="s">Меню</Header>}> <SimpleCell onClick={() => setActivePanel('nothing')} chevron="auto" @@ -29,7 +29,7 @@ const Example = () => { Основные </SimpleCell> </Group> - <Group header={<Header mode="secondary">Настройки</Header>}> + <Group header={<Header size="s">Настройки</Header>}> <SimpleCell Component="label" after={<Switch defaultChecked />}> Сжимать фотографии </SimpleCell> @@ -37,7 +37,7 @@ const Example = () => { Сжимать видео </SimpleCell> </Group> - <Group header={<Header mode="secondary">Настройки системы</Header>}> + <Group header={<Header size="s">Настройки системы</Header>}> <SimpleCell onClick={() => setActivePanel('nothing')} chevron="auto" indicator="Русский"> Язык </SimpleCell> @@ -49,7 +49,7 @@ const Example = () => { Геолокация </SimpleCell> </Group> - <Group header={<Header mode="secondary">Список диалогов</Header>}> + <Group header={<Header size="s">Список диалогов</Header>}> <SimpleCell before={<Avatar size={40} src={getAvatarUrl('user_xyz')} />} after={ @@ -73,7 +73,7 @@ const Example = () => { Artur Stambultsian </SimpleCell> </Group> - <Group header={<Header mode="secondary">Список друзей</Header>}> + <Group header={<Header size="s">Список друзей</Header>}> <SimpleCell before={<Avatar size={48} src={getAvatarUrl('user_xyz')} />} badgeAfterTitle={<Icon12Verified />} diff --git a/packages/vkui/src/components/SimpleCell/SimpleCell.e2e-playground.tsx b/packages/vkui/src/components/SimpleCell/SimpleCell.e2e-playground.tsx index 88bdc0831d..2a4f5d6368 100644 --- a/packages/vkui/src/components/SimpleCell/SimpleCell.e2e-playground.tsx +++ b/packages/vkui/src/components/SimpleCell/SimpleCell.e2e-playground.tsx @@ -67,7 +67,7 @@ export const SimpleCellPlayground = (props: ComponentPlaygroundProps) => { }, { before: [<Avatar key="avatar" size={40} />], - subhead: ['Subhead'], + overTitle: ['Subhead'], children: ['Title'], subtitle: ['Subtitle'], extraSubtitle: ['Extra Subtitle'], diff --git a/packages/vkui/src/components/SimpleCell/SimpleCell.module.css b/packages/vkui/src/components/SimpleCell/SimpleCell.module.css index a3586a5522..3c59121c69 100644 --- a/packages/vkui/src/components/SimpleCell/SimpleCell.module.css +++ b/packages/vkui/src/components/SimpleCell/SimpleCell.module.css @@ -60,7 +60,7 @@ margin-block-start: var(--vkui--spacing_size_2xs); } -.subhead { +.overTitle { color: var(--vkui--color_text_subhead); } diff --git a/packages/vkui/src/components/SimpleCell/SimpleCell.stories.tsx b/packages/vkui/src/components/SimpleCell/SimpleCell.stories.tsx index 84afee9bdc..9bfc8e4c83 100644 --- a/packages/vkui/src/components/SimpleCell/SimpleCell.stories.tsx +++ b/packages/vkui/src/components/SimpleCell/SimpleCell.stories.tsx @@ -16,7 +16,7 @@ const story: Meta<SimpleCellProps> = { component: SimpleCell, parameters: { ...CanvasFullLayout, ...DisableCartesianParam }, argTypes: { - subhead: StringArg, + overTitle: StringArg, extraSubtitle: StringArg, before: createFieldWithPresets({ iconSizes: ['28'], diff --git a/packages/vkui/src/components/SimpleCell/SimpleCell.tsx b/packages/vkui/src/components/SimpleCell/SimpleCell.tsx index 7b40114c29..83c18194ba 100644 --- a/packages/vkui/src/components/SimpleCell/SimpleCell.tsx +++ b/packages/vkui/src/components/SimpleCell/SimpleCell.tsx @@ -45,7 +45,7 @@ export interface SimpleCellOwnProps extends HasComponent { /** * Дополнительная строка текста над `children`. */ - subhead?: React.ReactNode; + overTitle?: React.ReactNode; /** * Дополнительная строка текста под `children`. */ @@ -95,7 +95,7 @@ export const SimpleCell = ({ after, chevron, multiline, - subhead, + overTitle, subtitle, extraSubtitle, className, @@ -124,9 +124,9 @@ export const SimpleCell = ({ {before} </div> <div className={styles.middle}> - {subhead && ( - <Subhead Component="span" className={classNames(styles.text, styles.subhead)}> - {subhead} + {overTitle && ( + <Subhead Component="span" className={classNames(styles.text, styles.overTitle)}> + {overTitle} </Subhead> )} <div className={styles.content}> diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png index cadfe562f0..fd1d1bc1a4 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aff1fb5d3986e6628fea13b1e2e9c08485bd63f4bb284177b62acea341b81a84 -size 133088 +oid sha256:f67c7f5f5bc0bacebdf30bd841e02c55474db7612fb5664763a4541c08d0fc5e +size 133391 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png index b28db9cb02..a9fcd6622e 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49b8b6a3826583068c7d3e2c879073443cf7f9c6e9ff4b8c2de4ab7bf19d8ed6 -size 129271 +oid sha256:373ef913ee31cbfa682dc6b6ace8d8e2dc0718b637cd4bf3bf01307e9f788e2e +size 129652 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png index 9ad8dfdc79..126d47269f 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1bc127074fbccd75fd0fd1a2e18849f8a6a89f6c19e2d4ac8cb60da4ad6ebc1 -size 138304 +oid sha256:6a52d02b4d3aefddd4548fb9c4449fe9d2a113ff3b27c65f89549de274ee304b +size 138770 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png index 98c236d89e..a1173a101b 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7af6f83a7ef40c42eb372995c8c134b6e7762c07f59b865dc57d9cae8b2d93ab -size 133792 +oid sha256:c2c921db0396b5e0803dc19150bc65a77368543eb0447ca66e974e8a67da8652 +size 134284 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png index 4ee6004a85..e11fb6f07b 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:225698f6f62f429db0a5e899384c864ada8d1870388fa2fa78e32b29a8a7a3c0 -size 118627 +oid sha256:2684cd6f6be7e1fe1e4d6184369b218a2f50b61de789e026758058944aaeffac +size 118897 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png index 6eca907a8b..d223ea8db2 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:faa1bce2967558b1948d18f249dde88394a47686b3a94f59778eac2748eea042 -size 120402 +oid sha256:f9dd3b5e6f24f26f25030336c6bee8890ca32fd2397709ca7d61b1b2093abc9a +size 120819 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png index 1bb2b96e8c..cd5d65f4ba 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e883aa88db1b06fbcf339292557c497065d1e065561dda62e22a73d92d34d548 -size 212266 +oid sha256:585f032b0e56699b0b41c79ffb06d3c013b4feb90794eebf80058fa05bfecb91 +size 212068 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png index 19413dc7ab..85df884a6d 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0331465297206fbf63bb319618546dfe5d509d88f17a680a2e9a9649c856d878 -size 210920 +oid sha256:6e3407c2892dc7ef168f8afefe2a6011f5442f4f86ef7a290504dc7f521470ba +size 210735 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png index 6e9d448fe0..93261fd1f4 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0f9c48bdb2ebec4b77a6a757230be0d784e2d38f3b395f9d5de543f19e262ba -size 122912 +oid sha256:00dbbb7873f6d8ac1547c3261808a8c92b03f647244f28ea23919d268cd88733 +size 123225 diff --git a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png index d1adbd67f3..e3296d69d2 100644 --- a/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png +++ b/packages/vkui/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c30aa48402a209633ea11547d329b61f6b5174b38f3c707ec643dd5876aaab58 -size 123685 +oid sha256:391d406dfea789cc713623cacd897cf9285a2b8bb73a80efef768526db382913 +size 123993 diff --git a/packages/vkui/src/components/SimpleGrid/Readme.md b/packages/vkui/src/components/SimpleGrid/Readme.md index ae11a8d27e..0b5f890a46 100644 --- a/packages/vkui/src/components/SimpleGrid/Readme.md +++ b/packages/vkui/src/components/SimpleGrid/Readme.md @@ -139,7 +139,7 @@ const Example = () => { <FormItem top="align"> <Select value={align} - onChange={(e) => setAlign(e.target.value || 'stretch')} + onChange={(newValue) => setAlign(newValue || 'stretch')} placeholder="Не выбрано" options={[ { label: 'start', value: 'start' }, @@ -156,29 +156,17 @@ const Example = () => { </Checkbox> {!complexGap && ( <FormItem top="gap"> - <Select - value={gap} - onChange={(e) => setGap(e.target.value)} - options={GapSelectValues} - /> + <Select value={gap} onChange={setGap} options={GapSelectValues} /> </FormItem> )} {complexGap && ( <FormItem top="row gap"> - <Select - value={rowGap} - onChange={(e) => setRowGap(e.target.value)} - options={GapSelectValues} - /> + <Select value={rowGap} onChange={setRowGap} options={GapSelectValues} /> </FormItem> )} {complexGap && ( <FormItem top="column gap"> - <Select - value={columnGap} - onChange={(e) => setColumnGap(e.target.value)} - options={GapSelectValues} - /> + <Select value={columnGap} onChange={setColumnGap} options={GapSelectValues} /> </FormItem> )} </div> diff --git a/packages/vkui/src/components/Slider/Readme.md b/packages/vkui/src/components/Slider/Readme.md index fce3f87348..2e39a2e946 100644 --- a/packages/vkui/src/components/Slider/Readme.md +++ b/packages/vkui/src/components/Slider/Readme.md @@ -63,11 +63,7 @@ const Example = () => { /> </FormItem> <FormItem> - <Select - value={String(valueStep)} - options={options()} - onChange={(e) => setValueStep(e.target.value)} - /> + <Select value={String(valueStep)} options={options()} onChange={setValueStep} /> </FormItem> <FormItem top={<span id="uncontrolled">Uncontrolled</span>}> <Slider defaultValue={20} aria-labelledby="uncontrolled" /> diff --git a/packages/vkui/src/components/Spacing/Readme.md b/packages/vkui/src/components/Spacing/Readme.md index 07389081e8..14ee378f8b 100644 --- a/packages/vkui/src/components/Spacing/Readme.md +++ b/packages/vkui/src/components/Spacing/Readme.md @@ -14,7 +14,7 @@ <Panel id="separator"> <PanelHeader>Spacing</PanelHeader> - <Group header={<Header mode="secondary">Default Spacing (empty, 8px)</Header>}> + <Group header={<Header size="s">Default Spacing (empty, 8px)</Header>}> <SimpleCell before={<Icon28Notifications />}>Уведомления</SimpleCell> <SimpleCell before={<Icon28BlockOutline />}>Не беспокоить</SimpleCell> @@ -24,7 +24,7 @@ <SimpleCell before={<Icon28SlidersOutline />}>Основные</SimpleCell> </Group> - <Group header={<Header mode="secondary">Spacing 16px</Header>}> + <Group header={<Header size="s">Spacing 16px</Header>}> <SimpleCell before={<Icon28Notifications />}>Уведомления</SimpleCell> <SimpleCell before={<Icon28BlockOutline />}>Не беспокоить</SimpleCell> diff --git a/packages/vkui/src/components/Spinner/Spinner.module.css b/packages/vkui/src/components/Spinner/Spinner.module.css index fdfe43e58f..37c139c4ec 100644 --- a/packages/vkui/src/components/Spinner/Spinner.module.css +++ b/packages/vkui/src/components/Spinner/Spinner.module.css @@ -10,13 +10,3 @@ .noColor { color: currentColor; } - -/** - * CMP: - * PanelHeader - * TODO [>=7]: удалить - */ -/* stylelint-disable-next-line selector-pseudo-class-disallowed-list */ -:global(.vkuiInternalPanelHeader) .host { - color: currentColor; -} diff --git a/packages/vkui/src/components/SplitCol/SplitCol.tsx b/packages/vkui/src/components/SplitCol/SplitCol.tsx index a2b6cb610f..6a5d63b8d8 100644 --- a/packages/vkui/src/components/SplitCol/SplitCol.tsx +++ b/packages/vkui/src/components/SplitCol/SplitCol.tsx @@ -98,10 +98,10 @@ export const SplitCol = (props: SplitColProps): React.ReactNode => { <RootComponent {...restProps} style={{ + width, + maxWidth, + minWidth, ...style, - width: width, - maxWidth: maxWidth, - minWidth: minWidth, }} getRootRef={baseRef} baseClassName={classNames( diff --git a/packages/vkui/src/components/SubnavigationButton/Readme.md b/packages/vkui/src/components/SubnavigationButton/Readme.md index 61f3a6bfb8..96af7f93b2 100644 --- a/packages/vkui/src/components/SubnavigationButton/Readme.md +++ b/packages/vkui/src/components/SubnavigationButton/Readme.md @@ -46,7 +46,7 @@ const SubnavigationButtonExample = () => { <FormItem top="appearance"> <Select value={appearance} - onChange={(e) => setAppearance(e.target.value)} + onChange={setAppearance} options={[ { label: 'accent', value: 'accent' }, { label: 'neutral', value: 'neutral' }, @@ -56,7 +56,7 @@ const SubnavigationButtonExample = () => { <FormItem top="text level"> <Select value={textLevel} - onChange={(e) => setTextLevel(e.target.value)} + onChange={setTextLevel} options={[ { label: '1', value: '1' }, { label: '2', value: '2' }, @@ -67,7 +67,7 @@ const SubnavigationButtonExample = () => { <FormItem top="size"> <Select value={size} - onChange={(e) => setSize(e.target.value)} + onChange={setSize} options={[ { label: 's', value: 's' }, { label: 'm', value: 'm' }, @@ -78,7 +78,7 @@ const SubnavigationButtonExample = () => { <FormItem top="sizeY"> <Select value={sizeY} - onChange={(e) => setSizeY(e.target.value)} + onChange={setSizeY} options={[ { label: 'compact', value: 'compact' }, { diff --git a/packages/vkui/src/components/Tabs/Readme.md b/packages/vkui/src/components/Tabs/Readme.md index 0254ab3247..47117f6ce2 100644 --- a/packages/vkui/src/components/Tabs/Readme.md +++ b/packages/vkui/src/components/Tabs/Readme.md @@ -213,7 +213,7 @@ const Scrollable = () => { value: 'secondary', }, ]} - onChange={(event) => setMode(event.target.value)} + onChange={setMode} /> </FormItem> <FormItem top="layoutFillMode"> @@ -233,7 +233,7 @@ const Scrollable = () => { value: 'shrinked', }, ]} - onChange={(event) => setLayoutFillMode(event.target.value)} + onChange={setLayoutFillMode} /> </FormItem> <Checkbox onChange={() => setDisabled((prev) => !prev)}>disabled</Checkbox> diff --git a/packages/vkui/src/components/ToolButton/Readme.md b/packages/vkui/src/components/ToolButton/Readme.md index d6d62cca45..06f7744177 100644 --- a/packages/vkui/src/components/ToolButton/Readme.md +++ b/packages/vkui/src/components/ToolButton/Readme.md @@ -44,7 +44,7 @@ const Example = () => { <FormItem top="direction"> <Select value={direction} - onChange={(e) => setDirection(e.target.value)} + onChange={setDirection} options={[ { label: 'row', value: 'row' }, { label: 'column', value: 'column' }, @@ -54,7 +54,7 @@ const Example = () => { <FormItem top="mode"> <Select value={mode} - onChange={(e) => setMode(e.target.value)} + onChange={setMode} options={[ { label: 'primary', value: 'primary' }, { label: 'secondary', value: 'secondary' }, @@ -66,7 +66,7 @@ const Example = () => { <FormItem top="appearance"> <Select value={appearance} - onChange={(e) => setAppearance(e.target.value)} + onChange={setAppearance} options={[ { label: 'accent', value: 'accent' }, { label: 'neutral', value: 'neutral' }, @@ -76,7 +76,7 @@ const Example = () => { <FormItem top="sizeY"> <Select value={sizeY} - onChange={(e) => setSizeY(e.target.value)} + onChange={setSizeY} options={[ { label: 'compact', value: 'compact' }, { diff --git a/packages/vkui/src/components/Touch/Readme.md b/packages/vkui/src/components/Touch/Readme.md index fa078b445c..8d5607c7d7 100644 --- a/packages/vkui/src/components/Touch/Readme.md +++ b/packages/vkui/src/components/Touch/Readme.md @@ -65,7 +65,7 @@ const Example = () => { <View activePanel="gallery"> <Panel id="gallery"> <PanelHeader>Touch</PanelHeader> - <Group header={<Header mode="secondary">Перетащите кружок</Header>}> + <Group header={<Header size="s">Перетащите кружок</Header>}> <div style={{ ...containerStyle, diff --git a/packages/vkui/src/components/Touch/Touch.tsx b/packages/vkui/src/components/Touch/Touch.tsx index fec7205677..59fc834c1f 100644 --- a/packages/vkui/src/components/Touch/Touch.tsx +++ b/packages/vkui/src/components/Touch/Touch.tsx @@ -25,11 +25,11 @@ export interface TouchProps useCapture?: boolean; slideThreshold?: number; noSlideClick?: boolean; - onEnter?: HoverHandler; // TODO [>=7] Заменить типы события в VKUITouchEvent на события из React + onEnter?: HoverHandler; onLeave?: HoverHandler; - onStart?: CustomTouchEventHandler; // TODO [>=7] Заменить типы события в VKUITouchEvent на события из React - onStartX?: CustomTouchEventHandler; // TODO [>=7] Заменить типы события в VKUITouchEvent на события из React - onStartY?: CustomTouchEventHandler; // TODO [>=7] Заменить типы события в VKUITouchEvent на события из React + onStart?: CustomTouchEventHandler; + onStartX?: CustomTouchEventHandler; + onStartY?: CustomTouchEventHandler; onMove?: CustomTouchEventHandler; onMoveX?: CustomTouchEventHandler; onMoveY?: CustomTouchEventHandler; diff --git a/packages/vkui/src/components/UsersStack/Readme.md b/packages/vkui/src/components/UsersStack/Readme.md index 29abef1b74..5d5f122e40 100644 --- a/packages/vkui/src/components/UsersStack/Readme.md +++ b/packages/vkui/src/components/UsersStack/Readme.md @@ -62,7 +62,7 @@ const App = () => { </Div> </Group> - <Group header={<Header mode="secondary">Вертикальный режим</Header>}> + <Group header={<Header size="s">Вертикальный режим</Header>}> <Div> <UsersStack photos={[ @@ -102,7 +102,7 @@ const App = () => { </Flex> </Group> - <Group header={<Header mode="secondary">Кликабельные с тултипом</Header>}> + <Group header={<Header size="s">Кликабельные с тултипом</Header>}> <Div> <UsersStack photos={[ diff --git a/packages/vkui/src/hooks/useAdaptivityConditionalRender/constants.ts b/packages/vkui/src/hooks/useAdaptivityConditionalRender/constants.ts index 828dae3c51..518fb78077 100644 --- a/packages/vkui/src/hooks/useAdaptivityConditionalRender/constants.ts +++ b/packages/vkui/src/hooks/useAdaptivityConditionalRender/constants.ts @@ -1,49 +1,30 @@ +import { type ElementProps } from './types'; import styles from '../../styles/adaptivity.module.css'; -export const sizeXCompactClassNames: Record<'mq' | 'compact', { className: string }> = { - mq: { className: styles['-sizeX--compact-mq'] }, - compact: { className: styles['-sizeX--compact-forced'] }, +export const forcedProps = { className: '' }; + +export const sizeXCompactMediaQueryProps: ElementProps = { + className: styles['-sizeX--compact-mq'], }; -export const sizeXRegularClassNames: Record<'mq' | 'regular', { className: string }> = { - mq: { className: styles['-sizeX--regular-mq'] }, - regular: { className: styles['-sizeX--regular-forced'] }, +export const sizeXRegularMediaQueryProps: ElementProps = { + className: styles['-sizeX--regular-mq'], }; -export const sizeYCompactClassNames: Record<'mq' | 'compact', { className: string }> = { - mq: { className: styles['-sizeY--compact-mq'] }, - compact: { className: styles['-sizeY--compact-forced'] }, +export const sizeYCompactMediaQueryProps: ElementProps = { + className: styles['-sizeY--compact-mq'], }; -export const sizeYRegularClassNames: Record<'mq' | 'regular', { className: string }> = { - mq: { className: styles['-sizeY--regular-mq'] }, - regular: { className: styles['-sizeY--regular-forced'] }, +export const sizeYRegularMediaQueryProps: ElementProps = { + className: styles['-sizeY--regular-mq'], }; -export const viewWidthClassNames: Record< - 'tabletMinus' | 'tabletPlus', - Record<'mq' | 'forced', { className: string }> -> = { - tabletMinus: { - mq: { className: styles['-viewWidth--tabletMinus-mq'] }, - forced: { className: styles['-viewWidth--tabletMinus-forced'] }, - }, - tabletPlus: { - mq: { className: styles['-viewWidth--tabletPlus-mq'] }, - forced: { className: styles['-viewWidth--tabletPlus-forced'] }, - }, +export const viewWidthMediaQueryMapProps: Record<'tabletMinus' | 'tabletPlus', ElementProps> = { + tabletMinus: { className: styles['-viewWidth--tabletMinus-mq'] }, + tabletPlus: { className: styles['-viewWidth--tabletPlus-mq'] }, }; -export const deviceTypeClassNames: Record< - 'mobile' | 'desktop', - Record<'mq' | 'forced', { className: string }> -> = { - mobile: { - mq: { className: styles['-deviceType--mobile-mq'] }, - forced: { className: styles['-deviceType--mobile-forced'] }, - }, - desktop: { - mq: { className: styles['-deviceType--desktop-mq'] }, - forced: { className: styles['-deviceType--desktop-forced'] }, - }, +export const deviceTypeMediaQueryMapProps: Record<'mobile' | 'desktop', ElementProps> = { + mobile: { className: styles['-deviceType--mobile-mq'] }, + desktop: { className: styles['-deviceType--desktop-mq'] }, }; diff --git a/packages/vkui/src/hooks/useAdaptivityConditionalRender/helpers.ts b/packages/vkui/src/hooks/useAdaptivityConditionalRender/helpers.ts index de8a66d1de..48ca6533ff 100644 --- a/packages/vkui/src/hooks/useAdaptivityConditionalRender/helpers.ts +++ b/packages/vkui/src/hooks/useAdaptivityConditionalRender/helpers.ts @@ -6,6 +6,7 @@ import { type ViewWidthType, } from '../../lib/adaptivity'; import type { PlatformType } from '../../lib/platform'; +import { forcedProps } from './constants'; import type { AdaptiveDeviceType, AdaptiveSizeType, @@ -17,41 +18,31 @@ import type { export const getAdaptiveSizeType = ( type: undefined | SizeTypeValues, - compactClassNames: Record<'mq' | 'compact', ElementProps>, - regularClassNames: Record<'mq' | 'regular', ElementProps>, + compactMediaQueryProps: ElementProps, + regularMediaQueryProps: ElementProps, ): AdaptiveSizeType => { return { - compact: - type === undefined - ? compactClassNames.mq - : type === 'compact' - ? compactClassNames[type] - : false, - regular: - type === undefined - ? regularClassNames.mq - : type === 'regular' - ? regularClassNames[type] - : false, + compact: type === undefined ? compactMediaQueryProps : type === 'compact' ? forcedProps : false, + regular: type === undefined ? regularMediaQueryProps : type === 'regular' ? forcedProps : false, }; }; export const getAdaptiveViewWidth = ( viewWidth: undefined | ViewWidthType, - viewWidthClassNames: Record<ViewWidthCSSBreakpoints, Record<'mq' | 'forced', ElementProps>>, + viewWidthMapProps: Record<ViewWidthCSSBreakpoints, ElementProps>, ): AdaptiveViewWidth => { return { tabletMinus: viewWidth === undefined - ? viewWidthClassNames.tabletMinus.mq + ? viewWidthMapProps.tabletMinus : viewWidth < ViewWidth.TABLET - ? viewWidthClassNames.tabletMinus.forced + ? forcedProps : false, tabletPlus: viewWidth === undefined - ? viewWidthClassNames.tabletPlus.mq + ? viewWidthMapProps.tabletPlus : viewWidth >= ViewWidth.TABLET - ? viewWidthClassNames.tabletPlus.forced + ? forcedProps : false, }; }; @@ -61,26 +52,26 @@ export const getAdaptiveDeviceType = ( viewHeight: undefined | ViewHeightType, hasPointer: undefined | boolean, platform: PlatformType, - deviceTypeClassNames: Record<DeviceTypeCSSBreakpoints, Record<'mq' | 'forced', ElementProps>>, + deviceTypeMapProps: Record<DeviceTypeCSSBreakpoints, ElementProps>, ): AdaptiveDeviceType => { const isDesktop = tryToCheckIsDesktop(viewWidth, viewHeight, hasPointer, platform); if (isDesktop === null) { return { - mobile: deviceTypeClassNames.mobile.mq, - desktop: deviceTypeClassNames.desktop.mq, + mobile: deviceTypeMapProps.mobile, + desktop: deviceTypeMapProps.desktop, }; } if (isDesktop) { return { mobile: false, - desktop: deviceTypeClassNames.desktop.forced, + desktop: forcedProps, }; } return { - mobile: deviceTypeClassNames.mobile.forced, + mobile: forcedProps, desktop: false, }; }; diff --git a/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.test.tsx b/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.test.tsx index fa1be51f6c..078aeed9a5 100644 --- a/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.test.tsx +++ b/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.test.tsx @@ -3,12 +3,13 @@ import type { AdaptivityProps } from '../../components/AdaptivityProvider/Adapti import { AdaptivityProvider } from '../../components/AdaptivityProvider/AdaptivityProvider'; import { ViewHeight, ViewWidth } from '../../lib/adaptivity'; import { - deviceTypeClassNames, - sizeXCompactClassNames, - sizeXRegularClassNames, - sizeYCompactClassNames, - sizeYRegularClassNames, - viewWidthClassNames, + deviceTypeMediaQueryMapProps, + forcedProps, + sizeXCompactMediaQueryProps, + sizeXRegularMediaQueryProps, + sizeYCompactMediaQueryProps, + sizeYRegularMediaQueryProps, + viewWidthMediaQueryMapProps, } from './constants'; import { useAdaptivityConditionalRender } from './useAdaptivityConditionalRender'; @@ -17,32 +18,32 @@ describe(useAdaptivityConditionalRender, () => { it('sizeX', () => { const { result } = renderHook(useAdaptivityConditionalRender); expect(result.current.sizeX).toMatchObject({ - compact: sizeXCompactClassNames.mq, - regular: sizeXRegularClassNames.mq, + compact: sizeXCompactMediaQueryProps, + regular: sizeXRegularMediaQueryProps, }); }); it('sizeY', () => { const { result } = renderHook(useAdaptivityConditionalRender); expect(result.current.sizeY).toMatchObject({ - compact: sizeYCompactClassNames.mq, - regular: sizeYRegularClassNames.mq, + compact: sizeYCompactMediaQueryProps, + regular: sizeYRegularMediaQueryProps, }); }); it('viewWidth', () => { const { result } = renderHook(useAdaptivityConditionalRender); expect(result.current.viewWidth).toMatchObject({ - tabletPlus: viewWidthClassNames.tabletPlus.mq, - tabletMinus: viewWidthClassNames.tabletMinus.mq, + tabletPlus: viewWidthMediaQueryMapProps.tabletPlus, + tabletMinus: viewWidthMediaQueryMapProps.tabletMinus, }); }); it('deviceType', () => { const { result } = renderHook(useAdaptivityConditionalRender); expect(result.current.deviceType).toMatchObject({ - mobile: deviceTypeClassNames.mobile.mq, - desktop: deviceTypeClassNames.desktop.mq, + mobile: deviceTypeMediaQueryMapProps.mobile, + desktop: deviceTypeMediaQueryMapProps.desktop, }); }); }); @@ -59,7 +60,7 @@ describe(useAdaptivityConditionalRender, () => { sizeX: 'compact', }); expect(result.current.sizeX).toMatchObject({ - compact: sizeXCompactClassNames['compact'], + compact: forcedProps, regular: false, }); }); @@ -70,7 +71,7 @@ describe(useAdaptivityConditionalRender, () => { }); expect(result.current.sizeX).toMatchObject({ compact: false, - regular: sizeXRegularClassNames['regular'], + regular: forcedProps, }); }); }); @@ -81,7 +82,7 @@ describe(useAdaptivityConditionalRender, () => { sizeY: 'compact', }); expect(result.current.sizeY).toMatchObject({ - compact: sizeYCompactClassNames['compact'], + compact: forcedProps, regular: false, }); }); @@ -92,7 +93,7 @@ describe(useAdaptivityConditionalRender, () => { }); expect(result.current.sizeY).toMatchObject({ compact: false, - regular: sizeYRegularClassNames['regular'], + regular: forcedProps, }); }); }); @@ -103,7 +104,7 @@ describe(useAdaptivityConditionalRender, () => { viewWidth: ViewWidth.TABLET, }); expect(result.current.viewWidth).toMatchObject({ - tabletPlus: viewWidthClassNames.tabletPlus.forced, + tabletPlus: forcedProps, tabletMinus: false, }); }); @@ -114,7 +115,7 @@ describe(useAdaptivityConditionalRender, () => { }); expect(result.current.viewWidth).toMatchObject({ tabletPlus: false, - tabletMinus: viewWidthClassNames.tabletMinus.forced, + tabletMinus: forcedProps, }); }); }); @@ -125,8 +126,8 @@ describe(useAdaptivityConditionalRender, () => { viewWidth: ViewWidth.SMALL_MOBILE, }); expect(result.current.deviceType).toMatchObject({ - mobile: deviceTypeClassNames.mobile.mq, - desktop: deviceTypeClassNames.desktop.mq, + mobile: deviceTypeMediaQueryMapProps.mobile, + desktop: deviceTypeMediaQueryMapProps.desktop, }); }); @@ -135,8 +136,8 @@ describe(useAdaptivityConditionalRender, () => { viewHeight: ViewHeight.MEDIUM, }); expect(result.current.deviceType).toMatchObject({ - mobile: deviceTypeClassNames.mobile.mq, - desktop: deviceTypeClassNames.desktop.mq, + mobile: deviceTypeMediaQueryMapProps.mobile, + desktop: deviceTypeMediaQueryMapProps.desktop, }); }); @@ -146,7 +147,7 @@ describe(useAdaptivityConditionalRender, () => { viewHeight: ViewHeight.MEDIUM, }); expect(result.current.deviceType).toMatchObject({ - mobile: deviceTypeClassNames.mobile.forced, + mobile: forcedProps, desktop: false, }); }); @@ -158,7 +159,7 @@ describe(useAdaptivityConditionalRender, () => { }); expect(result.current.deviceType).toMatchObject({ mobile: false, - desktop: deviceTypeClassNames.desktop.forced, + desktop: forcedProps, }); }); }); diff --git a/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.tsx b/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.tsx index 5efe84fa69..70248c0f89 100644 --- a/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.tsx +++ b/packages/vkui/src/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.tsx @@ -2,12 +2,12 @@ import * as React from 'react'; import { AdaptivityContext } from '../../components/AdaptivityProvider/AdaptivityContext'; import { usePlatform } from '../usePlatform'; import { - deviceTypeClassNames, - sizeXCompactClassNames, - sizeXRegularClassNames, - sizeYCompactClassNames, - sizeYRegularClassNames, - viewWidthClassNames, + deviceTypeMediaQueryMapProps, + sizeXCompactMediaQueryProps, + sizeXRegularMediaQueryProps, + sizeYCompactMediaQueryProps, + sizeYRegularMediaQueryProps, + viewWidthMediaQueryMapProps, } from './constants'; import { getAdaptiveDeviceType, getAdaptiveSizeType, getAdaptiveViewWidth } from './helpers'; import type { UseAdaptivityConditionalRender } from './types'; @@ -23,15 +23,23 @@ export const useAdaptivityConditionalRender = (): UseAdaptivityConditionalRender const platform = usePlatform(); return React.useMemo(() => { - const sizeX = getAdaptiveSizeType(sizeXContext, sizeXCompactClassNames, sizeXRegularClassNames); - const sizeY = getAdaptiveSizeType(sizeYContext, sizeYCompactClassNames, sizeYRegularClassNames); - const viewWidth = getAdaptiveViewWidth(viewWidthContext, viewWidthClassNames); + const sizeX = getAdaptiveSizeType( + sizeXContext, + sizeXCompactMediaQueryProps, + sizeXRegularMediaQueryProps, + ); + const sizeY = getAdaptiveSizeType( + sizeYContext, + sizeYCompactMediaQueryProps, + sizeYRegularMediaQueryProps, + ); + const viewWidth = getAdaptiveViewWidth(viewWidthContext, viewWidthMediaQueryMapProps); const deviceType = getAdaptiveDeviceType( viewWidthContext, viewHeightContext, hasPointerContext, platform, - deviceTypeClassNames, + deviceTypeMediaQueryMapProps, ); return { sizeX, diff --git a/packages/vkui/src/hooks/useCounter.test.tsx b/packages/vkui/src/hooks/useCounter.test.tsx new file mode 100644 index 0000000000..9a2225005b --- /dev/null +++ b/packages/vkui/src/hooks/useCounter.test.tsx @@ -0,0 +1,77 @@ +import { act } from 'react'; +import { renderHook } from '@testing-library/react'; +import { useCounter } from './useCounter'; + +describe('useCounter', () => { + it('returns default value', () => { + const { result } = renderHook(useCounter); + expect(result.current[0]).toEqual(0); + }); + + it('returns passed value with initialProps number', () => { + const { result } = renderHook(useCounter, { + initialProps: 99, + }); + expect(result.current[0]).toEqual(99); + }); + it('returns passed value with initialProps function', () => { + const { result } = renderHook(useCounter, { + initialProps: () => 99, + }); + expect(result.current[0]).toEqual(99); + }); + + it('increment value', () => { + const { result } = renderHook(useCounter); + act(() => { + result.current[1].increment(); + result.current[1].increment(); + }); + expect(result.current[0]).toEqual(2); + }); + it('increment value with delta', () => { + const { result } = renderHook(useCounter); + act(() => { + result.current[1].increment(5); + result.current[1].increment(5); + }); + expect(result.current[0]).toEqual(10); + }); + + it('decrement value', () => { + const { result } = renderHook(useCounter); + act(() => { + result.current[1].decrement(); + result.current[1].decrement(); + }); + expect(result.current[0]).toEqual(-2); + }); + it('decrement value with delta', () => { + const { result } = renderHook(useCounter); + act(() => { + result.current[1].decrement(5); + result.current[1].decrement(5); + }); + expect(result.current[0]).toEqual(-10); + }); + + it('setCount value', () => { + const { result } = renderHook(useCounter); + act(() => { + result.current[1].setCount(5); + }); + expect(result.current[0]).toEqual(5); + }); + + it('actions not change after re-render', () => { + const { result } = renderHook(useCounter); + const firstRenderActions = result.current[1]; + + act(() => { + result.current[1].increment(); + }); + + expect(result.current[1]).toEqual(firstRenderActions); + expect(result.current[1].increment).toEqual(firstRenderActions.increment); + }); +}); diff --git a/packages/vkui/src/hooks/useCounter.ts b/packages/vkui/src/hooks/useCounter.ts index b5ed0bb72c..1e38750503 100644 --- a/packages/vkui/src/hooks/useCounter.ts +++ b/packages/vkui/src/hooks/useCounter.ts @@ -1,26 +1,61 @@ import * as React from 'react'; -type UseCounterReturn = { - count: number; - increment: () => void; - decrement: () => void; +type Actions = { + /** + * Увеличивает значение счетчика и вызывает ре-рендер + * + * @param delta Значение на которое требуется увеличить счетчик. По умолчанию `1` + */ + increment: (delta?: number) => void; + /** + * Уменьшает значение счетчика и вызывает ре-рендер + * + * @param delta Значение на которое требуется увеличить счетчик. По умолчанию `1` + */ + decrement: (delta?: number) => void; + + /** + * Функция, позволяющая обновить значение счетчика и вызвать ре-рендер + */ setCount: React.Dispatch<React.SetStateAction<number>>; }; /** - * Хук счетчика с возможностью задания начального значения и увеличения/уменьшения на 1. + * Хук счетчика с возможностью задания начального значения и увеличения/уменьшения значения. + * + * @param initialValue начальное значение счетчика. По умолчанию `0` + * + * ## Пример + * + * ```js + * const Component = () => { + * const [count, { increment, decrement, setCount }] = useCounter(0); + * + * return ( + * <div> + * <div>count: {count}</div> + * + * <button onClick={() => increment()}> +1 </button> + * <button onClick={() => decrement()}> -1 </button> + * <button onClick={() => increment(5)}> +5 </button> + * <button onClick={() => decrement(5)}> -5 </button> + * <button onClick={() => setCount(0)}> set 0 </button> + * </div> + * ); + * } + * ``` */ -export function useCounter(initialValue: number | (() => number) = 0): UseCounterReturn { +export function useCounter(initialValue: number | (() => number) = 0): [number, Actions] { const [count, setCount] = React.useState(initialValue); - const increment = React.useCallback(() => setCount((x) => x + 1), []); - - const decrement = React.useCallback(() => setCount((x) => x - 1), []); + const actions = React.useMemo( + () => ({ + increment: (delta = 1) => setCount((x) => x + delta), + decrement: (delta = 1) => setCount((x) => x - delta), + setCount, + }), + [], + ); - return { - count, - increment, - decrement, - setCount, - }; + return [count, actions]; } diff --git a/packages/vkui/src/index.ts b/packages/vkui/src/index.ts index bdcc764c41..058719e375 100644 --- a/packages/vkui/src/index.ts +++ b/packages/vkui/src/index.ts @@ -325,8 +325,6 @@ export type { } from './components/CustomSelect/CustomSelect'; export { CustomSelectOption } from './components/CustomSelectOption/CustomSelectOption'; export type { CustomSelectOptionProps } from './components/CustomSelectOption/CustomSelectOption'; -export { DatePicker } from './components/DatePicker/DatePicker'; -export type { DatePickerProps, DatePickerDateFormat } from './components/DatePicker/DatePicker'; export { SegmentedControl } from './components/SegmentedControl/SegmentedControl'; export type { SegmentedControlProps, @@ -350,7 +348,7 @@ export type { SkeletonProps } from './components/Skeleton/Skeleton'; export { Div } from './components/Div/Div'; export type { DivProps } from './components/Div/Div'; export { Touch } from './components/Touch/Touch'; -export type { TouchProps } from './components/Touch/Touch'; +export type { TouchProps, CustomTouchEvent } from './components/Touch/Touch'; export { PanelSpinner } from './components/PanelSpinner/PanelSpinner'; export type { PanelSpinnerProps } from './components/PanelSpinner/PanelSpinner'; export { PanelHeaderClose } from './components/PanelHeaderClose/PanelHeaderClose'; diff --git a/packages/vkui/src/lib/platform.ts b/packages/vkui/src/lib/platform.ts index 52539362bf..7203301b79 100644 --- a/packages/vkui/src/lib/platform.ts +++ b/packages/vkui/src/lib/platform.ts @@ -7,7 +7,7 @@ export const Platform = { } as const; /** - * TODO [>=7]: Переименовать 'vkcom' в 'web' и заменить в DEFAULT_TOKENS_CLASS_NAMES тему по умолчанию + * TODO [>=8]: Переименовать 'vkcom' в 'web' и заменить в DEFAULT_TOKENS_CLASS_NAMES тему по умолчанию */ export type PlatformType = 'android' | 'ios' | 'vkcom'; diff --git a/packages/vkui/src/styles/adaptivity.module.css b/packages/vkui/src/styles/adaptivity.module.css index 529833ddff..45445bf463 100644 --- a/packages/vkui/src/styles/adaptivity.module.css +++ b/packages/vkui/src/styles/adaptivity.module.css @@ -12,11 +12,6 @@ Note: В начале классов разделить (`-`), чтобы кра */ -.-sizeX--compact-forced, -.-sizeX--regular-forced { - /* Пустой класс для CSS Modules (см. CONTRIBUTING.md) */ -} - @media (--sizeX-regular) { .-sizeX--compact-mq { /* stylelint-disable-next-line declaration-no-important */ @@ -32,11 +27,6 @@ Note: В начале классов разделить (`-`), чтобы кра /* ================================================================================================================== */ -.-sizeY--compact-forced, -.-sizeY--regular-forced { - /* Пустой класс для CSS Modules (см. CONTRIBUTING.md) */ -} - @media (--sizeY-regular) { .-sizeY--compact-mq { /* stylelint-disable-next-line declaration-no-important */ @@ -52,11 +42,6 @@ Note: В начале классов разделить (`-`), чтобы кра /* ================================================================================================================== */ -.-viewWidth--tabletPlus-forced, -.-viewWidth--tabletMinus-forced { - /* Пустой класс для CSS Modules (см. CONTRIBUTING.md) */ -} - @media (--viewWidth-tabletPlus) { .-viewWidth--tabletMinus-mq { /* stylelint-disable-next-line declaration-no-important */ @@ -72,11 +57,6 @@ Note: В начале классов разделить (`-`), чтобы кра /* ================================================================================================================== */ -.-deviceType--mobile-forced, -.-deviceType--desktop-forced { - /* Пустой класс для CSS Modules (см. CONTRIBUTING.md) */ -} - @media (--desktop) { .-deviceType--mobile-mq { /* stylelint-disable-next-line declaration-no-important */ diff --git a/shared.js b/shared.js index 10ade59b1f..965df7923b 100644 --- a/shared.js +++ b/shared.js @@ -17,5 +17,5 @@ module.exports = { './node_modules/@vkontakte/vkui-tokens/themes/vkComDark/cssVars/declarations/onlyVariablesLocal.css', ], - generateScopedName: 'vkui[folder]__[local]', + generateScopedName: '[folder]__[local]--[hash:base64:5]', }; diff --git a/styleguide/config.js b/styleguide/config.js index 77d1962ece..03c28919df 100644 --- a/styleguide/config.js +++ b/styleguide/config.js @@ -292,7 +292,6 @@ const baseConfig = { `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/Textarea/Textarea.tsx`, `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/File/File.tsx`, `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/DropZone/DropZone.tsx`, - `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/DatePicker/DatePicker.tsx`, `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/SegmentedControl/SegmentedControl.tsx`, `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/Calendar/Calendar.tsx`, `../${VKUI_PACKAGE.PATHS.COMPONENTS_DIR}/CalendarRange/CalendarRange.tsx`, diff --git a/tools/storybook-addon-cartesian/package.json b/tools/storybook-addon-cartesian/package.json index 420f74824a..4275869dfe 100644 --- a/tools/storybook-addon-cartesian/package.json +++ b/tools/storybook-addon-cartesian/package.json @@ -9,28 +9,28 @@ "test:ci": "echo no test:ci" }, "dependencies": { - "@babel/core": "^7.25.8", - "@storybook/addon-a11y": "8.3.6", - "@storybook/addon-actions": "8.3.6", - "@storybook/addon-essentials": "8.3.6", - "@storybook/addon-interactions": "8.3.6", - "@storybook/addon-links": "8.3.6", + "@babel/core": "^7.26.0", + "@storybook/addon-a11y": "8.4.2", + "@storybook/addon-actions": "8.4.2", + "@storybook/addon-essentials": "8.4.2", + "@storybook/addon-interactions": "8.4.2", + "@storybook/addon-links": "8.4.2", "@storybook/addon-webpack5-compiler-swc": "1.0.5", - "@storybook/blocks": "8.3.6", - "@storybook/components": "8.3.6", - "@storybook/core-events": "^8.3.6", - "@storybook/docs-tools": "^8.3.6", - "@storybook/manager-api": "8.3.6", - "@storybook/preview-api": "8.3.6", - "@storybook/react": "8.3.6", - "@storybook/react-webpack5": "8.3.6", - "@storybook/test": "^8.3.6", - "@storybook/theming": "8.3.6", - "@storybook/types": "8.3.6", + "@storybook/blocks": "8.4.2", + "@storybook/components": "8.4.2", + "@storybook/core-events": "^8.4.2", + "@storybook/docs-tools": "^8.4.2", + "@storybook/manager-api": "8.4.2", + "@storybook/preview-api": "8.4.2", + "@storybook/react": "8.4.2", + "@storybook/react-webpack5": "8.4.2", + "@storybook/test": "^8.4.2", + "@storybook/theming": "8.4.2", + "@storybook/types": "8.4.2", "@swc/core": "*", "react": "*", "react-dom": "*", - "storybook": "8.3.6", + "storybook": "8.4.2", "typescript": "*" } } diff --git a/yarn.lock b/yarn.lock index 8e6aa74a9f..15b84cabf1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,83 +29,44 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.7, @babel/code-frame@npm:^7.8.3": - version: 7.25.7 - resolution: "@babel/code-frame@npm:7.25.7" - dependencies: - "@babel/highlight": "npm:^7.25.7" - picocolors: "npm:^1.0.0" - checksum: 10/000fb8299fb35b6217d4f6c6580dcc1fa2f6c0f82d0a54b8a029966f633a8b19b490a7a906b56a94e9d8bee91c3bc44c74c44c33fb0abaa588202f6280186291 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": + version: 7.26.0 + resolution: "@babel/code-frame@npm:7.26.0" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10/4812e94885ba7e3213d49583a155fdffb05292330f0a9b2c41b49288da70cf3c746a3fda0bf1074041a6d741c33f8d7be24be5e96f41ef77395eeddc5c9ff624 + checksum: 10/41deb0a9ac72d81e46aeab7e587a75e46c7af6a717e10b150a150b332e843807eacb7c856832c84bee2c5015fe31de23e04c18e052c83a1254027c71c0840791 languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/compat-data@npm:7.25.2" - checksum: 10/fd61de9303db3177fc98173571f81f3f551eac5c9f839c05ad02818b11fe77a74daa632abebf7f423fbb4a29976ae9141e0d2bd7517746a0ff3d74cb659ad33a +"@babel/compat-data@npm:^7.25.9": + version: 7.26.0 + resolution: "@babel/compat-data@npm:7.26.0" + checksum: 10/e847d58222eb567da4bcc2c8e4e44b508d1a34626922858fe12edeb73b5f3c486e7e77a351725b4347525d623dc5046b8a6355df76f368560ca6cbac10fef2c5 languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/compat-data@npm:7.25.7" - checksum: 10/8fdc451e0ed9e22d1324d504b84d4452ba6f4a806b0f5c364996ee4c2a77293f79ecf4da03033acb625c90bac115c61617eb6c894c2b88486724bcbe3af1a6eb - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.3, @babel/core@npm:^7.24.4, @babel/core@npm:^7.24.5, @babel/core@npm:^7.24.7, @babel/core@npm:^7.7.5": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.3, @babel/core@npm:^7.24.4, @babel/core@npm:^7.24.5, @babel/core@npm:^7.24.7, @babel/core@npm:^7.26.0, @babel/core@npm:^7.7.5": + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.26.0" + "@babel/generator": "npm:^7.26.0" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.0" + "@babel/parser": "npm:^7.26.0" + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/0d6ec10ff430df66f654c089d6f7ef1d9bed0c318ac257ad5f0dfa0caa45666011828ae75f998bcdb279763e892b091b2925d0bc483299e61649d2c7a2245e33 - languageName: node - linkType: hard - -"@babel/core@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/core@npm:7.25.8" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helpers": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.8" - "@babel/template": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.8" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/31eb1a8ca1a3cc0026060720eb290e68205d95c5c00fbd831e69ddc0810f5920b8eb2749db1889ac0a0312b6eddbf321d18a996a88858f3b75c9582bef9ec1e4 + checksum: 10/65767bfdb1f02e80d3af4f138066670ef8fdd12293de85ef151758a901c191c797e86d2e99b11c4cdfca33c72385ecaf38bbd7fa692791ec44c77763496b9b93 languageName: node linkType: hard @@ -123,27 +84,16 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.25.7, @babel/generator@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/generator@npm:7.25.7" +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2": + version: 7.26.0 + resolution: "@babel/generator@npm:7.26.0" dependencies: - "@babel/types": "npm:^7.25.7" + "@babel/parser": "npm:^7.26.0" + "@babel/types": "npm:^7.26.0" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10/01542829621388077fa8a7464970c1db0f748f1482968dddf5332926afe4003f953cbe08e3bbbb0a335b11eba0126c9a81779bd1c5baed681a9ccec4ae63b217 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/generator@npm:7.25.0" - dependencies: - "@babel/types": "npm:^7.25.0" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/de3ce2ae7aa0c9585260556ca5a81ce2ce6b8269e3260d7bb4e47a74661af715184ca6343e9906c22e4dd3eed5ce39977dfaf6cded4d2d8968fa096c7cf66697 + checksum: 10/3528b0b5da7003617771ddfc564bcb4037dde59e8142e3808ae8eb5d45c5dfda74df5eb9e6162ab2c2bc66329c609a44d9fd0ce6d4bc14b89b3deb92c3343c56 languageName: node linkType: hard @@ -156,29 +106,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10/eccb2d75923d2d4d596f9ff64716e8664047c4192f1b44c7d5c07701d4a3498ac2587a72ddae1046e65a501bc630eb7df4557958b08ec2dcf5b4a264a052f111 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-compilation-targets@npm:7.25.7" - dependencies: - "@babel/compat-data": "npm:^7.25.7" - "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/compat-data": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10/bbf9be8480da3f9a89e36e9ea2e1c76601014c1074ccada7c2edb1adeb3b62bc402cc4abaf8d16760734b25eceb187a9510ce44f6a7a6f696ccc74f69283625b + checksum: 10/8053fbfc21e8297ab55c8e7f9f119e4809fa7e505268691e1bedc2cf5e7a5a7de8c60ad13da2515378621b7601c42e101d2d679904da395fa3806a1edef6b92e languageName: node linkType: hard @@ -230,51 +167,26 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/df8bfb2bb18413aa151ecd63b7d5deb0eec102f924f9de6bc08022ced7ed8ca7fed914562d2f6fa5b59b74a5d6e255dc35612b2bc3b8abf361e13f61b3704770 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e090be5dee94dda6cd769972231b21ddfae988acd76b703a480ac0c96f3334557d70a965bf41245d6ee43891e7571a8b400ccf2b2be5803351375d0f4e5bcf08 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-module-imports@npm:7.25.7" +"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/94556712c27058ea35a1a39e21a3a9f067cd699405b64333d7d92b2b3d2f24d6f0ffa51aedba0b908e320acb1854e70d296259622e636fb021eeae9a6d996f01 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-module-transforms@npm:7.25.7" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.7" - "@babel/helper-simple-access": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/480309b1272ceaa985de1393f0e4c41aede0d5921ca644cec5aeaf43c8e4192b6dd56a58ef6d7e9acd02a43184ab45d3b241fc8c3a0a00f9dbb30235fd8a1181 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" - dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/a3bcf7815f3e9d8b205e0af4a8d92603d685868e45d119b621357e274996bf916216bb95ab5c6a60fde3775b91941555bf129d608e3d025b04f8aac84589f300 + checksum: 10/9841d2a62f61ad52b66a72d08264f23052d533afc4ce07aec2a6202adac0bfe43014c312f94feacb3291f4c5aafe681955610041ece2c276271adce3f570f2f5 languageName: node linkType: hard @@ -307,7 +219,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.24.7, @babel/helper-simple-access@npm:^7.25.7": +"@babel/helper-simple-access@npm:^7.24.7": version: 7.25.7 resolution: "@babel/helper-simple-access@npm:7.25.7" dependencies: @@ -336,122 +248,45 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10/6d1bf8f27dd725ce02bdc6dffca3c95fb9ab8a06adc2edbd9c1c9d68500274230d1a609025833ed81981eff560045b6b38f7b4c6fb1ab19fc90e5004e3932535 +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10/c28656c52bd48e8c1d9f3e8e68ecafd09d949c57755b0d353739eb4eae7ba4f7e67e92e4036f1cd43378cc1397a2c943ed7bcaf5949b04ab48607def0258b775 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-string-parser@npm:7.25.7" - checksum: 10/2b8de9fa86c3f3090a349f1ce6e8ee2618a95355cbdafc6f228d82fa4808c84bf3d1d25290c6616d0a18b26b6cfeb6ec2aeebf01404bc8c60051d0094209f0e6 +"@babel/helper-validator-identifier@npm:^7.24.5, @babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10/3f9b649be0c2fd457fa1957b694b4e69532a668866b8a0d81eabfa34ba16dbf3107b39e0e7144c55c3c652bf773ec816af8df4a61273a2bb4eb3145ca9cf478e languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.24.5, @babel/helper-validator-identifier@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-identifier@npm:7.25.7" - checksum: 10/ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e +"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10/9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-option@npm:7.25.7" - checksum: 10/3c46cbdd666d176f90a0b7e952a0c6e92184b66633336eca79aca243d1f86085ec339a6e45c3d44efa9e03f1829b470a350ddafa70926af6bbf1ac611284f8d3 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10/a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" - dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10/4fcb8167eba9853e30b8b235b81b923ef7b707396b0e23d7a4fa3e811729506755576cb9ec736e8b92cf19e5a1ec61e83d182904d8e6a0953803c6bebc2e1592 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helpers@npm:7.25.7" +"@babel/helpers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helpers@npm:7.26.0" dependencies: - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/2632909f83aa99e8b0da4e10e5ab7fc4f0274e6497bb0f17071e004e037d25e4a595583620261dc21410a526fb32b4f7063c3e15e60ed7890a6f9b8ad52312c5 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/69b73f38cdd4f881b09b939a711e76646da34f4834f4ce141d7a49a6bb1926eab1c594148970a8aa9360398dff800f63aade4e81fafdd7c8d8a8489ea93bfec1 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/highlight@npm:7.25.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/823be2523d246dbf80aab3cc81c2a36c6111b16ac2949ef06789da54387824c2bfaa88c6627cdeb4ba7151d047a5d6765e49ebd0b478aba09759250111e65e08 + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + checksum: 10/fd4757f65d10b64cfdbf4b3adb7ea6ffff9497c53e0786452f495d1f7794da7e0898261b4db65e1c62bbb9a360d7d78a1085635c23dfc3af2ab6dcba06585f86 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/parser@npm:7.25.8" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0": + version: 7.26.1 + resolution: "@babel/parser@npm:7.26.1" dependencies: - "@babel/types": "npm:^7.25.8" + "@babel/types": "npm:^7.26.0" bin: parser: ./bin/babel-parser.js - checksum: 10/0396eb71e379903cedb43862f84ebb1bec809c41e82b4894d2e6e83b8e8bc636ba6eff45382e615baefdb2399ede76ca82247ecc3a9877ac16eb3140074a3276 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/parser@npm:7.25.3" - dependencies: - "@babel/types": "npm:^7.25.2" - bin: - parser: ./bin/babel-parser.js - checksum: 10/7bd57e89110bdc9cffe0ef2f2286f1cfb9bbb3aa1d9208c287e0bf6a1eb4cfe6ab33958876ebc59aafcbe3e2381c4449240fc7cc2ff32b79bc9db89cd52fc779 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/parser@npm:7.25.7" - dependencies: - "@babel/types": "npm:^7.25.7" - bin: - parser: ./bin/babel-parser.js - checksum: 10/98eaa81bd378734a5f2790f02c7c076ecaba0839217445b4b84f45a7b391d640c34034253231a5bb2b2daf8204796f03584c3f94c10d46b004369bbb426a418f + checksum: 10/87d6248c6a1f962621b4505e24ee89c9869d40640beb231d6befb2d56112a84a654b15980941300617aa3211ca9632cc1644c6d3f72ea3427f220133d11d9c0c languageName: node linkType: hard @@ -794,95 +629,39 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.7, @babel/template@npm:^7.3.3": - version: 7.25.7 - resolution: "@babel/template@npm:7.25.7" - dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/49e1e88d2eac17d31ae28d6cf13d6d29c1f49384c4f056a6751c065d6565c351e62c01ce6b11fef5edb5f3a77c87e114ea7326ca384fa618b4834e10cf9b20f3 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10/07ebecf6db8b28244b7397628e09c99e7a317b959b926d90455c7253c88df3677a5a32d1501d9749fe292a263ff51a4b6b5385bcabd5dadd3a48036f4d4949e0 + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e861180881507210150c1335ad94aff80fd9e9be6202e1efa752059c93224e2d5310186ddcdd4c0f0b0fc658ce48cb47823f15142b5c00c8456dde54f5de80b2 languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/traverse@npm:7.25.7" +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.7, @babel/traverse@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" + "@babel/code-frame": "npm:^7.25.9" + "@babel/generator": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/5b2d332fcd6bc78e6500c997e79f7e2a54dfb357e06f0908cb7f0cdd9bb54e7fd3c5673f45993849d433d01ea6076a6d04b825958f0cfa01288ad55ffa5c286f - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.2": - version: 7.25.3 - resolution: "@babel/traverse@npm:7.25.3" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.2" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/fba34f323e17fa83372fc290bc12413a50e2f780a86c7d8b1875c594b6be2857867804de5d52ab10a78a9cae29e1b09ea15d85ad63671ce97d79c40650282bb9 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.8, @babel/types@npm:^7.3.3": - version: 7.25.8 - resolution: "@babel/types@npm:7.25.8" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/973108dbb189916bb87360f2beff43ae97f1b08f1c071bc6499d363cce48b3c71674bf3b59dfd617f8c5062d1c76dc2a64232bc07b6ccef831fd0c06162d44d9 - languageName: node - linkType: hard - -"@babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/types@npm:7.25.2" - dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/ccf5399db1dcd6dd87b84a6f7bc8dd241e04a326f4f038c973c26ccb69cd360c8f2276603f584c58fd94da95229313060b27baceb0d9b18a435742d3f616afd1 + checksum: 10/7431614d76d4a053e429208db82f2846a415833f3d9eb2e11ef72eeb3c64dfd71f4a4d983de1a4a047b36165a1f5a64de8ca2a417534cc472005c740ffcb9c6a languageName: node linkType: hard -"@babel/types@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/types@npm:7.25.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" dependencies: - "@babel/helper-string-parser": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/4504e16a95b6a67d50cfaa389bcbc0621019084cff73784ad4797f82d1bb76c870cb0abb6d9881d5776eb06b4607419a2b1205a08c3e87b152d74bd0884b822a - languageName: node - linkType: hard - -"@base2/pretty-print-object@npm:1.0.1": - version: 1.0.1 - resolution: "@base2/pretty-print-object@npm:1.0.1" - checksum: 10/c1b78a521ac712baa076589f3bc81318d07c34a5747e9177b6af37043592252587d98f9b7b59ec174968c6bea31a99fe4d7884121173a449b75fe602b7eb2839 + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10/40780741ecec886ed9edae234b5eb4976968cc70d72b4e5a40d55f83ff2cc457de20f9b0f4fe9d858350e43dab0ea496e7ef62e2b2f08df699481a76df02cd6e languageName: node linkType: hard @@ -909,32 +688,48 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/cascade-layer-name-parser@npm:2.0.2" +"@csstools/cascade-layer-name-parser@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/cascade-layer-name-parser@npm:2.0.4" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.2 - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10/f0f9bc75e9080d7243279fd3e583f056abb3a122f6e54d98ed2f5feb234672770b71dddb0da985d6fb7bee4c314e81f204355e300c544a921e6097fcd8b08b2b + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/8c1d92f7840ecb402bce9b5770c9eb8ae000f42cb317a069cb10172a4e63d4dcbe1961f8bcf35f5106f8d162066f2bac3923e151d7cb5380b10fc265a62db5ea languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.1, @csstools/css-parser-algorithms@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/css-parser-algorithms@npm:3.0.2" +"@csstools/css-parser-algorithms@npm:^3.0.1": + version: 3.0.3 + resolution: "@csstools/css-parser-algorithms@npm:3.0.3" peerDependencies: "@csstools/css-tokenizer": ^3.0.2 - checksum: 10/ecc8ad77304606e59ce5b1d34b97e879f2b3745fe8cf26649faceb881ee1d47183dd7d1c07778ac58ffac5991365c43eebc3a015db9f872b3a08f8f1c03240f5 + checksum: 10/55d20479c48686727210b17f2bc93174a55da0173822cfb6aa0a468e5b8da83926a4a61189b8358639e74fa813239f147016314f5e6691bd0d60284f97aecf31 languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^3.0.1, @csstools/css-tokenizer@npm:^3.0.2": +"@csstools/css-parser-algorithms@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + peerDependencies: + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/dfb6926218d9f8ba25d8b43ea46c03863c819481f8c55e4de4925780eaab9e6bcd6bead1d56b4ef82d09fcd9d69a7db2750fa9db08eece9470fd499dc76d0edb + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.1": version: 3.0.2 resolution: "@csstools/css-tokenizer@npm:3.0.2" checksum: 10/6453982ede998dbd8c222cdc5efa11375c1e7c9ad66c55b077ec23f2ecec1080aa0631818cdea191c36f0b8e1fd607408d13664a898299c2a594d93ef6fa62e9 languageName: node linkType: hard +"@csstools/css-tokenizer@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/css-tokenizer@npm:3.0.3" + checksum: 10/6baa3160e426e1f177b8f10d54ec7a4a596090f65a05f16d7e9e4da049962a404eabc5f885f4867093702c259cd4080ac92a438326e22dea015201b3e71f5bbb + languageName: node + linkType: hard + "@csstools/media-query-list-parser@npm:^3.0.1": version: 3.0.1 resolution: "@csstools/media-query-list-parser@npm:3.0.1" @@ -945,13 +740,13 @@ __metadata: languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/media-query-list-parser@npm:4.0.0" +"@csstools/media-query-list-parser@npm:^4.0.2": + version: 4.0.2 + resolution: "@csstools/media-query-list-parser@npm:4.0.2" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.2 - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10/d6e350c270a18a7280d6342b2a8c29b59b80b34d7e346af77d167ca3dc003dfff415776e2834982b399dd494a7ba24bfa2918477628febfbb5a48d8cb8e08bbe + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/8aae6337d21255d34e4f6dc6df213566e35bb769fe131006ea4200b643773f3213f8ed0ab011cd85dbe3426766c408d0fe1d04d18e821add9ae7f29cda0a8b26 languageName: node linkType: hard @@ -994,9 +789,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/aix-ppc64@npm:0.23.1" +"@esbuild/aix-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/aix-ppc64@npm:0.24.0" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -1008,9 +803,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-arm64@npm:0.23.1" +"@esbuild/android-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm64@npm:0.24.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -1022,9 +817,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-arm@npm:0.23.1" +"@esbuild/android-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm@npm:0.24.0" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -1036,9 +831,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-x64@npm:0.23.1" +"@esbuild/android-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-x64@npm:0.24.0" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -1050,9 +845,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/darwin-arm64@npm:0.23.1" +"@esbuild/darwin-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-arm64@npm:0.24.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -1064,9 +859,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/darwin-x64@npm:0.23.1" +"@esbuild/darwin-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-x64@npm:0.24.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -1078,9 +873,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/freebsd-arm64@npm:0.23.1" +"@esbuild/freebsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-arm64@npm:0.24.0" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -1092,9 +887,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/freebsd-x64@npm:0.23.1" +"@esbuild/freebsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-x64@npm:0.24.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -1106,9 +901,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-arm64@npm:0.23.1" +"@esbuild/linux-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm64@npm:0.24.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -1120,9 +915,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-arm@npm:0.23.1" +"@esbuild/linux-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm@npm:0.24.0" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -1134,9 +929,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-ia32@npm:0.23.1" +"@esbuild/linux-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ia32@npm:0.24.0" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -1148,9 +943,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-loong64@npm:0.23.1" +"@esbuild/linux-loong64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-loong64@npm:0.24.0" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -1162,9 +957,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-mips64el@npm:0.23.1" +"@esbuild/linux-mips64el@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-mips64el@npm:0.24.0" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -1176,9 +971,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-ppc64@npm:0.23.1" +"@esbuild/linux-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ppc64@npm:0.24.0" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -1190,9 +985,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-riscv64@npm:0.23.1" +"@esbuild/linux-riscv64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-riscv64@npm:0.24.0" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -1204,9 +999,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-s390x@npm:0.23.1" +"@esbuild/linux-s390x@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-s390x@npm:0.24.0" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -1218,9 +1013,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-x64@npm:0.23.1" +"@esbuild/linux-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-x64@npm:0.24.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -1232,16 +1027,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/netbsd-x64@npm:0.23.1" +"@esbuild/netbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/netbsd-x64@npm:0.24.0" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/openbsd-arm64@npm:0.23.1" +"@esbuild/openbsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-arm64@npm:0.24.0" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -1253,9 +1048,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/openbsd-x64@npm:0.23.1" +"@esbuild/openbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-x64@npm:0.24.0" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -1267,9 +1062,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/sunos-x64@npm:0.23.1" +"@esbuild/sunos-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/sunos-x64@npm:0.24.0" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -1281,9 +1076,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-arm64@npm:0.23.1" +"@esbuild/win32-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-arm64@npm:0.24.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -1295,9 +1090,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-ia32@npm:0.23.1" +"@esbuild/win32-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-ia32@npm:0.24.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -1309,9 +1104,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-x64@npm:0.23.1" +"@esbuild/win32-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-x64@npm:0.24.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1938,37 +1733,37 @@ __metadata: languageName: node linkType: hard -"@playwright/experimental-ct-core@npm:1.48.1": - version: 1.48.1 - resolution: "@playwright/experimental-ct-core@npm:1.48.1" +"@playwright/experimental-ct-core@npm:1.48.2": + version: 1.48.2 + resolution: "@playwright/experimental-ct-core@npm:1.48.2" dependencies: - playwright: "npm:1.48.1" - playwright-core: "npm:1.48.1" + playwright: "npm:1.48.2" + playwright-core: "npm:1.48.2" vite: "npm:^5.2.8" - checksum: 10/a6ca8e997eb8d2bba490ba76c29300e9d5f26fb5f67678df471b335a491328f84fd2e48e2914be23d53a53cde5129b6a24237c0c3edd44db155112cd9c20092f + checksum: 10/cfdf3dfde69b77af41b1b0fd3058b95e77a63228cf9525714e5f168f69c51cd517e08ffd0e88627b0816413a05d2097b095c9ab9e563e0aa7c953cc5bb5ad33d languageName: node linkType: hard -"@playwright/experimental-ct-react@npm:1.48.1": - version: 1.48.1 - resolution: "@playwright/experimental-ct-react@npm:1.48.1" +"@playwright/experimental-ct-react@npm:1.48.2": + version: 1.48.2 + resolution: "@playwright/experimental-ct-react@npm:1.48.2" dependencies: - "@playwright/experimental-ct-core": "npm:1.48.1" + "@playwright/experimental-ct-core": "npm:1.48.2" "@vitejs/plugin-react": "npm:^4.2.1" bin: playwright: cli.js - checksum: 10/6b19ae040adb45078dbccd1600abc9b200085497eeb5cb2766cdb1f027513e9fb3eb00362dd58ecfe7cacf40b6db258b99bc3d1ea1321498ef820db4807fc2c4 + checksum: 10/eba1096fb8a2f6140e5dee0105963ba776003baba2ca425011dba0d2a6c00797b0eb127199ee2343e4c200fdf618ecaa8fa1776b74095e08edce4443dc94cc63 languageName: node linkType: hard -"@playwright/test@npm:1.48.1": - version: 1.48.1 - resolution: "@playwright/test@npm:1.48.1" +"@playwright/test@npm:1.48.2": + version: 1.48.2 + resolution: "@playwright/test@npm:1.48.2" dependencies: - playwright: "npm:1.48.1" + playwright: "npm:1.48.2" bin: playwright: cli.js - checksum: 10/26fe791868a965790bb39e434a799d743261fb073fa0bec49435e0f2d1aceca99dc2f408fc64b0e2d4c07984021059b27096d4477b989e990b551cf60e2652e6 + checksum: 10/8557f9d60b93b9a60b66599d46f991b56df26b691f9285e8755298dabd9f42d1421c330a7d7578b76445fdd56040fe790d3f1081daa80e5e89a380170e0fd217 languageName: node linkType: hard @@ -2018,28 +1813,28 @@ __metadata: version: 0.0.0-use.local resolution: "@project-tools/storybook-addon-cartesian@workspace:tools/storybook-addon-cartesian" dependencies: - "@babel/core": "npm:^7.25.8" - "@storybook/addon-a11y": "npm:8.3.6" - "@storybook/addon-actions": "npm:8.3.6" - "@storybook/addon-essentials": "npm:8.3.6" - "@storybook/addon-interactions": "npm:8.3.6" - "@storybook/addon-links": "npm:8.3.6" + "@babel/core": "npm:^7.26.0" + "@storybook/addon-a11y": "npm:8.4.2" + "@storybook/addon-actions": "npm:8.4.2" + "@storybook/addon-essentials": "npm:8.4.2" + "@storybook/addon-interactions": "npm:8.4.2" + "@storybook/addon-links": "npm:8.4.2" "@storybook/addon-webpack5-compiler-swc": "npm:1.0.5" - "@storybook/blocks": "npm:8.3.6" - "@storybook/components": "npm:8.3.6" - "@storybook/core-events": "npm:^8.3.6" - "@storybook/docs-tools": "npm:^8.3.6" - "@storybook/manager-api": "npm:8.3.6" - "@storybook/preview-api": "npm:8.3.6" - "@storybook/react": "npm:8.3.6" - "@storybook/react-webpack5": "npm:8.3.6" - "@storybook/test": "npm:^8.3.6" - "@storybook/theming": "npm:8.3.6" - "@storybook/types": "npm:8.3.6" + "@storybook/blocks": "npm:8.4.2" + "@storybook/components": "npm:8.4.2" + "@storybook/core-events": "npm:^8.4.2" + "@storybook/docs-tools": "npm:^8.4.2" + "@storybook/manager-api": "npm:8.4.2" + "@storybook/preview-api": "npm:8.4.2" + "@storybook/react": "npm:8.4.2" + "@storybook/react-webpack5": "npm:8.4.2" + "@storybook/test": "npm:^8.4.2" + "@storybook/theming": "npm:8.4.2" + "@storybook/types": "npm:8.4.2" "@swc/core": "npm:*" react: "npm:*" react-dom: "npm:*" - storybook: "npm:8.3.6" + storybook: "npm:8.4.2" typescript: "npm:*" languageName: unknown linkType: soft @@ -2162,82 +1957,82 @@ __metadata: languageName: node linkType: hard -"@rspack/binding-darwin-arm64@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-darwin-arm64@npm:1.0.11" +"@rspack/binding-darwin-arm64@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-darwin-arm64@npm:1.0.14" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rspack/binding-darwin-x64@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-darwin-x64@npm:1.0.11" +"@rspack/binding-darwin-x64@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-darwin-x64@npm:1.0.14" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rspack/binding-linux-arm64-gnu@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-linux-arm64-gnu@npm:1.0.11" +"@rspack/binding-linux-arm64-gnu@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-linux-arm64-gnu@npm:1.0.14" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rspack/binding-linux-arm64-musl@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-linux-arm64-musl@npm:1.0.11" +"@rspack/binding-linux-arm64-musl@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-linux-arm64-musl@npm:1.0.14" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rspack/binding-linux-x64-gnu@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-linux-x64-gnu@npm:1.0.11" +"@rspack/binding-linux-x64-gnu@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-linux-x64-gnu@npm:1.0.14" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rspack/binding-linux-x64-musl@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-linux-x64-musl@npm:1.0.11" +"@rspack/binding-linux-x64-musl@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-linux-x64-musl@npm:1.0.14" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rspack/binding-win32-arm64-msvc@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-win32-arm64-msvc@npm:1.0.11" +"@rspack/binding-win32-arm64-msvc@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-win32-arm64-msvc@npm:1.0.14" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rspack/binding-win32-ia32-msvc@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-win32-ia32-msvc@npm:1.0.11" +"@rspack/binding-win32-ia32-msvc@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-win32-ia32-msvc@npm:1.0.14" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rspack/binding-win32-x64-msvc@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding-win32-x64-msvc@npm:1.0.11" +"@rspack/binding-win32-x64-msvc@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding-win32-x64-msvc@npm:1.0.14" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rspack/binding@npm:1.0.11": - version: 1.0.11 - resolution: "@rspack/binding@npm:1.0.11" - dependencies: - "@rspack/binding-darwin-arm64": "npm:1.0.11" - "@rspack/binding-darwin-x64": "npm:1.0.11" - "@rspack/binding-linux-arm64-gnu": "npm:1.0.11" - "@rspack/binding-linux-arm64-musl": "npm:1.0.11" - "@rspack/binding-linux-x64-gnu": "npm:1.0.11" - "@rspack/binding-linux-x64-musl": "npm:1.0.11" - "@rspack/binding-win32-arm64-msvc": "npm:1.0.11" - "@rspack/binding-win32-ia32-msvc": "npm:1.0.11" - "@rspack/binding-win32-x64-msvc": "npm:1.0.11" +"@rspack/binding@npm:1.0.14": + version: 1.0.14 + resolution: "@rspack/binding@npm:1.0.14" + dependencies: + "@rspack/binding-darwin-arm64": "npm:1.0.14" + "@rspack/binding-darwin-x64": "npm:1.0.14" + "@rspack/binding-linux-arm64-gnu": "npm:1.0.14" + "@rspack/binding-linux-arm64-musl": "npm:1.0.14" + "@rspack/binding-linux-x64-gnu": "npm:1.0.14" + "@rspack/binding-linux-x64-musl": "npm:1.0.14" + "@rspack/binding-win32-arm64-msvc": "npm:1.0.14" + "@rspack/binding-win32-ia32-msvc": "npm:1.0.14" + "@rspack/binding-win32-x64-msvc": "npm:1.0.14" dependenciesMeta: "@rspack/binding-darwin-arm64": optional: true @@ -2257,13 +2052,13 @@ __metadata: optional: true "@rspack/binding-win32-x64-msvc": optional: true - checksum: 10/6e521467fdf9cd06842ea8b9aaa2b8164c4d5d0787c357c42d901327253284e8295dab1705ad25bdfa930dd46cef66f780c8ce3bf43cc0df82ecbfbdcc2c3c6e + checksum: 10/5a01ff4334920b981032a8e1bd0819393041e859e97bc889113a9de89caecfc4b7dd62e9c56354c427ae3ecfde6e7c43b107dfff02e5d945dacb130da238c73b languageName: node linkType: hard -"@rspack/cli@npm:^v1.0.11": - version: 1.0.11 - resolution: "@rspack/cli@npm:1.0.11" +"@rspack/cli@npm:^v1.0.14": + version: 1.0.14 + resolution: "@rspack/cli@npm:1.0.14" dependencies: "@discoveryjs/json-ext": "npm:^0.5.7" "@rspack/dev-server": "npm:1.0.5" @@ -2278,16 +2073,16 @@ __metadata: "@rspack/core": ^1.0.0-alpha || ^1.x bin: rspack: bin/rspack - checksum: 10/81cf412e114d1f0bd57d7c2718733ba6c3fea8be45f30ceb189c541830a04a857d2f031d6155512bb88abf0e2ce04f08dbcf78c64b2372156169c24869528572 + checksum: 10/83cb672e12c4985f60b10383f5355adfaff24dc217bb7153f49203e021d6a22a12ba0b16622291006989e7602f986f4ac174c2b112886db69234e9c63e980314 languageName: node linkType: hard -"@rspack/core@npm:^v1.0.11": - version: 1.0.11 - resolution: "@rspack/core@npm:1.0.11" +"@rspack/core@npm:^v1.0.14": + version: 1.0.14 + resolution: "@rspack/core@npm:1.0.14" dependencies: "@module-federation/runtime-tools": "npm:0.5.1" - "@rspack/binding": "npm:1.0.11" + "@rspack/binding": "npm:1.0.14" "@rspack/lite-tapable": "npm:1.0.1" caniuse-lite: "npm:^1.0.30001616" peerDependencies: @@ -2295,7 +2090,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/f62cdc6dbee5ad32b76aa8f11581a78840bceaff81e616d859359a01a726676fc0d08bd2d67080c42f51d0ee97c4675b0d6c1aaf8fcb9af965330d930bdd6f2a + checksum: 10/3743c2dd9e7337f06091bf3d6c4462294f379aefb1069a1cf561b178b6dc7d8a294856323aab61e2c15f520bf693377e11bc415322ca8ea045adf84e4daeeba3 languageName: node linkType: hard @@ -2405,21 +2200,21 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-a11y@npm:8.3.6" +"@storybook/addon-a11y@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-a11y@npm:8.4.2" dependencies: - "@storybook/addon-highlight": "npm:8.3.6" + "@storybook/addon-highlight": "npm:8.4.2" axe-core: "npm:^4.2.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/ea7dfc57319e69824297291f87b32f1389c27554b69016178a9224db9cb0e055b0873d5a21ca4b944e947309575ad891cc3044e93d91633ce472ccb16678b48e + storybook: ^8.4.2 + checksum: 10/df093c431e579cec6f353f300ccfc9ae33535508b9b4340a0f5a0bbf2449dd1a4483b5214b3904b71e996ebde0c8e9b73e17d5fd692ced49b285b5e749a3f61a languageName: node linkType: hard -"@storybook/addon-actions@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-actions@npm:8.3.6" +"@storybook/addon-actions@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-actions@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" "@types/uuid": "npm:^9.0.1" @@ -2427,164 +2222,158 @@ __metadata: polished: "npm:^4.2.2" uuid: "npm:^9.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/94b5832dfab5494570ee06b39ccf4d0ae119332c8db479b0ef73aa9e06c853808aca642e14aca26c713ddfbaccccfcc56b8d38429d4d54d9d96fb4223474e406 + storybook: ^8.4.2 + checksum: 10/c00b213e42ea085a19162448b5c35d2439be7aa18425fc4c535e50b2cb187c3c93d6603e7c7727258e1b8abdb04d20d60eacf3bd0e2bec86a1a5df2c043bf3d7 languageName: node linkType: hard -"@storybook/addon-backgrounds@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-backgrounds@npm:8.3.6" +"@storybook/addon-backgrounds@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-backgrounds@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" memoizerific: "npm:^1.11.3" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/a8eaf489d7a6accbc838e7949b17540a0377526a45ca1babba44128c3a6d5a7e691b39ce41885ac2e191662bb7db9c912b833832a035dffe8a251ded0431a792 + storybook: ^8.4.2 + checksum: 10/56f2c8bcd5c32fd071baf14764b1f78dacfc25d12549686451043c8864c3e8ef56dc064ff91308dc4f37c842feb7a2993f0e29185e19194b6063bbadaafbd044 languageName: node linkType: hard -"@storybook/addon-controls@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-controls@npm:8.3.6" +"@storybook/addon-controls@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-controls@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" dequal: "npm:^2.0.2" - lodash: "npm:^4.17.21" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/0ea4df71f2a12252c559d8b9beeefad17358dea5cc675e03a76a9effba9e48b3fa42d2f194c62e9accd8bb86bbf64078bd9d03f134d5bfa903adfdacbcd638ea + storybook: ^8.4.2 + checksum: 10/ee23a051be689ac6d7b4d4a5e2cc5429dadfe556a4daa9d347f55bef0a6110dce4a5d68f7afe18c04817d4960f048b041eeb6cc9555031f620d78a52a19e4229 languageName: node linkType: hard -"@storybook/addon-docs@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-docs@npm:8.3.6" +"@storybook/addon-docs@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-docs@npm:8.4.2" dependencies: "@mdx-js/react": "npm:^3.0.0" - "@storybook/blocks": "npm:8.3.6" - "@storybook/csf-plugin": "npm:8.3.6" - "@storybook/global": "npm:^5.0.0" - "@storybook/react-dom-shim": "npm:8.3.6" - "@types/react": "npm:^16.8.0 || ^17.0.0 || ^18.0.0" - fs-extra: "npm:^11.1.0" + "@storybook/blocks": "npm:8.4.2" + "@storybook/csf-plugin": "npm:8.4.2" + "@storybook/react-dom-shim": "npm:8.4.2" react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0" react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0" - rehype-external-links: "npm:^3.0.0" - rehype-slug: "npm:^6.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/8c8ae44903ddd8e100c0da3952d7c83dace3b1fd7a87531263b487dca378122d2273a57afd8b18006ddf3ae1c3473f5a197c44742843e92dd724734b9c5adeb3 + storybook: ^8.4.2 + checksum: 10/06510b9894ac6b4d9324dec037e22b1fd882be8962fce4213a10746a2d23660a231373d70aa56f8763a5b65f2eb1a3e7e64f3228a687e36818768665e5f8e01e languageName: node linkType: hard -"@storybook/addon-essentials@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-essentials@npm:8.3.6" - dependencies: - "@storybook/addon-actions": "npm:8.3.6" - "@storybook/addon-backgrounds": "npm:8.3.6" - "@storybook/addon-controls": "npm:8.3.6" - "@storybook/addon-docs": "npm:8.3.6" - "@storybook/addon-highlight": "npm:8.3.6" - "@storybook/addon-measure": "npm:8.3.6" - "@storybook/addon-outline": "npm:8.3.6" - "@storybook/addon-toolbars": "npm:8.3.6" - "@storybook/addon-viewport": "npm:8.3.6" +"@storybook/addon-essentials@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-essentials@npm:8.4.2" + dependencies: + "@storybook/addon-actions": "npm:8.4.2" + "@storybook/addon-backgrounds": "npm:8.4.2" + "@storybook/addon-controls": "npm:8.4.2" + "@storybook/addon-docs": "npm:8.4.2" + "@storybook/addon-highlight": "npm:8.4.2" + "@storybook/addon-measure": "npm:8.4.2" + "@storybook/addon-outline": "npm:8.4.2" + "@storybook/addon-toolbars": "npm:8.4.2" + "@storybook/addon-viewport": "npm:8.4.2" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/4b15ece66548adfefe41bcfed67aa60526253a47b36245fa63b523986e106f7399b6a1720f59a260ae89a7629b4ebefafca3a19853c5ccecd0b2f259f8dd0c3a + storybook: ^8.4.2 + checksum: 10/951da2192a63d985e9af2e1e803bbe8bd6d64a87f50644034a55eb8bdc2ad0844e87836437d5c494eff3e94c8eae894d5f28bbef4b9cb99ef7e5fad573e1980d languageName: node linkType: hard -"@storybook/addon-highlight@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-highlight@npm:8.3.6" +"@storybook/addon-highlight@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-highlight@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/948f295e0196d7a4669095859286dbfce463be220d1d8adcca578ba40c888f1879816ba3343db1a286cfe52bc79ae554314def76d6ec11e12493192c13eea2e5 + storybook: ^8.4.2 + checksum: 10/81bdd9d758aa2b2faaa19ae6e27b6367e8522db3e8f6f2c72a452079ab35abf220472ff7ee6f7ed105dcfa7c23a2300df4753f8b5b5850a706a4c60492567735 languageName: node linkType: hard -"@storybook/addon-interactions@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-interactions@npm:8.3.6" +"@storybook/addon-interactions@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-interactions@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/instrumenter": "npm:8.3.6" - "@storybook/test": "npm:8.3.6" + "@storybook/instrumenter": "npm:8.4.2" + "@storybook/test": "npm:8.4.2" polished: "npm:^4.2.2" ts-dedent: "npm:^2.2.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/ddf4b0e534cc2b03001a76410475abf45c46f2900f016e682569d294640ffcda2ac0c8df3252225a48cc9641048936e1e62d26ffd7da2fabe650b774cba44992 + storybook: ^8.4.2 + checksum: 10/a0ac4c473d5ce8a0cc2c56897faf3845ab3fa51c0d6ff217d009de9850033549ffe9653d7821284c7e1947efb9a38beb34bd4cf4788d009f3edc027a6f5b37eb languageName: node linkType: hard -"@storybook/addon-links@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-links@npm:8.3.6" +"@storybook/addon-links@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-links@npm:8.4.2" dependencies: "@storybook/csf": "npm:^0.1.11" "@storybook/global": "npm:^5.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.6 + storybook: ^8.4.2 peerDependenciesMeta: react: optional: true - checksum: 10/1c6a1483098e5f1292824cb038d7a0efae78a8aee86e940092200b646501a6e4713a24e422fd3dd25781f17e08276dc5156cf3f4838b92a029fff2b4f3eb4e84 + checksum: 10/f23a29ffe9c7d8eb16032c4abba6b325dfea010840f9f3aa8cf27ea6699631a64aa065a796bd685bd35c39dcfdee9a3db51a38bc0bed452ce2c5818b523820b5 languageName: node linkType: hard -"@storybook/addon-measure@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-measure@npm:8.3.6" +"@storybook/addon-measure@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-measure@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" tiny-invariant: "npm:^1.3.1" peerDependencies: - storybook: ^8.3.6 - checksum: 10/cec0d3517ccdbe61e09906154929381cdd9ded1ac50391bf5530144e4ef40e8f46f1c0f8cadf41c382a98209df1c9c9c156c0b1acf3038526f24a92cc9082260 + storybook: ^8.4.2 + checksum: 10/48a2f3eccee2504777ac9c0fe267d3f91785674bb9a106c2610fa57912f65b2c2d32de76d3c62fe88a9d95985099283f0e55ac17b7593dece6ab3fb1657085c1 languageName: node linkType: hard -"@storybook/addon-outline@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-outline@npm:8.3.6" +"@storybook/addon-outline@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-outline@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/8b63ca2a5a6c5cd30fc4359f05f911825ff54946508a458aa8803b46cbde8badf470ffd9521480eb0be52eb00c064ccb1181170dcd0b621db091f52b04177b40 + storybook: ^8.4.2 + checksum: 10/b43804fbbca21ee8790c82cd32559de551e14bd010507d9c6d8eac2afe0849372a44701d91d2c4baba524bef9519193ee9cf87b1e9cfaa4d868bcce82b7d57b3 languageName: node linkType: hard -"@storybook/addon-toolbars@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-toolbars@npm:8.3.6" +"@storybook/addon-toolbars@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-toolbars@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/09ae00f53e92735735eee645b35fca80e3dce29d39a0821f675e0f0bf6aae1ffe94b6545eb132da4026a86a77b352b2709956f742b5906d8caccabc1f72f948a + storybook: ^8.4.2 + checksum: 10/294019d0081874ff15fc846768f3743e11278f6a1d211f413bfcdbc5ca9415a80ac478523cae51fcfe1c77277a32bad9745362c8a0a1bd053570e07df615af95 languageName: node linkType: hard -"@storybook/addon-viewport@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/addon-viewport@npm:8.3.6" +"@storybook/addon-viewport@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/addon-viewport@npm:8.4.2" dependencies: memoizerific: "npm:^1.11.3" peerDependencies: - storybook: ^8.3.6 - checksum: 10/b9e09004b742dabbd115cec74a75656b01aef44c3476508cdfbdee24efbcb50b90470e66bd6bd735e804139e36aa65fea4d96c8c8f92b08153e6dde764f55943 + storybook: ^8.4.2 + checksum: 10/7d2c0fa6ed73030cf718a306dd0c327006f54747801e13a7037416ca746ff92f3d341820744de08e651ed746e0f5bb50104a2c57b17b6f4de3ef0f8987861020 languageName: node linkType: hard @@ -2598,42 +2387,31 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/blocks@npm:8.3.6" +"@storybook/blocks@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/blocks@npm:8.4.2" dependencies: "@storybook/csf": "npm:^0.1.11" - "@storybook/global": "npm:^5.0.0" - "@storybook/icons": "npm:^1.2.10" - "@types/lodash": "npm:^4.14.167" - color-convert: "npm:^2.0.1" - dequal: "npm:^2.0.2" - lodash: "npm:^4.17.21" - markdown-to-jsx: "npm:^7.4.5" - memoizerific: "npm:^1.11.3" - polished: "npm:^4.2.2" - react-colorful: "npm:^5.1.2" - telejson: "npm:^7.2.0" + "@storybook/icons": "npm:^1.2.12" ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.6 + storybook: ^8.4.2 peerDependenciesMeta: react: optional: true react-dom: optional: true - checksum: 10/db3b4676602c52af32de06032ed15a7b7723138675be0f27d6ac0f806806dab58b8ba0d97a69ff33e01c169e47bccb6b2f25df3e8b472287c76ae9da40be5a6b + checksum: 10/88880e7c13752fe1323cd8eeb93005ab4493c4f024ef3119462dc160e57a985979756a64e0d6e9f374c0f510adcd0e7141d5b7f52bbe255e1c3fbf4ce0cbb896 languageName: node linkType: hard -"@storybook/builder-webpack5@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/builder-webpack5@npm:8.3.6" +"@storybook/builder-webpack5@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/builder-webpack5@npm:8.4.2" dependencies: - "@storybook/core-webpack": "npm:8.3.6" + "@storybook/core-webpack": "npm:8.4.2" "@types/node": "npm:^22.0.0" "@types/semver": "npm:^7.3.4" browser-assert: "npm:^1.2.1" @@ -2642,9 +2420,7 @@ __metadata: constants-browserify: "npm:^1.0.0" css-loader: "npm:^6.7.1" es-module-lexer: "npm:^1.5.0" - express: "npm:^4.19.2" fork-ts-checker-webpack-plugin: "npm:^8.0.0" - fs-extra: "npm:^11.1.0" html-webpack-plugin: "npm:^5.5.0" magic-string: "npm:^0.30.5" path-browserify: "npm:^1.0.1" @@ -2661,73 +2437,76 @@ __metadata: webpack-hot-middleware: "npm:^2.25.1" webpack-virtual-modules: "npm:^0.6.0" peerDependencies: - storybook: ^8.3.6 + storybook: ^8.4.2 peerDependenciesMeta: typescript: optional: true - checksum: 10/f1752dacf2efdf4291039601f9509fd516c1adcb4b06d4545bca202144f81baa6a04d8839ba5e0ff07f4307bc448104aa9965f251a5a409e126acd9e8e19b9db + checksum: 10/d67458e1337c8e403f6b4914d5f00d99d3dbd0ec2d1e3bdd7f2eb7a9f0c5acc4d78db45e30c6be1fea48b502d37bda46be41508ed258152f97e7008249c95aed languageName: node linkType: hard -"@storybook/components@npm:8.3.6, @storybook/components@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/components@npm:8.3.6" +"@storybook/components@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/components@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/778a114ddba6bd71ce18a8659c4c8b9b4cbcfa5665a68e3bae9467c492a218c2d95ded0825cc920984a6017f12ce811f48517812eb0de2183623cd06be677d7a + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/52c7885763f3154215b8f9fda57fe4af62e5194722bca90f35769a74aee411bf552d96455d1c2101404e30b2b0a4ed2c57c21a365ecbf18124a252538e15e83e languageName: node linkType: hard -"@storybook/core-events@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/core-events@npm:8.3.6" +"@storybook/core-events@npm:^8.4.2": + version: 8.4.2 + resolution: "@storybook/core-events@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/bcf7a0f86cfaace4394eae8c7b747f5265e59304f5a4adc7fab266f09166e77896729d556319fcfcb5a6b6608ef1e6451f2c0a1e27832c7d870f0e298c40f6f5 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/16c13267d0795050c769419f5f69a3e20e8487d8019ddf6b56df154c7ea5d99f5ec4b59a284d3b197c97a9b303b6b6f3026612f75d6cca968a9ac109b5c04e89 languageName: node linkType: hard -"@storybook/core-webpack@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/core-webpack@npm:8.3.6" +"@storybook/core-webpack@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/core-webpack@npm:8.4.2" dependencies: "@types/node": "npm:^22.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.3.6 - checksum: 10/d842582b494712bf96e5a6346e7dc5f9af2589425acc7fe6a593137f6a203b4a43d522a1c5ba92b1d6ef67c19cc5ce23c23f97a5b3a2a70e26b37b2a72e4aaaa + storybook: ^8.4.2 + checksum: 10/8e6d75e70720743bd299855277cbd5a7bb00c286e715050fa8c1c7369d2e4fce7b69cee1a2cd56475760ad3ea3931e4a76c4eb61d8d70a447310414057a6bfb9 languageName: node linkType: hard -"@storybook/core@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/core@npm:8.3.6" +"@storybook/core@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/core@npm:8.4.2" dependencies: "@storybook/csf": "npm:^0.1.11" - "@types/express": "npm:^4.17.21" better-opn: "npm:^3.0.2" browser-assert: "npm:^1.2.1" - esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0" esbuild-register: "npm:^3.5.0" - express: "npm:^4.19.2" jsdoc-type-pratt-parser: "npm:^4.0.0" process: "npm:^0.11.10" recast: "npm:^0.23.5" semver: "npm:^7.6.2" util: "npm:^0.12.5" ws: "npm:^8.2.3" - checksum: 10/7163a919c6a1bb65acdfe28f7e8f3f481c982867f04bbf8bf8e98ef96e06da116d7ac1ca2442b6584e2b3a94521d8084082186f4632c44f50529ed7447956e5b + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + checksum: 10/f7e1b1b50fbe038c5553695086775eca34de4ebee3dabc28b9163f37e348565a50a937231d0eed45291f9d52478c63bdf2065a99ad4826816fcd81e1652c3382 languageName: node linkType: hard -"@storybook/csf-plugin@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/csf-plugin@npm:8.3.6" +"@storybook/csf-plugin@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/csf-plugin@npm:8.4.2" dependencies: unplugin: "npm:^1.3.1" peerDependencies: - storybook: ^8.3.6 - checksum: 10/08cd3f8563808889877484f112bca7bca496f3ea195e18660941f11644422282062135a40e0f5f732fee9b5d7a214baddf2a9e58eb10d5ff54bd30b61ee0923d + storybook: ^8.4.2 + checksum: 10/ec787be0a4fe2928a2675fe6bca5799f0bff8c66e50cea7bed198a188b19ee57257266b0255c5226a7da97928758b86c978afecc3ee0e2bb1f21fe0e7fdaf0c5 languageName: node linkType: hard @@ -2740,12 +2519,12 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/docs-tools@npm:8.3.6" +"@storybook/docs-tools@npm:^8.4.2": + version: 8.4.2 + resolution: "@storybook/docs-tools@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/70f4eb2b6a25ceadf3168cffd7964f33b6bde9f99e0d9fbf7da3e21c8d526f30ab42a0e2b50ba06948f84f4adecd88a089ea77a5a28c7e3de72813184308afed + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/fa2de0e0eddf2ec5ed3b8ebb7d742729ee12e1475b0df28d6189839450d12158d7edd8da78c1d6390b8df76305af7cc2bdc340d8083694f607611b9ba8e9fb85 languageName: node linkType: hard @@ -2756,49 +2535,47 @@ __metadata: languageName: node linkType: hard -"@storybook/icons@npm:^1.2.10": - version: 1.2.10 - resolution: "@storybook/icons@npm:1.2.10" +"@storybook/icons@npm:^1.2.12": + version: 1.2.12 + resolution: "@storybook/icons@npm:1.2.12" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/fad929a7e3c7a1a0fbf6b924b0be73f557b1bba9519faa15422482f89513ceb4b649444c224ee3d1dfbdce3616e684063cff23da08f6b1dd96f1aff4381388a6 + checksum: 10/5df56f0856764ed7e4bb24ef7a08a8a9c93f8eedcb16dac062f1dfd3bd1fe6cb4a0aa5a0794083d95e31c04960d126a4d2028cfb4c53681bf05513bb38eae9d2 languageName: node linkType: hard -"@storybook/instrumenter@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/instrumenter@npm:8.3.6" +"@storybook/instrumenter@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/instrumenter@npm:8.4.2" dependencies: "@storybook/global": "npm:^5.0.0" - "@vitest/utils": "npm:^2.0.5" - util: "npm:^0.12.4" + "@vitest/utils": "npm:^2.1.1" peerDependencies: - storybook: ^8.3.6 - checksum: 10/bc911ea2338e726fe18fc0d1391021840c7a8c00d2a2d69a20c67c6f4a57be23bf08d38a71fee0fc36bd41a6c79ba5fa581a56e7702ff7e01baef11c982cd00e + storybook: ^8.4.2 + checksum: 10/b6d48ffe6a1ad1fca0d296438e2114df6631667ccda803595d54c71732d0bb7dad086d5465254ba914f4666363018bf1df48cdc8304ad6b6c7a24b87164f7d95 languageName: node linkType: hard -"@storybook/manager-api@npm:8.3.6, @storybook/manager-api@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/manager-api@npm:8.3.6" +"@storybook/manager-api@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/manager-api@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/94faf62726b948c2f8e52e15ac99f4ca2f5884a874fbecda6a81e58a03ff316d17ed36c8c146bd388bb58dad2a2bd09cd61c6d7fc1ff2cddfc774c2aed34e37c + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/61b8f845f3271c2dd84597a94c2905a785949a2467582663165e476f455f1942b9c3be77a08f5101848d8a75ca23aa9f7db620d81f202d19093af7695d6ca8a0 languageName: node linkType: hard -"@storybook/preset-react-webpack@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/preset-react-webpack@npm:8.3.6" +"@storybook/preset-react-webpack@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/preset-react-webpack@npm:8.4.2" dependencies: - "@storybook/core-webpack": "npm:8.3.6" - "@storybook/react": "npm:8.3.6" + "@storybook/core-webpack": "npm:8.4.2" + "@storybook/react": "npm:8.4.2" "@storybook/react-docgen-typescript-plugin": "npm:1.0.6--canary.9.0c3f3b7.0" "@types/node": "npm:^22.0.0" "@types/semver": "npm:^7.3.4" find-up: "npm:^5.0.0" - fs-extra: "npm:^11.1.0" magic-string: "npm:^0.30.5" react-docgen: "npm:^7.0.0" resolve: "npm:^1.22.8" @@ -2808,20 +2585,20 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.6 + storybook: ^8.4.2 peerDependenciesMeta: typescript: optional: true - checksum: 10/1d413e3b6b9ff4d613f26943131e53baccdc874b2120bd08375c23cbb7ef6b767798afbd38086f0a4efd4a229932f7bb3e37b339442aa9cda776cbf2e3e153e6 + checksum: 10/5c08b8c8d59262fa390ad35214179f17b3ddddd7b0956efd0d73542b6c82771b8e6814ab45c57b7099bd4026b49594106222cd620b34a2871427d59050a13e0b languageName: node linkType: hard -"@storybook/preview-api@npm:8.3.6, @storybook/preview-api@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/preview-api@npm:8.3.6" +"@storybook/preview-api@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/preview-api@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/5a645dc19308b69020da2ee282860666c6f7ebe45525802cb4da3d4e496f410a30915e570ae4a07b23d429a5d7f0c7254d9f76e6bc236ff2a85b0cc0e56b0ad0 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/5e57c276bc30afd106dbe89b88dd8b4265d538bc4c55d011b6277d24d0210a7b1b9921f7f2403f06ad824fc50b5846d9037803c613a6f437239a667a52841eea languageName: node linkType: hard @@ -2843,116 +2620,101 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/react-dom-shim@npm:8.3.6" +"@storybook/react-dom-shim@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/react-dom-shim@npm:8.4.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.6 - checksum: 10/229001fd8138821d71c7c53ececc152858e92a49cdc50ddb401fecbbe5e4ca3b92082a15b15e1d074ebbb22f294aa5310f54356c7a372479439e985af62cd262 + storybook: ^8.4.2 + checksum: 10/76c058e1a2397dfc4fcd5a5fe74bc3e389754b1d7149c0ecc53afb5f706926d1ca2a76e7da04990cd500b378e3e09ffaead827808c12d1da73ea73a1973b630f languageName: node linkType: hard -"@storybook/react-webpack5@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/react-webpack5@npm:8.3.6" +"@storybook/react-webpack5@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/react-webpack5@npm:8.4.2" dependencies: - "@storybook/builder-webpack5": "npm:8.3.6" - "@storybook/preset-react-webpack": "npm:8.3.6" - "@storybook/react": "npm:8.3.6" + "@storybook/builder-webpack5": "npm:8.4.2" + "@storybook/preset-react-webpack": "npm:8.4.2" + "@storybook/react": "npm:8.4.2" "@types/node": "npm:^22.0.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.6 + storybook: ^8.4.2 typescript: ">= 4.2.x" peerDependenciesMeta: typescript: optional: true - checksum: 10/15d21da721b639eedd965b17d149b37fd2ee0c84673671fea9841a5491923e1e929c34367e0fe02b63f774edf66f34ec65698f77345a812adac5236c5f05fe44 + checksum: 10/a4f98edcc918e1f0e0f03baf3846fe6f8dcb744873218a9f4ed9c0f4fb813e659b1782060f823c12da4ab66ff7b717be5f51d056650d144d243532f849a7742a languageName: node linkType: hard -"@storybook/react@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/react@npm:8.3.6" +"@storybook/react@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/react@npm:8.4.2" dependencies: - "@storybook/components": "npm:^8.3.6" + "@storybook/components": "npm:8.4.2" "@storybook/global": "npm:^5.0.0" - "@storybook/manager-api": "npm:^8.3.6" - "@storybook/preview-api": "npm:^8.3.6" - "@storybook/react-dom-shim": "npm:8.3.6" - "@storybook/theming": "npm:^8.3.6" - "@types/escodegen": "npm:^0.0.6" - "@types/estree": "npm:^0.0.51" - "@types/node": "npm:^22.0.0" - acorn: "npm:^7.4.1" - acorn-jsx: "npm:^5.3.1" - acorn-walk: "npm:^7.2.0" - escodegen: "npm:^2.1.0" - html-tags: "npm:^3.1.0" - prop-types: "npm:^15.7.2" - react-element-to-jsx-string: "npm:^15.0.0" - semver: "npm:^7.3.7" - ts-dedent: "npm:^2.0.0" - type-fest: "npm:~2.19" - util-deprecate: "npm:^1.0.2" + "@storybook/manager-api": "npm:8.4.2" + "@storybook/preview-api": "npm:8.4.2" + "@storybook/react-dom-shim": "npm:8.4.2" + "@storybook/theming": "npm:8.4.2" peerDependencies: - "@storybook/test": 8.3.6 + "@storybook/test": 8.4.2 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.6 + storybook: ^8.4.2 typescript: ">= 4.2.x" peerDependenciesMeta: "@storybook/test": optional: true typescript: optional: true - checksum: 10/412e9052d20485350d987776daf0709bae8595bf4f3e10b12ae1aa85a32ae46369ceb0da623b651dd568d2124ed9ca7adc2dc1930353e41be2881bb253240e3c + checksum: 10/df7dd512d2e4604b7af859f594c058be959495dc0c25467f571f1e6b4e5058c2ee0d3caaed47742e3a602eef871143b1d48aa164646d61923885ebc7eec87b56 languageName: node linkType: hard -"@storybook/test@npm:8.3.6, @storybook/test@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/test@npm:8.3.6" +"@storybook/test@npm:8.4.2, @storybook/test@npm:^8.4.2": + version: 8.4.2 + resolution: "@storybook/test@npm:8.4.2" dependencies: "@storybook/csf": "npm:^0.1.11" "@storybook/global": "npm:^5.0.0" - "@storybook/instrumenter": "npm:8.3.6" + "@storybook/instrumenter": "npm:8.4.2" "@testing-library/dom": "npm:10.4.0" "@testing-library/jest-dom": "npm:6.5.0" "@testing-library/user-event": "npm:14.5.2" "@vitest/expect": "npm:2.0.5" "@vitest/spy": "npm:2.0.5" - util: "npm:^0.12.4" peerDependencies: - storybook: ^8.3.6 - checksum: 10/2115e96dbe61e68dcb2da9086ea81501b1763f2a5e68e61cb13d2fcc37dc00ab2178737e0cfff3ed515e86a0cfada09538044ab26c03cd4418eb8ef07dbdfcbf + storybook: ^8.4.2 + checksum: 10/934518e629d2798df10bb892184e18dca0f3ea7b426636cef3f29a12302a3c471b59d808024ea90c58b9e183ce1b3477a0c8827824f7e74111ceaf4518f0212e languageName: node linkType: hard -"@storybook/theming@npm:8.3.6, @storybook/theming@npm:^8.3.6": - version: 8.3.6 - resolution: "@storybook/theming@npm:8.3.6" +"@storybook/theming@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/theming@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/7b40b35069225d37f71f43e35174717ba6ec8d273eef671a2d37d9745a300c5b3887fa145aee6fdbe4759b2140ddf25e8cbd569074ae1c7d44b0ccc99c1a3451 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/8d0a6d20d3589815dea0bcdae9255216b8fc5459225871881a52e0fbc94a136a9972bef02c2ec6167ffd8eea24afab68962e01e83a8d4f60d12b4b787b9b23f3 languageName: node linkType: hard -"@storybook/types@npm:8.3.6": - version: 8.3.6 - resolution: "@storybook/types@npm:8.3.6" +"@storybook/types@npm:8.4.2": + version: 8.4.2 + resolution: "@storybook/types@npm:8.4.2" peerDependencies: - storybook: ^8.3.6 - checksum: 10/7122388d848cf1d8b7d95c81b8a601d82a455d764f7a625372f344dc0402bbd398db22e1c6cedd66ca3987d61b0f8204ff757e0ff5fc2a77745094dc7b882a2a + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10/2fb61f73bafb55e19c65f903dd87ac01281d0214c7938a90fc925a9ace327e4e566784b641a3dcf6f2975c904f9cd97d1d70403d421396b1398346e29a0624dd languageName: node linkType: hard -"@swc/cli@npm:^0.4.0": - version: 0.4.0 - resolution: "@swc/cli@npm:0.4.0" +"@swc/cli@npm:^0.5.0": + version: 0.5.0 + resolution: "@swc/cli@npm:0.5.0" dependencies: "@mole-inc/bin-wrapper": "npm:^8.0.1" "@swc/counter": "npm:^0.1.3" @@ -2973,166 +2735,166 @@ __metadata: spack: bin/spack.js swc: bin/swc.js swcx: bin/swcx.js - checksum: 10/d1e319f5579eb3b889e86e5db1db25673bbbaa9091e0e1f93ec4ae33c9ef8b6a6607bbaae693f7c2fefe5d1faf9eec48bdd79a15f170b70e6bc0aa58e6550dee + checksum: 10/033b682f1c25c8fae731414d2a463a0e455452bf9349c025cd88ea63ee1e5a589032eb206063fd925daf12065c9f1e5b4680cef50cc24674681c4d2583b7dca0 languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-darwin-arm64@npm:1.7.26" +"@swc/core-darwin-arm64@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-darwin-arm64@npm:1.7.40" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-darwin-arm64@npm:1.7.36" +"@swc/core-darwin-arm64@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-darwin-arm64@npm:1.8.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-darwin-x64@npm:1.7.26" +"@swc/core-darwin-x64@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-darwin-x64@npm:1.7.40" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-darwin-x64@npm:1.7.36" +"@swc/core-darwin-x64@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-darwin-x64@npm:1.8.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.26" +"@swc/core-linux-arm-gnueabihf@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.40" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.36" +"@swc/core-linux-arm-gnueabihf@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.8.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.26" +"@swc/core-linux-arm64-gnu@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.40" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.36" +"@swc/core-linux-arm64-gnu@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.8.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.26" +"@swc/core-linux-arm64-musl@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.40" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.36" +"@swc/core-linux-arm64-musl@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.8.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.26" +"@swc/core-linux-x64-gnu@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.40" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.36" +"@swc/core-linux-x64-gnu@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.8.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-x64-musl@npm:1.7.26" +"@swc/core-linux-x64-musl@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-x64-musl@npm:1.7.40" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-linux-x64-musl@npm:1.7.36" +"@swc/core-linux-x64-musl@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-linux-x64-musl@npm:1.8.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.26" +"@swc/core-win32-arm64-msvc@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.40" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.36" +"@swc/core-win32-arm64-msvc@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.8.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.26" +"@swc/core-win32-ia32-msvc@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.40" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.36" +"@swc/core-win32-ia32-msvc@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.8.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.26" +"@swc/core-win32-x64-msvc@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.40" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.36": - version: 1.7.36 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.36" +"@swc/core-win32-x64-msvc@npm:1.8.0": + version: 1.8.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.8.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:*, @swc/core@npm:^1.7.3": - version: 1.7.26 - resolution: "@swc/core@npm:1.7.26" - dependencies: - "@swc/core-darwin-arm64": "npm:1.7.26" - "@swc/core-darwin-x64": "npm:1.7.26" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.26" - "@swc/core-linux-arm64-gnu": "npm:1.7.26" - "@swc/core-linux-arm64-musl": "npm:1.7.26" - "@swc/core-linux-x64-gnu": "npm:1.7.26" - "@swc/core-linux-x64-musl": "npm:1.7.26" - "@swc/core-win32-arm64-msvc": "npm:1.7.26" - "@swc/core-win32-ia32-msvc": "npm:1.7.26" - "@swc/core-win32-x64-msvc": "npm:1.7.26" + version: 1.7.40 + resolution: "@swc/core@npm:1.7.40" + dependencies: + "@swc/core-darwin-arm64": "npm:1.7.40" + "@swc/core-darwin-x64": "npm:1.7.40" + "@swc/core-linux-arm-gnueabihf": "npm:1.7.40" + "@swc/core-linux-arm64-gnu": "npm:1.7.40" + "@swc/core-linux-arm64-musl": "npm:1.7.40" + "@swc/core-linux-x64-gnu": "npm:1.7.40" + "@swc/core-linux-x64-musl": "npm:1.7.40" + "@swc/core-win32-arm64-msvc": "npm:1.7.40" + "@swc/core-win32-ia32-msvc": "npm:1.7.40" + "@swc/core-win32-x64-msvc": "npm:1.7.40" "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.12" + "@swc/types": "npm:^0.1.13" peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -3159,26 +2921,26 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/8fb43420bdd1b774dc054c6629f87f733e76860b97130609c7374f3a48406bc0ae1a2dd0b3e3c10317c692b2eaa64747f1a690b309727a8d1411112e2d2a884e + checksum: 10/fc5710bcd7a444fb7527c40f606a38f363cc297596ac741b5102701d99dc84b4c1ceffe0e0611eb3a3d02fe298b9d9c57faca237e2b67e76b7bcf5785d488be9 languageName: node linkType: hard -"@swc/core@npm:1.7.36, @swc/core@npm:^1.7.36": - version: 1.7.36 - resolution: "@swc/core@npm:1.7.36" +"@swc/core@npm:1.8.0, @swc/core@npm:^1.8.0": + version: 1.8.0 + resolution: "@swc/core@npm:1.8.0" dependencies: - "@swc/core-darwin-arm64": "npm:1.7.36" - "@swc/core-darwin-x64": "npm:1.7.36" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.36" - "@swc/core-linux-arm64-gnu": "npm:1.7.36" - "@swc/core-linux-arm64-musl": "npm:1.7.36" - "@swc/core-linux-x64-gnu": "npm:1.7.36" - "@swc/core-linux-x64-musl": "npm:1.7.36" - "@swc/core-win32-arm64-msvc": "npm:1.7.36" - "@swc/core-win32-ia32-msvc": "npm:1.7.36" - "@swc/core-win32-x64-msvc": "npm:1.7.36" + "@swc/core-darwin-arm64": "npm:1.8.0" + "@swc/core-darwin-x64": "npm:1.8.0" + "@swc/core-linux-arm-gnueabihf": "npm:1.8.0" + "@swc/core-linux-arm64-gnu": "npm:1.8.0" + "@swc/core-linux-arm64-musl": "npm:1.8.0" + "@swc/core-linux-x64-gnu": "npm:1.8.0" + "@swc/core-linux-x64-musl": "npm:1.8.0" + "@swc/core-win32-arm64-msvc": "npm:1.8.0" + "@swc/core-win32-ia32-msvc": "npm:1.8.0" + "@swc/core-win32-x64-msvc": "npm:1.8.0" "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.13" + "@swc/types": "npm:^0.1.14" peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -3205,7 +2967,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/d78438192b8d956ba5d221915f81f3e31ac14d64188d2cd0f048f7c527c58fe7e04860c54f45c82b09db330e81b584b7bed17724e010495f7c4686555bdb3fa0 + checksum: 10/2e7fb49286545b2b712b8220dbaf0d342636bd4c31763f760dc9822975d8e538e0080f1eb8ae7e74bf9b2eed8200a9525fd210ead573843dabd6f3e388bfb336 languageName: node linkType: hard @@ -3225,34 +2987,34 @@ __metadata: languageName: node linkType: hard -"@swc/jest@npm:^0.2.36": - version: 0.2.36 - resolution: "@swc/jest@npm:0.2.36" +"@swc/jest@npm:^0.2.37": + version: 0.2.37 + resolution: "@swc/jest@npm:0.2.37" dependencies: "@jest/create-cache-key-function": "npm:^29.7.0" "@swc/counter": "npm:^0.1.3" jsonc-parser: "npm:^3.2.0" peerDependencies: "@swc/core": "*" - checksum: 10/39c5699646f0e90400af106156e5604069e8a7d8216f2421e171837b086839176c16f69925ce6a5c4c48182005eed649bdf9664023708e169aa48814feecc0d8 + checksum: 10/bbec37079b4f5c1ff1c95aeec07d08277c646a0c5e16e057ea3a8fe5c6e2bd59bbfc4312e53ddd05d25fa4de20a03607be274f560f28bb5e229dd08124780e16 languageName: node linkType: hard -"@swc/types@npm:^0.1.12": - version: 0.1.12 - resolution: "@swc/types@npm:0.1.12" +"@swc/types@npm:^0.1.13": + version: 0.1.13 + resolution: "@swc/types@npm:0.1.13" dependencies: "@swc/counter": "npm:^0.1.3" - checksum: 10/92dbbc70cd068ea30fb6fbdc1ae8599d6c058a5d09b2923d6e4e24fab5ad7c86a19dd01f349a8e03e300a9321e06911a24df18303b40e307fbd4109372cef2ef + checksum: 10/d0a50432917048cc69e30c82d1266e052a8e8d05ab202c5d74a5666be3748da4d2f99aaff46d91c0e3d285cf8f55270f8391cd578066fdecc3865733f8d5e14a languageName: node linkType: hard -"@swc/types@npm:^0.1.13": - version: 0.1.13 - resolution: "@swc/types@npm:0.1.13" +"@swc/types@npm:^0.1.14": + version: 0.1.14 + resolution: "@swc/types@npm:0.1.14" dependencies: "@swc/counter": "npm:^0.1.3" - checksum: 10/d0a50432917048cc69e30c82d1266e052a8e8d05ab202c5d74a5666be3748da4d2f99aaff46d91c0e3d285cf8f55270f8391cd578066fdecc3865733f8d5e14a + checksum: 10/1ee6cd759f7dd52ea64cbcacc912e2111624a8db0dcfae443604bd9d42b671d9b9570f1eca945dfc21b8850a15d2c0db2aa0e0b85f4bb9782f4acd1eb66dccd1 languageName: node linkType: hard @@ -3296,9 +3058,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.6.2": - version: 6.6.2 - resolution: "@testing-library/jest-dom@npm:6.6.2" +"@testing-library/jest-dom@npm:^6.6.3": + version: 6.6.3 + resolution: "@testing-library/jest-dom@npm:6.6.3" dependencies: "@adobe/css-tools": "npm:^4.4.0" aria-query: "npm:^5.0.0" @@ -3307,7 +3069,7 @@ __metadata: dom-accessibility-api: "npm:^0.6.3" lodash: "npm:^4.17.21" redent: "npm:^3.0.0" - checksum: 10/c5f1ac369e685ea7c17eff190f2e9996e6e54615a3048c3c00cbbbec48f94c557d348ba935a7e8170efbbb109c035785952f6e46d0c03edb18e9a8cc55f8f118 + checksum: 10/1f3427e45870eab9dcc59d6504b780d4a595062fe1687762ae6e67d06a70bf439b40ab64cf58cbace6293a99e3764d4647fdc8300a633b721764f5ce39dade18 languageName: node linkType: hard @@ -3515,10 +3277,30 @@ __metadata: languageName: node linkType: hard -"@types/escodegen@npm:^0.0.6": - version: 0.0.6 - resolution: "@types/escodegen@npm:0.0.6" - checksum: 10/2e91554a47eb98076a3ba6e3548640e50b28a0f5b69134f99dd1e0ce5223c0a1726f23d25aafd40e4c7961d7c3c519782949aa606d58d0e7431c7fb1ec011c4c +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10/719fcd255760168a43d0e306ef87548e1e15bffe361d5f4022b0f266575637acc0ecb85604ac97879ee8ae83c6a6d0613b0ed31d0209ddf22a0fe6d608fc56fe + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d languageName: node linkType: hard @@ -3529,13 +3311,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: 10/b566c7a3fc8a81ca3d9e00a717e90b8f5d567e2476b4f6d76a20ec6da33ec28165b8f989ed8dd0c9df41405199777ec36a4f85f32a347fbc6c3f696a3128b6e7 - languageName: node - linkType: hard - "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.19.5 resolution: "@types/express-serve-static-core@npm:4.19.5" @@ -3579,15 +3354,6 @@ __metadata: languageName: node linkType: hard -"@types/hast@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/hast@npm:3.0.4" - dependencies: - "@types/unist": "npm:*" - checksum: 10/732920d81bb7605895776841b7658b4d8cc74a43a8fa176017cc0fb0ecc1a4c82a2b75a4fe6b71aa262b649d3fb62858c6789efa3793ea1d40269953af96ecb5 - languageName: node - linkType: hard - "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" @@ -3653,7 +3419,7 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:*, @types/jest@npm:^29.5.13": +"@types/jest@npm:*": version: 29.5.13 resolution: "@types/jest@npm:29.5.13" dependencies: @@ -3663,6 +3429,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.5.14": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10/59ec7a9c4688aae8ee529316c43853468b6034f453d08a2e1064b281af9c81234cec986be796288f1bbb29efe943bc950e70c8fa8faae1e460d50e3cf9760f9b + languageName: node + linkType: hard + "@types/jscodeshift@npm:^0.12.0": version: 0.12.0 resolution: "@types/jscodeshift@npm:0.12.0" @@ -3684,7 +3460,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -3707,13 +3483,6 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.167": - version: 4.17.5 - resolution: "@types/lodash@npm:4.17.5" - checksum: 10/10e2e9cbeb16998026f4071f9f5f2a38b651eba15302f512e0b8ab904c07c197ca0282d2821f64e53c2b692d7046af0a1ce3ead190fb077cbe4036948fce1924 - languageName: node - linkType: hard - "@types/mdast@npm:^3.0.0": version: 3.0.15 resolution: "@types/mdast@npm:3.0.15" @@ -3754,20 +3523,20 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:^22.0.0": - version: 22.7.5 - resolution: "@types/node@npm:22.7.5" + version: 22.8.1 + resolution: "@types/node@npm:22.8.1" dependencies: - undici-types: "npm:~6.19.2" - checksum: 10/e8ba102f8c1aa7623787d625389be68d64e54fcbb76d41f6c2c64e8cf4c9f4a2370e7ef5e5f1732f3c57529d3d26afdcb2edc0101c5e413a79081449825c57ac + undici-types: "npm:~6.19.8" + checksum: 10/ae969e3d956dead1422c35d568ea5d48dd124a38a1a337cbd120fec6e13cc92b45c7308f91f1139fcd2337a67d4704d5614d6a2c444b1fb268f85e9f1d24c713 languageName: node linkType: hard -"@types/node@npm:^22.7.7": - version: 22.7.7 - resolution: "@types/node@npm:22.7.7" +"@types/node@npm:^22.8.7": + version: 22.8.7 + resolution: "@types/node@npm:22.8.7" dependencies: - undici-types: "npm:~6.19.2" - checksum: 10/ada6c5f850fa09621e21923d7b17c3f3b5264c3b39c0953006f4a8b0b3d4b6d77ac02e2bbf8bae1d493abf81668804624470d895dd4483875fde8382b6eb7933 + undici-types: "npm:~6.19.8" + checksum: 10/9c73d4cbcbf9773a5986421025c26d6139d8ab960317b3062fbb449c00dbe8197230334be550ffcdb6059bd25f4cb903546bace905155628537283a80c2075d5 languageName: node linkType: hard @@ -3861,13 +3630,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^16.8.0 || ^17.0.0 || ^18.0.0, @types/react@npm:^18.3.11": - version: 18.3.11 - resolution: "@types/react@npm:18.3.11" +"@types/react@npm:*, @types/react@npm:^18.3.12": + version: 18.3.12 + resolution: "@types/react@npm:18.3.12" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/a36f0707fdfe9fe19cbe5892bcdab0f042ecadb501ea4e1c39519943f3e74cffbd31e892d3860f5c87cf33f5f223552b246a552bed0087b95954f2cb39d5cf65 + checksum: 10/c9bbdfeacd5347d2240e0d2cb5336bc57dbc1b9ff557b6c4024b49df83419e4955553518169d3736039f1b62608e15b35762a6c03d49bd86e33add4b43b19033 languageName: node linkType: hard @@ -3961,13 +3730,6 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^3.0.0": - version: 3.0.2 - resolution: "@types/unist@npm:3.0.2" - checksum: 10/3d04d0be69316e5f14599a0d993a208606c12818cf631fd399243d1dc7a9bd8a3917d6066baa6abc290814afbd744621484756803c80cba892c39cd4b4a85616 - languageName: node - linkType: hard - "@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": version: 2.0.10 resolution: "@types/unist@npm:2.0.10" @@ -3993,7 +3755,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.10": +"@types/ws@npm:^8.5.10, @types/ws@npm:^8.5.5": version: 8.5.11 resolution: "@types/ws@npm:8.5.11" dependencies: @@ -4002,15 +3764,6 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.5": - version: 8.5.10 - resolution: "@types/ws@npm:8.5.10" - dependencies: - "@types/node": "npm:*" - checksum: 10/9b414dc5e0b6c6f1ea4b1635b3568c58707357f68076df9e7cd33194747b7d1716d5189c0dbdd68c8d2521b148e88184cf881bac7429eb0e5c989b001539ed31 - languageName: node - linkType: hard - "@types/yargs-parser@npm:*": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" @@ -4145,7 +3898,7 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": +"@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 @@ -4188,12 +3941,12 @@ __metadata: languageName: node linkType: hard -"@vitest/pretty-format@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/pretty-format@npm:2.1.1" +"@vitest/pretty-format@npm:2.1.4": + version: 2.1.4 + resolution: "@vitest/pretty-format@npm:2.1.4" dependencies: tinyrainbow: "npm:^1.2.0" - checksum: 10/744278a3a91d080e51a94b03eaf7cf43779978d6391060cbfdda6d03194eef744ce8f12a2fe2fa90a9bf9b9f038d4c4c4d88f6192f042c88c5ee4125f38bf892 + checksum: 10/434e6a7903f72a3796f26516ad728aca92724909e18fd3f2cd4b9b8b0ae2cc7b4cd86e92ab9f2ac7bc005c7a7ef0bcb9d768c0264b4b0625f1f0748cc615f1f6 languageName: node linkType: hard @@ -4218,14 +3971,14 @@ __metadata: languageName: node linkType: hard -"@vitest/utils@npm:^2.0.5": - version: 2.1.1 - resolution: "@vitest/utils@npm:2.1.1" +"@vitest/utils@npm:^2.1.1": + version: 2.1.4 + resolution: "@vitest/utils@npm:2.1.4" dependencies: - "@vitest/pretty-format": "npm:2.1.1" - loupe: "npm:^3.1.1" + "@vitest/pretty-format": "npm:2.1.4" + loupe: "npm:^3.1.2" tinyrainbow: "npm:^1.2.0" - checksum: 10/605f1807c343ac01cde053b062bda8f0cc51b321a3cd9c751424a1e24549a35120896bd58612a14f068460242013f69e08fc0a69355387e981a5a50bce9ae04e + checksum: 10/aaaf5310943abca0f0080d9638e67838f7e519d5670ec32e61184915efdfa5ec61d9b495cad6cb7dc492e8caeed14593e78dda77c8ea59c1671a231661f57142 languageName: node linkType: hard @@ -4310,18 +4063,18 @@ __metadata: version: 0.0.0-use.local resolution: "@vkontakte/vkui-codemods@workspace:packages/codemods" dependencies: - "@swc/core": "npm:^1.7.36" - "@swc/jest": "npm:^0.2.36" + "@swc/core": "npm:^1.8.0" + "@swc/jest": "npm:^0.2.37" "@types/cross-spawn": "npm:^6.0.6" - "@types/jest": "npm:^29.5.13" + "@types/jest": "npm:^29.5.14" "@types/jscodeshift": "npm:^0.12.0" - "@types/node": "npm:^22.7.7" + "@types/node": "npm:^22.8.7" "@types/prompts": "npm:^2.4.9" chalk: "npm:^4.1.2" commander: "npm:^12.1.0" cross-spawn: "npm:^7.0.3" jest: "npm:^29.7.0" - jscodeshift: "npm:^17.0.0" + jscodeshift: "npm:^17.1.1" prompts: "npm:^2.4.2" ts-node: "npm:^10.9.2" typescript: "npm:^5.6.3" @@ -4348,10 +4101,10 @@ __metadata: resolution: "@vkontakte/vkui-floating-ui@workspace:packages/vkui-floating-ui" dependencies: "@floating-ui/react-dom": "npm:^2.1.2" - "@swc/core": "npm:^1.7.36" + "@swc/core": "npm:^1.8.0" "@swc/helpers": "npm:^0.5.13" - "@swc/jest": "npm:^0.2.36" - "@types/jest": "npm:^29.5.13" + "@swc/jest": "npm:^0.2.37" + "@types/jest": "npm:^29.5.14" jest: "npm:^29.7.0" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" @@ -4366,29 +4119,29 @@ __metadata: resolution: "@vkontakte/vkui-monorepo@workspace:." dependencies: "@csstools/postcss-global-data": "npm:3.0.0" - "@playwright/experimental-ct-react": "npm:1.48.1" - "@playwright/test": "npm:1.48.1" + "@playwright/experimental-ct-react": "npm:1.48.2" + "@playwright/test": "npm:1.48.2" "@project-docs/styleguide": "workspace:1.0.0" "@project-tools/eslint-plugin-vkui": "workspace:1.0.0" "@project-tools/postcss-restructure-variable": "workspace:1.0.0" "@project-tools/storybook-addon-cartesian": "workspace:1.0.0" "@project-tools/stylelint-plugin-vkui": "workspace:1.0.0" - "@rspack/cli": "npm:^v1.0.11" - "@rspack/core": "npm:^v1.0.11" + "@rspack/cli": "npm:^v1.0.14" + "@rspack/core": "npm:^v1.0.14" "@size-limit/file": "npm:^11.1.6" "@size-limit/webpack": "npm:^11.1.6" "@size-limit/webpack-css": "npm:^11.1.6" - "@swc/cli": "npm:^0.4.0" - "@swc/core": "npm:1.7.36" - "@swc/jest": "npm:^0.2.36" + "@swc/cli": "npm:^0.5.0" + "@swc/core": "npm:1.8.0" + "@swc/jest": "npm:^0.2.37" "@testing-library/dom": "npm:^10.4.0" - "@testing-library/jest-dom": "npm:^6.6.2" + "@testing-library/jest-dom": "npm:^6.6.3" "@testing-library/react": "npm:^16.0.1" "@testing-library/user-event": "npm:^14.5.2" - "@types/jest": "npm:^29.5.13" + "@types/jest": "npm:^29.5.14" "@types/jest-axe": "npm:^3.5.9" - "@types/node": "npm:^22.7.7" - "@types/react": "npm:^18.3.11" + "@types/node": "npm:^22.8.7" + "@types/react": "npm:^18.3.12" "@types/react-dom": "npm:^18.3.1" "@types/webpack": "npm:^5.28.5" "@typescript-eslint/eslint-plugin": "npm:^7.5.0" @@ -4424,10 +4177,10 @@ __metadata: jest-environment-node: "npm:^29.7.0" jest-preset-stylelint: "npm:^7.1.0" lint-staged: "npm:^15.2.10" - mini-css-extract-plugin: "npm:^2.9.1" + mini-css-extract-plugin: "npm:^2.9.2" postcss: "npm:^8.4.47" postcss-cli: "npm:^11.0.0" - postcss-custom-media: "npm:^11.0.3" + postcss-custom-media: "npm:^11.0.5" postcss-gap-properties: "npm:^6.0.0" postcss-import: "npm:^16.1.0" postcss-loader: "npm:^8.1.1" @@ -4454,7 +4207,7 @@ __metadata: ts-node: "npm:^10.9.2" typescript: "npm:^5.6.3" typescript-plugin-css-modules: "npm:^5.1.0" - webpack: "npm:^5.95.0" + webpack: "npm:^5.96.1" webpack-cli: "npm:^5.1.4" webpack-merge: "npm:^6.0.1" yargs: "npm:^17.7.2" @@ -4465,10 +4218,10 @@ __metadata: version: 0.0.0-use.local resolution: "@vkontakte/vkui-token-translator@workspace:packages/token-translator" dependencies: - "@swc/core": "npm:1.7.36" - "@swc/jest": "npm:^0.2.36" - "@types/jest": "npm:^29.5.13" - "@types/node": "npm:^22.7.7" + "@swc/core": "npm:1.8.0" + "@swc/jest": "npm:^0.2.37" + "@types/jest": "npm:^29.5.14" + "@types/node": "npm:^22.8.7" "@types/postcss-less": "npm:^4.0.6" jest: "npm:^29.7.0" postcss: "npm:^8.4.47" @@ -4495,8 +4248,8 @@ __metadata: version: 0.0.0-use.local resolution: "@vkontakte/vkui@workspace:packages/vkui" dependencies: - "@storybook/react": "npm:8.3.6" - "@storybook/react-webpack5": "npm:8.3.6" + "@storybook/react": "npm:8.4.2" + "@storybook/react-webpack5": "npm:8.4.2" "@swc/helpers": "npm:^0.5.13" "@types/node": "npm:*" "@vkontakte/icons": "npm:^2.115.0" @@ -4505,7 +4258,7 @@ __metadata: date-fns: "npm:^4.1.0" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" - storybook: "npm:8.3.6" + storybook: "npm:8.4.2" ts-node: "npm:*" peerDependencies: react: ^18.2.0 @@ -4772,7 +4525,7 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.1.0, acorn-jsx@npm:^5.2.0, acorn-jsx@npm:^5.3.1, acorn-jsx@npm:^5.3.2": +"acorn-jsx@npm:^5.1.0, acorn-jsx@npm:^5.2.0, acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -4781,13 +4534,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.2.0": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 10/4d3e186f729474aed3bc3d0df44692f2010c726582655b20a23347bef650867655521c48ada444cb4fda241ee713dcb792da363ec74c6282fa884fb7144171bb - languageName: node - linkType: hard - "acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": version: 8.3.3 resolution: "acorn-walk@npm:8.3.3" @@ -4806,16 +4552,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^7.4.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 10/8be2a40714756d713dfb62544128adce3b7102c6eb94bc312af196c2cc4af76e5b93079bd66b05e9ca31b35a9b0ce12171d16bc55f366cafdb794fdab9d753ec - languageName: node - linkType: hard - -"acorn@npm:^8.0.4": +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.12.1 resolution: "acorn@npm:8.12.1" bin: @@ -4824,12 +4561,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.12.0 - resolution: "acorn@npm:8.12.0" +"acorn@npm:^8.14.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" bin: acorn: bin/acorn - checksum: 10/550cc5033184eb98f7fbe2e9ddadd0f47f065734cc682f25db7a244f52314eb816801b64dec7174effd978045bd1754892731a90b1102b0ede9d17a15cfde138 + checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2 languageName: node linkType: hard @@ -5411,17 +5148,17 @@ __metadata: version: 0.0.0-use.local resolution: "benchmark@workspace:benchmark" dependencies: - "@playwright/test": "npm:1.48.1" - "@swc/core": "npm:^1.7.36" + "@playwright/test": "npm:1.48.2" + "@swc/core": "npm:^1.8.0" "@vkontakte/vkui": "workspace:packages/vkui" cli-table3: "npm:^0.6.1" css-loader: "npm:^6.10.0" css-minimizer-webpack-plugin: "npm:^7.0.0" dotenv: "npm:^16.4.5" finalhandler: "npm:1.3.1" - html-webpack-plugin: "npm:^5.6.2" - mini-css-extract-plugin: "npm:^2.9.1" - playwright: "npm:1.48.1" + html-webpack-plugin: "npm:^5.6.3" + mini-css-extract-plugin: "npm:^2.9.2" + playwright: "npm:1.48.2" postcss: "npm:^8.4.47" postcss-modules: "npm:^6.0.0" react: "npm:^18.3.1" @@ -5429,7 +5166,7 @@ __metadata: serve-static: "npm:1.16.2" swc-loader: "npm:^0.2.6" terser-webpack-plugin: "npm:^5.3.10" - webpack: "npm:^5.95.0" + webpack: "npm:^5.96.1" languageName: unknown linkType: soft @@ -5756,14 +5493,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001639, caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001649 - resolution: "caniuse-lite@npm:1.0.30001649" - checksum: 10/a528438a40124d9eb70b0ebacd14e331f925a73e26bf68ac15658c031e6b750b8c1f9c86047b7b9936406e419c87cbe61c9d7e5632db3aa4ca754b1496d21324 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001616, caniuse-lite@npm:^1.0.30001663": +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001616, caniuse-lite@npm:^1.0.30001639, caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001663": version: 1.0.30001667 resolution: "caniuse-lite@npm:1.0.30001667" checksum: 10/5f0c48abb806737c422f05d0d9dda72facc25ee8adbae2c2ea9c57b87d9c2fa9ad8c3f6d54f21aca4e31ee1742cb5dd1543bf6b9133e3f77f79a645876322414 @@ -6823,15 +6553,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:~4.3.6": - version: 4.3.6 - resolution: "debug@npm:4.3.6" +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:~4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10/d3adb9af7d57a9e809a68f404490cf776122acca16e6359a2702c0f462e510e91f9765c07f707b8ab0d91e03bad57328f3256f5082631cefb5393d0394d50fb7 + checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a languageName: node linkType: hard @@ -6844,18 +6574,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.7": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a - languageName: node - linkType: hard - "decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" @@ -7579,34 +7297,34 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0": - version: 0.23.1 - resolution: "esbuild@npm:0.23.1" - dependencies: - "@esbuild/aix-ppc64": "npm:0.23.1" - "@esbuild/android-arm": "npm:0.23.1" - "@esbuild/android-arm64": "npm:0.23.1" - "@esbuild/android-x64": "npm:0.23.1" - "@esbuild/darwin-arm64": "npm:0.23.1" - "@esbuild/darwin-x64": "npm:0.23.1" - "@esbuild/freebsd-arm64": "npm:0.23.1" - "@esbuild/freebsd-x64": "npm:0.23.1" - "@esbuild/linux-arm": "npm:0.23.1" - "@esbuild/linux-arm64": "npm:0.23.1" - "@esbuild/linux-ia32": "npm:0.23.1" - "@esbuild/linux-loong64": "npm:0.23.1" - "@esbuild/linux-mips64el": "npm:0.23.1" - "@esbuild/linux-ppc64": "npm:0.23.1" - "@esbuild/linux-riscv64": "npm:0.23.1" - "@esbuild/linux-s390x": "npm:0.23.1" - "@esbuild/linux-x64": "npm:0.23.1" - "@esbuild/netbsd-x64": "npm:0.23.1" - "@esbuild/openbsd-arm64": "npm:0.23.1" - "@esbuild/openbsd-x64": "npm:0.23.1" - "@esbuild/sunos-x64": "npm:0.23.1" - "@esbuild/win32-arm64": "npm:0.23.1" - "@esbuild/win32-ia32": "npm:0.23.1" - "@esbuild/win32-x64": "npm:0.23.1" +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": + version: 0.24.0 + resolution: "esbuild@npm:0.24.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.0" + "@esbuild/android-arm": "npm:0.24.0" + "@esbuild/android-arm64": "npm:0.24.0" + "@esbuild/android-x64": "npm:0.24.0" + "@esbuild/darwin-arm64": "npm:0.24.0" + "@esbuild/darwin-x64": "npm:0.24.0" + "@esbuild/freebsd-arm64": "npm:0.24.0" + "@esbuild/freebsd-x64": "npm:0.24.0" + "@esbuild/linux-arm": "npm:0.24.0" + "@esbuild/linux-arm64": "npm:0.24.0" + "@esbuild/linux-ia32": "npm:0.24.0" + "@esbuild/linux-loong64": "npm:0.24.0" + "@esbuild/linux-mips64el": "npm:0.24.0" + "@esbuild/linux-ppc64": "npm:0.24.0" + "@esbuild/linux-riscv64": "npm:0.24.0" + "@esbuild/linux-s390x": "npm:0.24.0" + "@esbuild/linux-x64": "npm:0.24.0" + "@esbuild/netbsd-x64": "npm:0.24.0" + "@esbuild/openbsd-arm64": "npm:0.24.0" + "@esbuild/openbsd-x64": "npm:0.24.0" + "@esbuild/sunos-x64": "npm:0.24.0" + "@esbuild/win32-arm64": "npm:0.24.0" + "@esbuild/win32-ia32": "npm:0.24.0" + "@esbuild/win32-x64": "npm:0.24.0" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -7658,7 +7376,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/f55fbd0bfb0f86ce67a6d2c6f6780729d536c330999ecb9f5a38d578fb9fda820acbbc67d6d1d377eed8fed50fc38f14ff9cb014f86dafab94269a7fb2177018 + checksum: 10/500f83a1216d6548053007b85c070d8293395db344605b17418c6cf1217e5e8d338fa77fc8af27c23faa121c5528e5b0004d46d3a0cdeb87d48f1b5fa0164bc5 languageName: node linkType: hard @@ -7803,7 +7521,7 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": +"escodegen@npm:^2.0.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" dependencies: @@ -8835,7 +8553,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.0.0, fs-extra@npm:^11.1.0": +"fs-extra@npm:^11.0.0": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" dependencies: @@ -9080,13 +8798,6 @@ __metadata: languageName: node linkType: hard -"github-slugger@npm:^2.0.0": - version: 2.0.0 - resolution: "github-slugger@npm:2.0.0" - checksum: 10/2fb15d78262eeba1e68671f048c62d05ed21e51281cccc7b1c9e8e089e8510b3037fb648b8ba27290e60534df2cb251312a1e7e813204495df621220192fd600 - languageName: node - linkType: hard - "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -9392,33 +9103,6 @@ __metadata: languageName: node linkType: hard -"hast-util-heading-rank@npm:^3.0.0": - version: 3.0.0 - resolution: "hast-util-heading-rank@npm:3.0.0" - dependencies: - "@types/hast": "npm:^3.0.0" - checksum: 10/e5ce4ec9e8017b24ab72702fa0dd401ec6eaf32574120d71c2aa4e8e0f43829dba2e291f49d305a47e8d65b82a9c5adad7985385dc5bc8370f8cec7c8f9313d3 - languageName: node - linkType: hard - -"hast-util-is-element@npm:^3.0.0": - version: 3.0.0 - resolution: "hast-util-is-element@npm:3.0.0" - dependencies: - "@types/hast": "npm:^3.0.0" - checksum: 10/b4e6d84c763ffdc44198ba0c4a5a7430794a7b2c1eec699d37776ea9832eef79f129726c175982103eb3b21f531a6bfd2fa43ce26e1ed6d8f6a87c102ba212c8 - languageName: node - linkType: hard - -"hast-util-to-string@npm:^3.0.0": - version: 3.0.0 - resolution: "hast-util-to-string@npm:3.0.0" - dependencies: - "@types/hast": "npm:^3.0.0" - checksum: 10/b0d51e2cf228edcbed0494755a7f095c5c2b7a0e7564f3ad7b83b89abbabf098b62b3c884e1bb4d3394c0c84486ba39800d78f2ccdbdaa38122be62330dd2357 - languageName: node - linkType: hard - "he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" @@ -9503,37 +9187,16 @@ __metadata: languageName: node linkType: hard -"html-tags@npm:^3.1.0, html-tags@npm:^3.3.1": +"html-tags@npm:^3.3.1": version: 3.3.1 resolution: "html-tags@npm:3.3.1" checksum: 10/d0e808544b92d8b999cbcc86d539577255a2f0f2f4f73110d10749d1d36e6fe6ad706a0355a8477afb6e000ecdc93d8455b3602951f9a2b694ac9e28f1b52878 languageName: node linkType: hard -"html-webpack-plugin@npm:^5.5.0": - version: 5.6.0 - resolution: "html-webpack-plugin@npm:5.6.0" - dependencies: - "@types/html-minifier-terser": "npm:^6.0.0" - html-minifier-terser: "npm:^6.0.2" - lodash: "npm:^4.17.21" - pretty-error: "npm:^4.0.0" - tapable: "npm:^2.0.0" - peerDependencies: - "@rspack/core": 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - "@rspack/core": - optional: true - webpack: - optional: true - checksum: 10/d651f3a88a7c932c72c6a30f0fdd610b49a864a69f1ddb34562c750f1602ea471e27fd8fc32c01adadd484b38fa6b74f055d1ccce26e5f8fcf814ee0d398a121 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:^5.6.2": - version: 5.6.2 - resolution: "html-webpack-plugin@npm:5.6.2" +"html-webpack-plugin@npm:^5.5.0, html-webpack-plugin@npm:^5.6.3": + version: 5.6.3 + resolution: "html-webpack-plugin@npm:5.6.3" dependencies: "@types/html-minifier-terser": "npm:^6.0.0" html-minifier-terser: "npm:^6.0.2" @@ -9548,7 +9211,7 @@ __metadata: optional: true webpack: optional: true - checksum: 10/ab04cd2ac138a9c2b4b9cbe347704d59ea94c54ee279c9e16aeb5d432813bc44a6b0539acebe3a1eddb87f79dbe1f8e2b365faef2624a88457ffcac4122a85ba + checksum: 10/fd2bf1ac04823526c8b609555d027b38b9d61b4ba9f5c8116a37cc6b62d5b86cab1f478616e8c5344fee13663d2566f5c470c66265ecb1e9574dc38d0459889d languageName: node linkType: hard @@ -9921,13 +9584,6 @@ __metadata: languageName: node linkType: hard -"is-absolute-url@npm:^4.0.0": - version: 4.0.1 - resolution: "is-absolute-url@npm:4.0.1" - checksum: 10/de172a718439982a54477fdae55f21be69ec0e6a4b205db5484975d2f4ee749851fd46c28f3790dfc51a274c2ed1d0f8457b6d1fff02ab829069fd9cc761e48c - languageName: node - linkType: hard - "is-alphabetical@npm:^1.0.0": version: 1.0.4 resolution: "is-alphabetical@npm:1.0.4" @@ -10284,13 +9940,6 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:5.0.0, is-plain-object@npm:^5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: 10/e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c - languageName: node - linkType: hard - "is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" @@ -10300,6 +9949,13 @@ __metadata: languageName: node linkType: hard +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10/e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c + languageName: node + linkType: hard + "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -11138,9 +10794,9 @@ __metadata: languageName: node linkType: hard -"jscodeshift@npm:^17.0.0": - version: 17.0.0 - resolution: "jscodeshift@npm:17.0.0" +"jscodeshift@npm:^17.1.1": + version: 17.1.1 + resolution: "jscodeshift@npm:17.1.1" dependencies: "@babel/core": "npm:^7.24.7" "@babel/parser": "npm:^7.24.7" @@ -11158,7 +10814,7 @@ __metadata: neo-async: "npm:^2.5.0" picocolors: "npm:^1.0.1" recast: "npm:^0.23.9" - temp: "npm:^0.9.4" + tmp: "npm:^0.2.3" write-file-atomic: "npm:^5.0.1" peerDependencies: "@babel/preset-env": ^7.1.6 @@ -11167,7 +10823,7 @@ __metadata: optional: true bin: jscodeshift: bin/jscodeshift.js - checksum: 10/d47000c33775336332e1ee431354881ce25a42354a82c712e109f598eac90be747d412c85428e1fa0302136823e44e4f42487746d62752120cd6879665bcef0a + checksum: 10/89a92203e2653c68ae2f12332332ca014aeec8c6cd5ab6947ba53334abd97005b94c0c670c47f2878880d01b89775490ca8efe58494d71137c1f6abae630a53d languageName: node linkType: hard @@ -11217,15 +10873,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13 - languageName: node - linkType: hard - "jsesc@npm:^3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" @@ -11711,6 +11358,13 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.2": + version: 3.1.2 + resolution: "loupe@npm:3.1.2" + checksum: 10/8f5734e53fb64cd914aa7d986e01b6d4c2e3c6c56dcbd5428d71c2703f0ab46b5ab9f9eeaaf2b485e8a1c43f865bdd16ec08ae1a661c8f55acdbd9f4d59c607a + languageName: node + linkType: hard + "lower-case@npm:^2.0.2": version: 2.0.2 resolution: "lower-case@npm:2.0.2" @@ -11851,7 +11505,7 @@ __metadata: languageName: node linkType: hard -"markdown-to-jsx@npm:^7.4.5, markdown-to-jsx@npm:^7.5.0": +"markdown-to-jsx@npm:^7.5.0": version: 7.5.0 resolution: "markdown-to-jsx@npm:7.5.0" peerDependencies: @@ -12081,15 +11735,15 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:^2.9.1": - version: 2.9.1 - resolution: "mini-css-extract-plugin@npm:2.9.1" +"mini-css-extract-plugin@npm:^2.9.2": + version: 2.9.2 + resolution: "mini-css-extract-plugin@npm:2.9.2" dependencies: schema-utils: "npm:^4.0.0" tapable: "npm:^2.2.1" peerDependencies: webpack: ^5.0.0 - checksum: 10/a4a0c73a054254784b9d39a3a4f117691600355125242dfc46ced0912b4937050823478bdbf403b5392c21e2fb2203902b41677d67c7d668f77b985b594e94c6 + checksum: 10/db6ddb8ba56affa1a295b57857d66bad435d36e48e1f95c75d16fadd6c70e3ba33e8c4141c3fb0e22b4d875315b41c4f58550c6ac73b50bdbe429f768297e3ff languageName: node linkType: hard @@ -12220,17 +11874,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: "npm:^1.2.6" - bin: - mkdirp: bin/cmd.js - checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -12261,13 +11904,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - "ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -13170,27 +12806,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.48.1": - version: 1.48.1 - resolution: "playwright-core@npm:1.48.1" +"playwright-core@npm:1.48.2": + version: 1.48.2 + resolution: "playwright-core@npm:1.48.2" bin: playwright-core: cli.js - checksum: 10/81b51d288be78b75898470eb192ef0bc65594eebfb5f7602d83ba2505e1d2163c9923a0d7bae46779d5f3a16e1daf392acfbccde01d9f302cdf90bf2b21b8988 + checksum: 10/dd029f797b1afb2240713a032fecc50e1ffc5464a39c075570cf10e929c145da3a8d0951a3f2b279e33b2f09cbeb8ff4330822cb1078452c0c75cc4ce34ca171 languageName: node linkType: hard -"playwright@npm:1.48.1": - version: 1.48.1 - resolution: "playwright@npm:1.48.1" +"playwright@npm:1.48.2": + version: 1.48.2 + resolution: "playwright@npm:1.48.2" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.48.1" + playwright-core: "npm:1.48.2" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 10/39e231af3d9e576ba835813c5319b8773d8536ba54c7e34c7004cf06fadb412b6bbfc91badf4bb5cda3f138e5a8994c314de4c76d06d9424430e415f86fb3dd1 + checksum: 10/331af352504336f419cdf1369f0ef399c6f0e905fdb79a5e97c41f33e74766efd21430ab6ae2de0b237ae765ebfbe701e119a990d8dc01bcdac3bc43c1fa1fbf languageName: node linkType: hard @@ -13279,17 +12915,17 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^11.0.3": - version: 11.0.3 - resolution: "postcss-custom-media@npm:11.0.3" +"postcss-custom-media@npm:^11.0.5": + version: 11.0.5 + resolution: "postcss-custom-media@npm:11.0.5" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" - "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.0" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10/c763b1e4ebfff6cf24007eb7e183abd0b79bda2c4ab9414156ddcee9e92c81ccc8c91ea31e18f5032ad525a9ef505cd856958313308c38c9a26c2ad4946a8813 + checksum: 10/4899ee7ba6fa8db8c639ee82074ad1941f73df53ec9afc6146820638ab0dc260f7a9692dead8872ad7497442bffba97f867d7615356e87e9d4b4b1a8168b837c languageName: node linkType: hard @@ -14081,16 +13717,6 @@ __metadata: languageName: node linkType: hard -"react-colorful@npm:^5.1.2": - version: 5.6.1 - resolution: "react-colorful@npm:5.6.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10/3e02ba013454818d0c323949bd961fb2c19ac18130dfc67a4032aa5b03787c5ffe7ff159c4b97dc3475072d576828ca0c4b8e8ce85b55eaf484180596cdf0403 - languageName: node - linkType: hard - "react-dev-utils@npm:^12.0.0": version: 12.0.1 resolution: "react-dev-utils@npm:12.0.1" @@ -14200,20 +13826,6 @@ __metadata: languageName: node linkType: hard -"react-element-to-jsx-string@npm:^15.0.0": - version: 15.0.0 - resolution: "react-element-to-jsx-string@npm:15.0.0" - dependencies: - "@base2/pretty-print-object": "npm:1.0.1" - is-plain-object: "npm:5.0.0" - react-is: "npm:18.1.0" - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - checksum: 10/9a874b2f16b4624a72c4b766b096d693a382b9dc7f2264f802395852ae3435ccde8e9e47bbe45cf5f30eba70f8126af6aca832190e285b0096af3ecade994df1 - languageName: node - linkType: hard - "react-error-overlay@npm:^6.0.11": version: 6.0.11 resolution: "react-error-overlay@npm:6.0.11" @@ -14254,13 +13866,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:18.1.0": - version: 18.1.0 - resolution: "react-is@npm:18.1.0" - checksum: 10/fe09c86d5e12a8531bf3e748660f3dffbe900a6da0b488c7efaf0a866e16b74ecc1b0011b0960b13594f8719f39f87a987c0c85edff0b2d3e2f14b87e7230ad2 - languageName: node - linkType: hard - "react-is@npm:^16.13.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -14644,33 +14249,6 @@ __metadata: languageName: node linkType: hard -"rehype-external-links@npm:^3.0.0": - version: 3.0.0 - resolution: "rehype-external-links@npm:3.0.0" - dependencies: - "@types/hast": "npm:^3.0.0" - "@ungap/structured-clone": "npm:^1.0.0" - hast-util-is-element: "npm:^3.0.0" - is-absolute-url: "npm:^4.0.0" - space-separated-tokens: "npm:^2.0.0" - unist-util-visit: "npm:^5.0.0" - checksum: 10/b9b2e4e5974a7d1e4030dc42bfad980d4700af35b6b20b36fc7ff0521897a8f20d3fe5e170255c428148fdd5a0653a73683da783124038d17b24f26dd59d20e8 - languageName: node - linkType: hard - -"rehype-slug@npm:^6.0.0": - version: 6.0.0 - resolution: "rehype-slug@npm:6.0.0" - dependencies: - "@types/hast": "npm:^3.0.0" - github-slugger: "npm:^2.0.0" - hast-util-heading-rank: "npm:^3.0.0" - hast-util-to-string: "npm:^3.0.0" - unist-util-visit: "npm:^5.0.0" - checksum: 10/292074643f8462c70f498bc8bf18a8c959073b96efc249f61e69fa9e36eb81d9b91d62199a90217c604e1c3904e8ff0a75df70d67e41bead56de93afb725c2d0 - languageName: node - linkType: hard - "relateurl@npm:^0.2.7": version: 0.2.7 resolution: "relateurl@npm:0.2.7" @@ -14934,17 +14512,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: ./bin.js - checksum: 10/756419f2fa99aa119c46a9fc03e09d84ecf5421a80a72d1944c5088c9e4671e77128527a900a313ed9d3fdbdd37e2ae05486cd7e9116d5812d8c31f2399d7c86 - languageName: node - linkType: hard - "rollup@npm:^4.20.0": version: 4.22.4 resolution: "rollup@npm:4.22.4" @@ -15611,13 +15178,6 @@ __metadata: languageName: node linkType: hard -"space-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "space-separated-tokens@npm:2.0.2" - checksum: 10/202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 - languageName: node - linkType: hard - "sparkles@npm:^1.0.0": version: 1.0.1 resolution: "sparkles@npm:1.0.1" @@ -15732,16 +15292,21 @@ __metadata: languageName: node linkType: hard -"storybook@npm:8.3.6": - version: 8.3.6 - resolution: "storybook@npm:8.3.6" +"storybook@npm:8.4.2": + version: 8.4.2 + resolution: "storybook@npm:8.4.2" dependencies: - "@storybook/core": "npm:8.3.6" + "@storybook/core": "npm:8.4.2" + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true bin: getstorybook: ./bin/index.cjs sb: ./bin/index.cjs storybook: ./bin/index.cjs - checksum: 10/b980e90297c918e68dc31ea126780a30ba29076a99921a2558d61cae26491f24f0bc494d6c3aff68d587397d25d1224496df91e76fc6f2a0616f7d97ab9fd46a + checksum: 10/e3f1e32371a6f70639fa4fbc24e703aeb99bdb417b7c4acca6d331bf777b7c9343195175c6c088e162b8feb50f267ea70db9dd23f3ab07f110e1a76e3c7618ca languageName: node linkType: hard @@ -16304,25 +15869,6 @@ __metadata: languageName: node linkType: hard -"telejson@npm:^7.2.0": - version: 7.2.0 - resolution: "telejson@npm:7.2.0" - dependencies: - memoizerific: "npm:^1.11.3" - checksum: 10/6e89b3d3c45b5a2aced9132f6a968fcdf758c00be4c3acb115d7d81e95c9e04083a7a4a9b43057fcf48b101156c1607a38f5491615956acb28d4d1f78a4bda20 - languageName: node - linkType: hard - -"temp@npm:^0.9.4": - version: 0.9.4 - resolution: "temp@npm:0.9.4" - dependencies: - mkdirp: "npm:^0.5.1" - rimraf: "npm:~2.6.2" - checksum: 10/38d40564656c6e8e3caee41c592b3cc076d257ab4746ae4a6a179c44eb4a6d3e8a19a08c7716c8e88756bb898d6e56dd0a9e0408249bbcb3c990a178c34d0571 - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.3": version: 5.3.10 resolution: "terser-webpack-plugin@npm:5.3.10" @@ -16447,6 +15993,13 @@ __metadata: languageName: node linkType: hard +"tmp@npm:^0.2.3": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 10/7b13696787f159c9754793a83aa79a24f1522d47b87462ddb57c18ee93ff26c74cbb2b8d9138f571d2e0e765c728fb2739863a672b280528512c6d83d511c6fa + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -16464,13 +16017,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -16696,7 +16242,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.19.0, type-fest@npm:~2.19": +"type-fest@npm:^2.19.0": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: 10/7bf9e8fdf34f92c8bb364c0af14ca875fac7e0183f2985498b77be129dc1b3b1ad0a6b3281580f19e48c6105c037fb966ad9934520c69c6434d17fd0af4eed78 @@ -16823,10 +16369,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2": - version: 6.19.6 - resolution: "undici-types@npm:6.19.6" - checksum: 10/0ea9bc25762a86597d095b3772f6cec0bcabb796c339f7dfa2bd601c745a480289eb2939848dc285a56d4f94f50c475868160d8d6d3f54e823f1faf7ea9e9468 +"undici-types@npm:~6.19.8": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70 languageName: node linkType: hard @@ -16907,15 +16453,6 @@ __metadata: languageName: node linkType: hard -"unist-util-is@npm:^6.0.0": - version: 6.0.0 - resolution: "unist-util-is@npm:6.0.0" - dependencies: - "@types/unist": "npm:^3.0.0" - checksum: 10/edd6a93fb2255addf4b9eeb304c1da63c62179aef793169dd64ab955cf2f6814885fe25f95f8105893e3562dead348af535718d7a84333826e0491c04bf42511 - languageName: node - linkType: hard - "unist-util-stringify-position@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-stringify-position@npm:2.0.3" @@ -16935,16 +16472,6 @@ __metadata: languageName: node linkType: hard -"unist-util-visit-parents@npm:^6.0.0": - version: 6.0.1 - resolution: "unist-util-visit-parents@npm:6.0.1" - dependencies: - "@types/unist": "npm:^3.0.0" - unist-util-is: "npm:^6.0.0" - checksum: 10/645b3cbc5e923bc692b1eb1a9ca17bffc5aabc25e6090ff3f1489bff8effd1890b28f7a09dc853cb6a7fa0da8581bfebc9b670a68b53c4c086cb9610dfd37701 - languageName: node - linkType: hard - "unist-util-visit@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-visit@npm:2.0.3" @@ -16956,17 +16483,6 @@ __metadata: languageName: node linkType: hard -"unist-util-visit@npm:^5.0.0": - version: 5.0.0 - resolution: "unist-util-visit@npm:5.0.0" - dependencies: - "@types/unist": "npm:^3.0.0" - unist-util-is: "npm:^6.0.0" - unist-util-visit-parents: "npm:^6.0.0" - checksum: 10/f2bbde23641e9ade7640358c06ddeec0f38342322eb8e7819d9ee380b0f859d25d084dde22bf63db0280b3b2f36575f15aa1d6c23acf276c91c2493cf799e3b0 - languageName: node - linkType: hard - "universalify@npm:^0.2.0": version: 0.2.0 resolution: "universalify@npm:0.2.0" @@ -17556,6 +17072,42 @@ __metadata: languageName: node linkType: hard +"webpack@npm:^5.96.1": + version: 5.96.1 + resolution: "webpack@npm:5.96.1" + dependencies: + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" + "@webassemblyjs/ast": "npm:^1.12.1" + "@webassemblyjs/wasm-edit": "npm:^1.12.1" + "@webassemblyjs/wasm-parser": "npm:^1.12.1" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.1" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10/d3419ffd198252e1d0301bd0c072cee93172f3e47937c745aa8202691d2f5d529d4ba4a1965d1450ad89a1bcd3c1f70ae09e57232b0d01dd38d69c1060e964d5 + languageName: node + linkType: hard + "websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": version: 0.7.4 resolution: "websocket-driver@npm:0.7.4" @@ -17780,22 +17332,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.2.3": - version: 8.17.1 - resolution: "ws@npm:8.17.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/4264ae92c0b3e59c7e309001e93079b26937aab181835fb7af79f906b22cd33b6196d96556dafb4e985742dd401e99139572242e9847661fdbc96556b9e6902d - languageName: node - linkType: hard - -"ws@npm:^8.16.0": +"ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.16.0, ws@npm:^8.2.3": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: