@gravity-ui/blog-constructor 5.5.0 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,6 +23,7 @@ unpredictable css rules order in build */
23
23
  display: flex;
24
24
  flex-wrap: wrap;
25
25
  justify-content: flex-start;
26
+ /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
26
27
  align-content: flex-start;
27
28
  position: relative;
28
29
  }
@@ -4,6 +4,7 @@
4
4
  border-radius: var(--bc-border-radius);
5
5
  min-height: 80px;
6
6
  align-content: center;
7
+ /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
7
8
  justify-content: center;
8
9
  flex-direction: column;
9
10
  flex-grow: 1;
@@ -123,7 +123,27 @@ export declare const Header: {
123
123
  };
124
124
  controls: {
125
125
  type: string;
126
- enum: string[];
126
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
127
+ };
128
+ customControlsOptions: {
129
+ type: string;
130
+ additionalProperties: boolean;
131
+ properties: {
132
+ type: {
133
+ type: string;
134
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
135
+ };
136
+ muteButtonShown: {
137
+ type: string;
138
+ };
139
+ positioning: {
140
+ type: string;
141
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
142
+ };
143
+ };
144
+ };
145
+ ariaLabel: {
146
+ type: string;
127
147
  };
128
148
  };
129
149
  } & {
@@ -136,6 +156,10 @@ export declare const Header: {
136
156
  optionName: string;
137
157
  })[];
138
158
  };
159
+ mediaView: {
160
+ type: string;
161
+ enum: string[];
162
+ };
139
163
  backLink: {
140
164
  type: string;
141
165
  required: string[];
@@ -271,7 +295,27 @@ export declare const Header: {
271
295
  };
272
296
  controls: {
273
297
  type: string;
274
- enum: string[];
298
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
299
+ };
300
+ customControlsOptions: {
301
+ type: string;
302
+ additionalProperties: boolean;
303
+ properties: {
304
+ type: {
305
+ type: string;
306
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
307
+ };
308
+ muteButtonShown: {
309
+ type: string;
310
+ };
311
+ positioning: {
312
+ type: string;
313
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
314
+ };
315
+ };
316
+ };
317
+ ariaLabel: {
318
+ type: string;
275
319
  };
276
320
  };
277
321
  };
@@ -388,6 +432,9 @@ export declare const Header: {
388
432
  };
389
433
  })[];
390
434
  };
435
+ ratio: {
436
+ type: string;
437
+ };
391
438
  };
392
439
  } & {
393
440
  optionName: string;
@@ -109,7 +109,27 @@ export declare const Media: {
109
109
  };
110
110
  controls: {
111
111
  type: string;
112
- enum: string[];
112
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
113
+ };
114
+ customControlsOptions: {
115
+ type: string;
116
+ additionalProperties: boolean;
117
+ properties: {
118
+ type: {
119
+ type: string;
120
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
121
+ };
122
+ muteButtonShown: {
123
+ type: string;
124
+ };
125
+ positioning: {
126
+ type: string;
127
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
128
+ };
129
+ };
130
+ };
131
+ ariaLabel: {
132
+ type: string;
113
133
  };
114
134
  };
115
135
  };
@@ -226,6 +246,9 @@ export declare const Media: {
226
246
  };
227
247
  })[];
228
248
  };
249
+ ratio: {
250
+ type: string;
251
+ };
229
252
  paddingTop: {
230
253
  type: string;
231
254
  enum: string[];
@@ -11,7 +11,7 @@ const CustomSwitcher_1 = require("../CustomSwitcher/CustomSwitcher");
11
11
  const b = (0, cn_1.block)('feed-controls');
12
12
  const renderSwitcher = ({ initial, list, defaultLabel }) =>
13
13
  // eslint-disable-next-line react/display-name
14
- ({ onClick, ref }) => (react_1.default.createElement(CustomSwitcher_1.CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick }));
14
+ ({ onClick, ref, onKeyDown, open }) => (react_1.default.createElement(CustomSwitcher_1.CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, open: open }));
15
15
  exports.renderSwitcher = renderSwitcher;
16
16
  const renderFilter = ({ value, ref, onChange, onKeyDown }) => (react_1.default.createElement(uikit_1.TextInput, { controlRef: ref, controlProps: { size: 1 }, value: value, view: "clear", placeholder: (0, i18n_1.i18)(i18n_1.Keyset.Search), onUpdate: onChange, onKeyDown: onKeyDown, className: b('popup-filter') }));
17
17
  exports.renderFilter = renderFilter;
@@ -12,6 +12,17 @@ unpredictable css rules order in build */
12
12
  border-radius: var(--g-border-radius-xl);
