@gravity-ui/page-constructor 8.1.2-alpha.0 → 8.2.0-alpha.0

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 (59) hide show
  1. package/build/cjs/components/Title/TitleItem.d.ts +2 -2
  2. package/build/cjs/components/Title/TitleItem.js +13 -3
  3. package/build/cjs/components/Title/TitleItem.js.map +1 -1
  4. package/build/cjs/demo/ComponentsControls.stories.d.ts +4 -0
  5. package/build/cjs/demo/ComponentsControls.stories.js +34 -0
  6. package/build/cjs/demo/ComponentsControls.stories.js.map +1 -0
  7. package/build/cjs/demo/ComponentsLayout.stories.css +13 -0
  8. package/build/cjs/demo/ComponentsLayout.stories.d.ts +4 -0
  9. package/build/cjs/demo/ComponentsLayout.stories.js +28 -0
  10. package/build/cjs/demo/ComponentsLayout.stories.js.map +1 -0
  11. package/build/cjs/demo/ComponentsText.stories.d.ts +4 -0
  12. package/build/cjs/demo/ComponentsText.stories.js +26 -0
  13. package/build/cjs/demo/ComponentsText.stories.js.map +1 -0
  14. package/build/cjs/demo/ContentAndData.stories.d.ts +8 -0
  15. package/build/cjs/demo/ContentAndData.stories.js +73 -0
  16. package/build/cjs/demo/ContentAndData.stories.js.map +1 -0
  17. package/build/cjs/demo/FeaturesAndCards.stories.d.ts +8 -0
  18. package/build/cjs/demo/FeaturesAndCards.stories.js +112 -0
  19. package/build/cjs/demo/FeaturesAndCards.stories.js.map +1 -0
  20. package/build/cjs/demo/HeroAndMedia.stories.d.ts +8 -0
  21. package/build/cjs/demo/HeroAndMedia.stories.js +58 -0
  22. package/build/cjs/demo/HeroAndMedia.stories.js.map +1 -0
  23. package/build/cjs/demo/InteractiveAndForms.stories.d.ts +8 -0
  24. package/build/cjs/demo/InteractiveAndForms.stories.js +83 -0
  25. package/build/cjs/demo/InteractiveAndForms.stories.js.map +1 -0
  26. package/build/cjs/models/constructor-items/common.d.ts +1 -1
  27. package/build/cjs/models/constructor-items/common.js.map +1 -1
  28. package/build/cjs/text-transform/config.d.ts +1 -0
  29. package/build/esm/components/Title/TitleItem.d.ts +2 -2
  30. package/build/esm/components/Title/TitleItem.js +13 -3
  31. package/build/esm/components/Title/TitleItem.js.map +1 -1
  32. package/build/esm/demo/ComponentsControls.stories.d.ts +4 -0
  33. package/build/esm/demo/ComponentsControls.stories.js +29 -0
  34. package/build/esm/demo/ComponentsControls.stories.js.map +1 -0
  35. package/build/esm/demo/ComponentsLayout.stories.css +13 -0
  36. package/build/esm/demo/ComponentsLayout.stories.d.ts +5 -0
  37. package/build/esm/demo/ComponentsLayout.stories.js +24 -0
  38. package/build/esm/demo/ComponentsLayout.stories.js.map +1 -0
  39. package/build/esm/demo/ComponentsText.stories.d.ts +4 -0
  40. package/build/esm/demo/ComponentsText.stories.js +21 -0
  41. package/build/esm/demo/ComponentsText.stories.js.map +1 -0
  42. package/build/esm/demo/ContentAndData.stories.d.ts +8 -0
  43. package/build/esm/demo/ContentAndData.stories.js +69 -0
  44. package/build/esm/demo/ContentAndData.stories.js.map +1 -0
  45. package/build/esm/demo/FeaturesAndCards.stories.d.ts +8 -0
  46. package/build/esm/demo/FeaturesAndCards.stories.js +108 -0
  47. package/build/esm/demo/FeaturesAndCards.stories.js.map +1 -0
  48. package/build/esm/demo/HeroAndMedia.stories.d.ts +8 -0
  49. package/build/esm/demo/HeroAndMedia.stories.js +54 -0
  50. package/build/esm/demo/HeroAndMedia.stories.js.map +1 -0
  51. package/build/esm/demo/InteractiveAndForms.stories.d.ts +8 -0
  52. package/build/esm/demo/InteractiveAndForms.stories.js +79 -0
  53. package/build/esm/demo/InteractiveAndForms.stories.js.map +1 -0
  54. package/build/esm/models/constructor-items/common.d.ts +1 -1
  55. package/build/esm/models/constructor-items/common.js.map +1 -1
  56. package/build/esm/text-transform/config.d.ts +1 -0
  57. package/package.json +1 -1
  58. package/server/models/constructor-items/common.d.ts +1 -1
  59. package/server/text-transform/config.d.ts +1 -0
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { blockTransform } from "../../.storybook/utils.js";
3
+ import { PageConstructor } from "../containers/PageConstructor/index.js";
4
+ import { CustomComponent } from "../navigation/__stories__/CustomComponent/CustomComponent.js";
5
+ import contentLayoutData from "../blocks/ContentLayout/__stories__/data.json";
6
+ import foldableListData from "../blocks/FoldableList/__stories__/data.json";
7
+ import questionsData from "../blocks/Questions/__stories__/data.json";
8
+ import tableData from "../blocks/Table/__stories__/data.json";
9
+ import tabsData from "../blocks/Tabs/__stories__/data.json";
10
+ import navData from "../navigation/__stories__/data.json";
11
+ export default {
12
+ title: 'Lab/Tokenization/Blocks/ContentAndData',
13
+ component: PageConstructor,
14
+ };
15
+ const Template = ({ navigation, custom = {}, }) => (_jsx(PageConstructor, { navigation: navigation, custom: custom, content: {
16
+ blocks: [
17
+ // content-layout-block: default text only
18
+ blockTransform(contentLayoutData.default),
19
+ // content-layout-block: centered
20
+ blockTransform(contentLayoutData.textAlignCenter),
21
+ // content-layout-block: with background color
22
+ blockTransform(contentLayoutData.withBackgroundColor),
23
+ // content-layout-block: with background image + color
24
+ blockTransform(contentLayoutData.withImageAndBackgroundColor),
25
+ // content-layout-block: dark monochrome theme
26
+ blockTransform(contentLayoutData.theme[0]),
27
+ // content-layout-block: light monochrome theme
28
+ blockTransform(contentLayoutData.theme[1]),
29
+ // content-layout-block variants with list/links/buttons
30
+ ...contentLayoutData.contentVariables.map(blockTransform),
31
+ // tabs-block: default (all tab types: image, video, youtube)
32
+ blockTransform(tabsData.default.content),
33
+ // questions-block: default with links
34
+ blockTransform(questionsData.default.content),
35
+ // questions-block: with bullet list items
36
+ blockTransform(questionsData.textWithListBullet.content),
37
+ // foldable-list-block: default
38
+ blockTransform(foldableListData.default),
39
+ // foldable-list-block: with bullet list items
40
+ blockTransform(foldableListData.textWithListBullet),
41
+ // foldable-list-block: with dash list items
42
+ blockTransform(foldableListData.textWithListDash),
43
+ // table-block: numeric values (0/1)
44
+ blockTransform(tableData.default.content),
45
+ // table-block: tick markers
46
+ blockTransform(tableData.tick.content),
47
+ ],
48
+ } }));
49
+ export const Default = Template.bind({});
50
+ Default.args = {
51
+ custom: {
52
+ navigation: {
53
+ 'custom-item': CustomComponent,
54
+ },
55
+ },
56
+ navigation: {
57
+ ...navData.navigation,
58
+ header: {
59
+ ...navData.navigation.header,
60
+ rightItems: [
61
+ ...navData.navigation.header.rightItems,
62
+ {
63
+ type: 'custom-item',
64
+ },
65
+ ],
66
+ },
67
+ },
68
+ };
69
+ //# sourceMappingURL=ContentAndData.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentAndData.stories.js","sourceRoot":"../../../src","sources":["demo/ContentAndData.stories.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,cAAc,EAAC,kCAA+B;AACtD,OAAO,EAAC,eAAe,EAAC,+CAAsC;AAE9D,OAAO,EAAC,eAAe,EAAC,qEAAkE;AAE1F,OAAO,iBAAiB,sDAAsD;AAC9E,OAAO,gBAAgB,qDAAqD;AAC5E,OAAO,aAAa,kDAAkD;AACtE,OAAO,SAAS,8CAA8C;AAC9D,OAAO,QAAQ,6CAA6C;AAC5D,OAAO,OAAO,4CAA4C;AAE1D,eAAe;IACX,KAAK,EAAE,wCAAwC;IAC/C,SAAS,EAAE,eAAe;CACrB,CAAC;AAEV,MAAM,QAAQ,GAAiE,CAAC,EAC5E,UAAU,EACV,MAAM,GAAG,EAAE,GACd,EAAE,EAAE,CAAC,CACF,KAAC,eAAe,IACZ,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EACH;QACI,MAAM,EAAE;YACJ,0CAA0C;YAC1C,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACzC,iCAAiC;YACjC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC;YACjD,8CAA8C;YAC9C,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;YACrD,sDAAsD;YACtD,cAAc,CAAC,iBAAiB,CAAC,2BAA2B,CAAC;YAC7D,8CAA8C;YAC9C,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,+CAA+C;YAC/C,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,wDAAwD;YACxD,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;YAEzD,6DAA6D;YAC7D,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YAExC,sCAAsC;YACtC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7C,0CAA0C;YAC1C,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAExD,+BAA+B;YAC/B,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACxC,8CAA8C;YAC9C,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;YACnD,4CAA4C;YAC5C,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;YAEjD,oCAAoC;YACpC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;YACzC,4BAA4B;YAC5B,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;SACzC;KACW,GAEtB,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACX,MAAM,EAAE;QACJ,UAAU,EAAE;YACR,aAAa,EAAE,eAAe;SACjC;KACJ;IACD,UAAU,EAAE;QACR,GAAG,OAAO,CAAC,UAAU;QACrB,MAAM,EAAE;YACJ,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM;YAC5B,UAAU,EAAE;gBACR,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU;gBACvC;oBACI,IAAI,EAAE,aAAa;iBACtB;aACJ;SACJ;KACc;CACtB,CAAC","sourcesContent":["import {Meta, StoryFn} from '@storybook/react';\n\nimport {blockTransform} from '../../.storybook/utils';\nimport {PageConstructor} from '../containers/PageConstructor';\nimport {CustomConfig, NavigationData, PageContent} from '../models';\nimport {CustomComponent} from '../navigation/__stories__/CustomComponent/CustomComponent';\n\nimport contentLayoutData from '../blocks/ContentLayout/__stories__/data.json';\nimport foldableListData from '../blocks/FoldableList/__stories__/data.json';\nimport questionsData from '../blocks/Questions/__stories__/data.json';\nimport tableData from '../blocks/Table/__stories__/data.json';\nimport tabsData from '../blocks/Tabs/__stories__/data.json';\nimport navData from '../navigation/__stories__/data.json';\n\nexport default {\n title: 'Lab/Tokenization/Blocks/ContentAndData',\n component: PageConstructor,\n} as Meta;\n\nconst Template: StoryFn<{navigation: NavigationData; custom?: CustomConfig}> = ({\n navigation,\n custom = {},\n}) => (\n <PageConstructor\n navigation={navigation}\n custom={custom}\n content={\n {\n blocks: [\n // content-layout-block: default text only\n blockTransform(contentLayoutData.default),\n // content-layout-block: centered\n blockTransform(contentLayoutData.textAlignCenter),\n // content-layout-block: with background color\n blockTransform(contentLayoutData.withBackgroundColor),\n // content-layout-block: with background image + color\n blockTransform(contentLayoutData.withImageAndBackgroundColor),\n // content-layout-block: dark monochrome theme\n blockTransform(contentLayoutData.theme[0]),\n // content-layout-block: light monochrome theme\n blockTransform(contentLayoutData.theme[1]),\n // content-layout-block variants with list/links/buttons\n ...contentLayoutData.contentVariables.map(blockTransform),\n\n // tabs-block: default (all tab types: image, video, youtube)\n blockTransform(tabsData.default.content),\n\n // questions-block: default with links\n blockTransform(questionsData.default.content),\n // questions-block: with bullet list items\n blockTransform(questionsData.textWithListBullet.content),\n\n // foldable-list-block: default\n blockTransform(foldableListData.default),\n // foldable-list-block: with bullet list items\n blockTransform(foldableListData.textWithListBullet),\n // foldable-list-block: with dash list items\n blockTransform(foldableListData.textWithListDash),\n\n // table-block: numeric values (0/1)\n blockTransform(tableData.default.content),\n // table-block: tick markers\n blockTransform(tableData.tick.content),\n ],\n } as PageContent\n }\n />\n);\n\nexport const Default = Template.bind({});\nDefault.args = {\n custom: {\n navigation: {\n 'custom-item': CustomComponent,\n },\n },\n navigation: {\n ...navData.navigation,\n header: {\n ...navData.navigation.header,\n rightItems: [\n ...navData.navigation.header.rightItems,\n {\n type: 'custom-item',\n },\n ],\n },\n } as NavigationData,\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { CustomConfig, NavigationData } from "../models/index.js";
3
+ declare const _default: Meta;
4
+ export default _default;
5
+ export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, {
6
+ navigation: NavigationData;
7
+ custom?: CustomConfig;
8
+ }>;
@@ -0,0 +1,108 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { blockTransform } from "../../.storybook/utils.js";
3
+ import { PageConstructor } from "../containers/PageConstructor/index.js";
4
+ import cardLayoutData from "../blocks/CardLayout/__stories__/data.json";
5
+ import extendedFeaturesData from "../blocks/ExtendedFeatures/__stories__/data.json";
6
+ import headerSliderData from "../blocks/HeaderSlider/__stories__/data.json";
7
+ import promoFeaturesData from "../blocks/PromoFeaturesBlock/__stories__/data.json";
8
+ import sliderData from "../blocks/Slider/__stories__/data.json";
9
+ import navData from "../navigation/__stories__/data.json";
10
+ export default {
11
+ title: 'Lab/Tokenization/Blocks/FeaturesAndCards',
12
+ component: PageConstructor,
13
+ };
14
+ const Template = ({ navigation, custom = {}, }) => (_jsx(PageConstructor, { navigation: navigation, custom: custom, content: {
15
+ blocks: [
16
+ // promo-features-block: default theme
17
+ blockTransform({
18
+ ...promoFeaturesData.common,
19
+ ...promoFeaturesData.defaultTheme.content,
20
+ }),
21
+ // promo-features-block: grey theme
22
+ blockTransform({
23
+ ...promoFeaturesData.common,
24
+ ...promoFeaturesData.greyTheme.content,
25
+ }),
26
+ // extended-features-block: default (3 cols)
27
+ blockTransform(extendedFeaturesData.default.content),
28
+ // extended-features-block: with labels
29
+ blockTransform({
30
+ type: 'extended-features-block',
31
+ ...extendedFeaturesData.withLabel.content,
32
+ }),
33
+ // extended-features-block: 2 per row
34
+ blockTransform({
35
+ type: 'extended-features-block',
36
+ ...extendedFeaturesData.colSizes.two,
37
+ }),
38
+ // extended-features-block: 4 per row
39
+ blockTransform({
40
+ type: 'extended-features-block',
41
+ ...extendedFeaturesData.colSizes.four,
42
+ }),
43
+ // card-layout-block: basic cards
44
+ {
45
+ ...cardLayoutData.default.content,
46
+ children: [
47
+ blockTransform(cardLayoutData.cards.basicCard),
48
+ blockTransform(cardLayoutData.cards.basicCard),
49
+ blockTransform(cardLayoutData.cards.basicCard),
50
+ ],
51
+ },
52
+ // card-layout-block: layout items with images
53
+ {
54
+ type: 'card-layout-block',
55
+ title: 'Card layout with layout items',
56
+ children: [
57
+ blockTransform(cardLayoutData.cards.layoutItem),
58
+ blockTransform(cardLayoutData.cards.layoutItem),
59
+ blockTransform(cardLayoutData.cards.layoutItem),
60
+ ],
61
+ },
62
+ // card-layout-block: background cards
63
+ {
64
+ type: 'card-layout-block',
65
+ title: 'Card layout with background cards',
66
+ children: [
67
+ blockTransform(cardLayoutData.cards.backgroundCard),
68
+ blockTransform(cardLayoutData.cards.backgroundCard),
69
+ blockTransform(cardLayoutData.cards.backgroundCard),
70
+ ],
71
+ },
72
+ // card-layout-block: price cards
73
+ {
74
+ type: 'card-layout-block',
75
+ title: 'Card layout with price cards',
76
+ children: [
77
+ blockTransform(cardLayoutData.cards.priceCard),
78
+ blockTransform(cardLayoutData.cards.priceCard),
79
+ blockTransform(cardLayoutData.cards.priceCard),
80
+ ],
81
+ },
82
+ // slider-block: basic cards
83
+ blockTransform(sliderData.default.content),
84
+ // slider-block: quote cards
85
+ blockTransform(sliderData.quoteCards.content),
86
+ // slider-block: banner cards (subtitle already HTML — no blockTransform)
87
+ sliderData.banners.content,
88
+ // header-slider-block: default
89
+ blockTransform({ type: 'header-slider-block', ...headerSliderData.default }),
90
+ // header-slider-block: with different slide themes
91
+ blockTransform({
92
+ type: 'header-slider-block',
93
+ ...headerSliderData.withDifferentSlidesTheme,
94
+ }),
95
+ ],
96
+ } }));
97
+ export const Default = Template.bind({});
98
+ Default.args = {
99
+ navigation: {
100
+ ...navData.navigation,
101
+ header: {
102
+ ...navData.navigation.header,
103
+ withBorder: true,
104
+ withBorderOnScroll: true,
105
+ },
106
+ },
107
+ };
108
+ //# sourceMappingURL=FeaturesAndCards.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeaturesAndCards.stories.js","sourceRoot":"../../../src","sources":["demo/FeaturesAndCards.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Meta, StoryFn} from '@storybook/react';\n\nimport {blockTransform} from '../../.storybook/utils';\nimport {PageConstructor} from '../containers/PageConstructor';\nimport {CustomConfig, NavigationData, PageContent} from '../models';\n\nimport cardLayoutData from '../blocks/CardLayout/__stories__/data.json';\nimport extendedFeaturesData from '../blocks/ExtendedFeatures/__stories__/data.json';\nimport headerSliderData from '../blocks/HeaderSlider/__stories__/data.json';\nimport promoFeaturesData from '../blocks/PromoFeaturesBlock/__stories__/data.json';\nimport sliderData from '../blocks/Slider/__stories__/data.json';\nimport navData from '../navigation/__stories__/data.json';\n\nexport default {\n title: 'Lab/Tokenization/Blocks/FeaturesAndCards',\n component: PageConstructor,\n} as Meta;\n\nconst Template: StoryFn<{navigation: NavigationData; custom?: CustomConfig}> = ({\n navigation,\n custom = {},\n}) => (\n <PageConstructor\n navigation={navigation}\n custom={custom}\n content={\n {\n blocks: [\n // promo-features-block: default theme\n blockTransform({\n ...promoFeaturesData.common,\n ...promoFeaturesData.defaultTheme.content,\n }),\n // promo-features-block: grey theme\n blockTransform({\n ...promoFeaturesData.common,\n ...promoFeaturesData.greyTheme.content,\n }),\n\n // extended-features-block: default (3 cols)\n blockTransform(extendedFeaturesData.default.content),\n // extended-features-block: with labels\n blockTransform({\n type: 'extended-features-block',\n ...extendedFeaturesData.withLabel.content,\n }),\n // extended-features-block: 2 per row\n blockTransform({\n type: 'extended-features-block',\n ...extendedFeaturesData.colSizes.two,\n }),\n // extended-features-block: 4 per row\n blockTransform({\n type: 'extended-features-block',\n ...extendedFeaturesData.colSizes.four,\n }),\n\n // card-layout-block: basic cards\n {\n ...cardLayoutData.default.content,\n children: [\n blockTransform(cardLayoutData.cards.basicCard),\n blockTransform(cardLayoutData.cards.basicCard),\n blockTransform(cardLayoutData.cards.basicCard),\n ],\n },\n // card-layout-block: layout items with images\n {\n type: 'card-layout-block',\n title: 'Card layout with layout items',\n children: [\n blockTransform(cardLayoutData.cards.layoutItem),\n blockTransform(cardLayoutData.cards.layoutItem),\n blockTransform(cardLayoutData.cards.layoutItem),\n ],\n },\n // card-layout-block: background cards\n {\n type: 'card-layout-block',\n title: 'Card layout with background cards',\n children: [\n blockTransform(cardLayoutData.cards.backgroundCard),\n blockTransform(cardLayoutData.cards.backgroundCard),\n blockTransform(cardLayoutData.cards.backgroundCard),\n ],\n },\n // card-layout-block: price cards\n {\n type: 'card-layout-block',\n title: 'Card layout with price cards',\n children: [\n blockTransform(cardLayoutData.cards.priceCard),\n blockTransform(cardLayoutData.cards.priceCard),\n blockTransform(cardLayoutData.cards.priceCard),\n ],\n },\n\n // slider-block: basic cards\n blockTransform(sliderData.default.content),\n // slider-block: quote cards\n blockTransform(sliderData.quoteCards.content),\n // slider-block: banner cards (subtitle already HTML — no blockTransform)\n sliderData.banners.content,\n\n // header-slider-block: default\n blockTransform({type: 'header-slider-block', ...headerSliderData.default}),\n // header-slider-block: with different slide themes\n blockTransform({\n type: 'header-slider-block',\n ...headerSliderData.withDifferentSlidesTheme,\n }),\n ],\n } as PageContent\n }\n />\n);\n\nexport const Default = Template.bind({});\nDefault.args = {\n navigation: {\n ...navData.navigation,\n header: {\n ...navData.navigation.header,\n withBorder: true,\n withBorderOnScroll: true,\n },\n } as NavigationData,\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { CustomConfig, NavigationData } from "../models/index.js";
3
+ declare const _default: Meta;
4
+ export default _default;
5
+ export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, {
6
+ navigation: NavigationData;
7
+ custom?: CustomConfig;
8
+ }>;
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { blockTransform } from "../../.storybook/utils.js";
3
+ import { PageConstructor } from "../containers/PageConstructor/index.js";
4
+ import bannerData from "../blocks/Banner/__stories__/data.json";
5
+ import companiesData from "../blocks/Companies/__stories__/data.json";
6
+ import headerData from "../blocks/Header/__stories__/data.json";
7
+ import infoData from "../blocks/Info/__stories__/data.json";
8
+ import mediaData from "../blocks/Media/__stories__/data.json";
9
+ import navData from "../navigation/__stories__/data.json";
10
+ export default {
11
+ title: 'Lab/Tokenization/Blocks/HeroAndMedia',
12
+ component: PageConstructor,
13
+ };
14
+ const Template = ({ navigation, custom = {}, }) => (_jsx(PageConstructor, { navigation: navigation, custom: custom, content: {
15
+ blocks: [
16
+ // header-block: default with action buttons
17
+ blockTransform(headerData.default),
18
+ // header-block: with breadcrumbs + light background
19
+ blockTransform(headerData.breadcrumbs[0]),
20
+ // header-block: with breadcrumbs + dark theme
21
+ blockTransform(headerData.breadcrumbs[1]),
22
+ // header-block: with image
23
+ blockTransform(headerData.image),
24
+ // header-block: with background image and color (media variant)
25
+ blockTransform({ type: 'header-block', ...headerData.media.image }),
26
+ // banner-block: light theme with themed image
27
+ blockTransform(bannerData.default.content),
28
+ // banner-block: forced dark theme
29
+ blockTransform(bannerData.darkTheme.content),
30
+ // media-block: default with image
31
+ blockTransform(mediaData.default),
32
+ // media-block: image slider
33
+ blockTransform(mediaData.imageSlider),
34
+ // media-block: youtube embed
35
+ blockTransform({ type: 'media-block', ...mediaData.video.youtube }),
36
+ // media-block: video with controls
37
+ blockTransform({ type: 'media-block', ...mediaData.video.staticWithControls }),
38
+ // media-block: video with preview
39
+ blockTransform({ type: 'media-block', ...mediaData.video.videoWithPreview }),
40
+ // companies-block: title only
41
+ blockTransform(companiesData.default.content),
42
+ // companies-block: with description
43
+ blockTransform(companiesData.withDescription.content),
44
+ // info-block: dark theme (default)
45
+ blockTransform(infoData.default),
46
+ // info-block: light theme with background color
47
+ blockTransform({ type: 'info-block', ...infoData.light }),
48
+ ],
49
+ } }));
50
+ export const Default = Template.bind({});
51
+ Default.args = {
52
+ navigation: navData.navigation,
53
+ };
54
+ //# sourceMappingURL=HeroAndMedia.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroAndMedia.stories.js","sourceRoot":"../../../src","sources":["demo/HeroAndMedia.stories.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,cAAc,EAAC,kCAA+B;AACtD,OAAO,EAAC,eAAe,EAAC,+CAAsC;AAG9D,OAAO,UAAU,+CAA+C;AAChE,OAAO,aAAa,kDAAkD;AACtE,OAAO,UAAU,+CAA+C;AAChE,OAAO,QAAQ,6CAA6C;AAC5D,OAAO,SAAS,8CAA8C;AAC9D,OAAO,OAAO,4CAA4C;AAE1D,eAAe;IACX,KAAK,EAAE,sCAAsC;IAC7C,SAAS,EAAE,eAAe;CACrB,CAAC;AAEV,MAAM,QAAQ,GAAiE,CAAC,EAC5E,UAAU,EACV,MAAM,GAAG,EAAE,GACd,EAAE,EAAE,CAAC,CACF,KAAC,eAAe,IACZ,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EACH;QACI,MAAM,EAAE;YACJ,4CAA4C;YAC5C,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC;YAClC,oDAAoD;YACpD,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzC,8CAA8C;YAC9C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzC,2BAA2B;YAC3B,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC;YAChC,gEAAgE;YAChE,cAAc,CAAC,EAAC,IAAI,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAC,CAAC;YAEjE,8CAA8C;YAC9C,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YAC1C,kCAAkC;YAClC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;YAE5C,kCAAkC;YAClC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;YACjC,4BAA4B;YAC5B,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC;YACrC,6BAA6B;YAC7B,cAAc,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC;YACjE,mCAAmC;YACnC,cAAc,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAC,CAAC;YAC5E,kCAAkC;YAClC,cAAc,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAC,CAAC;YAE1E,8BAA8B;YAC9B,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7C,oCAAoC;YACpC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC;YAErD,mCAAmC;YACnC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,gDAAgD;YAChD,cAAc,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAC,CAAC;SAC1D;KACW,GAEtB,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACX,UAAU,EAAE,OAAO,CAAC,UAA4B;CACnD,CAAC","sourcesContent":["import {Meta, StoryFn} from '@storybook/react';\n\nimport {blockTransform} from '../../.storybook/utils';\nimport {PageConstructor} from '../containers/PageConstructor';\nimport {CustomConfig, NavigationData, PageContent} from '../models';\n\nimport bannerData from '../blocks/Banner/__stories__/data.json';\nimport companiesData from '../blocks/Companies/__stories__/data.json';\nimport headerData from '../blocks/Header/__stories__/data.json';\nimport infoData from '../blocks/Info/__stories__/data.json';\nimport mediaData from '../blocks/Media/__stories__/data.json';\nimport navData from '../navigation/__stories__/data.json';\n\nexport default {\n title: 'Lab/Tokenization/Blocks/HeroAndMedia',\n component: PageConstructor,\n} as Meta;\n\nconst Template: StoryFn<{navigation: NavigationData; custom?: CustomConfig}> = ({\n navigation,\n custom = {},\n}) => (\n <PageConstructor\n navigation={navigation}\n custom={custom}\n content={\n {\n blocks: [\n // header-block: default with action buttons\n blockTransform(headerData.default),\n // header-block: with breadcrumbs + light background\n blockTransform(headerData.breadcrumbs[0]),\n // header-block: with breadcrumbs + dark theme\n blockTransform(headerData.breadcrumbs[1]),\n // header-block: with image\n blockTransform(headerData.image),\n // header-block: with background image and color (media variant)\n blockTransform({type: 'header-block', ...headerData.media.image}),\n\n // banner-block: light theme with themed image\n blockTransform(bannerData.default.content),\n // banner-block: forced dark theme\n blockTransform(bannerData.darkTheme.content),\n\n // media-block: default with image\n blockTransform(mediaData.default),\n // media-block: image slider\n blockTransform(mediaData.imageSlider),\n // media-block: youtube embed\n blockTransform({type: 'media-block', ...mediaData.video.youtube}),\n // media-block: video with controls\n blockTransform({type: 'media-block', ...mediaData.video.staticWithControls}),\n // media-block: video with preview\n blockTransform({type: 'media-block', ...mediaData.video.videoWithPreview}),\n\n // companies-block: title only\n blockTransform(companiesData.default.content),\n // companies-block: with description\n blockTransform(companiesData.withDescription.content),\n\n // info-block: dark theme (default)\n blockTransform(infoData.default),\n // info-block: light theme with background color\n blockTransform({type: 'info-block', ...infoData.light}),\n ],\n } as PageContent\n }\n />\n);\n\nexport const Default = Template.bind({});\nDefault.args = {\n navigation: navData.navigation as NavigationData,\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { CustomConfig, NavigationData } from "../models/index.js";
3
+ declare const _default: Meta;
4
+ export default _default;
5
+ export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, {
6
+ navigation: NavigationData;
7
+ custom?: CustomConfig;
8
+ }>;
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { scriptsSrc, ymapApiKeyForStorybook } from "../../.storybook/maps.js";
3
+ import { blockTransform } from "../../.storybook/utils.js";
4
+ import { PageConstructor } from "../containers/PageConstructor/index.js";
5
+ import { MapType } from "../context/mapsContext/mapsContext.js";
6
+ import { MapProvider } from "../context/mapsContext/mapsProvider.js";
7
+ import { CustomButton } from "../navigation/__stories__/CustomButton/CustomButton.js";
8
+ import filterData from "../blocks/FilterBlock/__stories__/data.json";
9
+ import formData from "../blocks/Form/__stories__/data.json";
10
+ import iconsData from "../blocks/Icons/__stories__/data.json";
11
+ import mapData from "../blocks/Map/__stories__/data.json";
12
+ import shareData from "../blocks/Share/__stories__/data.json";
13
+ import navData from "../navigation/__stories__/data.json";
14
+ export default {
15
+ title: 'Lab/Tokenization/Blocks/InteractiveAndForms',
16
+ component: PageConstructor,
17
+ };
18
+ const Template = ({ navigation, custom = {}, }) => (_jsx(MapProvider, { scriptSrc: scriptsSrc[MapType.Yandex], apiKey: ymapApiKeyForStorybook, type: MapType.Yandex, children: _jsx(PageConstructor, { navigation: navigation, custom: custom, content: {
19
+ blocks: [
20
+ // form-block: hubspot form
21
+ blockTransform(formData.default),
22
+ // form-block: with background color
23
+ blockTransform({ ...formData.default, ...formData.withBackground }),
24
+ // form-block: with background image
25
+ blockTransform({ ...formData.default, ...formData.withBackgroundImage }),
26
+ // form-block: yandex form
27
+ blockTransform(formData.yandexForm),
28
+ // filter-block: with tag filtering and layout items
29
+ blockTransform(filterData.default),
30
+ // icons-block: minimal (no title)
31
+ blockTransform(iconsData.default.content),
32
+ // icons-block: with title and description
33
+ blockTransform(iconsData.withDescription.content),
34
+ // share-block: default (no title)
35
+ blockTransform(shareData.default.content),
36
+ // share-block: with custom title
37
+ blockTransform(shareData.customTitle.content),
38
+ // map-block: default with yandex map
39
+ blockTransform({
40
+ type: 'map-block',
41
+ title: mapData.common.title,
42
+ description: mapData.common.description,
43
+ map: mapData.ymap,
44
+ }),
45
+ // map-block: with additional info and links
46
+ blockTransform({
47
+ type: 'map-block',
48
+ title: mapData.common.title,
49
+ description: mapData.common.description,
50
+ additionalInfo: mapData.common.additionalInfo,
51
+ links: mapData.common.links,
52
+ map: { ...mapData.ymap, id: 'common-places-2' },
53
+ }),
54
+ // map-block: with buttons
55
+ blockTransform({
56
+ type: 'map-block',
57
+ title: mapData.common.title,
58
+ description: mapData.common.description,
59
+ buttons: mapData.common.buttons,
60
+ map: { ...mapData.ymap, id: 'common-places-3' },
61
+ }),
62
+ ],
63
+ } }) }));
64
+ export const Default = Template.bind({});
65
+ Default.args = {
66
+ custom: {
67
+ navigation: {
68
+ 'custom-item': CustomButton,
69
+ },
70
+ },
71
+ navigation: {
72
+ ...navData.navigation,
73
+ header: {
74
+ ...navData.navigation.header,
75
+ customMobileHeaderItems: [{ type: 'custom-item' }],
76
+ },
77
+ },
78
+ };
79
+ //# sourceMappingURL=InteractiveAndForms.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractiveAndForms.stories.js","sourceRoot":"../../../src","sources":["demo/InteractiveAndForms.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Meta, StoryFn} from '@storybook/react';\n\nimport {scriptsSrc, ymapApiKeyForStorybook} from '../../.storybook/maps';\nimport {blockTransform} from '../../.storybook/utils';\nimport {PageConstructor} from '../containers/PageConstructor';\nimport {MapType} from '../context/mapsContext/mapsContext';\nimport {MapProvider} from '../context/mapsContext/mapsProvider';\nimport {CustomConfig, NavigationData, PageContent} from '../models';\nimport {CustomButton} from '../navigation/__stories__/CustomButton/CustomButton';\n\nimport filterData from '../blocks/FilterBlock/__stories__/data.json';\nimport formData from '../blocks/Form/__stories__/data.json';\nimport iconsData from '../blocks/Icons/__stories__/data.json';\nimport mapData from '../blocks/Map/__stories__/data.json';\nimport shareData from '../blocks/Share/__stories__/data.json';\nimport navData from '../navigation/__stories__/data.json';\n\nexport default {\n title: 'Lab/Tokenization/Blocks/InteractiveAndForms',\n component: PageConstructor,\n} as Meta;\n\nconst Template: StoryFn<{navigation: NavigationData; custom?: CustomConfig}> = ({\n navigation,\n custom = {},\n}) => (\n <MapProvider\n scriptSrc={scriptsSrc[MapType.Yandex]}\n apiKey={ymapApiKeyForStorybook}\n type={MapType.Yandex}\n >\n <PageConstructor\n navigation={navigation}\n custom={custom}\n content={\n {\n blocks: [\n // form-block: hubspot form\n blockTransform(formData.default),\n // form-block: with background color\n blockTransform({...formData.default, ...formData.withBackground}),\n // form-block: with background image\n blockTransform({...formData.default, ...formData.withBackgroundImage}),\n // form-block: yandex form\n blockTransform(formData.yandexForm),\n\n // filter-block: with tag filtering and layout items\n blockTransform(filterData.default),\n\n // icons-block: minimal (no title)\n blockTransform(iconsData.default.content),\n // icons-block: with title and description\n blockTransform(iconsData.withDescription.content),\n\n // share-block: default (no title)\n blockTransform(shareData.default.content),\n // share-block: with custom title\n blockTransform(shareData.customTitle.content),\n\n // map-block: default with yandex map\n blockTransform({\n type: 'map-block',\n title: mapData.common.title,\n description: mapData.common.description,\n map: mapData.ymap,\n }),\n // map-block: with additional info and links\n blockTransform({\n type: 'map-block',\n title: mapData.common.title,\n description: mapData.common.description,\n additionalInfo: mapData.common.additionalInfo,\n links: mapData.common.links,\n map: {...mapData.ymap, id: 'common-places-2'},\n }),\n // map-block: with buttons\n blockTransform({\n type: 'map-block',\n title: mapData.common.title,\n description: mapData.common.description,\n buttons: mapData.common.buttons,\n map: {...mapData.ymap, id: 'common-places-3'},\n }),\n ],\n } as PageContent\n }\n />\n </MapProvider>\n);\n\nexport const Default = Template.bind({});\nDefault.args = {\n custom: {\n navigation: {\n 'custom-item': CustomButton,\n },\n },\n navigation: {\n ...navData.navigation,\n header: {\n ...navData.navigation.header,\n customMobileHeaderItems: [{type: 'custom-item'}],\n },\n } as unknown as NavigationData,\n};\n"]}
@@ -321,7 +321,7 @@ export interface HeaderBreadCrumbsProps extends ClassNameProps {
321
321
  theme?: TextTheme;
322
322
  analyticsEvents?: AnalyticsEventsProp;
323
323
  }
