{"_id":"@8env-ui/components","_rev":"5-96e725db078eaab61a9bce7f04d2cf15","name":"@8env-ui/components","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"@8env-ui/components","version":"0.0.1","keywords":["react","ui","components","typescript","ui-library","react-components","8env","design-system"],"author":{"name":"8env-production"},"license":"ISC","_id":"@8env-ui/components@0.0.1","maintainers":[{"name":"8env-production","email":"i8env@yandex.ru"}],"homepage":"https://github.com/8env-production/8env-ui#readme","bugs":{"url":"https://github.com/8env-production/8env-ui/issues"},"dist":{"shasum":"e2bce005ca17208deb7c0ff0717c984bb1c3a9f4","tarball":"https://registry.npmjs.org/@8env-ui/components/-/components-0.0.1.tgz","fileCount":13,"integrity":"sha512-zgBfVtoWo5omWT8EtudRLoyfskChZdyTEURTR9BqG8aweVl084cbJPHRmtm6U3nMwzXqPBtdq6oEhMn7x/HKIQ==","signatures":[{"sig":"MEUCIEUaqylSEQY4Z4M1I7b78ZxjcSQkA2uEQTU4dRRAfM/vAiEAkBvksYa3tPOlOfCbFKHAZa0MquKJEFUG1FadjaTaSIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17402},"main":"./dist/components/Button/index.js","type":"module","types":"./dist/components/Button/index.d.ts","module":"./dist/components/Button/index.js","exports":{"./button":{"types":"./dist/components/Button/index.d.ts","import":"./dist/components/Button/index.js","require":"./dist/components/Button/index.js"},"./styles":"./dist/components/Button/Button.css","./button/styles":"./dist/components/Button/Button.css"},"gitHead":"b8023f71ed600eef725e7e316578bb80b97d3ae0","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"vite build && tsc -p tsconfig.build.json --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build"},"_npmUser":{"name":"8env-production","email":"i8env@yandex.ru"},"repository":{"url":"git+https://github.com/8env-production/8env-ui.git","type":"git"},"_npmVersion":"11.3.0","description":"UI библиотека компонентов для React приложений с полной поддержкой TypeScript","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"sideEffects":["*.css","*.scss"],"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","sass":"^1.93.3","vite":"^6.4.1","husky":"^9.1.7","eslint":"^9.39.0","ts-jest":"^29.4.5","prettier":"^3.6.2","storybook":"^8.6.14","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.6","@types/react":"^19.2.2","@storybook/test":"^8.6.14","@storybook/react":"^8.6.14","@types/react-dom":"^19.2.2","@storybook/blocks":"^8.6.14","eslint-plugin-react":"^7.37.5","@storybook/react-vite":"^8.6.14","@storybook/addon-links":"^8.6.14","@testing-library/react":"^16.3.0","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.2.0","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.46.2","eslint-plugin-react-hooks":"^7.0.1","@storybook/addon-essentials":"^8.6.14","@testing-library/user-event":"^14.6.1","@storybook/addon-interactions":"^8.6.14","@typescript-eslint/eslint-plugin":"^8.46.2","@trivago/prettier-plugin-sort-imports":"^5.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/components_0.0.1_1762347407258_0.7473944531334844","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@8env-ui/components","version":"0.0.2","keywords":["react","ui","components","typescript","ui-library","react-components","8env","design-system"],"author":{"name":"8env-production"},"license":"ISC","_id":"@8env-ui/components@0.0.2","maintainers":[{"name":"8env-production","email":"i8env@yandex.ru"}],"homepage":"https://github.com/8env-production/8env-ui#readme","bugs":{"url":"https://github.com/8env-production/8env-ui/issues"},"dist":{"shasum":"b7687c623ead00b67bba5e06d57b8b682293d0ec","tarball":"https://registry.npmjs.org/@8env-ui/components/-/components-0.0.2.tgz","fileCount":41,"integrity":"sha512-NCTPvkCfkvYfsB/As130zrTp9/wyCDwRF+DCyPzo+aCHwvkeImkIqvfCev34CsAdUuo029kj6dTQSHc1h+1vGA==","signatures":[{"sig":"MEUCIQDs2Z5JuY73O/Ib/JMYJgfFGGSZKDWw3m2z1hku2VLFXgIgIuJF+my/dPoem7tvR5EOPqJlNZT5icnAAnj544KO8yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53677},"main":"./dist/context/index.js","type":"module","types":"./dist/context/index.d.ts","module":"./dist/context/index.js","exports":{"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","require":"./dist/hooks/index.cjs"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/types/index.cjs"},"./button":{"types":"./dist/components/Button/index.d.ts","import":"./dist/components/Button/index.js","require":"./dist/components/Button/index.js"},"./styles":"./dist/styles/index.css","./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","require":"./dist/context/index.cjs"}},"gitHead":"45f7a9eb2e39215207c795e43547a61a95de6269","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"vite build && tsc -p tsconfig.build.json --emitDeclarationOnly && npm run build:styles && npm run inject-css","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","inject-css":"tsx scripts/inject-css-imports.ts","test:watch":"jest --watch","build:styles":"sass src/styles/theme.scss dist/styles/index.css --no-source-map","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","test:scripts":"jest scripts/","test:coverage":"jest --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build"},"_npmUser":{"name":"8env-production","email":"i8env@yandex.ru"},"repository":{"url":"git+https://github.com/8env-production/8env-ui.git","type":"git"},"_npmVersion":"11.3.0","description":"UI библиотека компонентов для React приложений с полной поддержкой TypeScript","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"sideEffects":["*.css","*.scss"],"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","sass":"^1.93.3","vite":"^6.4.1","husky":"^9.1.7","eslint":"^9.39.0","ts-jest":"^29.4.5","prettier":"^3.6.2","storybook":"^8.6.14","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.6","@types/react":"^19.2.2","@storybook/test":"^8.6.14","@storybook/react":"^8.6.14","@types/react-dom":"^19.2.2","@storybook/blocks":"^8.6.14","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.37.5","@storybook/react-vite":"^8.6.14","@storybook/addon-links":"^8.6.14","@testing-library/react":"^16.3.0","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.2.0","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.46.2","eslint-plugin-react-hooks":"^7.0.1","@storybook/addon-essentials":"^8.6.14","@testing-library/user-event":"^14.6.1","@storybook/addon-interactions":"^8.6.14","@typescript-eslint/eslint-plugin":"^8.46.2","@trivago/prettier-plugin-sort-imports":"^5.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/components_0.0.2_1762353656680_0.5349896319878431","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@8env-ui/components","version":"0.1.0","keywords":["react","ui","components","typescript","ui-library","react-components","8env","design-system"],"author":{"name":"8env-production"},"license":"ISC","_id":"@8env-ui/components@0.1.0","maintainers":[{"name":"8env-production","email":"i8env@yandex.ru"}],"homepage":"https://github.com/8env-production/8env-ui#readme","bugs":{"url":"https://github.com/8env-production/8env-ui/issues"},"dist":{"shasum":"5249832d7001f1932e227bdd36cbd3d4c4fbc7a5","tarball":"https://registry.npmjs.org/@8env-ui/components/-/components-0.1.0.tgz","fileCount":121,"integrity":"sha512-XNlvftqNK4V1GMlEK6dVpvFXj7eOH+fY8lLqbJ/lX832enaFonds+5jfxJXf5TinZtL2kfzEuGTbfTa0m7rYIg==","signatures":[{"sig":"MEUCIQD6YSx66rvkXUnQXKunnze5i/YIRHAkX5s9gqH/HKT43AIgGUCNaJHgudu8R7d0HFp5+JS/8/6OVFU9gKq0jiZfkpc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146199},"main":"./dist/context/index.js","type":"module","types":"./dist/context/index.d.ts","module":"./dist/context/index.js","exports":{"./icon":{"types":"./dist/components/Icon/index.d.ts","import":"./dist/components/Icon/index.js","require":"./dist/components/Icon/index.js"},"./logo":{"types":"./dist/components/Logo/index.d.ts","import":"./dist/components/Logo/index.js","require":"./dist/components/Logo/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","require":"./dist/hooks/index.cjs"},"./modal":{"types":"./dist/components/Modal/index.d.ts","import":"./dist/components/Modal/index.js","require":"./dist/components/Modal/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/types/index.cjs"},"./button":{"types":"./dist/components/Button/index.d.ts","import":"./dist/components/Button/index.js","require":"./dist/components/Button/index.js"},"./loader":{"types":"./dist/components/Loader/index.d.ts","import":"./dist/components/Loader/index.js","require":"./dist/components/Loader/index.js"},"./styles":"./dist/styles/index.css","./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","require":"./dist/context/index.cjs"},"./preview":{"types":"./dist/components/Preview/index.d.ts","import":"./dist/components/Preview/index.js","require":"./dist/components/Preview/index.js"},"./userpic":{"types":"./dist/components/UserPic/index.d.ts","import":"./dist/components/UserPic/index.js","require":"./dist/components/UserPic/index.js"},"./navigation":{"types":"./dist/components/Navigation/index.d.ts","import":"./dist/components/Navigation/index.js","require":"./dist/components/Navigation/index.js"}},"gitHead":"2622719a68b2253188b2f9828391bb7fcf0b750a","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"vite build && tsc -p tsconfig.build.json --emitDeclarationOnly && npm run build:styles && npm run inject-css","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","inject-css":"tsx scripts/inject-css-imports.ts","test:watch":"jest --watch","build:styles":"sass src/styles/theme.scss dist/styles/index.css --no-source-map","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","test:scripts":"jest scripts/","test:coverage":"jest --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build"},"_npmUser":{"name":"8env-production","email":"i8env@yandex.ru"},"repository":{"url":"git+https://github.com/8env-production/8env-ui.git","type":"git"},"_npmVersion":"11.3.0","description":"UI библиотека компонентов для React приложений с полной поддержкой TypeScript","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"sideEffects":["*.css","*.scss"],"_nodeVersion":"22.14.0","dependencies":{"classnames":"^2.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","sass":"^1.93.3","vite":"^6.4.1","husky":"^9.1.7","eslint":"^9.39.0","ts-jest":"^29.4.5","prettier":"^3.6.2","storybook":"^8.6.14","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.6","@types/react":"^19.2.2","@storybook/test":"^8.6.14","@storybook/react":"^8.6.14","@types/react-dom":"^19.2.2","@storybook/blocks":"^8.6.14","@types/classnames":"^2.3.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.37.5","@storybook/react-vite":"^8.6.14","@storybook/addon-links":"^8.6.14","@testing-library/react":"^16.3.0","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.2.0","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.46.2","eslint-plugin-react-hooks":"^7.0.1","@storybook/addon-essentials":"^8.6.14","@testing-library/user-event":"^14.6.1","@storybook/addon-interactions":"^8.6.14","@typescript-eslint/eslint-plugin":"^8.46.2","@trivago/prettier-plugin-sort-imports":"^5.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/components_0.1.0_1762377426743_0.7124164390403456","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@8env-ui/components","version":"0.1.1","keywords":["react","ui","components","typescript","ui-library","react-components","8env","design-system"],"author":{"name":"8env-production"},"license":"ISC","_id":"@8env-ui/components@0.1.1","maintainers":[{"name":"8env-production","email":"i8env@yandex.ru"}],"homepage":"https://github.com/8env-production/8env-ui#readme","bugs":{"url":"https://github.com/8env-production/8env-ui/issues"},"dist":{"shasum":"1e42a3526ae9c5df04a67fad2fbca6e40bd74ebd","tarball":"https://registry.npmjs.org/@8env-ui/components/-/components-0.1.1.tgz","fileCount":156,"integrity":"sha512-iO5WT0sOMm7l/kEFpIl32VQU6GJ1Z+Jy36oqVvPwrxR79jXohZaJak4dz/0oMShuVr7yJ6tLB6VdvxgjjNG8IA==","signatures":[{"sig":"MEQCIG8ruxK/NZD57nov+WhiCJ2KWoiBId5TF3Cyt1rk0mzqAiAxcWWJzPQYmcufsNuzTmUuP4+Tdpe8FG2HwtBBxk7MHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186324},"main":"./dist/context/index.js","type":"module","types":"./dist/context/index.d.ts","module":"./dist/context/index.js","exports":{"./icon":{"types":"./dist/components/Icon/index.d.ts","import":"./dist/components/Icon/index.js","require":"./dist/components/Icon/index.js"},"./logo":{"types":"./dist/components/Logo/index.d.ts","import":"./dist/components/Logo/index.js","require":"./dist/components/Logo/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","require":"./dist/hooks/index.cjs"},"./modal":{"types":"./dist/components/Modal/index.d.ts","import":"./dist/components/Modal/index.js","require":"./dist/components/Modal/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/types/index.cjs"},"./button":{"types":"./dist/components/Button/index.d.ts","import":"./dist/components/Button/index.js","require":"./dist/components/Button/index.js"},"./loader":{"types":"./dist/components/Loader/index.d.ts","import":"./dist/components/Loader/index.js","require":"./dist/components/Loader/index.js"},"./styles":"./dist/styles/index.css","./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","require":"./dist/context/index.cjs"},"./preview":{"types":"./dist/components/Preview/index.d.ts","import":"./dist/components/Preview/index.js","require":"./dist/components/Preview/index.js"},"./userpic":{"types":"./dist/components/UserPic/index.d.ts","import":"./dist/components/UserPic/index.js","require":"./dist/components/UserPic/index.js"},"./navigation":{"types":"./dist/components/Navigation/index.d.ts","import":"./dist/components/Navigation/index.js","require":"./dist/components/Navigation/index.js"}},"gitHead":"e52e142b2b2e648f7abc4f5d782f281ea583dbc3","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"vite build && tsc -p tsconfig.build.json --emitDeclarationOnly && npm run build:styles && npm run inject-css","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","inject-css":"tsx scripts/inject-css-imports.ts","test:watch":"jest --watch","build:styles":"sass src/styles/theme.scss dist/styles/index.css --no-source-map","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","test:scripts":"jest scripts/","test:coverage":"jest --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build"},"_npmUser":{"name":"8env-production","email":"i8env@yandex.ru"},"repository":{"url":"git+https://github.com/8env-production/8env-ui.git","type":"git"},"_npmVersion":"11.3.0","description":"UI библиотека компонентов для React приложений с полной поддержкой TypeScript","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"sideEffects":["*.css","*.scss"],"_nodeVersion":"22.14.0","dependencies":{"classnames":"^2.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","sass":"^1.93.3","vite":"^6.4.1","husky":"^9.1.7","eslint":"^9.39.0","ts-jest":"^29.4.5","prettier":"^3.6.2","storybook":"^8.6.14","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.6","@types/react":"^19.2.2","@storybook/test":"^8.6.14","@storybook/react":"^8.6.14","@types/react-dom":"^19.2.2","@storybook/blocks":"^8.6.14","@types/classnames":"^2.3.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.37.5","@storybook/react-vite":"^8.6.14","@storybook/addon-links":"^8.6.14","@testing-library/react":"^16.3.0","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.2.0","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.46.2","eslint-plugin-react-hooks":"^7.0.1","@storybook/addon-essentials":"^8.6.14","@testing-library/user-event":"^14.6.1","@storybook/addon-interactions":"^8.6.14","@typescript-eslint/eslint-plugin":"^8.46.2","@trivago/prettier-plugin-sort-imports":"^5.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/components_0.1.1_1762378358094_0.04045038760657449","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@8env-ui/components","version":"0.1.2","description":"UI библиотека компонентов для React приложений с полной поддержкой TypeScript","exports":{"./button":{"types":"./dist/components/Button/index.d.ts","import":"./dist/components/Button/index.js","require":"./dist/components/Button/index.cjs"},"./icon":{"types":"./dist/components/Icon/index.d.ts","import":"./dist/components/Icon/index.js","require":"./dist/components/Icon/index.cjs"},"./logo":{"types":"./dist/components/Logo/index.d.ts","import":"./dist/components/Logo/index.js","require":"./dist/components/Logo/index.cjs"},"./loader":{"types":"./dist/components/Loader/index.d.ts","import":"./dist/components/Loader/index.js","require":"./dist/components/Loader/index.cjs"},"./modal":{"types":"./dist/components/Modal/index.d.ts","import":"./dist/components/Modal/index.js","require":"./dist/components/Modal/index.cjs"},"./navigation":{"types":"./dist/components/Navigation/index.d.ts","import":"./dist/components/Navigation/index.js","require":"./dist/components/Navigation/index.cjs"},"./preview":{"types":"./dist/components/Preview/index.d.ts","import":"./dist/components/Preview/index.js","require":"./dist/components/Preview/index.cjs"},"./resizablediv":{"types":"./dist/components/ResizableDiv/index.d.ts","import":"./dist/components/ResizableDiv/index.js","require":"./dist/components/ResizableDiv/index.cjs"},"./solidloader":{"types":"./dist/components/SolidLoader/index.d.ts","import":"./dist/components/SolidLoader/index.js","require":"./dist/components/SolidLoader/index.cjs"},"./tabs":{"types":"./dist/components/Tabs/index.d.ts","import":"./dist/components/Tabs/index.js","require":"./dist/components/Tabs/index.cjs"},"./text":{"types":"./dist/components/Text/index.d.ts","import":"./dist/components/Text/index.js","require":"./dist/components/Text/index.cjs"},"./textarea":{"types":"./dist/components/TextArea/index.d.ts","import":"./dist/components/TextArea/index.js","require":"./dist/components/TextArea/index.cjs"},"./textinput":{"types":"./dist/components/TextInput/index.d.ts","import":"./dist/components/TextInput/index.js","require":"./dist/components/TextInput/index.cjs"},"./userpic":{"types":"./dist/components/UserPic/index.d.ts","import":"./dist/components/UserPic/index.js","require":"./dist/components/UserPic/index.cjs"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","require":"./dist/context/index.cjs"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","require":"./dist/hooks/index.cjs"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/types/index.cjs"},"./styles":"./dist/styles/index.css"},"sideEffects":["*.css","*.scss"],"scripts":{"build":"vite build && tsc -p tsconfig.build.json --emitDeclarationOnly && npm run build:styles && npm run inject-css","build:styles":"sass src/styles/theme.scss dist/styles/index.css --no-source-map","inject-css":"tsx scripts/inject-css-imports.ts","prepublishOnly":"npm run build","test":"jest","test:scripts":"jest scripts/","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src --ext .ts,.tsx","lint:fix":"eslint src --ext .ts,.tsx --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,scss,md}\"","storybook":"storybook dev -p 6006","build-storybook":"storybook build"},"repository":{"type":"git","url":"git+https://github.com/8env-production/8env-ui.git"},"keywords":["react","ui","components","typescript","ui-library","react-components","8env","design-system"],"author":{"name":"8env-production"},"license":"ISC","type":"module","main":"./dist/context/index.js","module":"./dist/context/index.js","types":"./dist/context/index.d.ts","publishConfig":{"access":"public"},"bugs":{"url":"https://github.com/8env-production/8env-ui/issues"},"homepage":"https://github.com/8env-production/8env-ui#readme","devDependencies":{"@storybook/addon-essentials":"^8.6.14","@storybook/addon-interactions":"^8.6.14","@storybook/addon-links":"^8.6.14","@storybook/blocks":"^8.6.14","@storybook/react":"^8.6.14","@storybook/react-vite":"^8.6.14","@storybook/test":"^8.6.14","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.0","@testing-library/user-event":"^14.6.1","@trivago/prettier-plugin-sort-imports":"^5.2.2","@types/classnames":"^2.3.0","@types/jest":"^30.0.0","@types/react":"^19.2.2","@types/react-dom":"^19.2.2","@typescript-eslint/eslint-plugin":"^8.46.2","@typescript-eslint/parser":"^8.46.2","eslint":"^9.39.0","eslint-config-prettier":"^10.1.8","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^7.0.1","husky":"^9.1.7","identity-obj-proxy":"^3.0.0","jest":"^30.2.0","jest-environment-jsdom":"^30.2.0","lint-staged":"^16.2.6","prettier":"^3.6.2","sass":"^1.93.3","storybook":"^8.6.14","ts-jest":"^29.4.5","tsx":"^4.20.6","typescript":"^5.9.3","vite":"^6.4.1"},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"classnames":"^2.5.1"},"_id":"@8env-ui/components@0.1.2","gitHead":"88fcc9d13691c39ebe540e84dbd98f960c5e87ac","_nodeVersion":"22.14.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-75nm+70HXPq2qSuCIJdBCfHmygPqnye9r1ZavApNvgCYBe/gSCIVI1WGaYjmS/EuctwcEd1KVO3K+TWfanUo1A==","shasum":"c783f9fe71b2178135caa6cd3b7e99b5e6ab5f78","tarball":"https://registry.npmjs.org/@8env-ui/components/-/components-0.1.2.tgz","fileCount":200,"unpackedSize":250246,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDtZKtJIE69ZF+HSlvrtttwFJ0CMTFJU+nuGyj7pLWaUgIgMzLQYGWR8bQgopysUMK3Tel7B0o+urMHv1bJXAVDz2g="}]},"_npmUser":{"name":"8env-production","email":"i8env@yandex.ru"},"directories":{},"maintainers":[{"name":"8env-production","email":"i8env@yandex.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/components_0.1.2_1762422468720_0.8369917170118193"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-05T12:56:47.121Z","modified":"2025-11-06T09:47:49.124Z","0.0.1":"2025-11-05T12:56:47.437Z","0.0.2":"2025-11-05T14:40:56.934Z","0.1.0":"2025-11-05T21:17:06.957Z","0.1.1":"2025-11-05T21:32:38.305Z","0.1.2":"2025-11-06T09:47:48.916Z"},"bugs":{"url":"https://github.com/8env-production/8env-ui/issues"},"author":{"name":"8env-production"},"license":"ISC","homepage":"https://github.com/8env-production/8env-ui#readme","keywords":["react","ui","components","typescript","ui-library","react-components","8env","design-system"],"repository":{"type":"git","url":"git+https://github.com/8env-production/8env-ui.git"},"description":"UI библиотека компонентов для React приложений с полной поддержкой TypeScript","maintainers":[{"name":"8env-production","email":"i8env@yandex.ru"}],"readme":"# @8env-ui/components\n\nUI библиотека компонентов для React приложений с полной поддержкой TypeScript и автоматическим tree-shaking.\n\n## 📦 Использование в проекте\n\n### Установка\n\nЕсли библиотека опубликована в npm:\n\n```bash\nnpm install @8env-ui/components\n```\n\nИли через yarn:\n\n```bash\nyarn add @8env-ui/components\n```\n\n### Использование локальной версии (для разработки)\n\nВ директории библиотеки выполните:\n\n```bash\nnpm run build\nnpm link\n```\n\nЗатем в вашем React проекте:\n\n```bash\nnpm link @8env-ui/components\n```\n\n### Настройка темы (Ctx8EnvUI)\n\nОберните ваше приложение в провайдер [`Ctx8EnvUI`](src/context/ThemeContext.tsx:51) для управления темой. Глобальные стили темы импортируются автоматически:\n\n```tsx\nimport { Ctx8EnvUI } from '@8env-ui/components/context';\n\nfunction App() {\n  return (\n    <Ctx8EnvUI defaultTheme=\"light\">\n      <YourApp />\n    </Ctx8EnvUI>\n  );\n}\n```\n\n### Управление темой\n\nИспользуйте хук [`useTheme`](src/hooks/useTheme.ts:33) для доступа к теме:\n\n```tsx\nimport { useTheme } from '@8env-ui/components/hooks';\n\nfunction ThemeToggle() {\n  const { theme, toggleTheme, setThemeMode } = useTheme();\n\n  return (\n    <div>\n      <p>Текущая тема: {theme.mode}</p>\n      <button onClick={toggleTheme}>\n        Переключить на {theme.mode === 'light' ? 'тёмную' : 'светлую'}\n      </button>\n      <button onClick={() => setThemeMode('dark')}>Тёмная тема</button>\n      <button onClick={() => setThemeMode('light')}>Светлая тема</button>\n    </div>\n  );\n}\n```\n\n### Параметры Ctx8EnvUI\n\n- `defaultTheme` - начальная тема ('light' или 'dark', по умолчанию 'light')\n- `persistTheme` - сохранять тему в localStorage (по умолчанию true)\n- `storageKey` - ключ для хранения темы в localStorage (по умолчанию '8env-ui-theme')\n- `customVariables` - кастомные CSS переменные для переопределения стилей темы\n\n### Кастомизация темы\n\nВы можете переопределить любые CSS переменные темы, передав их в параметр `customVariables`:\n\n```tsx\nimport { Ctx8EnvUI } from '@8env-ui/components/context';\n\nfunction App() {\n  return (\n    <Ctx8EnvUI\n      defaultTheme=\"light\"\n      customVariables={{\n        // Общие переменные для обеих тем\n        common: {\n          'color-primary': '#ff0000',\n          'color-secondary': '#00ff00',\n        },\n        // Переменные только для светлой темы\n        light: {\n          'color-background': '#f5f5f5',\n        },\n        // Переменные только для тёмной темы\n        dark: {\n          'color-background': '#1a1a1a',\n        },\n      }}\n    >\n      <YourApp />\n    </Ctx8EnvUI>\n  );\n}\n```\n\n#### Доступные CSS переменные\n\n**Цвета:**\n\n- `color-primary` - основной цвет\n- `color-primary-hover` - основной цвет при наведении\n- `color-secondary` - вторичный цвет\n- `color-secondary-hover` - вторичный цвет при наведении\n- `color-danger` - цвет для опасных действий\n- `color-danger-hover` - цвет для опасных действий при наведении\n- `color-text` - цвет текста\n- `color-background` - цвет фона\n- `color-surface` - цвет поверхностей\n- `color-border` - цвет границ\n\n**Тени:**\n\n- `shadow-sm` - маленькая тень\n- `shadow-md` - средняя тень\n- `shadow-lg` - большая тень\n\n### Импорт компонентов\n\nБиблиотека использует **принудительный tree-shaking** - каждый компонент импортируется отдельно. Стили компонентов импортируются автоматически вместе с компонентом:\n\n```tsx\nimport { Button, ButtonProps } from '@8env-ui/components/button';\nimport { Ctx8EnvUI } from '@8env-ui/components/context';\n\nfunction App() {\n  return (\n    <Ctx8EnvUI>\n      <div>\n        <Button label=\"Нажми меня\" variant=\"primary\" size=\"medium\" />\n      </div>\n    </Ctx8EnvUI>\n  );\n}\n\nexport default App;\n```\n\n> **Важно:** Глобальные стили темы и стили компонентов импортируются автоматически. Вам не нужно ничего импортировать дополнительно!\n\n### TypeScript\n\nБиблиотека полностью поддерживает TypeScript и автоматически предоставляет типы:\n\n```tsx\nimport { Button, ButtonProps } from '@8env-ui/components/button';\n\nconst MyButton: React.FC<ButtonProps> = (props) => {\n  return <Button {...props} />;\n};\n```\n\n### Доступные модули\n\n**Контекст и хуки:**\n\n- **Ctx8EnvUI** (провайдер темы): `@8env-ui/components/context`\n- **useTheme** (хук для работы с темой): `@8env-ui/components/hooks`\n- **Типы**: `@8env-ui/components/types`\n\n**Компоненты:**\n\n- **Button**: `@8env-ui/components/button` (стили импортируются автоматически)\n\n**Особенности импорта:**\n\n- Все стили (глобальные и компонентов) импортируются автоматически\n- Tree-shaking работает \"из коробки\" - неиспользуемые компоненты не попадут в бандл\n- Корневой импорт `@8env-ui/components` намеренно отключен для обеспечения оптимального размера бандла\n- **CSS дедуплицируется автоматически** - даже если компонент используется 100 раз, стили попадут в бандл только 1 раз\n\n> **Важно:** Вы должны импортировать каждый модуль отдельно для оптимального tree-shaking.\n\n### Дедупликация CSS\n\nЕсли вы используете компонент Button многократно:\n\n```tsx\nimport { Button } from '@8env-ui/components/button';\n\nfunction App() {\n  return (\n    <>\n      <Button label=\"1\" />\n      <Button label=\"2\" />\n      <Button label=\"3\" />\n      {/* ... ещё 97 раз */}\n    </>\n  );\n}\n```\n\n**CSS файл Button.css попадёт в ваш бандл только 1 раз!**\n\nЭто работает потому что:\n\n1. JavaScript модуль `@8env-ui/components/button` загружается один раз\n2. CSS импортируется внутри этого модуля один раз\n3. Современные бандлеры (Webpack, Vite, Rollup) автоматически дедуплицируют CSS импорты\n4. Все экземпляры Button используют одни и те же CSS классы из одного файла\n\n## 🚀 Возможности для разработчиков\n\n- ⚛️ React 19 с поддержкой TypeScript\n- 📚 Storybook для разработки и документации компонентов\n- 🧪 Jest и React Testing Library для unit-тестов\n- 💅 Prettier для форматирования кода\n- 🔍 ESLint для проверки качества кода\n- 🪝 Husky и lint-staged для pre-commit hooks\n\n## 📦 Установка зависимостей\n\n```bash\nnpm install\n```\n\n### Сборка библиотеки\n\nДля создания production сборки:\n\n```bash\nnpm run build\n```\n\nЭто создаст директорию `dist/` со скомпилированными файлами и автоматически скопирует CSS файлы.\n\n## 🛠️ Разработка компонентов\n\n### Запуск Storybook\n\nДля разработки компонентов используйте Storybook:\n\n```bash\nnpm run storybook\n```\n\nStorybook будет доступен по адресу http://localhost:6006\n\n### Сборка Storybook\n\nДля создания статической версии Storybook:\n\n```bash\nnpm run build-storybook\n```\n\n## 🧪 Тестирование\n\n### Запуск тестов\n\n```bash\nnpm test\n```\n\n### Запуск тестов в watch режиме\n\n```bash\nnpm run test:watch\n```\n\n### Проверка покрытия тестами\n\n```bash\nnpm run test:coverage\n```\n\n## 💅 Форматирование и линтинг\n\n### Форматирование кода\n\n```bash\nnpm run format\n```\n\n### Проверка форматирования\n\n```bash\nnpm run format:check\n```\n\n### Линтинг\n\n```bash\nnpm run lint\n```\n\n### Автоматическое исправление ошибок линтинга\n\n```bash\nnpm run lint:fix\n```\n\n## 📁 Структура проекта\n\n```\n8env-ui/\n├── .husky/                 # Git hooks\n├── .storybook/            # Конфигурация Storybook\n├── src/\n│   ├── components/        # Компоненты библиотеки\n│   │   └── Button/\n│   │       ├── Button.tsx          # Компонент\n│   │       ├── Button.module.scss  # Стили (CSS Modules)\n│   │       ├── Button.test.tsx     # Тесты\n│   │       ├── Button.stories.tsx  # Storybook story\n│   │       └── index.ts            # Точка входа компонента\n│   ├── context/           # React контексты\n│   │   ├── ThemeContext.tsx        # Контекст темы\n│   │   ├── ThemeContext.test.tsx   # Тесты контекста\n│   │   └── index.ts                # Экспорты\n│   ├── hooks/             # Кастомные хуки\n│   │   ├── useTheme.ts             # Хук для работы с темой\n│   │   └── index.ts                # Экспорты\n│   ├── styles/            # Глобальные стили\n│   │   └── theme.scss              # CSS переменные темы\n│   └── types/             # TypeScript типы\n│       ├── theme.ts                # Типы темы\n│       ├── css-modules.d.ts        # Типы CSS Modules\n│       └── index.ts                # Экспорты\n├── .eslintrc.cjs          # Конфигурация ESLint\n├── .prettierrc            # Конфигурация Prettier\n├── jest.config.js         # Конфигурация Jest\n├── tsconfig.json          # Конфигурация TypeScript\n└── package.json\n```\n\n## 🎨 Создание нового компонента\n\n1. Создайте директорию для компонента в `src/components/`:\n\n```bash\nmkdir -p src/components/MyComponent\n```\n\n2. Создайте файлы компонента:\n   - `MyComponent.tsx` - сам компонент (с side-effect импортом стилей)\n   - `MyComponent.module.scss` - стили (CSS Modules)\n   - `MyComponent.test.tsx` - тесты\n   - `MyComponent.stories.tsx` - Storybook story\n   - `index.ts` - точка входа компонента\n\n3. В файле компонента добавьте side-effect импорт стилей:\n\n```typescript\n// MyComponent.tsx\nimport React from 'react';\n\nimport './MyComponent.module.scss'; // Side-effect import для автоматической загрузки\nimport styles from './MyComponent.module.scss';\n\nexport interface MyComponentProps {\n  text: string;\n}\n\nexport const MyComponent: React.FC<MyComponentProps> = ({ text }) => {\n  return <div className={styles.container}>{text}</div>;\n};\n```\n\n4. Создайте `index.ts` в директории компонента:\n\n```typescript\nexport { MyComponent } from './MyComponent';\nexport type { MyComponentProps } from './MyComponent';\n```\n\n5. Добавьте entry point в `vite.config.ts`:\n\n```typescript\nentry: {\n  'components/Button/index': resolve(__dirname, 'src/components/Button/index.ts'),\n  'components/MyComponent/index': resolve(__dirname, 'src/components/MyComponent/index.ts'),\n  // ...\n}\n```\n\n6. Добавьте экспорт в `package.json`:\n\n```json\n{\n  \"exports\": {\n    \"./my-component\": {\n      \"types\": \"./dist/components/MyComponent/index.d.ts\",\n      \"import\": \"./dist/components/MyComponent/index.js\",\n      \"require\": \"./dist/components/MyComponent/index.js\"\n    }\n  }\n}\n```\n\n> **Важно:** После сборки скрипт `inject-css-imports.js` автоматически добавит импорты CSS в скомпилированные файлы. Вам нужно только добавить side-effect импорт в исходный файл компонента.\n\n## 📝 Пример компонента\n\n```typescript\n// MyComponent.tsx\nimport React from 'react';\n\nimport './MyComponent.module.scss'; // Side-effect import\nimport styles from './MyComponent.module.scss';\n\nexport interface MyComponentProps {\n  text: string;\n  variant?: 'primary' | 'secondary';\n}\n\nexport const MyComponent: React.FC<MyComponentProps> = ({\n  text,\n  variant = 'primary'\n}) => {\n  return (\n    <div className={`${styles.container} ${styles[`container--${variant}`]}`}>\n      {text}\n    </div>\n  );\n};\n```\n\n## 🔄 Процесс сборки и автоматический импорт CSS\n\nПри запуске `npm run build` происходит:\n\n1. **Vite** компилирует TypeScript в JavaScript и извлекает CSS из CSS Modules\n2. **TypeScript Compiler** генерирует `.d.ts` файлы\n3. **Sass** компилирует глобальные стили темы\n4. **inject-css-imports.js** автоматически добавляет импорты CSS в скомпилированные JS файлы\n\nБлагодаря последнему шагу, все CSS файлы автоматически импортируются при использовании компонентов:\n\n- ESM файлы (.js) получают `import './Component.css';`\n- CommonJS файлы (.cjs) получают `require('./Component.css');`\n\nЭто означает, что пользователям библиотеки не нужно вручную импортировать стили - всё работает автоматически!\n\n## 📤 Публикация пакета в npm\n\n### Подготовка к публикации\n\n1. **Авторизуйтесь в npm** (если ещё не авторизованы):\n\n```bash\nnpm login\n```\n\nВведите свои учётные данные npm. Убедитесь, что у вас есть права на публикацию в организацию `@8env-ui`.\n\n2. **Проверьте, что всё работает локально:**\n\n```bash\n# Установите зависимости\nnpm install\n\n# Запустите тесты\nnpm test\n\n# Запустите линтеры\nnpm run lint\n\n# Проверьте форматирование\nnpm run format:check\n\n# Создайте production сборку\nnpm run build\n```\n\n3. **Проверьте содержимое пакета** (опционально):\n\n```bash\nnpm pack --dry-run\n```\n\nЭта команда покажет, какие файлы будут включены в пакет без фактического создания архива.\n\n### Обновление версии\n\nИспользуйте семантическое версионирование (SemVer):\n\n- **Patch** (0.0.x) - исправления багов, обратно совместимые изменения:\n\n  ```bash\n  npm version patch\n  ```\n\n- **Minor** (0.x.0) - новый функционал, обратно совместимые изменения:\n\n  ```bash\n  npm version minor\n  ```\n\n- **Major** (x.0.0) - breaking changes, несовместимые изменения:\n  ```bash\n  npm version major\n  ```\n\nИли укажите версию вручную:\n\n```bash\nnpm version 1.0.0\n```\n\n> **Примечание:** Команда `npm version` автоматически создаст git commit и tag с новой версией.\n\n### Публикация в npm\n\n1. **Опубликуйте пакет:**\n\n```bash\nnpm publish\n```\n\n> **Важно:** Скрипт `prepublishOnly` автоматически запустит `npm run build` перед публикацией, поэтому не нужно собирать пакет вручную перед публикацией.\n\n2. **Для публикации pre-release версии** (beta, alpha):\n\n```bash\n# Обновите версию с pre-release тегом\nnpm version prerelease --preid=beta\n\n# Опубликуйте с тегом\nnpm publish --tag beta\n```\n\n### Проверка опубликованного пакета\n\n1. **Проверьте пакет на npm:**\n\n```bash\nnpm info @8env-ui/components\n```\n\n2. **Или откройте страницу пакета:**\n   - https://www.npmjs.com/package/@8env-ui/components\n\n3. **Протестируйте установку:**\n\n```bash\n# Создайте временную директорию\nmkdir test-install && cd test-install\nnpm init -y\nnpm install @8env-ui/components\n```\n\n### Отправка изменений в Git\n\nПосле успешной публикации отправьте изменения и теги в репозиторий:\n\n```bash\ngit push origin main\ngit push origin --tags\n```\n\n### Откат публикации (только в течение 72 часов)\n\nЕсли вы опубликовали версию по ошибке:\n\n```bash\nnpm unpublish @8env-ui/components@x.x.x\n```\n\n> **Важно:** После 72 часов нельзя удалить опубликованную версию. Вместо этого опубликуйте новую версию с исправлениями.\n\n### Обновление deprecated версий\n\nЕсли версия устарела или имеет критические проблемы:\n\n```bash\nnpm deprecate @8env-ui/components@x.x.x \"Эта версия устарела, используйте версию x.x.x\"\n```\n\n### Чеклист перед публикацией\n\n- [ ] Все тесты проходят (`npm test`)\n- [ ] Код отформатирован (`npm run format:check`)\n- [ ] Нет ошибок линтинга (`npm run lint`)\n- [ ] Сборка проходит успешно (`npm run build`)\n- [ ] Обновлен `README.md` (если нужно)\n- [ ] Обновлен `CHANGELOG.md` (если есть)\n- [ ] Версия обновлена (`npm version`)\n- [ ] Вы авторизованы в npm (`npm whoami`)\n\n## 🔧 Технологический стек\n\n- **React** 19.2.0 - UI библиотека\n- **TypeScript** 5.9.3 - Типизация\n- **Storybook** 8.6.14 - Разработка и документация компонентов\n- **Jest** 30.2.0 - Тестирование\n- **React Testing Library** 16.3.0 - Тестирование React компонентов\n- **ESLint** 9.39.0 - Проверка качества кода\n- **Prettier** 3.6.2 - Форматирование кода\n- **Husky** 9.1.7 - Git hooks\n- **lint-staged** 16.2.6 - Запуск линтеров на staged файлах\n\n## 🤝 Вклад в проект\n\n1. Форкните репозиторий\n2. Создайте ветку для новой функции (`git checkout -b feature/amazing-feature`)\n3. Закоммитьте изменения (`git commit -m 'Add amazing feature'`)\n4. Запушьте в ветку (`git push origin feature/amazing-feature`)\n5. Откройте Pull Request\n\nПри коммите автоматически запустятся:\n\n- ESLint для проверки кода\n- Prettier для форматирования\n- Тесты (если настроено)\n\n## 📄 Лицензия\n\nISC\n\n## 👤 Автор\n\nGitHub: [@8env-production](https://github.com/8env-production)\n","readmeFilename":"README.md"}