13
13
  width: 100%;
14
14
  line-height: 42px;
15
+ text-align: initial;
16
+ font-family: inherit;
17
+ padding: 0;
18
+ margin: 0;
19
+ }
20
+ .bc-feed-custom-switcher__custom-switcher:focus {
21
+ outline: 2px solid var(--g-color-line-focus);
22
+ outline-offset: 0;
23
+ }
24
+ .bc-feed-custom-switcher__custom-switcher:focus:not(:focus-visible) {
25
+ outline: 0;
15
26
  }
16
27
  .bc-feed-custom-switcher__custom-switcher + .yc-popup.yc-popup_open {
17
28
  position: absolute !important;
@@ -8,5 +8,5 @@ export type CustomSwitcherProps = {
8
8
  list: SelectItem[];
9
9
  controlRef: RenderControlParameters['ref'];
10
10
  } & Omit<RenderControlParameters, 'ref'>;
11
- export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, }: CustomSwitcherProps) => React.JSX.Element;
11
+ export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }: CustomSwitcherProps) => React.JSX.Element;
12
12
  export {};
@@ -8,7 +8,7 @@ const DropdownArrow_1 = require("../../../../icons/DropdownArrow");
8
8
  const cn_1 = require("../../../../utils/cn");
9
9
  const b = (0, cn_1.block)('feed-custom-switcher');
10
10
  const ICON_SIZE = 12;
11
- const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) => {
11
+ const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }) => {
12
12
  const itemsNames = (0, react_1.useMemo)(() => {
13
13
  const items = list
14
14
  .filter((item) => initial.includes(item.value))
@@ -16,7 +16,7 @@ const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) =
16
16
  return items.length ? items : [defaultLabel];
17
17
  }, [defaultLabel, initial, list]);
18
18
  const hasCounter = itemsNames.length > 1;
19
- return (react_1.default.createElement("div", { className: b('custom-switcher'), onClick: onClick, ref: controlRef },
19
+ return (react_1.default.createElement("button", { className: b('custom-switcher'), onClick: onClick, ref: controlRef, onKeyDown: onKeyDown, "aria-expanded": open },
20
20
  react_1.default.createElement("div", { className: b('custom-switcher-element', { content: true }) }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
21
21
  hasCounter && (react_1.default.createElement("div", { className: b('custom-switcher-element', { counter: true }) }, itemsNames.length)),
22
22
  react_1.default.createElement("div", { className: b('custom-switcher-element', { arrow: true }) },
@@ -109,10 +109,20 @@ unpredictable css rules order in build */
109
109
  }
110
110
  .yfm_blog a {
111
111
  color: var(--g-color-text-link);
112
+ border-radius: var(--g-focus-border-radius);
112
113
  }
113
114
  .yfm_blog a:hover {
114
115
  color: var(--g-color-text-link-hover);
115
116
  }
117
+ .yfm_blog a:focus {
118
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
119
+ }
120
+ .yfm_blog a:focus:not(:focus-visible) {
121
+ box-shadow: none;
122
+ }
123
+ .yfm_blog a:focus {
124
+ outline: 0;
125
+ }
116
126
  .yfm_blog .yfm-tab:hover, .yfm_blog .yfm-tab:active {
117
127
  color: var(--g-color-text-link-hover);
118
128
  }
@@ -165,7 +175,7 @@ unpredictable css rules order in build */
165
175
  margin: 0 0 12px;
166
176
  }
167
177
  .yfm_constructor.yfm_constructor p strong {
168
- font-weight: 500;
178
+ font-weight: var(--g-text-accent-font-weight);
169
179
  }
170
180
  .yfm_constructor.yfm_constructor_size_s ul,
171
181
  .yfm_constructor.yfm_constructor_size_s ol,
@@ -194,6 +204,7 @@ unpredictable css rules order in build */
194
204
  color: var(--g-color-text-link);
195
205
  text-decoration: none;
196
206
  cursor: pointer;
207
+ border-radius: var(--g-focus-border-radius);
197
208
  }
198
209
  .utilityfocus .yfm_constructor a:focus {
199
210
  outline: 2px solid #ffdb4d;
@@ -202,6 +213,12 @@ unpredictable css rules order in build */
202
213
  --pc-text-header-color: var(--g-color-text-link-hover);
203
214
  color: var(--g-color-text-link-hover);
204
215
  }
216
+ .yfm_constructor a:focus {
217
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
218
+ }
219
+ .yfm_constructor a:focus:not(:focus-visible) {
220
+ box-shadow: none;
221
+ }
205
222
  .yfm_constructor table {
206
223
  color: var(--g-color-text-primary);
207
224
  border: 1px solid var(--g-color-line-generic);
@@ -131,7 +131,27 @@ export declare const schemasForCustom: {
131
131
  };
132
132
  controls: {
133
133
  type: string;
134
- enum: string[];
134
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
135
+ };
136
+ customControlsOptions: {
137
+ type: string;
138
+ additionalProperties: boolean;
139
+ properties: {
140
+ type: {
141
+ type: string;
142
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
143
+ };
144
+ muteButtonShown: {
145
+ type: string;
146
+ };
147
+ positioning: {
148
+ type: string;
149
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
150
+ };
151
+ };
152
+ };
153
+ ariaLabel: {
154
+ type: string;
135
155
  };
136
156
  };
137
157
  } & {
@@ -144,6 +164,10 @@ export declare const schemasForCustom: {
144
164
  optionName: string;
145
165
  })[];
146
166
  };
167
+ mediaView: {
168
+ type: string;
169
+ enum: string[];
170
+ };
147
171
  backLink: {
148
172
  type: string;
149
173
  required: string[];
@@ -279,7 +303,27 @@ export declare const schemasForCustom: {
279
303
  };
280
304
  controls: {
281
305
  type: string;
282
- enum: string[];
306
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
307
+ };
308
+ customControlsOptions: {
309
+ type: string;
310
+ additionalProperties: boolean;
311
+ properties: {
312
+ type: {
313
+ type: string;
314
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
315
+ };
316
+ muteButtonShown: {
317
+ type: string;
318
+ };
319
+ positioning: {
320
+ type: string;
321
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
322
+ };
323
+ };
324
+ };
325
+ ariaLabel: {
326
+ type: string;
283
327
  };
284
328
  };
285
329
  };