324
- export interface TitleItemProps extends Justifyable, TitleItemBaseProps {
324
+ export interface TitleItemProps extends Justifyable, TitleItemBaseProps, AnalyticsEventsBase {
325
325
  navTitle?: string;
326
326
  anchor?: string;
327
327
  }
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"../../../../src","sources":["models/constructor-items/common.ts"],"names":[],"mappings":"AAQA,QAAQ;AACR,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;AACjB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+CAA2B,CAAA;IAC3B,yCAAqB,CAAA;AACzB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,8BAAW,CAAA;AACf,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,iCAAa,CAAA;IACb,iCAAa,CAAA;AACjB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,yDAAmC,CAAA;IACnC,oEAA8C,CAAA;AAClD,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,MAAM,CAAN,IAAY,+BAIX;AAJD,WAAY,+BAA+B;IACvC,gDAAa,CAAA;IACb,kDAAe,CAAA;IACf,oDAAiB,CAAA;AACrB,CAAC,EAJW,+BAA+B,KAA/B,+BAA+B,QAI1C;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACrB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,6CAAmB,CAAA;IACnB,2CAAiB,CAAA;AACrB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,gCAAmB,CAAA;IACnB,6CAAgC,CAAA;AACpC,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAuED,SAAS;AAET,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IACd,6BAAmB,CAAA;IACnB,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;AACrB,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB","sourcesContent":["import * as React from 'react';\n\nimport * as icons from '@gravity-ui/icons';\nimport {ButtonView, IconData, ButtonProps as UikitButtonProps} from '@gravity-ui/uikit';\n\nimport {ThemeSupporting} from '../../utils';\nimport {AnalyticsEventsBase, AnalyticsEventsProp, ClassNameProps, QAProps} from '../common';\n\n// enums\nexport enum AuthorType {\n Column = 'column',\n Line = 'line',\n}\n\nexport enum PriceDetailsType {\n MARKED_LIST = 'marked-list',\n SETTINGS = 'settings',\n}\n\nexport enum PriceLabelColor {\n BLUE = 'blue',\n GREEN = 'green',\n YELLOW = 'yellow',\n PURPLE = 'purple',\n RED = 'red',\n}\n\nexport enum PlayButtonType {\n Default = 'default',\n Text = 'text',\n}\n\nexport enum PlayButtonThemes {\n Blue = 'blue',\n Grey = 'grey',\n}\n\nexport enum CustomControlsType {\n WithMuteButton = 'with-mute-button',\n WithPlayPauseButton = 'with-play-pause-button',\n}\n\nexport enum CustomControlsButtonPositioning {\n Left = 'left',\n Right = 'right',\n Center = 'center',\n}\n\nexport enum MediaVideoType {\n Default = 'default',\n Player = 'player',\n}\n\nexport enum MediaVideoControlsType {\n Default = 'default',\n Custom = 'custom',\n}\n\nexport enum QuoteType {\n Chevron = 'chevron', // « »\n EnglishDouble = 'english-double', // “ ”\n}\n\n// types\nexport type TextTheme = 'light' | 'dark';\nexport type TextSize = 'xs' | 's' | 'sm' | 'm' | 'l';\nexport type DividerSize = '0' | 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl';\nexport type HeaderWidth = 's' | 'm' | 'l';\nexport type HeaderImageSize = 's' | 'm';\nexport type HeaderOffset = 'default' | 'large';\nexport type Justify = 'start' | 'center' | 'end';\nexport type ColumnsCount = 1 | 2 | 3 | 4;\nexport type LegendTableMarkerType = 'disk' | 'tick';\nexport type LinkTheme = 'file-link' | 'normal' | 'back' | 'underline';\nexport type MediaDirection = 'media-content' | 'content-media';\nexport type PriceDescriptionColor = 'cornflower' | 'black';\nexport type ContentSize = 's' | 'm' | 'l';\nexport type ContentTextSize = 's' | 'm' | 'l';\nexport type ContentTheme = 'default' | 'dark' | 'light';\nexport type FileLinkType = 'vertical' | 'horizontal';\nexport type ImageCardMargins = 's' | 'm';\nexport type LayoutItemContentMargin = 'm' | 'l';\nexport type GravityIconProps = string | {name: keyof typeof icons; color: 'brand' | 'text-color'};\n\n// modifiers\nexport interface Themable {\n theme?: TextTheme;\n}\n\nexport interface Justifyable {\n justify?: Justify;\n}\n\nexport interface Stylable {\n className?: string;\n}\n\nexport interface Animatable {\n animated?: boolean;\n}\n\nexport interface Tabbable {\n tabIndex?: number;\n}\n\nexport interface Roleable {\n role?: React.AriaRole;\n}\n\nexport interface AriaProps {\n ariaProps?: React.AriaAttributes;\n}\n\n//common props\nexport interface Background {\n image?: string;\n color?: string;\n}\n\nexport interface AnchorProps {\n text: string;\n url: string;\n}\n\n/**\n * @deprecated Component VideoBlock will be deleted, which uses this logic\n */\ninterface LoopProps {\n start: number;\n end?: number;\n}\n\n// images\n\nexport enum Device {\n Desktop = 'desktop',\n Mobile = 'mobile',\n Tablet = 'tablet',\n}\n\nexport interface ImageInfoProps\n extends Pick<\n React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>,\n 'aria-describedby' | 'loading'\n >,\n ImageDevicesVisibleProps {\n alt?: string;\n fetchPriority?: 'high' | 'low' | 'auto';\n disableCompress?: boolean;\n}\n\nexport interface ImageObjectProps extends ImageInfoProps {\n src: string;\n}\n\nexport interface ImageDeviceProps extends ImageInfoProps {\n [Device.Desktop]: string;\n [Device.Mobile]: string;\n [Device.Tablet]?: string;\n}\n\nexport interface ImageDevicesVisibleProps {\n hide?: boolean | Partial<Record<Device, boolean>>;\n}\n\nexport type ImageProps = string | ImageObjectProps | ImageDeviceProps;\nexport type ThemedImage = ThemeSupporting<ImageProps>;\n\nexport interface BackgroundImageProps\n extends React.HTMLProps<HTMLDivElement>,\n Partial<ImageDeviceProps>,\n Partial<ImageObjectProps>,\n QAProps,\n ImageDevicesVisibleProps {\n style?: React.CSSProperties;\n imageClassName?: string;\n}\n\n//components props\nexport interface MediaVideoProps extends AnalyticsEventsBase {\n src: string[];\n type?: MediaVideoType;\n loop?: LoopProps | boolean;\n muted?: boolean;\n autoplay?: boolean;\n elapsedTime?: number;\n playButton?: PlayButtonProps;\n controls?: MediaVideoControlsType;\n customControlsOptions?: CustomControlsOptions;\n ariaLabel?: string;\n contain?: boolean;\n onVideoEnd?: () => void;\n ref?: React.Ref<HTMLVideoElement | null>;\n}\n\n// links\nexport interface LinkProps extends AnalyticsEventsBase, Stylable, Tabbable {\n url: string;\n urlTitle?: string;\n text?: string;\n textSize?: TextSize;\n theme?: LinkTheme;\n colorTheme?: TextTheme;\n arrow?: boolean;\n target?: string;\n extraProps?: React.HTMLProps<HTMLAnchorElement>;\n}\n\nexport interface FileLinkProps extends ClassNameProps, Tabbable {\n href: string;\n text: React.ReactNode;\n type?: FileLinkType;\n textSize?: TextSize;\n theme?: ContentTheme;\n urlTitle?: string;\n onClick?: () => void;\n extraProps?: React.HTMLProps<HTMLAnchorElement>;\n}\n\n// buttons\nexport type ButtonTheme =\n | ButtonView\n | 'github'\n | 'app-store'\n | 'google-play'\n | 'scale'\n | 'monochrome';\n\nexport interface ButtonProps extends AnalyticsEventsBase {\n text: string;\n url: string;\n urlTitle?: string;\n primary?: boolean;\n theme?: ButtonTheme;\n img?: ButtonImageProps | string;\n target?: string;\n size?: UikitButtonProps['size'];\n width?: UikitButtonProps['width'];\n extraProps?: UikitButtonProps['extraProps'];\n}\n\nexport type ButtonImagePosition = 'left' | 'right';\n\nexport interface ButtonImageProps {\n url?: string;\n position?: ButtonImagePosition;\n alt?: string;\n iconData?: IconData;\n iconSize?: number;\n className?: string;\n}\n\nexport interface CustomControlsOptions {\n type?: CustomControlsType;\n muteButtonShown?: boolean;\n positioning?: CustomControlsButtonPositioning;\n}\n\nexport interface PlayButtonProps extends ClassNameProps {\n type?: PlayButtonType;\n theme?: PlayButtonThemes;\n text?: string;\n}\n\nexport type ThemedMediaVideoProps = ThemeSupporting<MediaVideoProps>;\n\nexport interface MediaComponentVideoProps extends AnalyticsEventsBase {\n video: MediaVideoProps;\n height?: number;\n ratio?: number | 'auto';\n previewImg?: string;\n}\n\nexport interface MediaComponentVideoIframeProps {\n videoIframe: string;\n}\n\nexport interface MediaComponentYoutubeProps {\n youtube: string;\n previewImg?: string;\n fullscreen?: boolean;\n}\n\nexport interface MediaComponentImageProps {\n image: ImageProps | ImageProps[] | ImageDeviceProps;\n video?: MediaVideoProps;\n parallax?: boolean;\n height?: number;\n disableImageSliderForArrayInput?: boolean;\n}\n\nexport interface MediaComponentDataLensProps {\n dataLens: DataLensProps;\n}\n\nexport interface MediaComponentIframeProps {\n iframe: IframeProps;\n margins?: boolean;\n}\n\nexport interface MediaProps\n extends Animatable,\n Partial<MediaComponentDataLensProps>,\n Partial<MediaComponentYoutubeProps>,\n Partial<MediaComponentVideoIframeProps>,\n Partial<MediaComponentImageProps>,\n Partial<MediaComponentIframeProps>,\n Partial<MediaComponentVideoProps> {\n color?: string;\n videoMicrodata?: {\n name?: string;\n description?: string;\n duration?: string;\n uploadDate?: string;\n contentUrl?: string;\n thumbnailUrl?: string;\n };\n}\n\nexport interface BackgroundMediaProps extends MediaProps, Animatable, QAProps {\n fullWidthMedia?: boolean;\n className?: string;\n mediaClassName?: string;\n}\n\nexport type Coordinate = [number, number];\n\nexport interface MapBaseProps {\n zoom?: number;\n className?: string;\n forceAspectRatio?: boolean;\n}\n\nexport interface GMapProps extends MapBaseProps {\n address: string;\n}\n\nexport type YMapMargin =\n | number\n | [vertical: number, horizontal: number]\n | [top: number, right: number, bottom: number, left: number];\n\nexport interface YMapCopyrightPosition {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\nexport interface YMapProps extends MapBaseProps {\n markers: YMapMarker[];\n disableControls?: boolean;\n disableBalloons?: boolean;\n areaMargin?: YMapMargin;\n copyrightPosition?: YMapCopyrightPosition;\n id: string;\n}\n\nexport interface YMapMarker {\n address?: string;\n coordinate?: Coordinate;\n label?: YMapMarkerLabel;\n}\n\nexport interface YMapMarkerLabel {\n iconCaption?: string;\n iconContent?: string;\n iconColor?: string;\n iconImageHref?: string;\n iconImageSize?: [number, number];\n iconImageOffset?: [number, number];\n iconImageClipRect?: [[number, number], [number, number]];\n iconLayout?: 'default#image';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconShape?: Record<string, any>;\n preset?: string;\n}\n\nexport interface YMapMarkerPrivate extends YMapMarker {\n label?: YMapMarkerLabelPrivate;\n}\n\nexport interface YMapMarkerLabelPrivate extends YMapMarkerLabel {\n cursor?: string;\n interactivityModel?: string;\n}\n\nexport type MapProps = GMapProps | YMapProps;\n\nexport type ThemedMediaProps = ThemeSupporting<MediaProps>;\n\nexport interface DataLensObjectProps {\n id: string;\n theme: 'dark' | 'light';\n}\n\nexport interface IframeProps {\n src: string;\n width?: number;\n height?: number;\n title?: string;\n name?: string;\n}\n\nexport type DataLensProps = string | DataLensObjectProps;\n\nexport interface AuthorItem {\n firstName: string;\n secondName: string;\n description?: string;\n avatar?: ThemeSupporting<ImageProps> | JSX.Element;\n}\n\nexport interface HeaderBreadCrumbsProps extends ClassNameProps {\n items: {\n url: string;\n text: React.ReactNode;\n }[];\n theme?: TextTheme;\n analyticsEvents?: AnalyticsEventsProp;\n}\n\nexport interface TitleItemProps extends Justifyable, TitleItemBaseProps {\n navTitle?: string;\n anchor?: string;\n}\n\nexport interface TitleItemBaseProps {\n text: string;\n textSize?: TextSize;\n url?: string;\n urlTitle?: string;\n custom?: string | React.ReactNode;\n onClick?: () => void;\n}\n\nexport type MediaView = 'fit' | 'full';\n\n// card\nexport type MediaBorder = 'shadow' | 'line' | 'none';\nexport type CardBorder = MediaBorder;\nexport type ControlPosition = 'content' | 'footer';\n\nexport interface CardBaseProps {\n border?: CardBorder;\n}\n\nexport type CardLayoutProps = {\n controlPosition?: ControlPosition;\n};\n\n//price\nexport interface PriceDescriptionProps {\n title: string;\n detailedTitle?: string;\n description: string;\n label?: {\n color: PriceLabelColor;\n text?: string;\n size?: TextSize;\n };\n}\n\nexport interface PriceDetailsSettingsProps {\n title: string;\n description: string;\n}\n\nexport interface PriceDetailsListProps {\n text: string;\n}\n\nexport interface PriceDetailsProps {\n items?: PriceDetailsSettingsProps[] | PriceDetailsListProps[];\n}\n\nexport interface PriceItemProps\n extends PriceDetailsProps,\n PriceDescriptionProps,\n AnalyticsEventsBase {}\n\nexport interface PriceFoldableDetailsProps {\n title: string;\n size?: TextSize;\n titleColor?: PriceDescriptionColor;\n}\n\n/** @deprecated */\nexport interface PriceDetailedProps extends CardBaseProps {\n items: PriceItemProps[];\n description?: {\n titleSize?: TextSize;\n descriptionSize?: TextSize;\n titleColor?: PriceDescriptionColor;\n };\n details?: {\n titleSize?: TextSize;\n descriptionSize?: TextSize;\n };\n priceType?: PriceDetailsType;\n numberGroupItems?: 3 | 4 | 5;\n isCombined?: boolean;\n useMixedView?: boolean;\n foldable?: PriceFoldableDetailsProps;\n labelsDefaultText?: Record<PriceLabelColor, string>;\n}\n\nexport interface AuthorProps extends QAProps {\n author: AuthorItem;\n className?: string;\n authorContainerClassName?: string;\n type?: AuthorType;\n theme?: ContentTheme;\n}\n\nexport interface TitleProps {\n title?: TitleItemProps | string;\n subtitle?: string;\n}\n\nexport interface YandexFormProps extends AnalyticsEventsBase {\n id: number | string;\n containerId?: string;\n theme?: string;\n className?: string;\n headerHeight?: number;\n customFormOrigin?: string;\n customFormSection?: string;\n params?: {[key: string]: string};\n\n onSubmit?: () => void;\n onLoad?: () => void;\n}\n\nexport interface WithBorder {\n border?: MediaBorder;\n /**\n * @deprecated use custom class for media-component\n */\n disableShadow?: boolean;\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"../../../../src","sources":["models/constructor-items/common.ts"],"names":[],"mappings":"AAQA,QAAQ;AACR,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;AACjB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+CAA2B,CAAA;IAC3B,yCAAqB,CAAA;AACzB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,8BAAW,CAAA;AACf,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,iCAAa,CAAA;IACb,iCAAa,CAAA;AACjB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,yDAAmC,CAAA;IACnC,oEAA8C,CAAA;AAClD,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,MAAM,CAAN,IAAY,+BAIX;AAJD,WAAY,+BAA+B;IACvC,gDAAa,CAAA;IACb,kDAAe,CAAA;IACf,oDAAiB,CAAA;AACrB,CAAC,EAJW,+BAA+B,KAA/B,+BAA+B,QAI1C;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACrB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,6CAAmB,CAAA;IACnB,2CAAiB,CAAA;AACrB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,gCAAmB,CAAA;IACnB,6CAAgC,CAAA;AACpC,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAuED,SAAS;AAET,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IACd,6BAAmB,CAAA;IACnB,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;AACrB,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB","sourcesContent":["import * as React from 'react';\n\nimport * as icons from '@gravity-ui/icons';\nimport {ButtonView, IconData, ButtonProps as UikitButtonProps} from '@gravity-ui/uikit';\n\nimport {ThemeSupporting} from '../../utils';\nimport {AnalyticsEventsBase, AnalyticsEventsProp, ClassNameProps, QAProps} from '../common';\n\n// enums\nexport enum AuthorType {\n Column = 'column',\n Line = 'line',\n}\n\nexport enum PriceDetailsType {\n MARKED_LIST = 'marked-list',\n SETTINGS = 'settings',\n}\n\nexport enum PriceLabelColor {\n BLUE = 'blue',\n GREEN = 'green',\n YELLOW = 'yellow',\n PURPLE = 'purple',\n RED = 'red',\n}\n\nexport enum PlayButtonType {\n Default = 'default',\n Text = 'text',\n}\n\nexport enum PlayButtonThemes {\n Blue = 'blue',\n Grey = 'grey',\n}\n\nexport enum CustomControlsType {\n WithMuteButton = 'with-mute-button',\n WithPlayPauseButton = 'with-play-pause-button',\n}\n\nexport enum CustomControlsButtonPositioning {\n Left = 'left',\n Right = 'right',\n Center = 'center',\n}\n\nexport enum MediaVideoType {\n Default = 'default',\n Player = 'player',\n}\n\nexport enum MediaVideoControlsType {\n Default = 'default',\n Custom = 'custom',\n}\n\nexport enum QuoteType {\n Chevron = 'chevron', // « »\n EnglishDouble = 'english-double', // “ ”\n}\n\n// types\nexport type TextTheme = 'light' | 'dark';\nexport type TextSize = 'xs' | 's' | 'sm' | 'm' | 'l';\nexport type DividerSize = '0' | 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl';\nexport type HeaderWidth = 's' | 'm' | 'l';\nexport type HeaderImageSize = 's' | 'm';\nexport type HeaderOffset = 'default' | 'large';\nexport type Justify = 'start' | 'center' | 'end';\nexport type ColumnsCount = 1 | 2 | 3 | 4;\nexport type LegendTableMarkerType = 'disk' | 'tick';\nexport type LinkTheme = 'file-link' | 'normal' | 'back' | 'underline';\nexport type MediaDirection = 'media-content' | 'content-media';\nexport type PriceDescriptionColor = 'cornflower' | 'black';\nexport type ContentSize = 's' | 'm' | 'l';\nexport type ContentTextSize = 's' | 'm' | 'l';\nexport type ContentTheme = 'default' | 'dark' | 'light';\nexport type FileLinkType = 'vertical' | 'horizontal';\nexport type ImageCardMargins = 's' | 'm';\nexport type LayoutItemContentMargin = 'm' | 'l';\nexport type GravityIconProps = string | {name: keyof typeof icons; color: 'brand' | 'text-color'};\n\n// modifiers\nexport interface Themable {\n theme?: TextTheme;\n}\n\nexport interface Justifyable {\n justify?: Justify;\n}\n\nexport interface Stylable {\n className?: string;\n}\n\nexport interface Animatable {\n animated?: boolean;\n}\n\nexport interface Tabbable {\n tabIndex?: number;\n}\n\nexport interface Roleable {\n role?: React.AriaRole;\n}\n\nexport interface AriaProps {\n ariaProps?: React.AriaAttributes;\n}\n\n//common props\nexport interface Background {\n image?: string;\n color?: string;\n}\n\nexport interface AnchorProps {\n text: string;\n url: string;\n}\n\n/**\n * @deprecated Component VideoBlock will be deleted, which uses this logic\n */\ninterface LoopProps {\n start: number;\n end?: number;\n}\n\n// images\n\nexport enum Device {\n Desktop = 'desktop',\n Mobile = 'mobile',\n Tablet = 'tablet',\n}\n\nexport interface ImageInfoProps\n extends Pick<\n React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>,\n 'aria-describedby' | 'loading'\n >,\n ImageDevicesVisibleProps {\n alt?: string;\n fetchPriority?: 'high' | 'low' | 'auto';\n disableCompress?: boolean;\n}\n\nexport interface ImageObjectProps extends ImageInfoProps {\n src: string;\n}\n\nexport interface ImageDeviceProps extends ImageInfoProps {\n [Device.Desktop]: string;\n [Device.Mobile]: string;\n [Device.Tablet]?: string;\n}\n\nexport interface ImageDevicesVisibleProps {\n hide?: boolean | Partial<Record<Device, boolean>>;\n}\n\nexport type ImageProps = string | ImageObjectProps | ImageDeviceProps;\nexport type ThemedImage = ThemeSupporting<ImageProps>;\n\nexport interface BackgroundImageProps\n extends React.HTMLProps<HTMLDivElement>,\n Partial<ImageDeviceProps>,\n Partial<ImageObjectProps>,\n QAProps,\n ImageDevicesVisibleProps {\n style?: React.CSSProperties;\n imageClassName?: string;\n}\n\n//components props\nexport interface MediaVideoProps extends AnalyticsEventsBase {\n src: string[];\n type?: MediaVideoType;\n loop?: LoopProps | boolean;\n muted?: boolean;\n autoplay?: boolean;\n elapsedTime?: number;\n playButton?: PlayButtonProps;\n controls?: MediaVideoControlsType;\n customControlsOptions?: CustomControlsOptions;\n ariaLabel?: string;\n contain?: boolean;\n onVideoEnd?: () => void;\n ref?: React.Ref<HTMLVideoElement | null>;\n}\n\n// links\nexport interface LinkProps extends AnalyticsEventsBase, Stylable, Tabbable {\n url: string;\n urlTitle?: string;\n text?: string;\n textSize?: TextSize;\n theme?: LinkTheme;\n colorTheme?: TextTheme;\n arrow?: boolean;\n target?: string;\n extraProps?: React.HTMLProps<HTMLAnchorElement>;\n}\n\nexport interface FileLinkProps extends ClassNameProps, Tabbable {\n href: string;\n text: React.ReactNode;\n type?: FileLinkType;\n textSize?: TextSize;\n theme?: ContentTheme;\n urlTitle?: string;\n onClick?: () => void;\n extraProps?: React.HTMLProps<HTMLAnchorElement>;\n}\n\n// buttons\nexport type ButtonTheme =\n | ButtonView\n | 'github'\n | 'app-store'\n | 'google-play'\n | 'scale'\n | 'monochrome';\n\nexport interface ButtonProps extends AnalyticsEventsBase {\n text: string;\n url: string;\n urlTitle?: string;\n primary?: boolean;\n theme?: ButtonTheme;\n img?: ButtonImageProps | string;\n target?: string;\n size?: UikitButtonProps['size'];\n width?: UikitButtonProps['width'];\n extraProps?: UikitButtonProps['extraProps'];\n}\n\nexport type ButtonImagePosition = 'left' | 'right';\n\nexport interface ButtonImageProps {\n url?: string;\n position?: ButtonImagePosition;\n alt?: string;\n iconData?: IconData;\n iconSize?: number;\n className?: string;\n}\n\nexport interface CustomControlsOptions {\n type?: CustomControlsType;\n muteButtonShown?: boolean;\n positioning?: CustomControlsButtonPositioning;\n}\n\nexport interface PlayButtonProps extends ClassNameProps {\n type?: PlayButtonType;\n theme?: PlayButtonThemes;\n text?: string;\n}\n\nexport type ThemedMediaVideoProps = ThemeSupporting<MediaVideoProps>;\n\nexport interface MediaComponentVideoProps extends AnalyticsEventsBase {\n video: MediaVideoProps;\n height?: number;\n ratio?: number | 'auto';\n previewImg?: string;\n}\n\nexport interface MediaComponentVideoIframeProps {\n videoIframe: string;\n}\n\nexport interface MediaComponentYoutubeProps {\n youtube: string;\n previewImg?: string;\n fullscreen?: boolean;\n}\n\nexport interface MediaComponentImageProps {\n image: ImageProps | ImageProps[] | ImageDeviceProps;\n video?: MediaVideoProps;\n parallax?: boolean;\n height?: number;\n disableImageSliderForArrayInput?: boolean;\n}\n\nexport interface MediaComponentDataLensProps {\n dataLens: DataLensProps;\n}\n\nexport interface MediaComponentIframeProps {\n iframe: IframeProps;\n margins?: boolean;\n}\n\nexport interface MediaProps\n extends Animatable,\n Partial<MediaComponentDataLensProps>,\n Partial<MediaComponentYoutubeProps>,\n Partial<MediaComponentVideoIframeProps>,\n Partial<MediaComponentImageProps>,\n Partial<MediaComponentIframeProps>,\n Partial<MediaComponentVideoProps> {\n color?: string;\n videoMicrodata?: {\n name?: string;\n description?: string;\n duration?: string;\n uploadDate?: string;\n contentUrl?: string;\n thumbnailUrl?: string;\n };\n}\n\nexport interface BackgroundMediaProps extends MediaProps, Animatable, QAProps {\n fullWidthMedia?: boolean;\n className?: string;\n mediaClassName?: string;\n}\n\nexport type Coordinate = [number, number];\n\nexport interface MapBaseProps {\n zoom?: number;\n className?: string;\n forceAspectRatio?: boolean;\n}\n\nexport interface GMapProps extends MapBaseProps {\n address: string;\n}\n\nexport type YMapMargin =\n | number\n | [vertical: number, horizontal: number]\n | [top: number, right: number, bottom: number, left: number];\n\nexport interface YMapCopyrightPosition {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\nexport interface YMapProps extends MapBaseProps {\n markers: YMapMarker[];\n disableControls?: boolean;\n disableBalloons?: boolean;\n areaMargin?: YMapMargin;\n copyrightPosition?: YMapCopyrightPosition;\n id: string;\n}\n\nexport interface YMapMarker {\n address?: string;\n coordinate?: Coordinate;\n label?: YMapMarkerLabel;\n}\n\nexport interface YMapMarkerLabel {\n iconCaption?: string;\n iconContent?: string;\n iconColor?: string;\n iconImageHref?: string;\n iconImageSize?: [number, number];\n iconImageOffset?: [number, number];\n iconImageClipRect?: [[number, number], [number, number]];\n iconLayout?: 'default#image';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconShape?: Record<string, any>;\n preset?: string;\n}\n\nexport interface YMapMarkerPrivate extends YMapMarker {\n label?: YMapMarkerLabelPrivate;\n}\n\nexport interface YMapMarkerLabelPrivate extends YMapMarkerLabel {\n cursor?: string;\n interactivityModel?: string;\n}\n\nexport type MapProps = GMapProps | YMapProps;\n\nexport type ThemedMediaProps = ThemeSupporting<MediaProps>;\n\nexport interface DataLensObjectProps {\n id: string;\n theme: 'dark' | 'light';\n}\n\nexport interface IframeProps {\n src: string;\n width?: number;\n height?: number;\n title?: string;\n name?: string;\n}\n\nexport type DataLensProps = string | DataLensObjectProps;\n\nexport interface AuthorItem {\n firstName: string;\n secondName: string;\n description?: string;\n avatar?: ThemeSupporting<ImageProps> | JSX.Element;\n}\n\nexport interface HeaderBreadCrumbsProps extends ClassNameProps {\n items: {\n url: string;\n text: React.ReactNode;\n }[];\n theme?: TextTheme;\n analyticsEvents?: AnalyticsEventsProp;\n}\n\nexport interface TitleItemProps extends Justifyable, TitleItemBaseProps, AnalyticsEventsBase {\n navTitle?: string;\n anchor?: string;\n}\n\nexport interface TitleItemBaseProps {\n text: string;\n textSize?: TextSize;\n url?: string;\n urlTitle?: string;\n custom?: string | React.ReactNode;\n onClick?: () => void;\n}\n\nexport type MediaView = 'fit' | 'full';\n\n// card\nexport type MediaBorder = 'shadow' | 'line' | 'none';\nexport type CardBorder = MediaBorder;\nexport type ControlPosition = 'content' | 'footer';\n\nexport interface CardBaseProps {\n border?: CardBorder;\n}\n\nexport type CardLayoutProps = {\n controlPosition?: ControlPosition;\n};\n\n//price\nexport interface PriceDescriptionProps {\n title: string;\n detailedTitle?: string;\n description: string;\n label?: {\n color: PriceLabelColor;\n text?: string;\n size?: TextSize;\n };\n}\n\nexport interface PriceDetailsSettingsProps {\n title: string;\n description: string;\n}\n\nexport interface PriceDetailsListProps {\n text: string;\n}\n\nexport interface PriceDetailsProps {\n items?: PriceDetailsSettingsProps[] | PriceDetailsListProps[];\n}\n\nexport interface PriceItemProps\n extends PriceDetailsProps,\n PriceDescriptionProps,\n AnalyticsEventsBase {}\n\nexport interface PriceFoldableDetailsProps {\n title: string;\n size?: TextSize;\n titleColor?: PriceDescriptionColor;\n}\n\n/** @deprecated */\nexport interface PriceDetailedProps extends CardBaseProps {\n items: PriceItemProps[];\n description?: {\n titleSize?: TextSize;\n descriptionSize?: TextSize;\n titleColor?: PriceDescriptionColor;\n };\n details?: {\n titleSize?: TextSize;\n descriptionSize?: TextSize;\n };\n priceType?: PriceDetailsType;\n numberGroupItems?: 3 | 4 | 5;\n isCombined?: boolean;\n useMixedView?: boolean;\n foldable?: PriceFoldableDetailsProps;\n labelsDefaultText?: Record<PriceLabelColor, string>;\n}\n\nexport interface AuthorProps extends QAProps {\n author: AuthorItem;\n className?: string;\n authorContainerClassName?: string;\n type?: AuthorType;\n theme?: ContentTheme;\n}\n\nexport interface TitleProps {\n title?: TitleItemProps | string;\n subtitle?: string;\n}\n\nexport interface YandexFormProps extends AnalyticsEventsBase {\n id: number | string;\n containerId?: string;\n theme?: string;\n className?: string;\n headerHeight?: number;\n customFormOrigin?: string;\n customFormSection?: string;\n params?: {[key: string]: string};\n\n onSubmit?: () => void;\n onLoad?: () => void;\n}\n\nexport interface WithBorder {\n border?: MediaBorder;\n /**\n * @deprecated use custom class for media-component\n */\n disableShadow?: boolean;\n}\n"]}
@@ -13,6 +13,7 @@ export declare const blockHeaderTransformer: ({
13
13
  urlTitle?: string;
14
14
  custom?: string | React.ReactNode;
15
15
  onClick?: () => void;
16
+ analyticsEvents?: import("../index.js").AnalyticsEventsProp;
16
17
  };
17
18
  renderInline: boolean;
18
19
  } | {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "8.1.2-alpha.0",
3
+ "version": "8.2.0-alpha.0",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -321,7 +321,7 @@ export interface HeaderBreadCrumbsProps extends ClassNameProps {
321
321
  theme?: TextTheme;
322
322
  analyticsEvents?: AnalyticsEventsProp;
323
323
  }
324
- export interface TitleItemProps extends Justifyable, TitleItemBaseProps {
324
+ export interface TitleItemProps extends Justifyable, TitleItemBaseProps, AnalyticsEventsBase {
325
325
  navTitle?: string;
326
326
  anchor?: string;
327
327
  }
@@ -13,6 +13,7 @@ export declare const blockHeaderTransformer: ({
13
13
  urlTitle?: string;
14
14
  custom?: string | React.ReactNode;
15
15
  onClick?: () => void;
16
+ analyticsEvents?: import("../models").AnalyticsEventsProp;
16
17
  };
17
18
  renderInline: boolean;
18
19
  } | {