{"_id":"@cloud-ru/ds-ai-shimmer","_rev":"7-9c6b0f422f0e2d0ad9e2f9baea8acce7","name":"@cloud-ru/ds-ai-shimmer","dist-tags":{"preview":"1.0.1-preview-95bfb925.0","latest":"1.1.1"},"versions":{"1.0.0":{"name":"@cloud-ru/ds-ai-shimmer","version":"1.0.0","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","_id":"@cloud-ru/ds-ai-shimmer@1.0.0","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"cbea8380b322f9c8239fd0aaea93853cafc66ed8","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.0.0.tgz","fileCount":32,"integrity":"sha512-0DntiNhkYEBPC41cwsMh2RLVmXT/aagxZpcmdtMnlVBC298+YYWMX6618njUGbEdqG/y3ng2vm6JbU+jo69+HQ==","signatures":[{"sig":"MEQCIF+UMx/R5Vx7q8pY+WMIv3zduTY3SWAMX3bnbr8mLBEkAiAw5qIHHA1uY0q28u5jTVmWs6nBxrTQfyuwg+ABwNFmcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387713},"main":"./dist/cjs/index.js","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.0.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"_resolved":"/private/var/folders/jp/wngmzxn90b531390g_wr81g00000gn/T/f70094487ef95aeaab0a0ba9435f5cae/cloud-ru-ds-ai-shimmer-1.0.0.tgz","_integrity":"sha512-0DntiNhkYEBPC41cwsMh2RLVmXT/aagxZpcmdtMnlVBC298+YYWMX6618njUGbEdqG/y3ng2vm6JbU+jo69+HQ==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ds-ai-shimmer_1.0.0_1787056688820_0.8772835311004541","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-preview-7665e9c3.0":{"name":"@cloud-ru/ds-ai-shimmer","version":"1.0.1-preview-7665e9c3.0","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","_id":"@cloud-ru/ds-ai-shimmer@1.0.1-preview-7665e9c3.0","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"e7d45c95d9e7bf8a5dc18eacb5a9a72cc1a3882c","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.0.1-preview-7665e9c3.0.tgz","fileCount":32,"integrity":"sha512-jzugyvBp1uID/O2VTOlwF8tICqWl70/HrOyMBCAiLw+2kGDGnIzvAJfRXvJeVgMFeCH3seFwyNFMeLmFY4FPlQ==","signatures":[{"sig":"MEQCICeJbMM0/xSima7kYXPOJQ2xn0ERgErzgk/p4x6/HEbkAiBAxzvchIFDb2KEbQ5V11OHnao8MqbVogw1CZ0Lb/8RLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387734},"main":"./dist/cjs/index.js","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.0.1-preview-7665e9c3.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"_resolved":"/tmp/cb3bfdf256ea77d81601c4814d57eccf/cloud-ru-ds-ai-shimmer-1.0.1-preview-7665e9c3.0.tgz","_integrity":"sha512-jzugyvBp1uID/O2VTOlwF8tICqWl70/HrOyMBCAiLw+2kGDGnIzvAJfRXvJeVgMFeCH3seFwyNFMeLmFY4FPlQ==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"1.0.1-preview-7665e9c3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/ds-ai-shimmer_1.0.1-preview-7665e9c3.0_1787206653075_0.8090171933754142","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-preview-fb311860.0":{"name":"@cloud-ru/ds-ai-shimmer","version":"1.0.1-preview-fb311860.0","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","_id":"@cloud-ru/ds-ai-shimmer@1.0.1-preview-fb311860.0","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"744365c92a27fc839279df5f0d323a270a9f0332","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.0.1-preview-fb311860.0.tgz","fileCount":32,"integrity":"sha512-9TVzWqBq56bVM4TJkDb7E/h9B0bVoUaVZ5smq3aUbhg8IKqnvynaYG7cStQHUVCtGM1Tud5dx/TxCc6SxFRB3A==","signatures":[{"sig":"MEUCIED79w/sN7IVTZCaHxAJ7PvgDgTo9NovJdW6MdZbTx3WAiEAlzoe1g+Wt1FE40OYLloY+XwJ81X1GmGHI1CIMdru8eI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387734},"main":"./dist/cjs/index.js","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.0.1-preview-fb311860.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"_resolved":"/tmp/eaea331d80f6a3498df08b1444343439/cloud-ru-ds-ai-shimmer-1.0.1-preview-fb311860.0.tgz","_integrity":"sha512-9TVzWqBq56bVM4TJkDb7E/h9B0bVoUaVZ5smq3aUbhg8IKqnvynaYG7cStQHUVCtGM1Tud5dx/TxCc6SxFRB3A==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"1.0.1-preview-fb311860.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/ds-ai-shimmer_1.0.1-preview-fb311860.0_1787208934044_0.5592156526222269","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-preview-95bfb925.0":{"name":"@cloud-ru/ds-ai-shimmer","version":"1.0.1-preview-95bfb925.0","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","_id":"@cloud-ru/ds-ai-shimmer@1.0.1-preview-95bfb925.0","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"f41302c88048b05d84a197cce9e4f79c58a8565b","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.0.1-preview-95bfb925.0.tgz","fileCount":32,"integrity":"sha512-NO6WD0s7IGTa16/biqBW4X9rYC/yeQeZk6FB6hYaCRncLTbfnvIKhqcFHDxdMp27lMWYG2/YVpPjqdlOzrwLmQ==","signatures":[{"sig":"MEUCIGf4MpSC5eWDFi8Remxhlmxk2U6w+SV8VcOg2BuLrTuIAiEApXAz9fOMSRIS2ECKyRQhKaIi/NiIb/09bKUoh3e2AHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387734},"main":"./dist/cjs/index.js","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.0.1-preview-95bfb925.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"_resolved":"/tmp/288e9c57a464130b2be031749a1bbbb1/cloud-ru-ds-ai-shimmer-1.0.1-preview-95bfb925.0.tgz","_integrity":"sha512-NO6WD0s7IGTa16/biqBW4X9rYC/yeQeZk6FB6hYaCRncLTbfnvIKhqcFHDxdMp27lMWYG2/YVpPjqdlOzrwLmQ==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"1.0.1-preview-95bfb925.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/ds-ai-shimmer_1.0.1-preview-95bfb925.0_1787566018381_0.8979817588672512","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cloud-ru/ds-ai-shimmer","version":"1.0.1","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","_id":"@cloud-ru/ds-ai-shimmer@1.0.1","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"caa160108afc6d441b6e55c0919909a18752fb08","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.0.1.tgz","fileCount":32,"integrity":"sha512-jFuyXk0tTJQ3V+et4pbeuvaCuAUr6XMJLxvedAsB15fv5tkRymA+s5YC5sI32c634qc71YvWV2vo0/umI04asw==","signatures":[{"sig":"MEUCIQD700uJc28LCAQ2t8XlefDa6gXnRkooqRoJvsHmQ3pqDgIgc393jkdgV7iacCX/z0wazCYxigSWDWWJu0sMndxbAeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387776},"main":"./dist/cjs/index.js","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.0.1.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"_resolved":"/tmp/9a6e64e02042c3994b599dd05a9bad28/cloud-ru-ds-ai-shimmer-1.0.1.tgz","_integrity":"sha512-jFuyXk0tTJQ3V+et4pbeuvaCuAUr6XMJLxvedAsB15fv5tkRymA+s5YC5sI32c634qc71YvWV2vo0/umI04asw==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ds-ai-shimmer_1.0.1_1787569279984_0.2306111122485548","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@cloud-ru/ds-ai-shimmer","version":"1.1.0","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","_id":"@cloud-ru/ds-ai-shimmer@1.1.0","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"6f9a9966afcbbd16f509599a691745da881415d6","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.1.0.tgz","fileCount":32,"integrity":"sha512-gh2nJOSaj8La9AU2kW/p7IjaFT53LdHhhjDvtZ8yzvNMW1SSct/p96ueyK5pAVUAYdj47gmKOiDXcDBVK7l4ww==","signatures":[{"sig":"MEQCICoQrrB4tURzjkYYv+4vaT8aNDn/SCfQkSsU8IYTWLD2AiBKyx0id8IMME1wIdfYFT0PNUj2q8dG/k7/oJ1MVCbeKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401215},"main":"./dist/cjs/index.js","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.1.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"_resolved":"/tmp/3c80b9a3a9e9d2c3d07c0ed7cdc54982/cloud-ru-ds-ai-shimmer-1.1.0.tgz","_integrity":"sha512-gh2nJOSaj8La9AU2kW/p7IjaFT53LdHhhjDvtZ8yzvNMW1SSct/p96ueyK5pAVUAYdj47gmKOiDXcDBVK7l4ww==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ds-ai-shimmer_1.1.0_1788769526996_0.1847719608208105","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"_id":"@cloud-ru/ds-ai-shimmer@1.1.1","bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"dist":{"shasum":"97fed3800c3fe53e739b9b44e88e8d9ffbe59ad4","tarball":"https://registry.npmjs.org/@cloud-ru/ds-ai-shimmer/-/ds-ai-shimmer-1.1.1.tgz","fileCount":32,"integrity":"sha512-lVevAdY8yRO/F6zyxaiNUnjOzJNFN0yqKaP++rgyB93ohrgdbdmpok54vnK9F1pgTdjjMvmxbuYQW5LzzQHLqQ==","signatures":[{"sig":"MEUCIC/S70iptN+3Lu5+MKPlMTbTXOBBgKkbsv4EBks15VHkAiEA3tYE0Cfrq3PsrKZCg/cgwzG4ocKnEyhuD0LkOYsinG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCk5Mc/YGRzfRXjp9NBL7tdA7QA/CUj/V3OixhyO39VEgIgU6/67Hk8fSg+C/TFO13tcy8EsYNVoZsIvg9EW1EcvJg="}],"unpackedSize":415220},"main":"./dist/cjs/index.js","name":"@cloud-ru/ds-ai-shimmer","type":"module","_from":"file:cloud-ru-ds-ai-shimmer-1.1.1.tgz","types":"./dist/esm/index.d.ts","author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","source":"./src/index.ts","require":"./dist/cjs/index.js"}},"license":"Apache-2.0","version":"1.1.1","_npmUser":{"name":"cloud-ru-tech","email":"robot@cloud.ru"},"homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","_resolved":"/tmp/261000b6230ff495b041e22e15ca5e88/cloud-ru-ds-ai-shimmer-1.1.1.tgz","_integrity":"sha512-lVevAdY8yRO/F6zyxaiNUnjOzJNFN0yqKaP++rgyB93ohrgdbdmpok54vnK9F1pgTdjjMvmxbuYQW5LzzQHLqQ==","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"_npmVersion":"11.6.2","description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","directories":{},"maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.11.1","dependencies":{"classnames":"^2.5.1","@cloud-ru/ds-utils":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ds-ai-shimmer_1.1.1_1790606796367_0.33807896910624646"}}},"time":{"created":"2026-08-18T12:38:08.660Z","modified":"2026-09-28T14:46:36.699Z","1.0.0":"2026-08-18T12:38:08.972Z","1.0.1-preview-7665e9c3.0":"2026-08-20T06:17:33.255Z","1.0.1-preview-fb311860.0":"2026-08-20T06:55:34.180Z","1.0.1-preview-95bfb925.0":"2026-08-24T10:06:58.532Z","1.0.1":"2026-08-24T11:01:20.145Z","1.1.0":"2026-09-07T08:25:27.129Z","1.1.1":"2026-09-28T14:46:36.472Z"},"bugs":{"url":"https://github.com/cloud-ru-tech/snack-v2/issues"},"author":{"name":"Артем Сауляк","email":"avsaulyak@cloud.ru"},"license":"Apache-2.0","homepage":"https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/ai-shimmer","repository":{"url":"git+https://github.com/cloud-ru-tech/snack-v2.git","type":"git","directory":"packages/ai-shimmer"},"description":"Анимированный shimmer-блок для AI-сценариев с типографикой как в `@ds/typography`.","maintainers":[{"name":"cloud-ru-tech","email":"robot@cloud.ru"}],"readme":"# AiShimmer\n\n`@cloud-ru/ds-ai-shimmer` — Анимированный shimmer-блок для AI-сценариев с типографикой как в `@cloud-ru/ds-typography`.\n\n`AiShimmer` — декоративный shimmer-лоадер из набора AI Components. Брендовая волна обрезается по форме текста через `background-clip: text`; ширина контейнера и размер шрифта задают layout автоматически.\n\n## Когда использовать\n\n- При загрузке AI-ответа, где нужен акцентный движущийся shimmer по тексту.\n- В placeholder-сценариях, когда обычного `Skeleton` визуально недостаточно.\n\n### Когда не нужен\n\n- Для нейтральной индикации загрузки без текста — используйте `@cloud-ru/ds-skeleton`.\n- Для спиннера поверх модального окна — используйте `@cloud-ru/ds-loader`.\n\n## Анатомия\n\n### Animation\n\nВолна повторяет спецификацию из Figma: сине-зелёная полоса шириной в две ширины строки идёт слева направо за 3 секунды, затем держит паузу 2 секунды. Цикл — 5 секунд, движение линейное и бесконечное.\n\nТехнически это градиентный слой поверх приглушённой базы, обрезанный по контуру текста через `background-clip: text`. Путь волны задан в пикселях строки через общую переменную `--ai-shimmer-x`, а не в процентах: процент считался бы от собственного бокса каждого слоя, и волна на иконке разошлась бы с волной на тексте. Ширина строки замеряется через `ResizeObserver` и `document.fonts.ready`.\n\nПри `prefers-reduced-motion: reduce` движение снимается и остаётся ровная заливка базовым цветом.\n\n### Text\n\nТекст shimmer задаётся через проп `text`. Переносы строк поддерживаются символом `\\n`. Многострочный текст автоматически переносится по ширине контейнера.\n\n### Icon\n\nВедущая иконка перед текстом заливается той же волной, что и текст, поэтому полоса проходит сплошняком от иконки до конца строки. Размер задаётся пропом `iconSize`, по умолчанию 16 пикселей. Иконку можно передать двумя способами:\n\n- `icon` — узел любого компонента, который рендерит `<svg>`: иконка из `@cloud-ru/ds-icons`, `AiIconGiga`, `Sun` из `@cloud-ru/ds-loader`. Узел становится маской волны, как слои `iconMask` и `icon (color)` в Figma; его собственные цвета не важны, а анимация внутри иконки сохраняется. Размер узла должен совпадать с `iconSize`.\n- `iconMask` — готовый силуэт как CSS `mask-image`, обычно `url(\"data:image/svg+xml,…\")`. Силуэт логотипа GigaChat экспортирует `@cloud-ru/ds-ai-icon-giga` под именем `GIGA_MASK_IMAGE`. Используется, когда `icon` не передан.\n\n### Slot after\n\nПроп `slotAfter` добавляет хвостовой узел справа от текста — например счётчик или длительность. Волна проходит по нему той же полосой, что по тексту: координата волны общая для всей строки. База слота на тон светлее текста, как второстепенная информация в дизайн-системе. Собственный цвет слоту задавать не нужно: он должен остаться прозрачным, иначе перекроет и базу, и волну.\n\n### Typography\n\nТипографика задаётся пропами `variant`, `size` и `weight` — те же значения, что и в `@cloud-ru/ds-typography`. По умолчанию `body` / `m` / `regular`. Константы `VARIANT`, `SIZE`, `WEIGHT` и дефолты экспортируются из пакета.\n\n```ts\nimport { AiShimmer, DEFAULT_SIZE, DEFAULT_VARIANT, DEFAULT_WEIGHT } from '@cloud-ru/ds-ai-shimmer'\n\n<AiShimmer\n  text='Generating...'\n  variant={DEFAULT_VARIANT}\n  size={DEFAULT_SIZE}\n  weight={DEFAULT_WEIGHT}\n/>\n```\n\n## Установка\n\n```bash\npnpm add @cloud-ru/ds-ai-shimmer\n```\n\n```ts\nimport { AiShimmer, DEFAULT_SIZE } from '@cloud-ru/ds-ai-shimmer'\n```\n\n## Примеры использования\n\n### Базовый\n\nОднострочный shimmer с текстом по умолчанию\n\n```tsx\nimport { AiShimmer } from '@cloud-ru/ds-ai-shimmer';\n\nexport function Basic() {\n  return <AiShimmer text='Generating AI response...' />;\n}\n```\n\n### Многострочный текст\n\nПереносы через `\\n` и автоматический wrap по ширине контейнера\n\n```tsx\nimport { AiShimmer } from '@cloud-ru/ds-ai-shimmer';\n\nexport function Multiline() {\n  return <AiShimmer text={'Generating AI response for your request...\\nPlease wait a few seconds.'} />;\n}\n```\n\n### Размер шрифта\n\nПроп `size` принимает `s`, `m` или `l` — те же размеры, что и в `@cloud-ru/ds-typography`\n\n```tsx\nimport { AiShimmer, SIZE } from '@cloud-ru/ds-ai-shimmer';\n\nexport function CustomSize() {\n  return (\n    <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n      <AiShimmer text='Size S (body regular)' size={SIZE.s} />\n      <AiShimmer text='Size M (body regular)' size={SIZE.m} />\n      <AiShimmer text='Size L (body regular)' size={SIZE.l} />\n    </div>\n  );\n}\n```\n\n## Props\n\n**AiShimmerProps**\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `className` | `string` | — | Дополнительный класс корневого контейнера. |\n| `data-test-id` | `string` | `ai-shimmer` |  |\n| `icon` | `ReactNode` | — | Ведущая иконка узлом — любой компонент, рендерящий `<svg>`: иконка из `@cloud-ru/ds-icons`, <br/> `AiIconGiga`, `Sun` из `@cloud-ru/ds-loader`. Узел становится маской и заливается той же волной, <br/> что текст; его собственные цвета не важны, анимация внутри иконки сохраняется. Размер <br/> узла должен совпадать с `iconSize`. Имеет приоритет над `iconMask`. |\n| `iconMask` | `string` | — | Силуэт ведущей иконки как CSS `mask-image` (обычно `url(\"data:image/svg+xml,…\")`). <br/> Заливается той же волной, что текст. Используется, когда `icon` не передан. |\n| `iconSize` | `number` | `16` | Размер ведущей иконки в px (квадрат). Действует с `icon` или `iconMask`. По умолчанию `16`. |\n| `size` | `\"l\"` \\| `\"m\"` \\| `\"s\"` | `SIZE.m` | Размер типографики (`s`, `m`, `l`), как в `@cloud-ru/ds-typography`. <br/> Задаёт `data-size` и шкалу шрифта для текста shimmer. |\n| `slotAfter` | `ReactNode` | — | Хвостовой слот справа от текста — например счётчик или длительность. Волна идёт <br/> по нему той же полосой; база слота на тон светлее текста. Свой цвет слоту не задавать. |\n| `text` | `string` | — | Текст, по которому рендерится shimmer. Поддерживает переносы строк через `\\n`. |\n| `variant` | `\"body\"` \\| `\"display\"` \\| `\"headline\"` \\| `\"label\"` \\| `\"title\"` | `VARIANT.body` | Вариант типографики, как в `@cloud-ru/ds-typography`. Задаёт `data-variant` и шкалу шрифта. |\n| `weight` | `\"mono\"` \\| `\"regular\"` \\| `\"thin\"` | `WEIGHT.regular` | Начертание шрифта, как в `@cloud-ru/ds-typography`. Задаёт `data-weight`. |\n\n#### Related types\n\n- `AiShimmerSize` = `\"l\"` \\| `\"m\"` \\| `\"s\"`\n\n- `AiShimmerVariant` = `\"body\"` \\| `\"display\"` \\| `\"headline\"` \\| `\"label\"` \\| `\"title\"`\n\n- `AiShimmerWeight` = `\"mono\"` \\| `\"regular\"` \\| `\"thin\"`\n","readmeFilename":"README.md"}