@@ -396,6 +440,9 @@ export declare const schemasForCustom: {
396
440
  };
397
441
  })[];
398
442
  };
443
+ ratio: {
444
+ type: string;
445
+ };
399
446
  };
400
447
  } & {
401
448
  optionName: string;
@@ -1226,7 +1273,27 @@ export declare const schemasForCustom: {
1226
1273
  };
1227
1274
  controls: {
1228
1275
  type: string;
1229
- enum: string[];
1276
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
1277
+ };
1278
+ customControlsOptions: {
1279
+ type: string;
1280
+ additionalProperties: boolean;
1281
+ properties: {
1282
+ type: {
1283
+ type: string;
1284
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
1285
+ };
1286
+ muteButtonShown: {
1287
+ type: string;
1288
+ };
1289
+ positioning: {
1290
+ type: string;
1291
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
1292
+ };
1293
+ };
1294
+ };
1295
+ ariaLabel: {
1296
+ type: string;
1230
1297
  };
1231
1298
  };
1232
1299
  };
@@ -1343,6 +1410,9 @@ export declare const schemasForCustom: {
1343
1410
  };
1344
1411
  })[];
1345
1412
  };
1413
+ ratio: {
1414
+ type: string;
1415
+ };
1346
1416
  paddingTop: {
1347
1417
  type: string;
1348
1418
  enum: string[];
@@ -23,6 +23,7 @@ unpredictable css rules order in build */
23
23
  display: flex;
24
24
  flex-wrap: wrap;
25
25
  justify-content: flex-start;
26
+ /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
26
27
  align-content: flex-start;
27
28
  position: relative;
28
29
  }
@@ -4,6 +4,7 @@
4
4
  border-radius: var(--bc-border-radius);
5
5
  min-height: 80px;
6
6
  align-content: center;
7
+ /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
7
8
  justify-content: center;
8
9
  flex-direction: column;
9
10
  flex-grow: 1;
@@ -123,7 +123,27 @@ export declare const Header: {
123
123
  };
124
124
  controls: {
125
125
  type: string;
126
- enum: string[];
126
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
127
+ };
128
+ customControlsOptions: {
129
+ type: string;
130
+ additionalProperties: boolean;
131
+ properties: {
132
+ type: {
133
+ type: string;
134
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
135
+ };
136
+ muteButtonShown: {
137
+ type: string;
138
+ };
139
+ positioning: {
140
+ type: string;
141
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
142
+ };
143
+ };
144
+ };
145
+ ariaLabel: {
146
+ type: string;
127
147
  };
128
148
  };
129
149
  } & {
@@ -136,6 +156,10 @@ export declare const Header: {
136
156
  optionName: string;
137
157
  })[];
138
158
  };
