@cloud-ru/ds-uikit-product-modal-predefined 1.0.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 (155) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +359 -0
  4. package/dist/cjs/components/DeleteModal/DeleteModal.d.ts +2 -0
  5. package/dist/cjs/components/DeleteModal/DeleteModal.js +39 -0
  6. package/dist/cjs/components/DeleteModal/index.d.ts +1 -0
  7. package/dist/cjs/components/DeleteModal/index.js +17 -0
  8. package/dist/cjs/components/DeleteModal/styles.module.css +33 -0
  9. package/dist/cjs/components/RecallModal/RecallModal.d.ts +2 -0
  10. package/dist/cjs/components/RecallModal/RecallModal.js +37 -0
  11. package/dist/cjs/components/RecallModal/index.d.ts +1 -0
  12. package/dist/cjs/components/RecallModal/index.js +17 -0
  13. package/dist/cjs/components/RecallModal/styles.module.css +33 -0
  14. package/dist/cjs/components/ReleaseNotes/ReleaseNotes.d.ts +7 -0
  15. package/dist/cjs/components/ReleaseNotes/ReleaseNotes.js +15 -0
  16. package/dist/cjs/components/ReleaseNotes/index.d.ts +1 -0
  17. package/dist/cjs/components/ReleaseNotes/index.js +17 -0
  18. package/dist/cjs/components/index.d.ts +3 -0
  19. package/dist/cjs/components/index.js +19 -0
  20. package/dist/cjs/constants.d.ts +27 -0
  21. package/dist/cjs/constants.js +30 -0
  22. package/dist/cjs/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.d.ts +2 -0
  23. package/dist/cjs/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.js +21 -0
  24. package/dist/cjs/helperComponents/DesktopReleaseNotes/index.d.ts +1 -0
  25. package/dist/cjs/helperComponents/DesktopReleaseNotes/index.js +17 -0
  26. package/dist/cjs/helperComponents/DesktopReleaseNotes/styles.module.css +19 -0
  27. package/dist/cjs/helperComponents/InputConfirm/InputConfirm.d.ts +48 -0
  28. package/dist/cjs/helperComponents/InputConfirm/InputConfirm.js +15 -0
  29. package/dist/cjs/helperComponents/InputConfirm/index.d.ts +1 -0
  30. package/dist/cjs/helperComponents/InputConfirm/index.js +17 -0
  31. package/dist/cjs/helperComponents/InputConfirm/styles.module.css +38 -0
  32. package/dist/cjs/helperComponents/MobileReleaseNotes/MobileReleaseNotes.d.ts +2 -0
  33. package/dist/cjs/helperComponents/MobileReleaseNotes/MobileReleaseNotes.js +26 -0
  34. package/dist/cjs/helperComponents/MobileReleaseNotes/index.d.ts +1 -0
  35. package/dist/cjs/helperComponents/MobileReleaseNotes/index.js +17 -0
  36. package/dist/cjs/helperComponents/NoteItem/NoteItem.d.ts +6 -0
  37. package/dist/cjs/helperComponents/NoteItem/NoteItem.js +20 -0
  38. package/dist/cjs/helperComponents/NoteItem/index.d.ts +1 -0
  39. package/dist/cjs/helperComponents/NoteItem/index.js +17 -0
  40. package/dist/cjs/helperComponents/NoteItem/styles.module.css +53 -0
  41. package/dist/cjs/helperComponents/ReleaseNotesContent/ReleaseNotesContent.d.ts +28 -0
  42. package/dist/cjs/helperComponents/ReleaseNotesContent/ReleaseNotesContent.js +30 -0
  43. package/dist/cjs/helperComponents/ReleaseNotesContent/index.d.ts +1 -0
  44. package/dist/cjs/helperComponents/ReleaseNotesContent/index.js +17 -0
  45. package/dist/cjs/helperComponents/ReleaseNotesContent/styles.module.css +40 -0
  46. package/dist/cjs/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.d.ts +25 -0
  47. package/dist/cjs/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.js +17 -0
  48. package/dist/cjs/helperComponents/ReleaseNotesFooter/index.d.ts +1 -0
  49. package/dist/cjs/helperComponents/ReleaseNotesFooter/index.js +17 -0
  50. package/dist/cjs/helperComponents/ReleaseNotesFooter/styles.module.css +27 -0
  51. package/dist/cjs/helperComponents/index.d.ts +6 -0
  52. package/dist/cjs/helperComponents/index.js +22 -0
  53. package/dist/cjs/hooks.d.ts +26 -0
  54. package/dist/cjs/hooks.js +59 -0
  55. package/dist/cjs/index.d.ts +4 -0
  56. package/dist/cjs/index.js +20 -0
  57. package/dist/cjs/locale/index.d.ts +143 -0
  58. package/dist/cjs/locale/index.js +76 -0
  59. package/dist/cjs/package.json +3 -0
  60. package/dist/cjs/style.css +243 -0
  61. package/dist/cjs/types.d.ts +67 -0
  62. package/dist/cjs/types.js +2 -0
  63. package/dist/esm/components/DeleteModal/DeleteModal.d.ts +2 -0
  64. package/dist/esm/components/DeleteModal/DeleteModal.js +33 -0
  65. package/dist/esm/components/DeleteModal/index.d.ts +1 -0
  66. package/dist/esm/components/DeleteModal/index.js +1 -0
  67. package/dist/esm/components/DeleteModal/styles.module.css +33 -0
  68. package/dist/esm/components/RecallModal/RecallModal.d.ts +2 -0
  69. package/dist/esm/components/RecallModal/RecallModal.js +31 -0
  70. package/dist/esm/components/RecallModal/index.d.ts +1 -0
  71. package/dist/esm/components/RecallModal/index.js +1 -0
  72. package/dist/esm/components/RecallModal/styles.module.css +33 -0
  73. package/dist/esm/components/ReleaseNotes/ReleaseNotes.d.ts +7 -0
  74. package/dist/esm/components/ReleaseNotes/ReleaseNotes.js +12 -0
  75. package/dist/esm/components/ReleaseNotes/index.d.ts +1 -0
  76. package/dist/esm/components/ReleaseNotes/index.js +1 -0
  77. package/dist/esm/components/index.d.ts +3 -0
  78. package/dist/esm/components/index.js +3 -0
  79. package/dist/esm/constants.d.ts +27 -0
  80. package/dist/esm/constants.js +27 -0
  81. package/dist/esm/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.d.ts +2 -0
  82. package/dist/esm/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.js +15 -0
  83. package/dist/esm/helperComponents/DesktopReleaseNotes/index.d.ts +1 -0
  84. package/dist/esm/helperComponents/DesktopReleaseNotes/index.js +1 -0
  85. package/dist/esm/helperComponents/DesktopReleaseNotes/styles.module.css +19 -0
  86. package/dist/esm/helperComponents/InputConfirm/InputConfirm.d.ts +48 -0
  87. package/dist/esm/helperComponents/InputConfirm/InputConfirm.js +9 -0
  88. package/dist/esm/helperComponents/InputConfirm/index.d.ts +1 -0
  89. package/dist/esm/helperComponents/InputConfirm/index.js +1 -0
  90. package/dist/esm/helperComponents/InputConfirm/styles.module.css +38 -0
  91. package/dist/esm/helperComponents/MobileReleaseNotes/MobileReleaseNotes.d.ts +2 -0
  92. package/dist/esm/helperComponents/MobileReleaseNotes/MobileReleaseNotes.js +23 -0
  93. package/dist/esm/helperComponents/MobileReleaseNotes/index.d.ts +1 -0
  94. package/dist/esm/helperComponents/MobileReleaseNotes/index.js +1 -0
  95. package/dist/esm/helperComponents/NoteItem/NoteItem.d.ts +6 -0
  96. package/dist/esm/helperComponents/NoteItem/NoteItem.js +14 -0
  97. package/dist/esm/helperComponents/NoteItem/index.d.ts +1 -0
  98. package/dist/esm/helperComponents/NoteItem/index.js +1 -0
  99. package/dist/esm/helperComponents/NoteItem/styles.module.css +53 -0
  100. package/dist/esm/helperComponents/ReleaseNotesContent/ReleaseNotesContent.d.ts +28 -0
  101. package/dist/esm/helperComponents/ReleaseNotesContent/ReleaseNotesContent.js +24 -0
  102. package/dist/esm/helperComponents/ReleaseNotesContent/index.d.ts +1 -0
  103. package/dist/esm/helperComponents/ReleaseNotesContent/index.js +1 -0
  104. package/dist/esm/helperComponents/ReleaseNotesContent/styles.module.css +40 -0
  105. package/dist/esm/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.d.ts +25 -0
  106. package/dist/esm/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.js +11 -0
  107. package/dist/esm/helperComponents/ReleaseNotesFooter/index.d.ts +1 -0
  108. package/dist/esm/helperComponents/ReleaseNotesFooter/index.js +1 -0
  109. package/dist/esm/helperComponents/ReleaseNotesFooter/styles.module.css +27 -0
  110. package/dist/esm/helperComponents/index.d.ts +6 -0
  111. package/dist/esm/helperComponents/index.js +6 -0
  112. package/dist/esm/hooks.d.ts +26 -0
  113. package/dist/esm/hooks.js +55 -0
  114. package/dist/esm/index.d.ts +4 -0
  115. package/dist/esm/index.js +4 -0
  116. package/dist/esm/locale/index.d.ts +143 -0
  117. package/dist/esm/locale/index.js +73 -0
  118. package/dist/esm/style.css +243 -0
  119. package/dist/esm/types.d.ts +67 -0
  120. package/dist/esm/types.js +1 -0
  121. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  122. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  123. package/package.json +63 -0
  124. package/src/components/DeleteModal/DeleteModal.tsx +116 -0
  125. package/src/components/DeleteModal/index.ts +1 -0
  126. package/src/components/DeleteModal/styles.module.scss +37 -0
  127. package/src/components/RecallModal/RecallModal.tsx +111 -0
  128. package/src/components/RecallModal/index.ts +1 -0
  129. package/src/components/RecallModal/styles.module.scss +37 -0
  130. package/src/components/ReleaseNotes/ReleaseNotes.tsx +15 -0
  131. package/src/components/ReleaseNotes/index.ts +1 -0
  132. package/src/components/index.ts +3 -0
  133. package/src/constants.ts +29 -0
  134. package/src/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.tsx +85 -0
  135. package/src/helperComponents/DesktopReleaseNotes/index.ts +1 -0
  136. package/src/helperComponents/DesktopReleaseNotes/styles.module.scss +24 -0
  137. package/src/helperComponents/InputConfirm/InputConfirm.tsx +72 -0
  138. package/src/helperComponents/InputConfirm/index.ts +1 -0
  139. package/src/helperComponents/InputConfirm/styles.module.scss +30 -0
  140. package/src/helperComponents/MobileReleaseNotes/MobileReleaseNotes.tsx +88 -0
  141. package/src/helperComponents/MobileReleaseNotes/index.ts +1 -0
  142. package/src/helperComponents/NoteItem/NoteItem.tsx +58 -0
  143. package/src/helperComponents/NoteItem/index.ts +1 -0
  144. package/src/helperComponents/NoteItem/styles.module.scss +54 -0
  145. package/src/helperComponents/ReleaseNotesContent/ReleaseNotesContent.tsx +119 -0
  146. package/src/helperComponents/ReleaseNotesContent/index.ts +1 -0
  147. package/src/helperComponents/ReleaseNotesContent/styles.module.scss +45 -0
  148. package/src/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.tsx +84 -0
  149. package/src/helperComponents/ReleaseNotesFooter/index.ts +1 -0
  150. package/src/helperComponents/ReleaseNotesFooter/styles.module.scss +25 -0
  151. package/src/helperComponents/index.ts +6 -0
  152. package/src/hooks.ts +89 -0
  153. package/src/index.ts +4 -0
  154. package/src/locale/index.ts +77 -0
  155. package/src/types.ts +80 -0
