skillgrid 0.0.22 → 0.0.23-dev-31782-34252-avatar-and-badge.1141916

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +188 -194
  2. package/dist/components/Avatar/Avatar.type.d.ts +5 -2
  3. package/dist/components/Avatar/lib/get-avatar-border-radius-by-size-and-shape.d.ts +5 -0
  4. package/dist/components/Badge/Badge.type.d.ts +5 -0
  5. package/dist/components/Button/Button.d.ts +2 -3
  6. package/dist/components/Checkbox/Checkbox.d.ts +18 -0
  7. package/dist/components/Checkbox/Checkbox.type.d.ts +90 -0
  8. package/dist/components/Checkbox/assets/CheckIcon.d.ts +16 -0
  9. package/dist/components/Checkbox/assets/LineIcon.d.ts +16 -0
  10. package/dist/components/Checkbox/index.d.ts +2 -0
  11. package/dist/components/Helper/Helper.d.ts +7 -0
  12. package/dist/components/Helper/Helper.type.d.ts +17 -0
  13. package/dist/components/Helper/index.d.ts +2 -0
  14. package/dist/components/InputBase/Input.d.ts +9 -0
  15. package/dist/components/InputBase/Input.type.d.ts +138 -0
  16. package/dist/components/InputBase/InputBase.d.ts +6 -0
  17. package/dist/components/InputBase/InputBase.type.d.ts +110 -0
  18. package/dist/components/InputBase/assets/GripIcon.d.ts +8 -0
  19. package/dist/components/InputBase/assets/SearchIcon.d.ts +17 -0
  20. package/dist/components/InputBase/assets/XIcon.d.ts +18 -0
  21. package/dist/components/InputBase/assets/index.d.ts +3 -0
  22. package/dist/components/InputBase/index.d.ts +3 -0
  23. package/dist/components/InputBase/lib/constants.d.ts +4 -0
  24. package/dist/components/InputBase/lib/index.d.ts +4 -0
  25. package/dist/components/InputBase/lib/useGripResize.d.ts +11 -0
  26. package/dist/components/InputBase/lib/useInputSync.d.ts +11 -0
  27. package/dist/components/InputBase/lib/useTextareaResize.d.ts +9 -0
  28. package/dist/components/List/List.d.ts +5 -0
  29. package/dist/components/List/List.type.d.ts +34 -0
  30. package/dist/components/List/ListItem/ListItem.d.ts +9 -0
  31. package/dist/components/List/index.d.ts +2 -0
  32. package/dist/components/TextArea/TextArea.d.ts +6 -0
  33. package/dist/components/TextArea/TextArea.type.d.ts +66 -0
  34. package/dist/components/TextArea/index.d.ts +2 -0
  35. package/dist/components/TextArea/lib/constants.d.ts +65 -0
  36. package/dist/components/TextArea/lib/getters.d.ts +38 -0
  37. package/dist/components/TextArea/lib/index.d.ts +2 -0
  38. package/dist/components/TextInput/TextInput.d.ts +6 -0
  39. package/dist/components/TextInput/TextInput.type.d.ts +72 -0
  40. package/dist/components/TextInput/index.d.ts +2 -0
  41. package/dist/components/TextInput/lib/constants.d.ts +9 -0
  42. package/dist/components/TextInput/lib/getters.d.ts +38 -0
  43. package/dist/components/TextInput/lib/index.d.ts +2 -0
  44. package/dist/components/Typography/Typography.constants.d.ts +2 -0
  45. package/dist/components/Typography/Typography.d.ts +21 -0
  46. package/dist/components/Typography/Typography.type.d.ts +68 -0
  47. package/dist/components/Typography/index.d.ts +1 -0
  48. package/dist/index.cjs.js +11 -11
  49. package/dist/index.css +1 -1
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.es.js +1211 -888
  52. package/dist/utils/other.d.ts +8 -0
  53. package/package.json +8 -5
package/README.md CHANGED
@@ -1,211 +1,205 @@
1
- # Библиотека компонентов Skillgrid
1
+ # Skillgrid
2
2
 
3
- Современная библиотека React-компонентов со встроенной поддержкой i18n, интеграцией Storybook и автоматизированным тестированием.
4
-
5
- ## Возможности
3
+ **Библиотека компонентов Skillgrid**
6
4
 
7
- - 🌐 Встроенная поддержка i18n с локализацией на уровне компонентов
8
- - 📚 Интеграция со Storybook
9
- - ✅ Тестирование с помощью Vitest
10
- - 🎨 Поддержка CSS Modules
11
- - 🔧 Настраиваемая генерация компонентов
12
- - 📦 Поддержка TypeScript
5
+ Современная библиотека React-компонентов со встроенной поддержкой i18n, интеграцией Storybook и автоматизированным тестированием.
13
6
 
14
7
  ## Установка