159
+ mediaView: {
160
+ type: string;
161
+ enum: string[];
162
+ };
139
163
  backLink: {
140
164
  type: string;
141
165
  required: string[];
@@ -271,7 +295,27 @@ export declare const Header: {
271
295
  };
272
296
  controls: {
273
297
  type: string;
274
- enum: string[];
298
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
299
+ };
300
+ customControlsOptions: {
301
+ type: string;
302
+ additionalProperties: boolean;
303
+ properties: {
304
+ type: {
305
+ type: string;
306
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
307
+ };
308
+ muteButtonShown: {
309
+ type: string;
310
+ };
311
+ positioning: {
312
+ type: string;
313
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
314
+ };
315
+ };
316
+ };
317
+ ariaLabel: {
318
+ type: string;
275
319
  };
276
320
  };
277
321
  };
@@ -388,6 +432,9 @@ export declare const Header: {
388
432
  };
389
433
  })[];
390
434
  };
435
+ ratio: {
436
+ type: string;
437
+ };
391
438
  };
392
439
  } & {
393
440
  optionName: string;
@@ -109,7 +109,27 @@ export declare const Media: {
109
109
  };
110
110
  controls: {
111
111
  type: string;
112
- enum: string[];
112
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
113
+ };
114
+ customControlsOptions: {
115
+ type: string;
116
+ additionalProperties: boolean;
117
+ properties: {
118
+ type: {
119
+ type: string;
120
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
121
+ };
122
+ muteButtonShown: {
123
+ type: string;
124
+ };
125
+ positioning: {
126
+ type: string;
127
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
128
+ };
129
+ };
130
+ };
131
+ ariaLabel: {
132
+ type: string;
113
133
  };
114
134
  };
115
135
  };
@@ -226,6 +246,9 @@ export declare const Media: {
226
246
  };
227
247
  })[];
228
248
  };
249
+ ratio: {
250
+ type: string;
251
+ };
229
252
  paddingTop: {
230
253
  type: string;
231
254
  enum: string[];
@@ -8,6 +8,6 @@ import './Controls.css';
8
8
  const b = block('feed-controls');
9
9
  export const renderSwitcher = ({ initial, list, defaultLabel }) =>
10
10
  // eslint-disable-next-line react/display-name
11
- ({ onClick, ref }) => (React.createElement(CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick }));
11
+ ({ onClick, ref, onKeyDown, open }) => (React.createElement(CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, open: open }));
12
12
  export const renderFilter = ({ value, ref, onChange, onKeyDown }) => (React.createElement(TextInput, { controlRef: ref, controlProps: { size: 1 }, value: value, view: "clear", placeholder: i18(Keyset.Search), onUpdate: onChange, onKeyDown: onKeyDown, className: b('popup-filter') }));
13
13
  export const renderOption = (option) => (React.createElement(CustomSelectOption, { data: option }));
@@ -12,6 +12,17 @@ unpredictable css rules order in build */
12
12
  border-radius: var(--g-border-radius-xl);
13
13
  width: 100%;
14
14
  line-height: 42px;
15
+ text-align: initial;
16
+ font-family: inherit;
17
+ padding: 0;
18
+ margin: 0;
19
+ }
20
+ .bc-feed-custom-switcher__custom-switcher:focus {
21
+ outline: 2px solid var(--g-color-line-focus);
22
+ outline-offset: 0;
23
+ }
24
+ .bc-feed-custom-switcher__custom-switcher:focus:not(:focus-visible) {
25
+ outline: 0;
15
26
  }
16
27
  .bc-feed-custom-switcher__custom-switcher + .yc-popup.yc-popup_open {
17
28
  position: absolute !important;
@@ -9,5 +9,5 @@ export type CustomSwitcherProps = {
9
9
  list: SelectItem[];
10
10
  controlRef: RenderControlParameters['ref'];
11
11
  } & Omit<RenderControlParameters, 'ref'>;
12
- export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, }: CustomSwitcherProps) => React.JSX.Element;
12
+ export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }: CustomSwitcherProps) => React.JSX.Element;
13
13
  export {};
@@ -5,7 +5,7 @@ import { block } from '../../../../utils/cn';
5
5
  import './CustomSwitcher.css';
6
6
  const b = block('feed-custom-switcher');
7
7
  const ICON_SIZE = 12;