@@ -0,0 +1,2 @@
1
+ import { RecallModalProps } from '../../types';
2
+ export declare function RecallModal({ open, onClose, mode, closeOnPopstate, titleTooltip, onRecall, loading, content, confirmable, confirmText, hideConfirmCopyButton, subtitle, ...rest }: RecallModalProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RecallModal = RecallModal;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const button_1 = require("@cloud-ru/ds-button");
9
+ const modal_1 = require("@cloud-ru/ds-modal");
10
+ const tooltip_1 = require("@cloud-ru/ds-tooltip");
11
+ const react_1 = require("react");
12
+ const constants_1 = require("../../constants");
13
+ const helperComponents_1 = require("../../helperComponents");
14
+ const hooks_1 = require("../../hooks");
15
+ const locale_1 = require("../../locale");
16
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
17
+ function RecallModal({ open, onClose, mode, closeOnPopstate, titleTooltip, onRecall, loading, content, confirmable = false, confirmText, hideConfirmCopyButton, subtitle, ...rest }) {
18
+ const { t } = locale_1.modalPredefinedLocale.useTranslations();
19
+ const inputRef = (0, react_1.useRef)(null);
20
+ const { value, error, handleChange, reset, validate } = (0, hooks_1.useTextFieldValidation)({
21
+ target: confirmable ? confirmText : undefined,
22
+ errorText: t('confirm.error'),
23
+ });
24
+ const shouldShowConfirm = Boolean(confirmable && confirmText);
25
+ const handleClose = () => {
26
+ reset();
27
+ onClose();
28
+ };
29
+ const handleApproveClick = () => {
30
+ if (!validate()) {
31
+ inputRef.current?.focus();
32
+ return;
33
+ }
34
+ onRecall(handleClose);
35
+ };
36
+ return ((0, jsx_runtime_1.jsxs)(modal_1.ModalCustom, { open: open, onClose: handleClose, mode: mode, closeOnPopstate: closeOnPopstate, width: modal_1.WIDTH.S, "data-test-id": constants_1.TEST_IDS.recallModal, "data-confirmable": confirmable || undefined, ...rest, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaTop }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Header, { title: t('recallModal.title'), subtitle: subtitle, slotAfterTitle: titleTooltip ? (0, jsx_runtime_1.jsx)(tooltip_1.QuestionTooltip, { size: 's', tip: titleTooltip }) : undefined }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { className: styles_module_scss_1.default.body, content: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.content, children: [content ?? t('recallModal.content'), shouldShowConfirm && ((0, jsx_runtime_1.jsx)(helperComponents_1.InputConfirm, { ref: inputRef, confirmText: confirmText ?? '', confirmLabel: t('recallModal.confirmLabel'), hideConfirmCopyButton: hideConfirmCopyButton, value: value, error: error, size: 'l', copyLineAlign: 'start', placeholder: t('confirm.namePlaceholder'), onChange: handleChange }))] }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaBottom }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Footer, { children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.footer, children: [(0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Outline, appearance: button_1.APPEARANCE.Neutral, label: t('recallModal.cancel'), onClick: handleClose, "data-test-id": constants_1.TEST_IDS.cancelButton }), (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Filled, appearance: button_1.APPEARANCE.Critical, label: t('recallModal.approve'), loading: loading, onClick: handleApproveClick, "data-test-id": constants_1.TEST_IDS.approveButton })] }) })] }));
37
+ }
@@ -0,0 +1 @@
1
+ export * from './RecallModal';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./RecallModal"), exports);
@@ -0,0 +1,33 @@
1
+ .safeAreaTop{
2
+ display:flex;
3
+ flex-direction:column;
4
+ align-items:flex-start;
5
+ align-self:stretch;
6
+ padding-top:var(--sn-modal-anatomy-container-safeArea-paddingTop, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
7
+ }
8
+
9
+ .safeAreaBottom{
10
+ display:flex;
11
+ flex-direction:column;
12
+ align-items:flex-start;
13
+ align-self:stretch;
14
+ padding-bottom:var(--sn-modal-anatomy-container-safeArea-paddingBottom, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
15
+ }
16
+
17
+ .body{
18
+ min-height:auto;
19
+ }
20
+
21
+ .content{
22
+ display:flex;
23
+ flex-direction:column;
24
+ row-gap:var(--sn-primitive-dimension-16, 16px);
25
+ }
26
+
27
+ .footer{
28
+ display:flex;
29
+ -moz-column-gap:var(--sn-primitive-dimension-8, 8px);
30
+ column-gap:var(--sn-primitive-dimension-8, 8px);
31
+ justify-content:flex-end;
32
+ width:100%;
33
+ }
@@ -0,0 +1,7 @@
1
+ import { ReleaseNotesProps } from '../../types';
2
+ /**
3
+ * Адаптивный release-notes: на `mobile` — bottom sheet, иначе — модальное окно. Поверхность выбирается
4
+ * по `useAdaptiveLayout()` из `@cloud-ru/ds-adaptive` и пропом не задаётся. Форс раскладки — через
5
+ * `withLayoutType(ReleaseNotes, 'mobile')` либо `AdaptiveProvider` в поддереве.
6
+ */
7
+ export declare function ReleaseNotes(props: ReleaseNotesProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReleaseNotes = ReleaseNotes;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const adaptive_1 = require("@cloud-ru/ds-adaptive");
6
+ const helperComponents_1 = require("../../helperComponents");
7
+ /**
8
+ * Адаптивный release-notes: на `mobile` — bottom sheet, иначе — модальное окно. Поверхность выбирается
9
+ * по `useAdaptiveLayout()` из `@cloud-ru/ds-adaptive` и пропом не задаётся. Форс раскладки — через
10
+ * `withLayoutType(ReleaseNotes, 'mobile')` либо `AdaptiveProvider` в поддереве.
11
+ */
12
+ function ReleaseNotes(props) {
13
+ const { layoutType } = (0, adaptive_1.useAdaptiveLayout)();
14
+ return (0, adaptive_1.isMobileLayout)(layoutType) ? (0, jsx_runtime_1.jsx)(helperComponents_1.MobileReleaseNotes, { ...props }) : (0, jsx_runtime_1.jsx)(helperComponents_1.DesktopReleaseNotes, { ...props });
15
+ }
@@ -0,0 +1 @@
1
+ export * from './ReleaseNotes';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ReleaseNotes"), exports);
@@ -0,0 +1,3 @@
1
+ export * from './DeleteModal';
2
+ export * from './RecallModal';
3
+ export * from './ReleaseNotes';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DeleteModal"), exports);
18
+ __exportStar(require("./RecallModal"), exports);
19
+ __exportStar(require("./ReleaseNotes"), exports);
@@ -0,0 +1,27 @@
1
+ export declare const CONTENT_STATE: {
2
+ readonly Data: "data";
3
+ readonly NoData: "noData";
4
+ readonly Error: "error";
5
+ };
6
+ export declare const CONFIRM_TEXT_VARIANT: {
7
+ readonly Name: "name";
8
+ readonly Text: "text";
9
+ };
10
+ export declare const TEST_IDS: {
11
+ readonly deleteModal: "delete-modal";
12
+ readonly recallModal: "recall-modal";
13
+ readonly releaseNotes: "release-notes";
14
+ readonly approveButton: "modal-predefined__approve-button";
15
+ readonly cancelButton: "modal-predefined__cancel-button";
16
+ readonly confirmInput: "modal-predefined__confirm-input";
17
+ readonly confirmCopyButton: "modal-predefined__confirm-copy-button";
18
+ readonly releaseNotesItem: "modal-predefined__release-notes-item";
19
+ readonly releaseNotesMedia: "modal-predefined__release-notes-media";
20
+ readonly releaseNotesVideo: "modal-predefined__release-notes-video";
21
+ readonly releaseNotesError: "modal-predefined__release-notes-error";
22
+ readonly releaseNotesNoData: "modal-predefined__release-notes-no-data";
23
+ readonly releaseNotesRetryButton: "modal-predefined__release-notes-retry-button";
24
+ readonly releaseNotesReadLaterButton: "modal-predefined__release-notes-read-later-button";
25
+ readonly releaseNotesPrevButton: "modal-predefined__release-notes-prev-button";
26
+ readonly releaseNotesNextButton: "modal-predefined__release-notes-next-button";
27
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEST_IDS = exports.CONFIRM_TEXT_VARIANT = exports.CONTENT_STATE = void 0;
4
+ exports.CONTENT_STATE = {
5
+ Data: 'data',
6
+ NoData: 'noData',
7
+ Error: 'error',
8
+ };
9
+ exports.CONFIRM_TEXT_VARIANT = {
10
+ Name: 'name',
11
+ Text: 'text',
12
+ };
13
+ exports.TEST_IDS = {
14
+ deleteModal: 'delete-modal',
15
+ recallModal: 'recall-modal',
16
+ releaseNotes: 'release-notes',
17
+ approveButton: 'modal-predefined__approve-button',
18
+ cancelButton: 'modal-predefined__cancel-button',
19
+ confirmInput: 'modal-predefined__confirm-input',
20
+ confirmCopyButton: 'modal-predefined__confirm-copy-button',
21
+ releaseNotesItem: 'modal-predefined__release-notes-item',
22
+ releaseNotesMedia: 'modal-predefined__release-notes-media',
23
+ releaseNotesVideo: 'modal-predefined__release-notes-video',
24
+ releaseNotesError: 'modal-predefined__release-notes-error',
25
+ releaseNotesNoData: 'modal-predefined__release-notes-no-data',
26
+ releaseNotesRetryButton: 'modal-predefined__release-notes-retry-button',
27
+ releaseNotesReadLaterButton: 'modal-predefined__release-notes-read-later-button',
28
+ releaseNotesPrevButton: 'modal-predefined__release-notes-prev-button',
29
+ releaseNotesNextButton: 'modal-predefined__release-notes-next-button',
30
+ };
@@ -0,0 +1,2 @@
1
+ import { ReleaseNotesProps } from '../../types';
2
+ export declare function DesktopReleaseNotes({ open, onClose, closeOnPopstate, contentState, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, ...rest }: ReleaseNotesProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DesktopReleaseNotes = DesktopReleaseNotes;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const modal_1 = require("@cloud-ru/ds-modal");
9
+ const utils_1 = require("@cloud-ru/ds-utils");
10
+ const constants_1 = require("../../constants");
11
+ const hooks_1 = require("../../hooks");
12
+ const locale_1 = require("../../locale");
13
+ const ReleaseNotesContent_1 = require("../ReleaseNotesContent");
14
+ const ReleaseNotesFooter_1 = require("../ReleaseNotesFooter");
15
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
16
+ function DesktopReleaseNotes({ open, onClose, closeOnPopstate, contentState = constants_1.CONTENT_STATE.Data, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, ...rest }) {
17
+ const { t } = locale_1.modalPredefinedLocale.useTranslations();
18
+ const { pageIndex, readablePageNumber, setPage, handleClose, handleReadLaterClick, handleNextPageClick, handlePrevPageClick, } = (0, hooks_1.useReleaseNotesNavigation)({ onClose, onReadLaterClick, onSlideChange });
19
+ const shouldShowFooter = contentState === constants_1.CONTENT_STATE.Data && (loading || items.length > 0);
20
+ return ((0, jsx_runtime_1.jsxs)(modal_1.ModalCustom, { open: open, onClose: handleClose, closeOnPopstate: closeOnPopstate, width: modal_1.WIDTH.M, "data-content-state": contentState, "data-surface": 'modal', ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaTop }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Header, { title: t('releaseNotes.title') }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { className: styles_module_scss_1.default.body, content: (0, jsx_runtime_1.jsx)(ReleaseNotesContent_1.ReleaseNotesContent, { contentState: contentState, items: items, loading: loading, pageIndex: pageIndex, surface: 'modal', noDataTitle: t('releaseNotes.noDataTitle'), noDataDescription: t('releaseNotes.noDataDescription'), errorTitle: t('releaseNotes.errorTitle'), errorDescription: t('releaseNotes.errorDescription'), retryLabel: t('releaseNotes.retry'), onPageChange: setPage, onDataErrorRetryClick: onDataErrorRetryClick }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaBottom }), shouldShowFooter && ((0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Footer, { children: (0, jsx_runtime_1.jsx)(ReleaseNotesFooter_1.ReleaseNotesFooter, { surface: 'modal', total: items.length, pageIndex: pageIndex, readablePageNumber: readablePageNumber, counterLabel: t('releaseNotes.counter', { page: readablePageNumber, total: items.length }), readLaterLabel: t('releaseNotes.readLater'), onReadLaterClick: handleReadLaterClick, onPrevPageClick: handlePrevPageClick, onNextPageClick: () => handleNextPageClick(items.length) }) }))] }));
21
+ }
@@ -0,0 +1 @@
1
+ export * from './DesktopReleaseNotes';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DesktopReleaseNotes"), exports);
@@ -0,0 +1,19 @@
1
+ .safeAreaTop{
2
+ display:flex;
3
+ flex-direction:column;
4
+ align-items:flex-start;
5
+ align-self:stretch;
6
+ padding-top:var(--sn-modal-anatomy-container-safeArea-paddingTop, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
7
+ }
8
+
9
+ .safeAreaBottom{
10
+ display:flex;
11
+ flex-direction:column;
12
+ align-items:flex-start;
13
+ align-self:stretch;
14
+ padding-bottom:var(--sn-modal-anatomy-container-safeArea-paddingBottom, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
15
+ }
16
+
17
+ .body{
18
+ min-height:calc(6 * var(--sn-primitive-dimension-64, 64px));
19
+ }
@@ -0,0 +1,48 @@
1
+ import { FieldComboProps } from '@cloud-ru/ds-fields';
2
+ import { WithSupportProps } from '@cloud-ru/ds-utils';
3
+ export type InputConfirmProps = WithSupportProps<{
4
+ /** Текст, который нужно ввести для подтверждения */
5
+ confirmText: string;
6
+ /** Инструкция над текстом подтверждения */
7
+ confirmLabel?: string;
8
+ /** Скрыть кнопку копирования */
9
+ hideConfirmCopyButton?: boolean;
10
+ /** Значение поля */
11
+ value: string;
12
+ /** Текст ошибки */
13
+ error?: string;
14
+ /** Label поля */
15
+ label?: string;
16
+ /** Размер поля */
17
+ size?: FieldComboProps['size'];
18
+ /** Выравнивание copy-line */
19
+ copyLineAlign?: 'start' | 'space-between';
20
+ /** Placeholder поля */
21
+ placeholder: string;
22
+ /** Колбэк изменения значения */
23
+ onChange(value: string): void;
24
+ }>;
25
+ export declare const InputConfirm: import("react").ForwardRefExoticComponent<{
26
+ 'data-test-id'?: string;
27
+ } & import("react").AriaAttributes & {
28
+ /** Текст, который нужно ввести для подтверждения */
29
+ confirmText: string;
30
+ /** Инструкция над текстом подтверждения */
31
+ confirmLabel?: string;
32
+ /** Скрыть кнопку копирования */
33
+ hideConfirmCopyButton?: boolean;
34
+ /** Значение поля */
35
+ value: string;
36
+ /** Текст ошибки */
37
+ error?: string;
38
+ /** Label поля */
39
+ label?: string;
40
+ /** Размер поля */
41
+ size?: FieldComboProps["size"];
42
+ /** Выравнивание copy-line */
43
+ copyLineAlign?: "start" | "space-between";
44
+ /** Placeholder поля */
45
+ placeholder: string;
46
+ /** Колбэк изменения значения */
47
+ onChange(value: string): void;
48
+ } & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InputConfirm = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const fields_1 = require("@cloud-ru/ds-fields");
9
+ const uikit_product_copy_1 = require("@cloud-ru/ds-uikit-product-copy");
10
+ const react_1 = require("react");
11
+ const constants_1 = require("../../constants");
12
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
13
+ exports.InputConfirm = (0, react_1.forwardRef)(function InputConfirm({ confirmText, confirmLabel, hideConfirmCopyButton, value, error, label, size = 'm', copyLineAlign = 'space-between', placeholder, onChange, ...rest }, ref) {
14
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.root, children: [confirmLabel && (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.confirmLabel, children: confirmLabel }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.confirmText, "data-align": copyLineAlign, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.confirmValue, children: confirmText }), !hideConfirmCopyButton && (0, jsx_runtime_1.jsx)(uikit_product_copy_1.CopyButton, { valueToCopy: confirmText, "data-test-id": constants_1.TEST_IDS.confirmCopyButton })] }), (0, jsx_runtime_1.jsx)(fields_1.FieldCombo, { ...rest, ref: ref, inputMode: 'text', label: label, required: Boolean(label), size: size, placeholder: placeholder, value: value, onChange: onChange, hint: error, validationState: error ? fields_1.VALIDATION_STATE.Error : fields_1.VALIDATION_STATE.Default, "data-test-id": constants_1.TEST_IDS.confirmInput })] }));
15
+ });
@@ -0,0 +1 @@
1
+ export * from './InputConfirm';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./InputConfirm"), exports);
@@ -0,0 +1,38 @@
1
+ .root{
2
+ display:flex;
3
+ flex-direction:column;
4
+ }
5
+
6
+ .confirmText{
7
+ display:flex;
8
+ -moz-column-gap:var(--sn-primitive-dimension-8, 8px);
9
+ column-gap:var(--sn-primitive-dimension-8, 8px);
10
+ align-items:center;
11
+ justify-content:space-between;
12
+ margin-bottom:var(--sn-primitive-dimension-8, 8px);
13
+ }
14
+
15
+ .confirmText[data-align=start]{
16
+ -moz-column-gap:var(--sn-primitive-dimension-4, 4px);
17
+ column-gap:var(--sn-primitive-dimension-4, 4px);
18
+ justify-content:flex-start;
19
+ }
20
+
21
+ .confirmLabel{
22
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
23
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
24
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
25
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
26
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
27
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
28
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
29
+ }
30
+
31
+ .confirmValue{
32
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
33
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
34
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
35
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
36
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
37
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
38
+ }
@@ -0,0 +1,2 @@
1
+ import { ReleaseNotesProps } from '../../types';
2
+ export declare function MobileReleaseNotes({ open, onClose, closeOnPopstate, contentState, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, readLaterButtonProps, ...rest }: ReleaseNotesProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MobileReleaseNotes = MobileReleaseNotes;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const bottom_sheet_1 = require("@cloud-ru/ds-bottom-sheet");
6
+ const utils_1 = require("@cloud-ru/ds-utils");
7
+ const constants_1 = require("../../constants");
8
+ const hooks_1 = require("../../hooks");
9
+ const locale_1 = require("../../locale");
10
+ const ReleaseNotesContent_1 = require("../ReleaseNotesContent");
11
+ const ReleaseNotesFooter_1 = require("../ReleaseNotesFooter");
12
+ function MobileReleaseNotes({ open, onClose, closeOnPopstate, contentState = constants_1.CONTENT_STATE.Data, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, readLaterButtonProps, ...rest }) {
13
+ const { t } = locale_1.modalPredefinedLocale.useTranslations();
14
+ const { pageIndex, readablePageNumber, setPage, handleClose, handleReadLaterClick, handleNextPageClick, handlePrevPageClick, } = (0, hooks_1.useReleaseNotesNavigation)({ onClose, onReadLaterClick, onSlideChange });
15
+ const { onClick: onReadLaterButtonClick, ...readLaterButtonRest } = readLaterButtonProps ?? {};
16
+ const shouldShowFooter = contentState === constants_1.CONTENT_STATE.Data && (loading || items.length > 0);
17
+ const handleReadLaterButtonClick = (event) => {
18
+ onReadLaterButtonClick?.(event);
19
+ handleReadLaterClick();
20
+ };
21
+ return ((0, jsx_runtime_1.jsx)(bottom_sheet_1.BottomSheet
22
+ // Дефолт `withDividers` сменился на `true` — здесь вид сохраняем прежним.
23
+ , {
24
+ // Дефолт `withDividers` сменился на `true` — здесь вид сохраняем прежним.
25
+ withDividers: false, open: open, onClose: handleClose, closeOnPopstate: closeOnPopstate, title: t('releaseNotes.title'), content: (0, jsx_runtime_1.jsx)(ReleaseNotesContent_1.ReleaseNotesContent, { contentState: contentState, items: items, loading: loading, pageIndex: pageIndex, surface: 'bottomSheet', noDataTitle: t('releaseNotes.noDataTitle'), noDataDescription: t('releaseNotes.noDataDescription'), errorTitle: t('releaseNotes.errorTitle'), errorDescription: t('releaseNotes.errorDescription'), retryLabel: t('releaseNotes.retry'), onPageChange: setPage, onDataErrorRetryClick: onDataErrorRetryClick }), footer: shouldShowFooter ? ((0, jsx_runtime_1.jsx)(ReleaseNotesFooter_1.ReleaseNotesFooter, { surface: 'bottomSheet', total: items.length, pageIndex: pageIndex, readablePageNumber: readablePageNumber, counterLabel: t('releaseNotes.counter', { page: readablePageNumber, total: items.length }), readLaterLabel: t('releaseNotes.readLater'), onReadLaterClick: handleReadLaterButtonClick, onPrevPageClick: handlePrevPageClick, onNextPageClick: () => handleNextPageClick(items.length), readLaterButtonProps: readLaterButtonRest })) : undefined, "data-content-state": contentState, "data-surface": 'bottomSheet', ...(0, utils_1.extractSupportProps)(rest) }));
26
+ }
@@ -0,0 +1 @@
1
+ export * from './MobileReleaseNotes';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./MobileReleaseNotes"), exports);
@@ -0,0 +1,6 @@
1
+ import { NoteItemProps } from '../../types';
2
+ type NoteItemComponentProps = NoteItemProps & {
3
+ surface?: 'modal' | 'bottomSheet';
4
+ };
5
+ export declare function NoteItem({ title, description, image, video, surface }: NoteItemComponentProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NoteItem = NoteItem;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const markdown_1 = require("@cloud-ru/ds-markdown");
9
+ const scroll_1 = require("@cloud-ru/ds-scroll");
10
+ const skeleton_1 = require("@cloud-ru/ds-skeleton");
11
+ const typography_1 = require("@cloud-ru/ds-typography");
12
+ const react_1 = require("react");
13
+ const constants_1 = require("../../constants");
14
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
15
+ function NoteItem({ title, description, image, video, surface = 'modal' }) {
16
+ const [isVideoReady, setIsVideoReady] = (0, react_1.useState)(false);
17
+ const [hasVideoError, setHasVideoError] = (0, react_1.useState)(false);
18
+ const shouldShowVideo = Boolean(video && !hasVideoError);
19
+ return ((0, jsx_runtime_1.jsxs)("article", { className: styles_module_scss_1.default.root, "data-surface": surface, "data-test-id": constants_1.TEST_IDS.releaseNotesItem, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.media, "data-test-id": constants_1.TEST_IDS.releaseNotesMedia, children: [shouldShowVideo && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("video", { className: styles_module_scss_1.default.video, src: video, muted: true, loop: true, playsInline: true, autoPlay: true, onLoadedData: () => setIsVideoReady(true), onError: () => setHasVideoError(true), "data-test-id": constants_1.TEST_IDS.releaseNotesVideo }), !isVideoReady && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.videoSkeleton, "aria-hidden": true, children: (0, jsx_runtime_1.jsx)(skeleton_1.Skeleton, { loading: true, width: '100%', height: '100%' }) }))] })), !shouldShowVideo && (0, jsx_runtime_1.jsx)("img", { className: styles_module_scss_1.default.image, src: image.src, alt: image.alt })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.content, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: 'headline', size: 's', children: title }), (0, jsx_runtime_1.jsx)(scroll_1.Scroll, { className: styles_module_scss_1.default.description, barHideStrategy: scroll_1.BAR_HIDE_STRATEGY.Leave, children: (0, jsx_runtime_1.jsx)(markdown_1.Markdown, { value: description }) })] })] }));
20
+ }
@@ -0,0 +1 @@
1
+ export * from './NoteItem';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./NoteItem"), exports);
@@ -0,0 +1,53 @@
1
+ .root{
2
+ display:grid;
3
+ grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);
4
+ -moz-column-gap:var(--sn-primitive-dimension-24, 24px);
5
+ column-gap:var(--sn-primitive-dimension-24, 24px);
6
+ min-height:calc(5 * var(--sn-primitive-dimension-64, 64px));
7
+ }
8
+ .root[data-surface=bottomSheet]{
9
+ grid-template-columns:minmax(0, 1fr);
10
+ row-gap:var(--sn-primitive-dimension-16, 16px);
11
+ min-height:0;
12
+ }
13
+
14
+ .media{
15
+ position:relative;
16
+ overflow:hidden;
17
+ min-width:0;
18
+ border-radius:var(--sn-primitive-dimension-16, 16px);
19
+ }
20
+
21
+ .image,
22
+ .video{
23
+ display:block;
24
+ width:100%;
25
+ height:100%;
26
+ -o-object-fit:cover;
27
+ object-fit:cover;
28
+ }
29
+
30
+ .videoSkeleton{
31
+ position:absolute;
32
+ inset:0;
33
+ }
34
+
35
+ .content{
36
+ display:flex;
37
+ flex-direction:column;
38
+ row-gap:var(--sn-primitive-dimension-12, 12px);
39
+ min-width:0;
40
+ }
41
+
42
+ .description{
43
+ min-height:0;
44
+ }
45
+
46
+ .root[data-surface=modal] .content{
47
+ row-gap:var(--sn-primitive-dimension-16, 16px);
48
+ order:1;
49
+ }
50
+
51
+ .root[data-surface=modal] .media{
52
+ order:2;
53
+ }
@@ -0,0 +1,28 @@
1
+ import { NoteItemProps, ReleaseNotesContentState } from '../../types';
2
+ export type ReleaseNotesContentProps = {
3
+ /** Визуальное состояние */
4
+ contentState: ReleaseNotesContentState;
5
+ /** Новости */
6
+ items: NoteItemProps[];
7
+ /** Состояние загрузки */
8
+ loading?: boolean;
9
+ /** Текущая страница, zero-based */
10
+ pageIndex: number;
11
+ /** Поверхность */
12
+ surface: 'modal' | 'bottomSheet';
13
+ /** Заголовок no-data */
14
+ noDataTitle: string;
15
+ /** Описание no-data */
16
+ noDataDescription: string;
17
+ /** Заголовок ошибки */
18
+ errorTitle: string;
19
+ /** Описание ошибки */
20
+ errorDescription: string;
21
+ /** Label retry-кнопки */
22
+ retryLabel: string;
23
+ /** Смена страницы */
24
+ onPageChange(pageIndex: number): void;
25
+ /** Повторная загрузка */
26
+ onDataErrorRetryClick?(): void;
27
+ };
28
+ export declare function ReleaseNotesContent({ contentState, items, loading, pageIndex, surface, noDataTitle, noDataDescription, errorTitle, errorDescription, retryLabel, onPageChange, onDataErrorRetryClick, }: ReleaseNotesContentProps): import("react/jsx-runtime").JSX.Element;