15
8
 
16
9
  ```bash
17
- yarn install
18
- ```
19
-
20
- ## Быстрый старт
21
-
22
- ### Одновременный запуск Storybook и тестов
23
-
24
- ```bash
25
- yarn start
26
- ```
27
-
28
- ### Запуск сервера разработки
29
-
30
- ```bash
31
- yarn dev
32
- ```
33
-
34
- ### Запуск тестов
35
-
36
- ```bash
37
- yarn test
38
- ```
39
-
40
- ### Запуск Storybook
41
-
42
- ```bash
43
- yarn storybook
44
- ```
45
-
46
- ### Сборка библиотеки
47
-
48
- ```bash
49
- yarn build
10
+ yarn add skillgrid
50
11
  ```
51
12
 
52
- ## Документация
53
-
54
- Полная документация доступна в формате VitePress в директории `/docs`.
55
-
56
- ### Запуск документации локально
13
+ или
57
14
 
58
15
  ```bash
59
- # Запуск в режиме разработки
60
- yarn docs
61
-
62
- # Сборка документации
63
- yarn docs:build
64
-
65
- # Предпросмотр собранной документации
66
- yarn docs:preview
16
+ npm install skillgrid
67
17
  ```
68
18
 
69
- ### Структура документации
70
-
71
- - `/docs/components/` - Документация по компонентам
72
- - `/docs/locale/` - Система локализации
73
- - `/docs/generator/` - Генератор компонентов
74
-
75
- ## Генерация компонентов
76
-
77
- Создавайте новые компоненты с помощью CLI:
78
-
79
- ```bash
80
- yarn skillgrid generate component MyComponent
81
- # или короче
82
- yarn skillgrid g c MyComponent
83
- ```
84
-
85
- ### Параметры командной строки
86
-
87
- Генератор компонентов поддерживает несколько флагов для настройки генерируемых файлов:
88
-
89
- ```bash
90
- # Генерация без поддержки i18n
91
- yarn skillgrid g c MyComponent --no-i18n
92
-
93
- # Генерация без хуков
94
- yarn skillgrid g c MyComponent --no-hooks
95
-
96
- # Генерация без историй
97
- yarn skillgrid g c MyComponent --no-stories
98
-
99
- # Комбинация флагов
100
- yarn skillgrid g c MyComponent --no-i18n --no-hooks --no-stories
101
- ```
102
-
103
- ## Интернационализация (i18n)
104
-
105
- ### Локализация на уровне компонентов
106
-
107
- Каждый компонент с поддержкой i18n имеет свой файл переводов (`ComponentName.i18n.json`):
108
-
109
- ```json
110
- {
111
- "en": {
112
- "componentname": {
113
- "example": "Example text for ComponentName"
114
- }
115
- },
116
- "ru": {
117
- "componentname": {
118
- "example": "Пример текста для ComponentName"
119
- }
120
- }
121
- }
122
- ```
123
-
124
- ### Пользовательские переводы
125
-
126
- Вы можете переопределить стандартные переводы для любого компонента, используя проп `i18n`:
19
+ ## Быстрый старт
127
20
 
128
21
  ```tsx
129
- <MyComponent
130
- i18n={{
131
- en: {
132
- mycomponent: {
133
- example: "Custom English text",
134
- otherKey: "Other text"
135
- }
136
- },
137
- ru: {
138
- mycomponent: {
139
- example: "Пользовательский русский текст",
140
- otherKey: "Другой текст"
141
- }
142
- }
143
- }}
144
- />
145
- ```
146
-
147
- ## Конфигурация
148
-
149
- Создайте файл `.skillgridrc.json` в корне вашего проекта для настройки параметров по умолчанию:
150
-
151
- ```json
152
- {
153
- "componentsDir": "components",
154
- "style": "css",
155
- "withStories": true,
156
- "withHook": true,
157
- "withI18n": true,
158
- "indexFile": "src/index.ts",
159
- "appFile": "src/App.tsx",
160
- "storybookUrl": "http://localhost:6006"
22
+ import { Button, ConfigProvider } from 'skillgrid';
23
+
24
+ function App() {
25
+ return (
26
+ // Перед импортом компонентов библиотеки
27
+ // приложение следует обернуть в <ConfigProvider>
28
+ <ConfigProvider>
29
+ <Button onClick={() => console.log('Clicked!')}>
30
+ Нажми меня
31
+ </Button>
32
+ </ConfigProvider>
33
+ );
161
34
  }
162
35
  ```
163
36
 