8
- export const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) => {
8
+ export const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }) => {
9
9
  const itemsNames = useMemo(() => {
10
10
  const items = list
11
11
  .filter((item) => initial.includes(item.value))
@@ -13,7 +13,7 @@ export const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRe
13
13
  return items.length ? items : [defaultLabel];
14
14
  }, [defaultLabel, initial, list]);
15
15
  const hasCounter = itemsNames.length > 1;
16
- return (React.createElement("div", { className: b('custom-switcher'), onClick: onClick, ref: controlRef },
16
+ return (React.createElement("button", { className: b('custom-switcher'), onClick: onClick, ref: controlRef, onKeyDown: onKeyDown, "aria-expanded": open },
17
17
  React.createElement("div", { className: b('custom-switcher-element', { content: true }) }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
18
18
  hasCounter && (React.createElement("div", { className: b('custom-switcher-element', { counter: true }) }, itemsNames.length)),
19
19
  React.createElement("div", { className: b('custom-switcher-element', { arrow: true }) },
@@ -109,10 +109,20 @@ unpredictable css rules order in build */
109
109
  }
110
110
  .yfm_blog a {
111
111
  color: var(--g-color-text-link);
112
+ border-radius: var(--g-focus-border-radius);
112
113
  }
113
114
  .yfm_blog a:hover {
114
115
  color: var(--g-color-text-link-hover);
115
116
  }
117
+ .yfm_blog a:focus {
118
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
119
+ }
120
+ .yfm_blog a:focus:not(:focus-visible) {
121
+ box-shadow: none;
122
+ }
123
+ .yfm_blog a:focus {
124
+ outline: 0;
125
+ }
116
126
  .yfm_blog .yfm-tab:hover, .yfm_blog .yfm-tab:active {
117
127
  color: var(--g-color-text-link-hover);
118
128
  }
@@ -165,7 +175,7 @@ unpredictable css rules order in build */
165
175
  margin: 0 0 12px;
166
176
  }
167
177
  .yfm_constructor.yfm_constructor p strong {
168
- font-weight: 500;
178
+ font-weight: var(--g-text-accent-font-weight);
169
179
  }
170
180
  .yfm_constructor.yfm_constructor_size_s ul,
171
181
  .yfm_constructor.yfm_constructor_size_s ol,
@@ -194,6 +204,7 @@ unpredictable css rules order in build */
194
204
  color: var(--g-color-text-link);
195
205
  text-decoration: none;
196
206
  cursor: pointer;
207
+ border-radius: var(--g-focus-border-radius);
197
208
  }
198
209
  .utilityfocus .yfm_constructor a:focus {
199
210
  outline: 2px solid #ffdb4d;
@@ -202,6 +213,12 @@ unpredictable css rules order in build */
202
213
  --pc-text-header-color: var(--g-color-text-link-hover);
203
214
  color: var(--g-color-text-link-hover);
204
215
  }
216
+ .yfm_constructor a:focus {
217
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
218
+ }
219
+ .yfm_constructor a:focus:not(:focus-visible) {
220
+ box-shadow: none;
221
+ }
205
222
  .yfm_constructor table {
206
223
  color: var(--g-color-text-primary);
207
224
  border: 1px solid var(--g-color-line-generic);
@@ -131,7 +131,27 @@ export declare const schemasForCustom: {
131
131
  };
132
132
  controls: {
133
133
  type: string;
134
- enum: string[];
134
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
135
+ };
136
+ customControlsOptions: {
137
+ type: string;
138
+ additionalProperties: boolean;
139
+ properties: {
140
+ type: {
141
+ type: string;
142
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
143
+ };
144
+ muteButtonShown: {
145
+ type: string;
146
+ };
147
+ positioning: {
148
+ type: string;
149
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
150
+ };
151
+ };
152
+ };
153
+ ariaLabel: {
154
+ type: string;
135
155
  };
136
156
  };
137
157
  } & {
@@ -144,6 +164,10 @@ export declare const schemasForCustom: {
144
164
  optionName: string;
145
165
  })[];
146
166
  };
167
+ mediaView: {
168
+ type: string;
169
+ enum: string[];
170
+ };
147
171
  backLink: {
148
172
  type: string;
149
173
  required: string[];
@@ -279,7 +303,27 @@ export declare const schemasForCustom: {
279
303
  };
280
304
  controls: {
281
305
  type: string;
282
- enum: string[];
306
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
307
+ };
308
+ customControlsOptions: {
309
+ type: string;
310
+ additionalProperties: boolean;
311
+ properties: {
312
+ type: {
313
+ type: string;
314
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
315
+ };
316
+ muteButtonShown: {
317
+ type: string;
318
+ };
319
+ positioning: {
320
+ type: string;
321
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
322
+ };
323
+ };
324
+ };
325
+ ariaLabel: {
326
+ type: string;
283
327
  };
284
328
  };
285
329
  };
@@ -396,6 +440,9 @@ export declare const schemasForCustom: {
396
440
  };
397
441
  })[];
