@snack-uikit/fields 0.51.13 → 0.51.15

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## <small>0.51.15 (2026-01-19)</small>
7
+
8
+ * chore(FF-6693): migrate tests from TestCafe to Playwright ([f32aff8](https://github.com/cloud-ru-tech/snack-uikit/commit/f32aff8))
9
+ * chore(FF-6693): tune test configs ([d194f4d](https://github.com/cloud-ru-tech/snack-uikit/commit/d194f4d))
10
+
11
+
12
+
13
+
14
+
15
+ ## <small>0.51.14 (2025-12-23)</small>
16
+
17
+ * fix(PDS-3335): FieldSelect disabled tag background-color ([7b207c0](https://github.com/cloud-ru-tech/snack-uikit/commit/7b207c0))
18
+ * docs(FF-7788): readme update ([e3142b8](https://github.com/cloud-ru-tech/snack-uikit/commit/e3142b8))
19
+
20
+
21
+
22
+
23
+
6
24
  ## <small>0.51.13 (2025-12-06)</small>
7
25
 
8
26
  * chore(FF-7187): update typescript to 5.9.3 & some eslint deps ([b84df17](https://github.com/cloud-ru-tech/snack-uikit/commit/b84df17))
package/README.md CHANGED
@@ -12,7 +12,353 @@
12
12
 
13
13
  [Changelog](./CHANGELOG.md)
14
14
 
15
- Поля для форм
15
+ ## Description
16
+
17
+ - Пакет `@snack-uikit/fields` предоставляет набор унифицированных полей для форм: текстовое и многострочное поле, селект, поля для даты и времени, числовые поля со степпером и слайдером, поле выбора цвета и обёртку-декоратор для произвольного контрола.
18
+ - Компоненты оформлены в едином визуальном стиле Snack UI Kit и поддерживают общие возможности: размеры (`size`), состояния `disabled`/`readonly`, подписи (`label`, `caption`, `hint`), отображение статуса валидации (`validationState`) и кнопку копирования значения (там, где это релевантно).
19
+ - Поля работают в контролируемом режиме, дружелюбны к e2e‑тестам (для `FieldSelect` дополнительно доступен Snack API для чтения/установки значения) и подходят для построения сложных форм с произвольной валидацией.
20
+
21
+ ## FieldText
22
+
23
+ ### Description
24
+
25
+ - `FieldText` — однострочное текстовое поле для ввода коротких значений (логин, заголовок, ID и т.п.) с поддержкой ограничений по длине и базовой валидацией.
26
+ - Поддерживает иконку‑префикс, произвольный префикс/постфикс и встроенную кнопку (`button`) с выпадающим списком действий и поиском по ним — удобно для быстрых операций над введённым значением.
27
+ - Может показывать кнопку очистки и кнопку копирования, работать в режимах `readonly`/`disabled`, а также управляться извне через контролируемые `value`/`onChange`.
28
+ - Figma: [`FieldText`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
29
+
30
+ ### Example
31
+
32
+ ```tsx
33
+ import { useState } from 'react';
34
+ import { FieldText } from '@snack-uikit/fields';
35
+
36
+ export function FieldTextExample() {
37
+ const [value, setValue] = useState('');
38
+
39
+ return (
40
+ <FieldText
41
+ id='field-text'
42
+ label='Label text'
43
+ placeholder='Placeholder'
44
+ value={value}
45
+ onChange={setValue}
46
+ showCopyButton
47
+ hint='Hint text'
48
+ validationState='default'
49
+ size='s'
50
+ />
51
+ );
52
+ }
53
+ ```
54
+
55
+ ## FieldTextArea
56
+
57
+ ### Description
58
+
59
+ - `FieldTextArea` — многострочное поле ввода для длинных текстов (комментарии, описания, адреса) с авто‑изменением высоты или ручным ресайзом.
60
+ - Поддерживает управление минимальным и максимальным количеством строк, ограничение по длине, кнопку очистки и копирования, а также слот `footer` для размещения вспомогательных действий (кнопок, тулбаров).
61
+ - Подходит для сценариев, где важно сохранить общий паттерн полей формы и при этом дать пользователю достаточно места для ввода.
62
+ - Figma: [`FieldTextArea`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-1.1.0?node-id=402%3A202402&mode=design).
63
+
64
+ ### Example
65
+
66
+ ```tsx
67
+ import { useState } from 'react';
68
+ import { FieldTextArea } from '@snack-uikit/fields';
69
+
70
+ export function FieldTextAreaExample() {
71
+ const [value, setValue] = useState('');
72
+
73
+ return (
74
+ <FieldTextArea
75
+ id='field-textarea'
76
+ label='Comment'
77
+ placeholder='Введите комментарий'
78
+ value={value}
79
+ onChange={setValue}
80
+ minRows={3}
81
+ maxRows={8}
82
+ resizable={false}
83
+ showCopyButton
84
+ hint='Подсказка по вводу'
85
+ size='s'
86
+ />
87
+ );
88
+ }
89
+ ```
90
+
91
+ ## FieldSelect
92
+
93
+ ### Description
94
+
95
+ - `FieldSelect` — поле выбора значения из списка с поддержкой одиночного (`selection="single"`) и множественного (`selection="multiple"`) выбора.
96
+ - Позволяет отображать группы, иконки, теги и произвольный контент в опциях, а также использовать поиск (включая нечеткий), виртуализацию большого списка и готовые состояния «нет данных», «нет результатов», «ошибка».
97
+ - Компонент работает в контролируемом режиме, поддерживает кнопку очистки, кнопку копирования для `readonly`‑режима и единый набор полевых атрибутов (`label`, `hint`, `validationState`, размеры и т.д.).
98
+ - Figma: [`FieldSelect`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
99
+
100
+ ### Example
101
+
102
+ ```tsx
103
+ import { useState } from 'react';
104
+ import { FieldSelect } from '@snack-uikit/fields';
105
+
106
+ const OPTIONS = [
107
+ { value: 'op1', option: 'Option 1' },
108
+ { value: 'op2', option: 'Option 2' },
109
+ ];
110
+
111
+ export function FieldSelectExample() {
112
+ const [value, setValue] = useState<string | undefined>();
113
+
114
+ return (
115
+ <FieldSelect
116
+ id='field-select'
117
+ label='Select option'
118
+ placeholder='Выберите значение'
119
+ selection='single'
120
+ options={OPTIONS}
121
+ value={value}
122
+ onChange={setValue}
123
+ searchable
124
+ showCopyButton
125
+ size='s'
126
+ />
127
+ );
128
+ }
129
+ ```
130
+
131
+ ## FieldSecure
132
+
133
+ ### Description
134
+
135
+ - `FieldSecure` — поле для ввода чувствительных данных (пароли, токены, ключи), в котором значение может быть замаскировано и раскрыто по требованию.
136
+ - Поддерживает кнопку копирования, ограничение по длине, асинхронную подгрузку значения по требованию (`asyncValueGetter`) и стандартные для полей состояния (`validationState`, `disabled`, `readonly`).
137
+ - Подходит для сценариев, где важно не показывать секреты постоянно, но при этом дать пользователю возможность временно посмотреть или загрузить значение.
138
+ - Figma: [`FieldSecure`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
139
+
140
+ ### Example
141
+
142
+ ```tsx
143
+ import { useState } from 'react';
144
+ import { FieldSecure } from '@snack-uikit/fields';
145
+
146
+ export function FieldSecureExample() {
147
+ const [value, setValue] = useState('');
148
+ const [hidden, setHidden] = useState(true);
149
+
150
+ return (
151
+ <FieldSecure
152
+ id='field-secure'
153
+ label='Password'
154
+ placeholder='Введите пароль'
155
+ value={value}
156
+ onChange={setValue}
157
+ hidden={hidden}
158
+ onHiddenChange={setHidden}
159
+ showCopyButton
160
+ size='s'
161
+ />
162
+ );
163
+ }
164
+ ```
165
+
166
+ ## FieldDate
167
+
168
+ ### Description
169
+
170
+ - `FieldDate` — поле ввода даты или даты‑времени с выпадающим календарём и поддержкой различных режимов (`mode="date"` или `mode="date-time"`).
171
+ - Позволяет кастомизировать доступность и оформление дней через `buildCellProps`, подсвечивать невалидные даты и управлять подсказками/ошибками в зависимости от выбранного значения.
172
+ - Удобно для выбора дат в формах фильтрации, создания/редактирования сущностей и любых сценариев, где требуется компактный date‑picker, встроенный в поле.
173
+ - Figma: [`FieldDate`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-1.1.0?node-id=402%3A202402&mode=design).
174
+
175
+ ### Example
176
+
177
+ ```tsx
178
+ import { useState } from 'react';
179
+ import { FieldDate } from '@snack-uikit/fields';
180
+
181
+ export function FieldDateExample() {
182
+ const [value, setValue] = useState<Date | undefined>();
183
+
184
+ return (
185
+ <FieldDate
186
+ id='field-date'
187
+ label='Дата'
188
+ mode='date'
189
+ value={value}
190
+ onChange={setValue}
191
+ showCopyButton
192
+ showClearButton
193
+ hint='Выберите подходящую дату'
194
+ size='s'
195
+ />
196
+ );
197
+ }
198
+ ```
199
+
200
+ ## FieldTime
201
+
202
+ ### Description
203
+
204
+ - `FieldTime` — поле для ввода времени с выпадающим time‑picker’ом и возможностью управлять показом секунд.
205
+ - Поддерживает копирование значения, очистку, контроль состояний `disabled`/`readonly`, а также стандартные полевые подписи и размеры.
206
+ - Используется там, где нужно задать время отдельно от даты или в дополнение к полю `FieldDate`.
207
+ - Figma: [`FieldTime`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-1.1.0?node-id=402%3A202402&mode=design).
208
+
209
+ ### Example
210
+
211
+ ```tsx
212
+ import { useState } from 'react';
213
+ import { FieldTime } from '@snack-uikit/fields';
214
+
215
+ export function FieldTimeExample() {
216
+ const [value, setValue] = useState<FieldTime['props']['value']>();
217
+
218
+ return (
219
+ <FieldTime
220
+ id='field-time'
221
+ label='Время'
222
+ value={value}
223
+ onChange={setValue}
224
+ showSeconds
225
+ showCopyButton
226
+ showClearButton
227
+ size='s'
228
+ />
229
+ );
230
+ }
231
+ ```
232
+
233
+ ## FieldSlider
234
+
235
+ ### Description
236
+
237
+ - `FieldSlider` — числовое поле с линейкой и ползунком, позволяющее выбирать значение или диапазон значений внутри заданных границ.
238
+ - Поддерживает линейные и нелинейные метки (`marks`), работу в режимах одиночного и диапазонного значения (`range`), форматирование отображаемого значения и настройку шагов.
239
+ - Подходит для выбора диапазонов и настроек (например, объём ресурса или проценты), при этом остаётся единым полем формы со всеми стандартными атрибутами (`label`, `hint`, `validationState`).
240
+ - Figma: [`FieldSlider`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
241
+
242
+ ### Example
243
+
244
+ ```tsx
245
+ import { useState } from 'react';
246
+ import { FieldSlider } from '@snack-uikit/fields';
247
+
248
+ export function FieldSliderExample() {
249
+ const [value, setValue] = useState(10);
250
+
251
+ return (
252
+ <FieldSlider
253
+ id='field-slider'
254
+ label='Диапазон'
255
+ value={value}
256
+ onChange={setValue}
257
+ min={10}
258
+ max={50}
259
+ step={1}
260
+ showScaleBar
261
+ size='s'
262
+ />
263
+ );
264
+ }
265
+ ```
266
+
267
+ ## FieldStepper
268
+
269
+ ### Description
270
+
271
+ - `FieldStepper` — числовое поле со стрелками увеличения/уменьшения значения, удобно для небольших целых чисел (количество, шаги, приоритеты).
272
+ - Компонент поддерживает задание минимального/максимального значения, шага, отображение подсказок над кнопками и режим, разрешающий выходить за пределы мин/макс при вводе с клавиатуры (`allowMoreThanLimits`).
273
+ - Позволяет использовать префикс/постфикс и стандартные текстовые подписи, сохраняя привычный для поля UX.
274
+ - Figma: [`FieldStepper`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
275
+
276
+ ### Example
277
+
278
+ ```tsx
279
+ import { useState } from 'react';
280
+ import { FieldStepper } from '@snack-uikit/fields';
281
+
282
+ export function FieldStepperExample() {
283
+ const [value, setValue] = useState(1);
284
+
285
+ return (
286
+ <FieldStepper
287
+ id='field-stepper'
288
+ label='Количество'
289
+ value={value}
290
+ onChange={setValue}
291
+ min={0}
292
+ max={10}
293
+ step={1}
294
+ size='s'
295
+ />
296
+ );
297
+ }
298
+ ```
299
+
300
+ ## FieldColor
301
+
302
+ ### Description
303
+
304
+ - `FieldColor` — поле выбора цвета с интегрированным color‑picker’ом, в котором значение отображается и редактируется в текстовом виде.
305
+ - Поддерживает выбор цвета с альфаканалом (`withAlpha`), авто‑применение изменений или применение по кнопке, а также кнопку копирования, очистку и стандартные полевые подписи.
306
+ - Используется для настройки цветовых параметров (брендинг, темы, маркеры) в тех же формах, где применяются остальные поля пакета.
307
+ - Figma: [`FieldColor`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
308
+
309
+ ### Example
310
+
311
+ ```tsx
312
+ import { useState } from 'react';
313
+ import { FieldColor } from '@snack-uikit/fields';
314
+
315
+ export function FieldColorExample() {
316
+ const [value, setValue] = useState('#794ed3');
317
+
318
+ return (
319
+ <FieldColor
320
+ id='field-color'
321
+ label='Цвет'
322
+ placeholder='#f5f5f5'
323
+ value={value}
324
+ onChange={setValue}
325
+ withAlpha
326
+ showCopyButton
327
+ showClearButton
328
+ size='s'
329
+ />
330
+ );
331
+ }
332
+ ```
333
+
334
+ ## FieldDecorator
335
+
336
+ ### Description
337
+
338
+ - `FieldDecorator` — обёртка‑декоратор для произвольного контрола, которая добавляет к нему общий для всех полей визуальный каркас: label, caption, hint, индикацию ошибки и состояния `disabled`/`readonly`.
339
+ - Позволяет показывать счётчик длины (`length`), размещать всплывающую подсказку у лейбла и управлять размером компонента, не навязывая конкретный тип поля ввода.
340
+ - Удобен, когда в форме используется нестандартный или составной контрол, который всё равно должен выглядеть и вести себя как поле ввода из дизайн‑системы.
341
+ - Figma: [`FieldDecorator`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-2.0.0?type=design&node-id=41%3A38747&mode=design&t=8dDi5X6Lfgs6Cxji-1).
342
+
343
+ ### Example
344
+
345
+ ```tsx
346
+ import { FieldDecorator } from '@snack-uikit/fields';
347
+
348
+ export function FieldDecoratorExample() {
349
+ return (
350
+ <FieldDecorator
351
+ label='Custom control'
352
+ caption='Дополнительная подпись'
353
+ hint='Подсказка по полю'
354
+ size='s'
355
+ >
356
+ {/* Любой пользовательский контент, который должен выглядеть как поле формы */}
357
+ <div>Custom content</div>
358
+ </FieldDecorator>
359
+ );
360
+ }
361
+ ```
16
362
 
17
363
  ## Snack API для работы с внутренним стейтом
18
364
 
@@ -278,7 +278,9 @@ exports.FieldSelectMultiple = (0, react_1.forwardRef)((props, ref) => {
278
278
  tabIndex: -1,
279
279
  label: selectedOptionFormatter(option),
280
280
  appearance: (_a = option.appearance) !== null && _a !== void 0 ? _a : 'neutral',
281
- onDelete: !option.disabled && !disabled && !readonly ? handleItemDelete(option) : undefined
281
+ onDelete: !option.disabled && !disabled && !readonly ? handleItemDelete(option) : undefined,
282
+ className: styles_module_scss_1.default.tag,
283
+ "data-disabled": disabled || undefined
282
284
  }, option.id);
283
285
  }), (0, jsx_runtime_1.jsx)("div", {
284
286
  className: styles_module_scss_1.default.inputWrapper,
@@ -53,6 +53,12 @@
53
53
  .tagContainer[data-size=l] .contentWrapper{
54
54
  gap:var(--space-fields-single-line-container-l-gap, 8px);
55
55
  }
56
+ .tagContainer[data-disabled] .tag[data-disabled]{
57
+ background-color:var(--sys-neutral-decor-default, #dde0ea);
58
+ }
59
+ .tagContainer[data-disabled] .tag[data-disabled] *{
60
+ background-color:inherit;
61
+ }
56
62
 
57
63
  .container{
58
64
  position:relative;
@@ -154,7 +154,7 @@ export const FieldSelectMultiple = forwardRef((props, ref) => {
154
154
  return (_jsx(FieldContainerPrivate, { className: cn(styles.container, styles.tagContainer), validationState: fieldValidationState, disabled: disabled, readonly: readonly, focused: open, variant: 'single-line-container', inputRef: localRef, size: size, prefix: (prefixIcon || prefixSettings.show) && (_jsxs(_Fragment, { children: [prefixIcon, prefixSettings.show && prefixSettings.render({ key: prefixSettings.id })] })), children: _jsxs(_Fragment, { children: [_jsxs("div", { className: styles.contentWrapper, ref: contentRef, children: [selectedItems &&
155
155
  selectedItems.map(option => {
156
156
  var _a;
157
- return (_jsx(Tag, { size: size === 'l' ? 's' : 'xs', tabIndex: -1, label: selectedOptionFormatter(option), appearance: (_a = option.appearance) !== null && _a !== void 0 ? _a : 'neutral', onDelete: !option.disabled && !disabled && !readonly ? handleItemDelete(option) : undefined }, option.id));
157
+ return (_jsx(Tag, { size: size === 'l' ? 's' : 'xs', tabIndex: -1, label: selectedOptionFormatter(option), appearance: (_a = option.appearance) !== null && _a !== void 0 ? _a : 'neutral', onDelete: !option.disabled && !disabled && !readonly ? handleItemDelete(option) : undefined, className: styles.tag, "data-disabled": disabled || undefined }, option.id));
158
158
  }), _jsx("div", { className: styles.inputWrapper, style: {
159
159
  minWidth: value
160
160
  ? Math.min((_b = (_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : BASE_MIN_WIDTH, (_d = (_c = inputPlugRef.current) === null || _c === void 0 ? void 0 : _c.clientWidth) !== null && _d !== void 0 ? _d : BASE_MIN_WIDTH)
@@ -53,6 +53,12 @@
53
53
  .tagContainer[data-size=l] .contentWrapper{
54
54
  gap:var(--space-fields-single-line-container-l-gap, 8px);
55
55
  }
56
+ .tagContainer[data-disabled] .tag[data-disabled]{
57
+ background-color:var(--sys-neutral-decor-default, #dde0ea);
58
+ }
59
+ .tagContainer[data-disabled] .tag[data-disabled] *{
60
+ background-color:inherit;
61
+ }
56
62
 
57
63
  .container{
58
64
  position:relative;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Fields",
7
- "version": "0.51.13",
7
+ "version": "0.51.15",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -36,21 +36,21 @@
36
36
  "license": "Apache-2.0",
37
37
  "scripts": {},
38
38
  "dependencies": {
39
- "@snack-uikit/button": "0.19.16",
40
- "@snack-uikit/calendar": "0.13.12",
41
- "@snack-uikit/color-picker": "0.3.50",
42
- "@snack-uikit/divider": "3.2.10",
43
- "@snack-uikit/dropdown": "0.5.3",
44
- "@snack-uikit/icons": "0.27.4",
45
- "@snack-uikit/input-private": "4.8.5",
46
- "@snack-uikit/list": "0.32.11",
47
- "@snack-uikit/scroll": "0.10.5",
48
- "@snack-uikit/skeleton": "0.6.9",
49
- "@snack-uikit/slider": "0.3.30",
50
- "@snack-uikit/tag": "0.15.12",
51
- "@snack-uikit/tooltip": "0.18.7",
52
- "@snack-uikit/truncate-string": "0.7.6",
53
- "@snack-uikit/utils": "4.0.0",
39
+ "@snack-uikit/button": "0.19.17",
40
+ "@snack-uikit/calendar": "0.13.13",
41
+ "@snack-uikit/color-picker": "0.3.51",
42
+ "@snack-uikit/divider": "3.2.11",
43
+ "@snack-uikit/dropdown": "0.5.4",
44
+ "@snack-uikit/icons": "0.27.5",
45
+ "@snack-uikit/input-private": "4.8.6",
46
+ "@snack-uikit/list": "0.32.12",
47
+ "@snack-uikit/scroll": "0.10.6",
48
+ "@snack-uikit/skeleton": "0.6.10",
49
+ "@snack-uikit/slider": "0.3.31",
50
+ "@snack-uikit/tag": "0.15.13",
51
+ "@snack-uikit/tooltip": "0.18.8",
52
+ "@snack-uikit/truncate-string": "0.7.7",
53
+ "@snack-uikit/utils": "4.0.1",
54
54
  "classnames": "2.5.1",
55
55
  "copy-to-clipboard": "3.3.3",
56
56
  "decimal.js": "10.6.0",
@@ -66,5 +66,5 @@
66
66
  "peerDependencies": {
67
67
  "@snack-uikit/locale": "*"
68
68
  },
69
- "gitHead": "78bb9c9dd3a49941fa39bde71d838e9bf036e65d"
69
+ "gitHead": "84371bbf91915f650a852df849cd71d416c5b7b2"
70
70
  }
@@ -252,6 +252,8 @@ export const FieldSelectMultiple = forwardRef<HTMLInputElement, FieldSelectMulti
252
252
  key={option.id}
253
253
  appearance={option.appearance ?? 'neutral'}
254
254
  onDelete={!option.disabled && !disabled && !readonly ? handleItemDelete(option) : undefined}
255
+ className={styles.tag}
256
+ data-disabled={disabled || undefined}
255
257
  />
256
258
  ))}
257
259
 
@@ -40,6 +40,18 @@ $base-min-width: 4px;
40
40
  }
41
41
  }
42
42
  }
43
+
44
+ &[data-disabled] {
45
+ .tag {
46
+ &[data-disabled] {
47
+ background-color: styles-tokens-fields.simple-var(styles-tokens-fields.$sys-neutral-decor-default);
48
+
49
+ * {
50
+ background-color: inherit;
51
+ }
52
+ }
53
+ }
54
+ }
43
55
  }
44
56
 
45
57
  .container {