@itcase/ui-core 1.9.77

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 (101) hide show
  1. package/dist/cjs/context/Notifications.interface.js +1 -0
  2. package/dist/cjs/context/Notifications.js +1 -0
  3. package/dist/cjs/context/UIContext.js +1 -0
  4. package/dist/cjs/context/UrlAssetPrefix.js +1 -0
  5. package/dist/cjs/context/index.js +1 -0
  6. package/dist/cjs/hoc/index.js +1 -0
  7. package/dist/cjs/hoc/urlWithAssetPrefix.js +1 -0
  8. package/dist/cjs/hooks/index.js +1 -0
  9. package/dist/cjs/hooks/useActiveClasses/index.js +1 -0
  10. package/dist/cjs/hooks/useActiveClasses/useActiveClasses.helpers.js +1 -0
  11. package/dist/cjs/hooks/useActiveClasses/useActiveClasses.interface.js +1 -0
  12. package/dist/cjs/hooks/useActiveClasses/useActiveClasses.js +1 -0
  13. package/dist/cjs/hooks/useAppearanceConfig/index.js +1 -0
  14. package/dist/cjs/hooks/useAppearanceConfig/useAppearanceConfig.js +1 -0
  15. package/dist/cjs/hooks/useDevicePropsGenerator/index.js +1 -0
  16. package/dist/cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.interface.js +1 -0
  17. package/dist/cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +1 -0
  18. package/dist/cjs/hooks/useDeviceTargetClass.js +1 -0
  19. package/dist/cjs/hooks/useDropzoneFieldFiles.js +1 -0
  20. package/dist/cjs/hooks/useHoldProgress.js +1 -0
  21. package/dist/cjs/hooks/useMediaQueries/index.js +1 -0
  22. package/dist/cjs/hooks/useMediaQueries/useMediaQueries.js +1 -0
  23. package/dist/cjs/hooks/useStyles/index.js +1 -0
  24. package/dist/cjs/hooks/useStyles/styleAttributes.helpers.js +1 -0
  25. package/dist/cjs/hooks/useStyles/styleAttributes.interface.js +1 -0
  26. package/dist/cjs/hooks/useStyles/styleAttributes.js +1 -0
  27. package/dist/cjs/hooks/useStyles/useStyles.js +1 -0
  28. package/dist/cjs/hooks/useViewportFix.js +1 -0
  29. package/dist/cjs/utils/index.js +1 -0
  30. package/dist/cjs/utils/mergeAppearanceKeys.js +1 -0
  31. package/dist/cjs/utils/setViewportProperty.js +1 -0
  32. package/dist/context/Notifications.interface.js +1 -0
  33. package/dist/context/Notifications.js +1 -0
  34. package/dist/context/UIContext.js +1 -0
  35. package/dist/context/UrlAssetPrefix.js +1 -0
  36. package/dist/context/index.js +1 -0
  37. package/dist/hoc/index.js +1 -0
  38. package/dist/hoc/urlWithAssetPrefix.js +1 -0
  39. package/dist/hooks/index.js +1 -0
  40. package/dist/hooks/useActiveClasses/index.js +1 -0
  41. package/dist/hooks/useActiveClasses/useActiveClasses.helpers.js +1 -0
  42. package/dist/hooks/useActiveClasses/useActiveClasses.interface.js +1 -0
  43. package/dist/hooks/useActiveClasses/useActiveClasses.js +1 -0
  44. package/dist/hooks/useAppearanceConfig/index.js +1 -0
  45. package/dist/hooks/useAppearanceConfig/useAppearanceConfig.js +1 -0
  46. package/dist/hooks/useDevicePropsGenerator/index.js +1 -0
  47. package/dist/hooks/useDevicePropsGenerator/useDevicePropsGenerator.interface.js +1 -0
  48. package/dist/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +1 -0
  49. package/dist/hooks/useDeviceTargetClass.js +1 -0
  50. package/dist/hooks/useDropzoneFieldFiles.js +1 -0
  51. package/dist/hooks/useHoldProgress.js +1 -0
  52. package/dist/hooks/useMediaQueries/index.js +1 -0
  53. package/dist/hooks/useMediaQueries/useMediaQueries.js +1 -0
  54. package/dist/hooks/useStyles/index.js +1 -0
  55. package/dist/hooks/useStyles/styleAttributes.helpers.js +1 -0
  56. package/dist/hooks/useStyles/styleAttributes.interface.js +1 -0
  57. package/dist/hooks/useStyles/styleAttributes.js +1 -0
  58. package/dist/hooks/useStyles/useStyles.js +1 -0
  59. package/dist/hooks/useViewportFix.js +1 -0
  60. package/dist/stories/useActiveClasses.mdx +134 -0
  61. package/dist/stories/useAppearanceConfig.mdx +83 -0
  62. package/dist/stories/useDevicePropsGenerator.mdx +202 -0
  63. package/dist/stories/useMediaQueries.mdx +80 -0
  64. package/dist/stories/useStyles.mdx +150 -0
  65. package/dist/types/context/Notifications.d.ts +21 -0
  66. package/dist/types/context/Notifications.interface.d.ts +47 -0
  67. package/dist/types/context/UIContext.d.ts +23 -0
  68. package/dist/types/context/UrlAssetPrefix.d.ts +12 -0
  69. package/dist/types/context/index.d.ts +4 -0
  70. package/dist/types/hoc/index.d.ts +2 -0
  71. package/dist/types/hoc/urlWithAssetPrefix.d.ts +28 -0
  72. package/dist/types/hooks/index.d.ts +9 -0
  73. package/dist/types/hooks/useActiveClasses/index.d.ts +2 -0
  74. package/dist/types/hooks/useActiveClasses/useActiveClasses.d.ts +3 -0
  75. package/dist/types/hooks/useActiveClasses/useActiveClasses.helpers.d.ts +5 -0
  76. package/dist/types/hooks/useActiveClasses/useActiveClasses.interface.d.ts +27 -0
  77. package/dist/types/hooks/useAppearanceConfig/index.d.ts +1 -0
  78. package/dist/types/hooks/useAppearanceConfig/useAppearanceConfig.d.ts +5 -0
  79. package/dist/types/hooks/useDevicePropsGenerator/index.d.ts +2 -0
  80. package/dist/types/hooks/useDevicePropsGenerator/useDevicePropsGenerator.d.ts +8 -0
  81. package/dist/types/hooks/useDevicePropsGenerator/useDevicePropsGenerator.interface.d.ts +12 -0
  82. package/dist/types/hooks/useDeviceTargetClass.d.ts +5 -0
  83. package/dist/types/hooks/useDropzoneFieldFiles.d.ts +14 -0
  84. package/dist/types/hooks/useHoldProgress.d.ts +17 -0
  85. package/dist/types/hooks/useMediaQueries/index.d.ts +1 -0
  86. package/dist/types/hooks/useMediaQueries/useMediaQueries.d.ts +7 -0
  87. package/dist/types/hooks/useStyles/index.d.ts +4 -0
  88. package/dist/types/hooks/useStyles/styleAttributes.d.ts +3 -0
  89. package/dist/types/hooks/useStyles/styleAttributes.helpers.d.ts +3 -0
  90. package/dist/types/hooks/useStyles/styleAttributes.interface.d.ts +147 -0
  91. package/dist/types/hooks/useStyles/useStyles.d.ts +4 -0
  92. package/dist/types/hooks/useViewportFix.d.ts +2 -0
  93. package/dist/types/types/index.d.ts +1 -0
  94. package/dist/types/types/utils.d.ts +43 -0
  95. package/dist/types/utils/index.d.ts +3 -0
  96. package/dist/types/utils/mergeAppearanceKeys.d.ts +7 -0
  97. package/dist/types/utils/setViewportProperty.d.ts +2 -0
  98. package/dist/utils/index.js +1 -0
  99. package/dist/utils/mergeAppearanceKeys.js +1 -0
  100. package/dist/utils/setViewportProperty.js +1 -0
  101. package/package.json +103 -0