398
442
  };
443
+ ratio: {
444
+ type: string;
445
+ };
399
446
  };
400
447
  } & {
401
448
  optionName: string;
@@ -1226,7 +1273,27 @@ export declare const schemasForCustom: {
1226
1273
  };
1227
1274
  controls: {
1228
1275
  type: string;
1229
- enum: string[];
1276
+ enum: import("@gravity-ui/page-constructor").MediaVideoControlsType[];
1277
+ };
1278
+ customControlsOptions: {
1279
+ type: string;
1280
+ additionalProperties: boolean;
1281
+ properties: {
1282
+ type: {
1283
+ type: string;
1284
+ enum: import("@gravity-ui/page-constructor").CustomControlsType[];
1285
+ };
1286
+ muteButtonShown: {
1287
+ type: string;
1288
+ };
1289
+ positioning: {
1290
+ type: string;
1291
+ enum: import("@gravity-ui/page-constructor").CustomControlsButtonPositioning[];
1292
+ };
1293
+ };
1294
+ };
1295
+ ariaLabel: {
1296
+ type: string;
1230
1297
  };
1231
1298
  };
1232
1299
  };
@@ -1343,6 +1410,9 @@ export declare const schemasForCustom: {
1343
1410
  };
1344
1411
  })[];
1345
1412
  };
1413
+ ratio: {
1414
+ type: string;
1415
+ };
1346
1416
  paddingTop: {
1347
1417
  type: string;
1348
1418
  enum: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/blog-constructor",
3
- "version": "5.5.0",
3
+ "version": "5.7.0",
4
4
  "description": "Gravity UI Blog Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -60,8 +60,8 @@
60
60
  },
61
61
  "dependencies": {
62
62
  "@bem-react/classname": "^1.6.0",
63
- "@gravity-ui/components": "^2.4.0",
64
- "@gravity-ui/i18n": "^1.0.0",
63
+ "@gravity-ui/components": "^2.5.1",
64
+ "@gravity-ui/i18n": "^1.1.0",
65
65
  "lodash": "^4.17.21",
66
66
  "react-helmet": "^6.1.0",
67
67
  "react-player": "^2.9.0",
@@ -74,12 +74,13 @@
74
74
  "typograf": "^6.14.0",
75
75
  "ua-parser-js": "^0.7.28",
76
76
  "url": "^0.11.0",
77
- "url-join": "^5.0.0"
77
+ "url-join": "^5.0.0",
78
+ "utility-types": "^3.10.0"
78
79
  },
79
80
  "peerDependencies": {
80
81
  "@doc-tools/transform": "^3.3.2",
81
- "@gravity-ui/page-constructor": "^4.0.0",
82
- "@gravity-ui/uikit": "^5.1.0",
82
+ "@gravity-ui/page-constructor": "^4.26.0",
83
+ "@gravity-ui/uikit": "^5.12.0",
83
84
  "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
84
85
  },
85
86
  "devDependencies": {
@@ -87,18 +88,20 @@
87
88
  "@babel/preset-react": "^7.22.5",
88
89
  "@babel/preset-typescript": "^7.22.5",
89
90
  "@commitlint/config-conventional": "^17.4.3",
90
- "@doc-tools/transform": "^3.3.2",
91
- "@gravity-ui/eslint-config": "^2.0.0",
92
- "@gravity-ui/page-constructor": "^4.20.2",
93
- "@gravity-ui/prettier-config": "^1.0.1",
94
- "@gravity-ui/stylelint-config": "^1.0.0",
91
+ "@doc-tools/transform": "^3.11.0",
92
+ "@gravity-ui/eslint-config": "^3.1.1",
93
+ "@gravity-ui/page-constructor": "^4.28.0",
94
+ "@gravity-ui/prettier-config": "^1.1.0",
95
+ "@gravity-ui/stylelint-config": "^4.0.1",
95
96
  "@gravity-ui/tsconfig": "^1.0.0",
96
- "@gravity-ui/uikit": "^5.11.0",
97
+ "@gravity-ui/uikit": "^5.17.0",
98
+ "@jest/environment": "^29.7.0",
97
99
  "@storybook/addon-essentials": "^7.0.27",
98
100
  "@storybook/cli": "^7.0.27",
99
101
  "@storybook/preset-scss": "^1.0.3",
100
102
  "@storybook/react": "^7.0.27",
101
103
  "@storybook/react-webpack5": "^7.0.27",
104
+ "@testing-library/dom": "^9.3.3",
102
105
  "@testing-library/jest-dom": "^5.16.5",
103
106
  "@testing-library/react": "^14.0.0",
104
107
  "@testing-library/user-event": "^14.4.3",
@@ -128,14 +131,14 @@
128
131
  "lint-staged": "^11.2.6",
129
132
  "npm-run-all": "^4.1.5",
130
133
  "postcss": "^8.4.14",
131
- "prettier": "2.4.1",
134
+ "prettier": "^3.0.3",
132
135
  "react": "^18.2.0",
133
136
  "react-dom": "^18.2.0",
134
137
  "rimraf": "^3.0.2",
135
138
  "sass": "^1.54.4",
136
139
  "sass-loader": "^13.3.1",
137
140
  "storybook": "^7.0.27",
138
- "stylelint": "^14.11.0",
141
+ "stylelint": "^15.11.0",
139
142
  "ts-jest": "^29.0.5",
140
143
  "typescript": "^4.9.3"
141
144
  },