164
- ### Параметры конфигурации
165
-
166
- | Опция | Тип | По умолчанию | Описание |
167
- |-------|-----|--------------|----------|
168
- | `componentsDir` | string | `"components"` | Директория для генерации компонентов |
169
- | `style` | string | `"css"` | Формат стилей (css/scss) |
170
- | `withStories` | boolean | `true` | Генерировать stories |
171
- | `withHook` | boolean | `true` | Генерировать хуки |
172
- | `withI18n` | boolean | `true` | Генерировать i18n |
173
- | `indexFile` | string | `"src/index.ts"` | Путь к главному индексному файлу |
174
- | `appFile` | string | `"src/App.tsx"` | Путь к файлу приложения |
175
- | `storybookUrl` | string | `"http://localhost:6006"` | URL Storybook |
176
-
177
- ## Структура компонента
178
-
179
- При генерации компонента со всеми включенными функциями создаются следующие файлы:
180
-
181
- ```
182
- ComponentName/
183
- ├── ComponentName.tsx # Основной файл компонента
184
- ├── ComponentName.type.ts # TypeScript типы
185
- ├── ComponentName.module.css # Стили
186
- ├── ComponentName.test.tsx # Тесты
187
- ├── ComponentName.stories.tsx # Истории Storybook
188
- ├── ComponentName.hook.ts # Пользовательский хук
189
- ├── ComponentName.i18n.json # Переводы
190
- └── index.ts # Экспорты
191
- ```
192
-
193
- ## Участие в разработке
194
-
195
- 1. Сделайте форк репозитория
196
- 2. Создайте ветку для вашей функции (`git checkout -b feature/DEV-XXX-amazing-feature`)
197
- 3. Зафиксируйте ваши изменения (`git commit -m '[DEV-XXX] Добавлена новая функция'`)
198
- 4. Отправьте изменения в ваш форк (`git push origin feature/DEV-XXX-amazing-feature`)
199
- 5. Откройте Merge Request
200
-
201
- ## Используемые технологии
202
-
203
- - React 18.3.1
204
- - TypeScript 5.8.3
205
- - Vite 6.3.5
206
- - Vitest для тестирования
207
- - Storybook 8.6.12
208
- - Ant Design 5.25.1
209
- - ESLint и Prettier для линтинга и форматирования
210
- - Stylelint для CSS
211
- - VitePress для документации
37
+ ## Требования
38
+
39
+ Для работы библиотеки необходимы:
40
+ - `react` версии `17.0.2` или новее
41
+ - `react-dom` версии `17.0.2` или новее
42
+
43
+
44
+ ## Особенности
45
+
46
+ - 🎯 **Типобезопасность**: Полная поддержка TypeScript.
47
+ - 🌐 **Локализация**: Встроенная и настраиваемая система i18n.
48
+ - 📚 **Документация**: Интерактивная документация компонентов в Storybook.
49
+ - 🛠️ **Инструменты**: CLI для генерации новых компонентов.
50
+ - ⚡️ **Производительность**: Оптимизированные и легковесные компоненты.
51
+ - 🎨 **Стилизация**: Поддержка CSS Modules и темизации.
52
+
53
+ ## Лицензия
54
+
55
+ <details>
56
+ <summary>Текст лицензии</summary>
57
+
58
+ >
59
+ > # Лицензия на использования контента Skillaz на ресурсе https://www.npmjs.com/
60
+ >
61
+ > Осуществляя Лицензируемые права (как указано ниже), Вы принимаете и соглашаетесь соблюдать условия настоящей Лицензии на использования контента Skillaz на ресурсе <https://www.npmjs.com/> (далее -- «Лицензия»). В том объеме, в котором настоящая Лицензия может считаться договором, Вам предоставляются Лицензируемые права в качестве встречного предоставления за принятие Вами условий такого договора. Лицензиар предоставляет Вам такие права с учетом благ, которые Лицензиар получает от предоставления доступа к Лицензируемому Материалу на указанных условиях.
62
+ >
63
+ > <details>
64
+ > <summary>Раздел 1 -- Определения.</summary>
65
+ >
66
+ > **a. Адаптированный Материал** означает материал, охраняемый Авторским Правом И Другими Схожими Правами, производный от Лицензируемого Материала или основанный на Лицензируемом Материале, который содержит перевод, измененный вариант, аранжировку, преобразованный вариант или иную переработку Лицензируемого Материала, таким образом, который требует разрешения Лицензиара в соответствии с Авторским Правом И Другими Схожими Правами. Для целей настоящей Лицензии, в том случае если Лицензируемый Материал является музыкальным произведением, исполнением или фонограммой, синхронизация такого Лицензируемого Материала с движущимся изображением всегда порождает "Адаптированный Материал".
67
+ >
68
+ > **b. Лицензия на Адаптированный Материал** означает лицензию, которую Вы применяете в отношении Авторского Права И Других Схожих Прав на Ваш вклад в создание Адаптированного Материала в соответствии с условиями настоящей Лицензии.
69
+ >
70
+ > **c. Авторское Право И Другие Схожие Права** означают имущественные и личные неимущественные авторские права, а также смежные права по смыслу применимого законодательства.
71
+ >
72
+ > **d. Эффективные Технические Меры** означают меры, которые при отсутствии надлежащих полномочий нельзя обойти в соответствии с законодательством, направленным на выполнение обязательств в соответствии со Статьей 11 Договора Всемирной организации интеллектуальной собственности (ВОИС) по авторскому праву, принятого 20 декабря 1996 года и/или иными подобными международными соглашениями.
73
+ >
74
+ > **e. Исключения И Ограничения** означают свободное использование и/или любые иные исключения из Авторского Права И Других Схожих Прав или ограничения таких прав, которые применяются в отношении Вашего использования Лицензируемого Материала.
75
+ >
76
+ > **f. Элементы Лицензии** означают атрибуты лицензии, перечисленные в названии настоящей Лицензии. Элементами Лицензии настоящей Лицензии являются: С указанием авторства, Некоммерческая и С сохранением условий.
77
+ >
78
+ > **g. Лицензируемый Материал** означает произведение искусства или литературы, базу данных или другой материал, размещаемый Лицензиаром на ресурсе <https://www.npmjs.com/>, в отношении которого Лицензиар применил настоящую Лицензию.
79
+ >
80
+ > **h. Лицензируемые Права** означают права, предоставляемые Вам в соответствии с условиями настоящей Лицензии в объеме, ограниченном всеми Авторскими Правами И Другими Схожими Правами, которые применимы к Вашему использованию Лицензируемого Материала и которые Лицензиар вправе Вам предоставить.
81
+ >
82
+ > **i. Лицензиар/Skillaz** означает Общество с ограниченной ответственностью «Скилаз» ОГРН 1177746032276.
83
+ >
84
+ > **j. Некоммерческая** означает использование, не имеющее своей основной целью или направленное на получение коммерческого преимущества или денежного вознаграждения.
85
+ >
86
+ > **k. Предоставление** означает предоставление материала неограниченному кругу лиц любыми средствами или способами, для использования которых требуется разрешение согласно Лицензируемых Прав, в том числе воспроизведение, публичный показ, публичное исполнение, распространение, сообщение или импорт, а также доведение материала до всеобщего сведения таким образом, при котором любое лицо может иметь доступ к нему из любого места и в любое время по собственному выбору.
87
+ >
88
+ > **l. Вы** означает юридическое лицо, заключившее со Skillaz лицензионный договор, по которому предоставляется право использования программы для ЭВМ «Skillaz», осуществляющее Лицензируемые Права в соответствии с настоящей Лицензией. Термины **"Ваш", "Ваши", "Вам", "Вами"** имеют соответствующее значение.
89
+ >
90
+ > </details>
91
+ > <details>
92
+ > <summary>Раздел 2 -- Объем лицензии.</summary>
93
+ >
94
+ > **a. Предоставление лицензии.**
95
+ >
96
+ > 1. В соответствии с условиями настоящей Лицензии Лицензиар предоставляет Вам действующую на территории всех стран мира, безвозмездную, без права сублицензирования, неисключительную, не подлежащую отмене лицензию на осуществление Лицензируемых Прав на Лицензируемый Материал путем:
97
+ >
98
+ > A. воспроизведения и Предоставления Лицензируемого Материала целиком или в части исключительно в Некоммерческих целях; а также
99
+ > B. создания, воспроизведения и Предоставления Адаптированного Материала исключительно в Некоммерческих целях.
100
+ > C. воспроизведения и Предоставления Лицензируемого Материала целиком или в части, а также создания, воспроизведения и Предоставления Адаптированного Материала в рамках продуктов группы компаний Headhunter.
101
+ >
102
+ > 2. **Исключения И Ограничения.** Во избежание неоднозначного толкования, если Исключения и Ограничения применяются в отношении Вашего способа использования Лицензируемого материала, настоящая Лицензия не применяется, и Вы не обязаны выполнять ее условия. В случае неприменения настоящей Лицензии лицо, желающее приобрести права использования на Лицензируемый материал обязано обратиться к Лицензиару для заключения отдельного лицензионного договора.
103
+ >
104
+ > 3. **Срок действия лицензии.** Настоящая Лицензия действует в течение срока, указанного в пункте [(a) Раздела 5](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru#s6a).
105
+ >
106
+ > 4. **Носители и форматы: разрешение на внесение технических изменений.** Лицензиар предоставляет Вам право осуществлять Лицензируемые Права с использованием всех известных носителей и форматов, а также носителей и форматов, которые будут созданы в будущем, и вносить с этой целью любые необходимые технические изменения. Лицензиар отказывается от и/или соглашается не осуществлять какие-либо права или полномочия, позволяющие запретить внесение Вами технических изменений, необходимых для осуществления Лицензируемых Прав, включая технические изменения, необходимые для обхода Эффективных Технических Мер. Для целей настоящей Лицензии внесение изменений, разрешенных в подпункте (4) пункта (а) Раздела 2, само по себе не является созданием Адаптированного Материала.
107
+ >
108
+ > 5. **Последующие получатели.**
109
+ >
110
+ > A. **Оферта от Лицензиара -- Лицензируемый Материал.** Каждый получатель Лицензируемого Материала автоматически получает оферту от Лицензиара на осуществление Лицензируемых Прав в соответствии с условиями настоящей Лицензии.
111
+ > B. **Дополнительная оферта от Лицензиара -- Адаптированный Материал.** Каждый получатель Адаптированного Материала от Вас автоматически получает оферту от Лицензиара на осуществление Лицензируемых Прав на Адаптированный Материал в соответствии с условиями Лицензии на Адаптированный Материал, применяемой Вами.
112
+ > C. **Отсутствие ограничений на последующее использование.** Вы не можете предлагать или устанавливать какие-либо дополнительные или иные условия, или применять Эффективные Технические Меры в отношении Лицензируемого Материала, если это ограничивает осуществление Лицензируемых Прав любым получателем Лицензируемого Материала.
113
+ >
114
+ > **b. Иные права.**
115
+ >
116
+ > 1. Личные неимущественные права, такие как право на неприкосновенность произведения, а также права на публичность и изображение гражданина, неприкосновенность частной жизни или иные аналогичные личные права не предоставляются на основе настоящей Лицензии. Тем не менее, в максимально возможной степени Лицензиар отказывается или соглашается не осуществлять любые такие права, принадлежащие ему, в объеме, необходимом, чтобы позволить Вам осуществлять Лицензируемые Права, но не иначе.
117
+ >
118
+ > 2. Патентные права и права на товарные знаки и знаки обслуживания не предоставляются по настоящей Лицензии.
119
+ >
120
+ > 3. В той мере, в которой это возможно, Лицензиар отказывается от любого права на получение от Вас вознаграждения за осуществление Вами Лицензируемых Прав, как непосредственно, так и через любые организации по коллективному управлению правами или любую добровольную, обязательную государственную или принудительную систему лицензирования. Во всех иных случаях Лицензиар сохраняет право на получение такого вознаграждения, включая использование Лицензируемого Материала в иных целях, отличных от Некоммерческих.
121
+ >
122
+ > </details>
123
+ > <details>
124
+ > <summary>Раздел 3 -- Условия лицензии.</summary>
125
+ >
126
+ > Вы можете осуществлять Лицензируемые Права исключительно при условии соблюдения следующих условий.
127
+ >
128
+ > **a. Указание авторства.**
129
+ >
130
+ > 1. Если Вы Предоставляете Лицензируемый Материал (в том числе в измененном виде), Вы должны:
131
+ >
132
+ > A. сохранить следующие сведения, если они предоставлены Лицензиаром вместе с Лицензируемым Материалом:
133
+ >
134
+ > i. информация об создателе (создателях) Лицензируемого Материала, а также любых других лицах, указанных Лицензиаром, обладающих правом на указание авторства, любым разумным способом, по требованию Лицензиара (в том числе с использованием псевдонима, если таковой указан);
135
+ > ii. уведомление об авторском праве;
136
+ > iii. уведомление об использовании настоящей Лицензии;
137
+ > iv. уведомление об отказе от гарантий;
138
+ > v. Унифицированный Идентификатор Ресурса (URI) или гиперссылку на Лицензируемый Материал, в той мере, в которой это практически выполнимо;
139
+ >
140
+ > B. указать, если Вами внесены изменения в Лицензируемый Материал, и сохранить указание на любые предыдущие изменения; а также
141
+ > C. указать, что Лицензируемый Материал предоставляется на условиях настоящей Лицензии, и предоставить текст, или Унифицированный Идентификатор Ресурса (URI), или гиперссылку на настоящую Лицензию.
142
+ >
143
+ > 2. Вы можете выполнить положения подпункта (1) пункта (а) Раздела 3 любым разумным способом в зависимости от носителя, способа и контекста, посредством которых вы Предоставляете Лицензируемый Материал. Например, разумным признается выполнение данного условия путем указания Унифицированного Идентификатора Ресурса (URI) или гиперссылки на ресурс, который содержит необходимую информацию.
144
+ >
145
+ > 3. По требованию Лицензиара Вы должны, насколько это практически выполнимо, удалить любую информацию, указанную в подпункте (А) (1) пункта (а) Раздела 3.
146
+ >
147
+ > **b. С сохранением условий**.
148
+ >
149
+ > В дополнение к условиям, указанным в пункте (а) Раздела 3, если Вы Предоставляете Адаптированный Материал, созданный Вами, то применяются также следующие условия.
150
+ >
151
+ > 1. Вы должны включить текст, Унифицированный Идентификатор Ресурса (URI) или гиперссылку на Лицензию на Адаптированный Материал, которую Вы применяете. Вы можете выполнить данное условие любым разумным способом в зависимости от носителя, способа и контекста, посредством которых Вы Предоставляете Адаптированный Материал.
152
+ >
153
+ > 2. Вы не можете предлагать или устанавливать какие-либо дополнительные или иные условия или применять Эффективные Технические Меры в отношении Адаптированного Материала, которые ограничивают осуществление прав, предоставленных в соответствии с Лицензией на Адаптированный Материал, которую Вы применяете.
154
+ >
155
+ > </details>
156
+ > <details>
157
+ > <summary>Раздел 4 -- Отказ от гарантий и ограничение ответственности.</summary>
158
+ >
159
+ > **a.** Если иное отдельно не оговорено Лицензиаром, насколько это возможно, Лицензиар предлагает Лицензируемый Материал по принципу "как есть" и в том виде, в котором такой материал существует, и не дает никаких заверений или гарантий в отношении Лицензируемого Материала, выраженных в явном виде, предполагаемых, установленных законом или иных, включая, без ограничений, гарантии правового титула, товарной пригодности, пригодности для какой-либо определенной цели, гарантии не нарушения прав, отсутствия скрытых или других дефектов, точности, наличия или отсутствия ошибок, как известных, так и неизвестных, или как поддающихся, так и не поддающихся обнаружению. В том случае если отказ от гарантий не разрешен полностью или частично, такой отказ может не применяться в отношении Вас.
160
+ >
161
+ > **b.** В той мере, в которой это возможно, Лицензиар не несет перед Вами никакой ответственности на основании любой правовой доктрины (в том числе, но не ограничиваясь, в результате неосторожности), за какие-либо прямые, особые, непрямые, случайные, косвенные или иные убытки и штрафные выплаты, издержки, затраты или ущерб, возникшие в результате применения настоящей Лицензии или использования Лицензируемого Материала, даже если Лицензиар был уведомлен о возможности возникновения таких затрат, издержек или убытков. В том случае если ограничение ответственности полностью или частично не допускается, настоящее ограничение может не применяться в отношении Вас.
162
+ >
163
+ > **c.** Отказ от гарантий и ограничение ответственности, изложенные выше, должны толковаться таким образом, чтобы в максимально допустимой степени соответствовать абсолютному отказу от гарантий и отказу от какой-либо ответственности.
164
+ >
165
+ > </details>
166
+ > <details>
167
+ > <summary>Раздел 5 -- Срок действия и прекращение действия.</summary>
168
+ >
169
+ > **a.** Настоящая Лицензия действует в течение срока действия Авторского Права И Других Схожих Прав, предоставляемых в соответствии с настоящей Лицензией. При этом если Вы не соблюдаете какое-либо условие настоящей Лицензии, действие Ваших прав в соответствии с настоящей Лицензией автоматически прекращается.
170
+ >
171
+ > **b.** Если Ваше право на использование Лицензируемого Материала прекратилось в соответствии с пунктом (а) Раздела 5, оно считается восстановленным:
172
+ >
173
+ > 1. автоматически в момент устранения Вами нарушения, если такое нарушение устранено в течение 30 дней с момента его обнаружения; или
174
+ > 2. в случае четко выраженного решения Лицензиара о восстановлении права.
175
+ >
176
+ > Во избежание неоднозначного толкования пункт (b) Раздела 5 не затрагивает каких-либо прав Лицензиара на поиск средств правовой защиты от допущенных Вами нарушений условий настоящей Лицензии.
177
+ >
178
+ > **c.** Во избежание неоднозначного толкования Лицензиар может также предлагать Лицензируемый Материал на иных лицензионных условиях или остановить распространение Лицензируемого Материала в любое время; однако, это не прекращает действия Лицензии.
179
+ >
180
+ > **d.** Разделы [1](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru#s1), 4, [5](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru#s6), [6](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru#s7) и [7](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru#s8) продолжают действовать после прекращения действия настоящей Лицензии.
181
+ >
182
+ > </details>
183
+ > <details>
184
+ > <summary>Раздел 6 -- Прочие условия.</summary>
185
+ >
186
+ > **a.** Лицензиар не должен быть связан никакими дополнительными или иными условиями, сообщенными Вами, без его согласия, выраженного в явном виде.
187
+ >
188
+ > **b.** Любые дополнительные договоренности или понимания, касающиеся Лицензируемого Материала, которые не указаны в настоящей Лицензии, являются отдельными и независимыми от условий настоящей Лицензии.
189
+ >
190
+ > </details>
191
+ > <details>
192
+ > <summary>Раздел 7 -- Толкование.</summary>
193
+ >
194
+ > **a.** Во избежание неоднозначного толкования настоящая Лицензия не может и не должна толковаться как сокращение, ограничение или наложение условий в отношении любого использования Лицензируемого Материала, которое может быть осуществлено на законных основаниях без разрешения, предоставляемого в соответствии с настоящей Лицензией.
195
+ >
196
+ > **b.** Если какое-либо положение настоящей Лицензии считается не имеющим законной силы, оно должно быть, насколько это возможно, автоматически исправлено в минимально необходимой степени для наделения такого положения законной силой. Если такое положение невозможно исправить, оно должно быть исключено из текста настоящей Лицензии без ущерба для законной силы остальных положений лицензии.
197
+ >
198
+ > **c.** Никакое условие или положение настоящей Лицензии не будет считаться отмененным, а нарушение -- согласованным, если Лицензиар в явной форме не выразит свое согласие с такой отменой или нарушением.
199
+ >
200
+ > **d.** Никакое условие или положение настоящей Лицензии не является и не может быть истолковано как ограничение или отказ от каких-либо привилегий и иммунитетов, применимых в отношении Лицензиара и/или в отношении Вас, включая отказ от судебных процессов в какой-либо юрисдикции или какой-либо подведомственности.
201
+ >
202
+ > </details>
203
+ >
204
+ >
205
+ > </details>
@@ -1,4 +1,4 @@
1
- import { ComponentPropsWithoutRef, CSSProperties, FC, HTMLProps, MouseEvent } from 'react';
1
+ import { ComponentPropsWithoutRef, CSSProperties, FC, HTMLProps, MouseEvent, PropsWithChildren } from 'react';
2
2
  /** Типы режимов отображения аватара */
3
3
  export type AvatarModeType = 'image' | 'icon' | 'name' | 'placeholder';
4
4
  type CommonEventsType = 'onClick' | 'onFocus' | 'onBlur' | 'onPointerDown' | 'onPointerUp' | 'onPointerEnter' | 'onPointerLeave' | 'onPointerCancel' | 'onPointerOut' | 'onPointerOver';
@@ -67,12 +67,15 @@ export interface AvatarProps extends Pick<HTMLProps<HTMLSpanElement>, 'className
67
67
  */
68
68
  'data-testid'?: string;
69
69
  }
70
+ interface AvatarGroupItem extends Omit<AvatarProps, 'size' | 'shape'> {
71
+ wrapper?: FC<PropsWithChildren>;
72
+ }
70
73
  /**
71
74
  * Пропсы компонента AvatarGroup
72
75
  */
73
76
  export interface AvatarGroupProps {
74
77
  /** Массив аватаров для отображения */
75
- avatars: Omit<AvatarProps, 'size' | 'shape'>[];
78
+ avatars: AvatarGroupItem[];
76
79
  /** Размер аватаров в группе */
77
80
  size?: AvatarProps['size'];
78
81
  /** Форма аватаров */
@@ -1,3 +1,8 @@
1
1
  import { AvatarProps } from '../Avatar.type';
2
+ /**
3
+ * NOTE: This logic is duplicated from Avatar.module.css.
4
+ * If you change the border-radius there, change it here too.
5
+ * This is necessary for calculating the clipPath in AvatarGroup.
6
+ */
2
7
  declare function getAvatarBorderRadiusBySizeAndShape(size: number, shape: AvatarProps['shape']): number;
3
8
  export { getAvatarBorderRadiusBySizeAndShape };
@@ -16,6 +16,11 @@ export interface BadgeProps extends Pick<HTMLProps<HTMLSpanElement>, 'className'
16
16
  * @default 'red'
17
17
  */
18
18
  colorScheme?: 'brand' | 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'lightblue' | 'purple' | 'gray' | 'contrast';
19
+ /**
20
+ * Флаг скрытого состояния бейджа (когда он не будет присутствовать в DOM)
21
+ * @default false
22
+ * */
23
+ isHidden?: boolean;
19
24
  /**
20
25
  * Размер бейджа в пикселях. Также определяет размер шрифта и padding.
21
26
  * @default 20
@@ -1,4 +1,3 @@
1
- import { default as React } from 'react';
2
1
  import { ButtonProps } from './Button.type';
3
2
  /**
4
3
  * Button component for user interactions
@@ -9,6 +8,6 @@ import { ButtonProps } from './Button.type';
9
8
  * <Button mode="primary" size="medium" buttonStyle="accent">Click me</Button>
10
9
  * ```
11
10
  */
12
- export declare const Button: React.ForwardRefExoticComponent<(ButtonProps & {
11
+ export declare const Button: import('react').ForwardRefExoticComponent<(ButtonProps & {
13
12
  style?: React.CSSProperties;
14
- }) & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
13
+ }) & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
@@ -0,0 +1,18 @@
1
+ import { CheckboxProps } from './Checkbox.type';
2
+ /**
3
+ * Checkbox компонент для user interactions
4
+ *
5
+ * @component
6
+ * @example
7
+ * ```tsx
8
+ * <Checkbox
9
+ * name="agree"
10
+ * value={checked}
11
+ * onChange={setChecked}
12
+ * size="medium"
13
+ * >
14
+ * Я согласен с условиями
15
+ * </Checkbox>
16
+ * ```
17
+ */
18
+ export declare const Checkbox: import('react').ForwardRefExoticComponent<CheckboxProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,90 @@
1
+ import { ChangeEvent, CSSProperties, ReactNode } from 'react';
2
+ export interface CheckboxIconProps {
3
+ /** Имя чекбокса для идентификации */
4
+ name: string;
5
+ /** Размер иконки чекбокса */
6
+ size: 'medium' | 'large';
7
+ /** Состояние - выбран ли чекбокс */
8
+ isChecked: boolean;
9
+ /** Состояние - заблокирован ли чекбокс */
10
+ isDisabled: boolean;
11
+ /** Состояние - неопределенное состояние чекбокса */
12
+ indeterminate: boolean;
13
+ }
14
+ export interface CheckboxProps {
15
+ /**
16
+ * Уникальное имя чекбокса, значение для id тэга input
17
+ */
18
+ name: string;
19
+ /**
20
+ * Текущее значение чекбокса
21
+ * - true - отмеченный чекбокс
22
+ * - false - не отмеченный чекбокс
23
+ * Если не передан, используется внутреннее состояние
24
+ */
25
+ value?: boolean;
26
+ /**
27
+ * Размер чекбокса
28
+ * @default 'medium'
29
+ */
30
+ size?: 'medium' | 'large';
31
+ /**
32
+ * Неопределенный вариант (показывает line-icon вместо check-icon)
33
+ * @default false
34
+ */
35
+ indeterminate?: boolean;
36
+ /**
37
+ * Загрузка (чекбокс становится неактивным)
38
+ * @default false
39
+ */
40
+ loading?: boolean;
41
+ /**
42
+ * Сообщение об ошибке
43
+ */
44
+ error?: string;
45
+ /**
46
+ * Дизейбл чекбокса
47
+ * @default false
48
+ */
49
+ disabled?: boolean;
50
+ /**
51
+ * Дополнительные CSS классы для контейнера
52
+ */
53
+ containerClassName?: string;
54
+ /**
55
+ * Дополнительные CSS классы для чекбокса
56
+ */
57
+ className?: string;
58
+ /**
59
+ * Дополнительные CSS стили для контейнера
60
+ */
61
+ containerStyle?: CSSProperties;
62
+ /**
63
+ * Дополнительные CSS стили для чекбокса
64
+ */
65
+ style?: CSSProperties;
66
+ /**
67
+ * Вложенный компонент справа от чекбокса (label)
68
+ */
69
+ children?: ReactNode;
70
+ /**
71
+ * Делать ли весь элемент (включая label) кликабельным
72
+ * @default true
73
+ */
74
+ clickableLabel?: boolean;
75
+ /**
76
+ * Tab index для навигации
77
+ */
78
+ tabIndex?: number;
79
+ /**
80
+ * Обработчик изменения состояния чекбокса
81
+ * @param checked - boolean, текущее состояние чекбокса
82
+ * @param e - ChangeEvent<HTMLInputElement>, ивент нажатия на инпут
83
+ * Если не передан, используется внутреннее состояние
84
+ */
85
+ onChange?: (checked: boolean, e?: ChangeEvent<HTMLInputElement>) => void;
86
+ /**
87
+ * Идентификатор для тестирования
88
+ */
89
+ 'data-testid'?: string;
90
+ }
@@ -0,0 +1,16 @@
1
+ export interface IconProps {
2
+ /** Ширина иконки */
3
+ width?: number;
4
+ /** Высота иконки */
5
+ height?: number;
6
+ /** Дополнительные CSS классы */
7
+ className?: string;
8
+ /** Цвет иконки */
9
+ color?: string;
10
+ /** Дополнительные пропсы */
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Компонент иконки CheckIcon для чекбокса
15
+ */
16
+ export declare const CheckIcon: React.FC<IconProps>;
@@ -0,0 +1,16 @@
1
+ export interface IconProps {
2
+ /** Ширина иконки */
3
+ width?: number;
4
+ /** Высота иконки */
5
+ height?: number;
6
+ /** Дополнительные CSS классы */
7
+ className?: string;
8
+ /** Цвет иконки */
9
+ color?: string;
10
+ /** Дополнительные пропсы */
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Компонент иконки LineIcon для indeterminate состояния чекбокса
15
+ */
16
+ export declare const LineIcon: React.FC<IconProps>;
@@ -0,0 +1,2 @@
1
+ export { Checkbox } from './Checkbox';
2
+ export type { CheckboxProps } from './Checkbox.type';