@@ -0,0 +1,134 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title="Hooks / useActiveClasses" />
4
+
5
+ # `useActiveClasses`
6
+ Генерирует CSS‑классы по правилам `CLASS_RULES` из `propsGenerator` с учетом состояний (`isActive`, `isDisabled`).
7
+
8
+ > ℹ️ Данный хук использует термины, о которых рассказывается в `useDevicePropsGenerator`, необходимо предварительно ознакомиться с ним
9
+
10
+ ### Параметры
11
+
12
+ <table>
13
+ <thead>
14
+ <tr>
15
+ <th>Название</th>
16
+ <th>Обязательный</th>
17
+ <th>Тип</th>
18
+ <th>Значение</th>
19
+ <th>Описание</th>
20
+ </tr>
21
+ </thead>
22
+ <tbody>
23
+ <tr>
24
+ <td>isDisabled</td>
25
+ <td>Нет</td>
26
+ <td>`boolean`</td>
27
+ <td>false</td>
28
+ <td>`Boolean` флаг</td>
29
+ </tr>
30
+ <tr>
31
+ <td>propsGenerator</td>
32
+ <td>Да</td>
33
+ <td>`[key: string]: string`</td>
34
+ <td>
35
+ propsGenerator[propsKey]
36
+ </td>
37
+ <td>Генератор классов</td>
38
+ </tr>
39
+ <tr>
40
+ <td>suffixes</td>
41
+ <td>Нет</td>
42
+ <td>`string[]`</td>
43
+ <td>
44
+ ['Checkmark']
45
+ </td>
46
+ <td>Массив суффиксов</td>
47
+ </tr>
48
+ <tr>
49
+ <td>isActive</td>
50
+ <td>Нет</td>
51
+ <td>`boolean`</td>
52
+ <td>false</td>
53
+ <td>`Boolean` флаг</td>
54
+ </tr>
55
+ </tbody>
56
+ </table>
57
+
58
+ ### Результат
59
+
60
+ Возвращает объект, значения объекта:
61
+
62
+ <table>
63
+ <thead>
64
+ <tr>
65
+ <th>Название</th>
66
+ <th>Тип</th>
67
+ <th>Значение</th>
68
+ <th>Описание</th>
69
+ </tr>
70
+ </thead>
71
+ <tbody>
72
+ <tr>
73
+ <td>rootClasses</td>
74
+ <td>`string`</td>
75
+ <td>`'fill_surface-secondary borderColor_surface-border-quaternary'`</td>
76
+ <td>Строка из классами для корневого `html-тега`</td>
77
+ </tr>
78
+ <tr>
79
+ <td>suffixClasses</td>
80
+ <td>`string`</td>
81
+ <td>
82
+ `'fill_surface-secondary borderColor_accent-primary'`
83
+ </td>
84
+ <td>Строка из классов для вложенных `html-тэгов`</td>
85
+ </tr>
86
+ </tbody>
87
+ </table>
88
+
89
+ ### Примечание
90
+ Чтобы на выходе получалась строка из классов, необходимо предварительно в `appearance` прописать значения, например:
91
+
92
+ ```js
93
+ const radioAppearanceDefault = {
94
+ defaultPrimary: {
95
+ fill: 'surfaceSecondary',
96
+ fillRado: 'accentPrimary',
97
+ fillCheckmark: 'surfaceQuaternary'
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### Использование
103
+ Для генерации классов вложенных `html-тегов`, задаем массив суффиксов
104
+
105
+ ```jsx
106
+ function Radio({ isActive, isDisabled, propsGenerator }) {
107
+ const { rootClasses, suffixClasses } = useActiveClasses({
108
+ isDisabled,
109
+ propsGenerator,
110
+ suffixes: ['Checkmark', 'Radio'],
111
+ isActive,
112
+ })
113
+
114
+ return (
115
+ <label className={clsx('radio', rootClasses)}>
116
+ <div className={clsx('radio__state', suffixClasses.Radio)}>
117
+ <span>State</span>
118
+ </div>
119
+ <div className={clsx('radio__state-checkmark', suffixClasses.Checkmark)}>
120
+ <span>Checkmark</span>
121
+ </div>
122
+ </label>
123
+ )
124
+ }
125
+
126
+ export { Radio }
127
+ ```
128
+
129
+ В данном случае
130
+ - `rootClasses` = 'fill_surface-secondary'
131
+ - `suffixClasses.Radio` = 'fill_surface-quaternary',
132
+ - `suffixClasses.Chekmark` = 'fill_accent-primary'
133
+
134
+ И все данные значение получены из `appearance`, которые указали ранее
@@ -0,0 +1,83 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title="Hooks / useAppearanceConfig" />
4
+
5
+ # `useAppearanceConfig`
6
+ Хук позволяет возвращает объект из всех `appearance` переданных компоненту
7
+
8
+ ## Использование
9
+
10
+ ```js
11
+ import { useAppearanceConfig } from '../../hooks/useAppearanceConfig'
12
+
13
+ const { appearanceConfig } = useAppearanceConfig(
14
+ appearance,
15
+ componentConfig,
16
+ isDisabled,
17
+ )
18
+ ```
19
+
20
+ ## Параметры
21
+
22
+ <table>
23
+ <thead>
24
+ <tr>
25
+ <th>Название</th>
26
+ <th>Обязательный</th>
27
+ <th>Тип</th>
28
+ <th>Значение</th>
29
+ <th>Описание</th>
30
+ </tr>
31
+ </thead>
32
+ <tbody>
33
+ <tr>
34
+ <td>appearance</td>
35
+ <td>Да</td>
36
+ <td>`string`</td>
37
+ <td>`'surfacePrimary sizeXL'`</td>
38
+ <td>Переданные appearance компоненту</td>
39
+ </tr>
40
+ <tr>
41
+ <td>componentConfig</td>
42
+ <td>Да</td>
43
+ <td></td>
44
+ <td>
45
+ `{
46
+ appearance,
47
+ setAppearance
48
+ }`
49
+ </td>
50
+ <td>Конфигурация всех appearance компонента</td>
51
+ </tr>
52
+ <tr>
53
+ <td>isDisabled</td>
54
+ <td>Нет</td>
55
+ <td>`boolean`</td>
56
+ <td>
57
+ `true`
58
+ </td>
59
+ <td>Указывает, отключен ли компонент</td>
60
+ </tr>
61
+ </tbody>
62
+ </table>
63
+
64
+ ## Возвращает
65
+
66
+ <table>
67
+ <thead>
68
+ <tr>
69
+ <th>Название</th>
70
+ <th>Тип</th>
71
+ <th>Значение</th>
72
+ </tr>
73
+ </thead>
74
+ <tbody>
75
+ <tr>
76
+ <td>appearanceConfig</td>
77
+ <td>`[key: string]: number | string`</td>
78
+ <td>`{size: 's', fill: 'surfacePrimary'}`</td>
79
+ </tr>
80
+ </tbody>
81
+ </table>
82
+
83
+
@@ -0,0 +1,202 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title="Hooks / useDevicePropsGenerator" />
4
+
5
+ # `useDevicePropsGenerator`
6
+ Хук позволяет автоматически получать значения `props` или `appearance`, которые соответствуют `viewport` пользователя, а также преобразовывать их в `CSS‑классы`.
7
+
8
+ Важно учитывать приоритет при котором будут применяться стили:
9
+
10
+ 1. Сначала используется значение из props, соответствующее текущему устройству
11
+ - Передали
12
+
13
+ ```jsx
14
+ <Component textAlignMobile="center" />
15
+ ```
16
+
17
+ - Получили
18
+ ```jsx
19
+ <Component style={{ textAlign: 'center' }} />
20
+ ```
21
+
22
+ 2. Если такого нет — используется значение из props без учёта устройства
23
+ - Передали
24
+
25
+ ```jsx
26
+ <Component textAlign="right" />
27
+ ```
28
+
29
+ - Получили
30
+
31
+ ```jsx
32
+ <Component style={{ textAlign: 'right' }} />
33
+ ```
34
+
35
+ 3. Если и его нет — берётся значение из appearance-конфига для текущего устройства
36
+
37
+ - Передали
38
+
39
+ ```js
40
+ {
41
+ textAlignMobile: 'left'
42
+ }
43
+ ```
44
+
45
+ - Получили
46
+
47
+ ```jsx
48
+ <Component style={{ textAlign: 'left' }} />
49
+ ```
50
+
51
+ 4. И в последнюю очередь — значение из appearance-конфига без учёта устройства
52
+
53
+ - Передали
54
+ ```jsx
55
+ textAlign: 'justify'
56
+ ```
57
+
58
+ - Получили
59
+ ```jsx
60
+ <Component style={{ textAlign: 'justify' }} />
61
+ ```
62
+
63
+ ## Использование
64
+
65
+ 1. При создании компонента, можно опционально задать componentConfig, который содержит все appearance для данного компонента и позволяет задать новые appearance извне
66
+
67
+ ```js
68
+ const componentConfig: ComponentConfig = {
69
+ appearance: componentAppearance,
70
+ setAppearance: (appearanceConfig) => {
71
+ componentConfig.appearance = appearanceConfig
72
+ },
73
+ }
74
+ ```
75
+
76
+ 2. Для того чтобы передавать несколько appearance в одной строке, например:
77
+ ```jsx
78
+ <Component appearance='errorPrimary sizeM' />
79
+ ```
80
+
81
+ где `errorPrimary` это
82
+ ```js
83
+ {
84
+ fill: 'errorTertiary',
85
+ }
86
+ ```
87
+
88
+ а `sizeM` это
89
+ ```ts
90
+ {
91
+ size: 'm',
92
+ }
93
+ ```
94
+
95
+ Используем `useAppearanceConfig`
96
+ ```js
97
+ const { appearanceConfig } = useAppearanceConfig(
98
+ appearance,
99
+ componentConfig,
100
+ isDisabled,
101
+ )
102
+ ```
103
+ Которому передается созданный ранее `componentConfig` и `appearance`, его результатом будет единый объект со свойствами из разных appearance
104
+
105
+ ```js
106
+ {
107
+ fill: 'errorTertiary',
108
+ size: "m",
109
+ }
110
+ ```
111
+
112
+ 3. Используем useDevicePropsGenerator, который принимает 2 параметра
113
+
114
+ <table>
115
+ <thead>
116
+ <tr>
117
+ <th>Название</th>
118
+ <th>Обязательный</th>
119
+ <th>Тип</th>
120
+ <th>Значение</th>
121
+ <th>Описание</th>
122
+ </tr>
123
+ </thead>
124
+ <tbody>
125
+ <tr>
126
+ <td>componentProps</td>
127
+ <td>Да</td>
128
+ <td>`[key: string]: number | string`</td>
129
+ <td>errorTertiary</td>
130
+ <td>Пропсы компонента</td>
131
+ </tr>
132
+ <tr>
133
+ <td>appearanceConfig</td>
134
+ <td>Нет</td>
135
+ <td>`[key: string]: number | string`</td>
136
+ <td>
137
+ appearanceConfig[propsKey]
138
+ </td>
139
+ <td>Объект из appearance</td>
140
+ </tr>
141
+ </tbody>
142
+ </table>
143
+
144
+
145
+ Из propsGenerator получаем переменные со строками, которые соответствуют appearance переданными в хук. Если указать просто `fill`, то получим `errorTertiary`,
146
+ если укажем `fillClass` то получим `error-tertiary`, поэтому везде в приведенном ниже примере указан суффикс `Class`.
147
+
148
+ ```js
149
+ const propsGenerator = useDevicePropsGenerator(props, appearanceConfig)
150
+
151
+ const {
152
+ fillClass,
153
+ sizeClass,
154
+ } = propsGenerator
155
+ ```
156
+
157
+ 4. Применяем стили к компоненту. Важно учитывать, если в названии класса указывается сначала название компонента, это означает что он ссылается на стили,
158
+ которые определены внутри директории этого компонента `../Component/css`
159
+
160
+ ```jsx
161
+ 'textarea__input'
162
+ ```
163
+
164
+ Если в названии класса нет название компонента, это означает что ссылаемся на глобальный класс, который определен `src/styles`
165
+ ```jsx
166
+ `fill_${fillClass}`
167
+ ```
168
+
169
+ ```jsx
170
+ <textarea
171
+ className={clsx(
172
+ 'textarea__input',
173
+ fillClass && `fill_${fillClass}`,
174
+ sizeClass && `size_${sizeClass}`,
175
+ )}
176
+ />
177
+ ```
178
+
179
+ К примеру fill, будет отображаться в браузере как `fill_error-tertiary`.
180
+
181
+
182
+ 6. Чтобы применить стили в зависимости от `viewPort`, для этого нужно указать в `appearance` суффикс `Mobile` или `Desktop` или `Tablet`
183
+
184
+ ```js
185
+ {
186
+ sizeMobile: 'm',
187
+ textSizeMobile: 'm',
188
+ }
189
+ ```
190
+
191
+ Или напрямую при использовании компонента
192
+
193
+ ```js
194
+ <Component sizeMobile="m"/>
195
+ ```
196
+
197
+ Всего доступны 3 типа размеров
198
+ 1. Mobile (от `240px` до `768px`)
199
+ 2. Tablet (от `768px` до `960px`)
200
+ 3. Desktop (от `960px` до `1920px`)
201
+
202
+ Подробнее об этом можно узнать в `src/context/UIContext.tsx`, ознакомиться с размерами для (`Mobile`, `Tablet`, `Desktop`) можно в `../../hooks/useMediaQueries/mediaQueries.json`
@@ -0,0 +1,80 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title="Hooks / useMediaQueries" />
4
+
5
+ # `useMediaQueries`
6
+ Предназначен для определения и выполнения кода согласно значению `viewport`, список доступных `viewport` находится в файле `../../hooks/useMediaQueries/mediaQueries.json`
7
+
8
+ ## API
9
+
10
+ ### Параметры
11
+
12
+ <table>
13
+ <thead>
14
+ <tr>
15
+ <th>Название</th>
16
+ <th>Тип</th>
17
+ <th>Значение</th>
18
+ <th>Описание</th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ <tr>
23
+ <td>userDevice</td>
24
+ <td>UserDeviceState</td>
25
+ <td>`{}`</td>
26
+ <td>`Boolean` флаги устройства пользователя</td>
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+
31
+ ### Возвращает объект
32
+
33
+ `deviceTypes` - который является объектом в котором находятся все `boolean` флаги
34
+
35
+ <table>
36
+ <thead>
37
+ <tr>
38
+ <th>Флаг</th>
39
+ <th>Диапазон(px)</th>
40
+ </tr>
41
+ </thead>
42
+ <tbody>
43
+ <tr>
44
+ <td>`isMobile`</td>
45
+ <td>`≥ 240px и ≤ 768px`</td>
46
+ </tr>
47
+ <tr>
48
+ <td>`isMobileHuge`</td>
49
+ <td>`≥ 640px и ≤ 768px`</td>
50
+ </tr>
51
+ <tr>
52
+ <td>`isTablet`</td>
53
+ <td>`≥ 768px и ≤ 960px`</td>
54
+ </tr>
55
+ <tr>
56
+ <td>`isDesktop`</td>
57
+ <td>`≥ 960px и ≤ 1920px`</td>
58
+ </tr>
59
+ <tr>
60
+ <td>`isDesktopMega`</td>
61
+ <td>`≥ 2560px`</td>
62
+ </tr>
63
+ </tbody>
64
+ </table>
65
+
66
+ ### Использование
67
+
68
+ ```jsx
69
+ const Component = () => {
70
+ const { isMobile, isTablet, isDesktop } = useMediaQueries()
71
+
72
+ return (
73
+ <div>
74
+ {isMobile && <p>isMobile</p>}
75
+ {isTablet && <p>isTablet</p>}
76
+ {isDesktop && <p>isDesktop</p>}
77
+ </div>
78
+ )
79
+ }
80
+ ```
@@ -0,0 +1,150 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title="Hooks / useStyles" />
4
+
5
+ # `useStyles`
6
+
7
+ Хук конвертирует props компонента в inline стили.
8
+
9
+ Важно учитывать приоритет при котором будут применяться стили:
10
+
11
+ 1. Сначала используется значение из props, соответствующее текущему устройству
12
+ - Передали
13
+
14
+ ```jsx
15
+ <Component textAlignMobile="center" />
16
+ ```
17
+
18
+ - Получили
19
+ ```jsx
20
+ <Component style={{ textAlign: 'center' }} />
21
+ ```
22
+
23
+ 2. Если такого нет — используется значение из props без учёта устройства
24
+ - Передали
25
+
26
+ ```jsx
27
+ <Component textAlign="right" />
28
+ ```
29
+
30
+ - Получили
31
+
32
+ ```jsx
33
+ <Component style={{ textAlign: 'right' }} />
34
+ ```
35
+
36
+ 3. Если и его нет — берётся значение из appearance-конфига для текущего устройства
37
+
38
+ - Передали
39
+
40
+ ```js
41
+ {
42
+ textAlignMobile: 'left'
43
+ }
44
+ ```
45
+
46
+ - Получили
47
+
48
+ ```jsx
49
+ <Component style={{ textAlign: 'left' }} />
50
+ ```
51
+
52
+ 4. И в последнюю очередь — значение из appearance-конфига без учёта устройства
53
+
54
+ - Передали
55
+ ```jsx
56
+ textAlign: 'justify'
57
+ ```
58
+
59
+ - Получили
60
+ ```jsx
61
+ <Component style={{ textAlign: 'justify' }} />
62
+ ```
63
+
64
+ ## API
65
+
66
+ ### Параметры
67
+
68
+ <table>
69
+ <thead>
70
+ <tr>
71
+ <th>Название</th>
72
+ <th>Тип</th>
73
+ <th>Значение</th>
74
+ <th>Описание</th>
75
+ </tr>
76
+ </thead>
77
+ <tbody>
78
+ <tr>
79
+ <td>props</td>
80
+ <td>StyleAttributes</td>
81
+ <td>background</td>
82
+ <td>Props, могут быть любые inline-стили</td>
83
+ </tr>
84
+ </tbody>
85
+ </table>
86
+
87
+
88
+ ### Использование
89
+
90
+ Создаем ui компонент и используем хук
91
+
92
+ ```js
93
+ const { dot: dotStyles, styles: badgeStyles } = useStyles(props)
94
+ ```
95
+
96
+ Залогируем данные
97
+ ```js
98
+ console.log('dotStyles', dotStyles)
99
+ console.log('badgeStyles', badgeStyles)
100
+ ```
101
+
102
+ Добавим в JSX-разметку компонента стили
103
+
104
+ ```jsx
105
+ <div style={badgeStyles}>
106
+ {dot && (
107
+ <div style={dotStyles}>
108
+ текст
109
+ </div>
110
+ )}
111
+ </div>
112
+ ```
113
+
114
+ При использовании прокидываем стили
115
+
116
+ ```jsx
117
+ <Badge
118
+ marginDotMobile="10px"
119
+ paddingStylesMobile="10px"
120
+ dot={true}
121
+ {...args}
122
+ />
123
+ ```
124
+
125
+ Почему именно такое название пропсов?
126
+ Пропсы соответствуют такой структуре
127
+
128
+ <table>
129
+ <thead>
130
+ <tr>
131
+ <th>Во первых (margin)</th>
132
+ <th>Во вторых (Dot)</th>
133
+ <th>В третьих (Mobile)</th>
134
+ </tr>
135
+ </thead>
136
+ <tbody>
137
+ <tr>
138
+ <td>Указывается название стиля, которое будет применено (margin например)</td>
139
+ <td>Название к которому будет применяться стиль, в нашем случае это Dot</td>
140
+ <td>Для какого размера экрана принимать данные стили</td>
141
+ </tr>
142
+ </tbody>
143
+ </table>
144
+
145
+ И получим на выходе в логах, для мобильного разрешения экрана.
146
+
147
+ ```js
148
+ dotStyles - {margin: '10px'}
149
+ badgeStyles - {padding: '10px'}
150
+ ```
@@ -0,0 +1,21 @@
1
+ import type { GeneratedId, SimpleCallback } from '@itcase/types-core';
2
+ import type { CreatedNotification, Notification, NotificationsProviderProps } from './Notifications.interface';
3
+ declare function NotificationsProvider(props: NotificationsProviderProps): import("react/jsx-runtime").JSX.Element;
4
+ declare function useNotifications(): Notification[];
5
+ declare function useNotificationsAPI(): {
6
+ hideNotifications: (targetId?: GeneratedId) => void;
7
+ showNotification: (notification: string | CreatedNotification, onClose?: SimpleCallback) => void;
8
+ notificationStatuses: {
9
+ readonly error: "error";
10
+ readonly info: "info";
11
+ readonly success: "success";
12
+ readonly warning: "warning";
13
+ };
14
+ };
15
+ declare const statusToAppearanceList: {
16
+ readonly error: "errorPrimary sizeS solid rounded";
17
+ readonly info: "infoPrimary sizeS solid rounded";
18
+ readonly success: "successPrimary sizeS solid rounded";
19
+ readonly warning: "warningPrimary sizeS solid rounded";
20
+ };
21
+ export { NotificationsProvider, statusToAppearanceList, useNotifications, useNotificationsAPI, };