package/styles/fonts.scss CHANGED
@@ -1,6 +1,7 @@
1
1
  @font-face {
2
2
  font-family: 'YS Display';
3
- src: url('https://yastatic.net/s3/home/fonts/ys/1/display-thin.woff2') format('woff2'),
3
+ src:
4
+ url('https://yastatic.net/s3/home/fonts/ys/1/display-thin.woff2') format('woff2'),
4
5
  url('https://yastatic.net/s3/home/fonts/ys/1/display-thin.woff') format('woff');
5
6
  font-weight: 100;
6
7
  font-style: normal;
@@ -9,7 +10,8 @@
9
10
 
10
11
  @font-face {
11
12
  font-family: 'YS Display';
12
- src: url('https://yastatic.net/s3/home/fonts/ys/1/display-light.woff2') format('woff2'),
13
+ src:
14
+ url('https://yastatic.net/s3/home/fonts/ys/1/display-light.woff2') format('woff2'),
13
15
  url('https://yastatic.net/s3/home/fonts/ys/1/display-light.woff') format('woff');
14
16
  font-weight: 300;
15
17
  font-style: normal;
@@ -18,7 +20,8 @@
18
20
 
19
21
  @font-face {
20
22
  font-family: 'YS Display';
21
- src: url('https://yastatic.net/s3/home/fonts/ys/1/display-regular.woff2') format('woff2'),
23
+ src:
24
+ url('https://yastatic.net/s3/home/fonts/ys/1/display-regular.woff2') format('woff2'),
22
25
  url('https://yastatic.net/s3/home/fonts/ys/1/display-regular.woff') format('woff');
23
26
  font-weight: 400;
24
27
  font-style: normal;
@@ -27,7 +30,8 @@
27
30
 
28
31
  @font-face {
29
32
  font-family: 'YS Display';
30
- src: url('https://yastatic.net/s3/home/fonts/ys/1/display-medium.woff2') format('woff2'),
33
+ src:
34
+ url('https://yastatic.net/s3/home/fonts/ys/1/display-medium.woff2') format('woff2'),
31
35
  url('https://yastatic.net/s3/home/fonts/ys/1/display-medium.woff') format('woff');
32
36
  font-weight: 500;
33
37
  font-style: normal;
@@ -36,7 +40,8 @@
36
40
 
37
41
  @font-face {
38
42
  font-family: 'YS Display';
39
- src: url('https://yastatic.net/s3/home/fonts/ys/1/display-bold.woff2') format('woff2'),
43
+ src:
44
+ url('https://yastatic.net/s3/home/fonts/ys/1/display-bold.woff2') format('woff2'),
40
45
  url('https://yastatic.net/s3/home/fonts/ys/1/display-bold.woff') format('woff');
41
46
  font-weight: 700;
42
47
  font-style: normal;
@@ -45,7 +50,8 @@
45
50
 
46
51
  @font-face {
47
52
  font-family: 'YS Display';
48
- src: url('https://yastatic.net/s3/home/fonts/ys/1/display-heavy.woff2') format('woff2'),
53
+ src:
54
+ url('https://yastatic.net/s3/home/fonts/ys/1/display-heavy.woff2') format('woff2'),
49
55
  url('https://yastatic.net/s3/home/fonts/ys/1/display-heavy.woff') format('woff');
50
56
  font-weight: 900;
51
57
  font-style: normal;
@@ -54,7 +60,8 @@
54
60
 
55
61
  @font-face {
56
62
  font-family: 'YS Text';
57
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-light.woff2') format('woff2'),
63
+ src:
64
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-light.woff2') format('woff2'),
58
65
  url('https://yastatic.net/s3/home/fonts/ys/1/text-light.woff') format('woff');
59
66
  font-weight: 300;
60
67
  font-style: normal;
@@ -63,7 +70,8 @@
63
70
 
64
71
  @font-face {
65
72
  font-family: 'YS Text';
66
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-light-italic.woff2') format('woff2'),
73
+ src:
74
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-light-italic.woff2') format('woff2'),
67
75
  url('https://yastatic.net/s3/home/fonts/ys/1/text-light-italic.woff') format('woff');
68
76
  font-weight: 300;
69
77
  font-style: italic;
@@ -72,7 +80,8 @@
72
80
 
73
81
  @font-face {
74
82
  font-family: 'YS Text';
75
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-regular.woff2') format('woff2'),
83
+ src:
84
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-regular.woff2') format('woff2'),
76
85
  url('https://yastatic.net/s3/home/fonts/ys/1/text-regular.woff') format('woff');
77
86
  font-weight: 400;
78
87
  font-style: normal;
@@ -81,7 +90,8 @@
81
90
 
82
91
  @font-face {
83
92
  font-family: 'YS Text';
84
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-regular-italic.woff2') format('woff2'),
93
+ src:
94
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-regular-italic.woff2') format('woff2'),
85
95
  url('https://yastatic.net/s3/home/fonts/ys/1/text-regular-italic.woff') format('woff');
86
96
  font-weight: 400;
87
97
  font-style: italic;
@@ -90,7 +100,8 @@
90
100
 
91
101
  @font-face {
92
102
  font-family: 'YS Text';
93
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-medium.woff2') format('woff2'),
103
+ src:
104
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-medium.woff2') format('woff2'),
94
105
  url('https://yastatic.net/s3/home/fonts/ys/1/text-medium.woff') format('woff');
95
106
  font-weight: 500;
96
107
  font-style: normal;
@@ -99,7 +110,8 @@
99
110
 
100
111
  @font-face {
101
112
  font-family: 'YS Text';
102
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-medium-italic.woff2') format('woff2'),
113
+ src:
114
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-medium-italic.woff2') format('woff2'),
103
115
  url('https://yastatic.net/s3/home/fonts/ys/1/text-medium-italic.woff') format('woff');
104
116
  font-weight: 500;
105
117
  font-style: italic;
@@ -108,7 +120,8 @@
108
120
 
109
121
  @font-face {
110
122
  font-family: 'YS Text';
111
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-bold.woff2') format('woff2'),
123
+ src:
124
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-bold.woff2') format('woff2'),
112
125
  url('https://yastatic.net/s3/home/fonts/ys/1/text-bold.woff') format('woff');
113
126
  font-weight: 700;
114
127
  font-style: normal;
@@ -117,7 +130,8 @@
117
130
 
118
131
  @font-face {
119
132
  font-family: 'YS Text';
120
- src: url('https://yastatic.net/s3/home/fonts/ys/1/text-bold-italic.woff2') format('woff2'),
133
+ src:
134
+ url('https://yastatic.net/s3/home/fonts/ys/1/text-bold-italic.woff2') format('woff2'),
121
135
  url('https://yastatic.net/s3/home/fonts/ys/1/text-bold-italic.woff') format('woff');
122
136
  font-weight: 700;
123
137
  font-style: italic;
package/styles/yfm.css CHANGED
@@ -85,10 +85,20 @@ unpredictable css rules order in build */
85
85
  }
86
86
  .yfm_blog a {
87
87
  color: var(--g-color-text-link);
88
+ border-radius: var(--g-focus-border-radius);
88
89
  }
89
90
  .yfm_blog a:hover {
90
91
  color: var(--g-color-text-link-hover);
91
92
  }
93
+ .yfm_blog a:focus {
94
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
95
+ }
96
+ .yfm_blog a:focus:not(:focus-visible) {
97
+ box-shadow: none;
98
+ }
99
+ .yfm_blog a:focus {
100
+ outline: 0;
101
+ }
92
102
  .yfm_blog .yfm-tab:hover, .yfm_blog .yfm-tab:active {
93
103
  color: var(--g-color-text-link-hover);
94
104
  }
package/styles/yfm.scss CHANGED
@@ -98,10 +98,17 @@
98
98
 
99
99
  a {
100
100
  color: var(--g-color-text-link);
101
+ border-radius: var(--g-focus-border-radius);
101
102
 
102
103
  &:hover {
103
104
  color: var(--g-color-text-link-hover);
104
105
  }
106
+
107
+ @include focusable(0, 'box-shadow');
108
+
109
+ &:focus {
110
+ outline: 0;
111
+ }
105
112
  }
106
113
 
107
114
  .yfm-tab {