@sberbusiness/triplex-next-mcp-server 1.41.0-beta → 1.42.0-beta

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.
@@ -1,9 +1,7 @@
1
1
  ---
2
2
  component: Amount
3
- category: Display
4
- figma-node: ""
5
- figma-file: ""
6
- related: [AmountField, Typography]
3
+ category: Amount
4
+ related: [AmountField, Text, StatusTrackerSum, TableFooterSummaryAmount]
7
5
  tokens: []
8
6
  stories: stories/Amount/Amount.stories.tsx
9
7
  version: "1.0"
@@ -13,208 +11,171 @@ version: "1.0"
13
11
 
14
12
  ## Назначение
15
13
 
16
- Display-компонент для отображения денежной суммы. Форматирует число с разделителями
17
- групп (неразрывный пробел) и фиксированной дробной частью, опционально добавляет
18
- сокращение валюты справа и подсказку через `title`. Поддерживает адаптивное
19
- уменьшение шрифта при длинных значениях.
20
-
21
- Компонент **только визуализирует**, не принимает ввод — для поля ввода денежной
22
- суммы используй `AmountField`.
23
-
24
- Используй когда: нужно вывести сумму в тексте, таблице, детали карточки. Когда
25
- важна единая визуальная форма отображения чисел по всей библиотеке.
26
- Не используй когда: сумму нужно вводить (возьми `AmountField`); нужна произвольная
27
- числовая метка без валюты и форматирования (используй обычный `Text`).
14
+ Отображение денежной суммы: строковое значение приводится к читаемому виду
15
+ (`8967452.31` → `8 967 452,31`) и при необходимости дополняется сокращённым обозначением
16
+ валюты. Компонент — inline-обёртка над `formatAmount` из `src/utils/amountUtils.ts`, без
17
+ внутреннего состояния и эффектов. Базового собственного оформления у него нет: цвет, размер и
18
+ начертание наследуются от родителя, поэтому в примерах он всегда стоит внутри `Text`.
19
+ Единственное исключение — `adaptive={true}`, при котором компонент применяет собственный
20
+ `styles.adaptive` с фиксированными `font-size` / `line-height` (см. «Как работает `adaptive`»).
21
+
22
+ Используй когда: нужно вывести сумму «только на чтение» — в карточке, таблице, заголовке,
23
+ подытоге.
24
+
25
+ Не используй когда:
26
+ - Сумму нужно вводить или редактировать — возьми `AmountField` (у него собственные парсер и
27
+ форматтер `AmountBaseInputParser` / `AmountBaseInputFormatter`).
28
+ - Нужно отформатировать число не для вывода, а для расчётов или строкового сравнения —
29
+ вызывай `formatAmount` / `amountComparator` из `@sberbusiness/triplex-next` напрямую, без
30
+ компонента. Импортируй именно с корня пакета: subpath `./utils/*` в `exports` не попадает
31
+ (`scripts/generate-package-json.js`), поэтому импорт из
32
+ `@sberbusiness/triplex-next/utils/amountUtils` у потребителя упадёт с
33
+ `ERR_PACKAGE_PATH_NOT_EXPORTED`.
28
34
 
29
35
  ---
30
36
 
31
- ## Файловая структура
32
-
33
- ```text
34
- src/components/Amount/
35
- ├── Amount.tsx # React.FC, НЕ forwardRef
36
- ├── index.ts # Barrel export
37
- ├── styles/Amount.module.less # Только .adaptive класс
38
- └── __tests__/Amount.test.tsx
39
- ```
37
+ ## Варианты и props
40
38
 
41
- Зависимости:
42
- - `@sberbusiness/triplex-next/utils/amountUtils` → `formatAmount` (использует `big.js`).
43
- - `@sberbusiness/triplex-next/consts/AmountConst` → константы разделителей
44
- (`DecimalComma`, `DecimalPoint`, `GroupSeparator`).
39
+ Компонент расширяет `React.HTMLAttributes<HTMLSpanElement>`: любой стандартный атрибут
40
+ `<span>` (`id`, `style`, `title`, `data-*`, обработчики) уходит на корневой элемент через
41
+ `...rest`.
45
42
 
46
- ---
43
+ ### Обязательные props
47
44
 
48
- ## Варианты и props
45
+ | Prop | Тип | Описание |
46
+ |---|---|---|
47
+ | `value` | `string` | Сумма строкой. Допустимы разделитель дробной части `.` или `,`, пробелы внутри числа и ведущий знак `+` / `-` |
49
48
 
50
- ### `IAmountProps extends React.HTMLAttributes<HTMLSpanElement>`
49
+ ### Опциональные props
51
50
 
52
51
  | Prop | Тип | По умолчанию | Описание |
53
52
  |---|---|---|---|
54
- | `value` | `string` | — (обязателен) | Числовое значение как строка. Может содержать `.` или `,`, пробелы, знак `+`/`-`. Внутри форматируется через `big.js` → устойчиво к floating-point. |
55
- | `fractionLength` | `0 \| 1 \| 2 \| 3 \| 4` | `2` (из `AmountConst.FractionLength`) | Количество знаков после запятой. Тип **литерал-union** — нельзя передать произвольный `number`. Для `0` потребитель обязан передать **именно `0`**, не `null`/`undefined` (undefined даст дефолт 2). |
56
- | `currency` | `string` | — | Если указан — справа от суммы добавляется `\u00A0{currency}` (неразрывный пробел + строка). Не задано → валюта не отображается. |
57
- | `currencyTitle` | `string` | — | Подсказка (title-атрибут) для валюты — обычно полное название ("Российские рубли" для "RUB"). Применяется к `<span>`, обёрнутому вокруг currency. |
58
- | `adaptive` | `boolean` | `false` | Если `true` и длина форматированной строки ≥ 14 — добавляется класс `.adaptive` (font-size: 10px, line-height: 12px через `!important`). |
59
- | `dataTestId` | `string` | — | **Кастомный prop**, не пробрасывается на root `<span>`. Используется только для `data-test-id` на внутренние `<span>` (суффиксы `__amount`, `__currencyName`). |
60
- | `className` | `string` | — | Объединяется с `.adaptive` через `clsx`. |
61
- | `...HTMLSpanAttributes` | — | — | Всё остальное спредится на root `<span>`. |
53
+ | `fractionLength` | `0 \| 1 \| 2 \| 3 \| 4` | `2` (`AmountConst.FractionLength`) | Количество знаков после запятой |
54
+ | `currency` | `string` | — | Сокращённое обозначение валюты, выводится после суммы через неразрывный пробел |
55
+ | `currencyTitle` | `string` | — | Значение атрибута `title` на элементе валюты — расшифровка кода (`RUB` → «Российские рубли») |
56
+ | `adaptive` | `boolean` | `false` | Уменьшает шрифт, если форматированная сумма длиннее порога |
57
+ | `dataTestId` | `string` | — | Префикс тестовых атрибутов дочерних элементов |
58
+
59
+ ### Как обрабатывается `value`
60
+
61
+ Всю логику форматирования выполняет `formatAmount(value, fractionLength)`; компонент только
62
+ подменяет знак минуса (см. Accessibility). Существенные для потребителя следствия:
63
+
64
+ - **Дробная часть обрезается, а не округляется** — внутри `formatAmount` выставлен
65
+ `Big.RM = 0`. `"1234.567"` при `fractionLength={2}` даёт `1 234,56`, а не `1 234,57`.
66
+ - **Нечисловое значение не бросает исключение**, а превращается в ноль: `"abc"` → `0,00`.
67
+ Это осознанное поведение библиотеки — компонент не должен падать в рантайме у потребителя.
68
+ - **Пустая строка даёт пустой вывод** — рендерятся пустые `<span>`, а не `0,00`. Если при этом
69
+ задан `currency`, выводятся неразрывный пробел и обозначение валюты: сумма пустая, а валюта
70
+ остаётся (ветка отрисовки валюты не смотрит на то, пуста ли сумма). Отсекать пустые значения,
71
+ если такой вывод нежелателен, нужно на стороне потребителя.
72
+ - **Ведущий `+` сохраняется**, ведущий `-` заменяется на знак минуса.
73
+ - Разделитель групп — неразрывный пробел `U+00A0` (`AmountConst.GroupSeparator`), разделитель
74
+ дробной части — запятая (`AmountConst.DecimalComma`). Оба не настраиваются через props,
75
+ локализация формата не поддерживается.
76
+
77
+ ### Как работает `adaptive`
78
+
79
+ `adaptive` не задаёт размер напрямую, а включает класс `styles.adaptive`
80
+ (`font-size: 10px`, `line-height: 12px`), когда длина **форматированной суммы** достигает
81
+ `ADAPTIVE_AMOUNT_LENGTH = 14` символов. Нюансы:
82
+
83
+ - Считается строка после форматирования, вместе с разделителями групп и дробной частью:
84
+ `"12 345 678,00"` — 13 символов, шрифт не уменьшается; `"123 456 789,00"` — 14, уменьшается.
85
+ - Обозначение валюты в длину **не входит**.
86
+ - Знак минуса в длину **входит** — она меряется уже после замены дефис-минуса. У одной и той
87
+ же суммы адаптив может включиться только из-за знака: `"12 345 678,00"` — 13 символов, без
88
+ адаптива, а `"−12 345 678,00"` — ровно 14, с адаптивом.
89
+ - Размер фиксированный (10px) — промежуточных ступеней нет, от размера родительского `Text`
90
+ результат не зависит.
62
91
 
63
92
  ---
64
93
 
65
- ## Ключевые особенности реализации
66
-
67
- ### Компонент — `React.FC`, НЕ `forwardRef`
68
-
69
- ```tsx
70
- export const Amount: React.FC<IAmountProps> = ({ ... }) => { ... }
71
- ```
72
-
73
- Это **исключение из правила библиотеки про обязательный forwardRef**. Причина
74
- исторически неизвестна; при AI refactoring компонент должен быть переведён на
75
- `React.forwardRef<HTMLSpanElement, IAmountProps>`. Это non-breaking изменение.
76
- До рефакторинга — не добавлять ref-логику, она не пройдёт TypeScript.
77
-
78
- ### `dataTestId` — НЕ `data-testid`
79
-
80
- Имя prop — camelCase `dataTestId`. Пропускается через проп-деструктуризацию и
81
- применяется только к внутренним спанам:
82
- - `{dataTestId}__amount` — на спан с самим числом.
83
- - `{dataTestId}__currencyName` — на спан с валютой.
84
-
85
- На root `<span>` `dataTestId` не попадает автоматически — потребитель, если нужно,
86
- передаёт `data-test-id` через `...restProps`. Это намеренная двухуровневая
87
- структура для тестов.
88
-
89
- ### Замена дефис-минуса на настоящий знак минус
90
-
91
- ```ts
92
- if (formattedAmount[0] == "-") {
93
- formattedAmount = formattedAmount.replace("\u002D", "\u2212");
94
- }
95
- ```
96
-
97
- `\u002D` — ASCII hyphen-minus, `\u2212` — Unicode MINUS SIGN. Screen reader
98
- корректно произносит `\u2212` как "минус", а `\u002D` обычно читается как "дефис"
99
- или пропускается. **Не убирать** — это осознанная a11y-особенность.
100
-
101
- Замена применяется ТОЛЬКО в первой позиции — если минус в середине (например,
102
- разделитель диапазона "100–200"), он не будет заменён.
103
-
104
- ### Неразрывный пробел перед валютой
105
-
106
- ```tsx
107
- renderCurrencyName = () => [
108
- "\u00A0", // NBSP
109
- <span ...>{currency}</span>,
110
- ]
111
- ```
112
-
113
- Между числом и валютой вставляется NBSP (`\u00A0`), не обычный пробел. Это
114
- предотвращает перенос валюты на следующую строку при переполнении.
115
-
116
- ### Адаптивный шрифт через `!important`
117
-
118
- `.adaptive { font-size: 10px !important; line-height: 12px !important; }` —
119
- `!important` нужен, чтобы перебить родительский Typography-стиль. Если потребитель
120
- хочет переопределить размер — `className` с более специфичным селектором тоже
121
- должен использовать `!important`. Это компромисс ради надёжного поведения
122
- в контексте таблиц/карточек.
123
-
124
- Порог `adaptiveAmountLength = 14` — длина именно **форматированной** строки (после
125
- вставки разделителей групп). Не равна количеству значащих цифр.
126
-
127
- ### `formatAmount` — большая часть логики вне компонента
128
-
129
- `Amount.tsx` — тонкая обёртка. Вся сложность форматирования в `utils/amountUtils.ts`:
130
- - Использует `big.js` для чисел (устойчиво к floating-point).
131
- - `Big.RM = 0` — режим без округления (truncate).
132
- - Принимает запятую и точку как десятичный разделитель.
133
- - Поддерживает знак "+" (сохраняется в выводе).
134
- - Поддерживает `separateGroups` и `fillFraction` — но **Amount не прокидывает эти
135
- флаги**. Для customизации форматирования нужно расширить Amount или использовать
136
- `formatAmount` напрямую.
137
-
138
- ### `data-tx={process.env.npm_package_version}`
94
+ ## Дизайн-токены
139
95
 
140
- На root `<span>` выставляется `data-tx` с версией пакета (Vite подставляет при
141
- сборке). Не удалять.
96
+ Собственных токенов у компонента нет: `styles/Amount.module.less` содержит единственное
97
+ правило `.adaptive` с литеральными `font-size` / `line-height`. Цвет и базовый размер шрифта
98
+ задаёт родитель — обычно `Text` (`ETextSize`, `EFontType`), см. примеры в stories.
142
99
 
143
100
  ---
144
101
 
145
102
  ## Инварианты
146
103
 
147
- - **`IAmountProps extends React.HTMLAttributes<HTMLSpanElement>`** — не менять на
148
- `HTMLDivElement`. Компонент inline по дизайну.
149
- - **`value` только `string`** — не `number`, не `Big`. Компонент не принимает
150
- `number` напрямую (в отличие от `formatAmount`, который принимает `string | Big`).
151
- Потребитель должен сам привести число к строке.
152
- - **`fractionLength` литеральный union `0 \| 1 \| 2 \| 3 \| 4`** — не расширять
153
- до `number`, это ограничение защищает от визуально уродливых значений (20 знаков).
154
- - **Замена `\u002D` → `\u2212` в минусе** — не удалять. A11y.
155
- - **NBSP (`\u00A0`) перед валютой** — не заменять на обычный пробел.
156
- - **`dataTestId` как camelCase prop** — не переименовывать в `data-testid` без
157
- breaking-change согласования.
158
- - **`.adaptive` с `!important`** — не убирать `!important` без параллельной
159
- правки потребителей (которые полагаются на его работу в таблицах).
160
- - **`adaptiveAmountLength = 14`** — константа внутри файла, не выносить в props
161
- без дизайнерского согласования.
162
- - **`formatAmount` вызов не мемоизируется** — если это станет bottleneck (большие
163
- таблицы), оборачивай Amount в `React.memo` снаружи. Не добавлять `useMemo`
164
- внутрь без профиля.
104
+ - **`forwardRef` на корневой `<span>`** — не убирать. Ref указывает на тот же элемент, что
105
+ получает `className` и `...rest` (с 1.42.0).
106
+ - **`data-tx` выставляется после `{...restProps}`** — поэтому потребитель не может его
107
+ перетереть через props. Позиции `className` и `ref` в JSX на поведение не влияют
108
+ (`className` деструктурирован и мерджится через `clsx`, `ref` в `restProps` попасть не может).
109
+ - **Разметка фиксирована:** корневой `<span>` → `<span>` с суммой → (при наличии `currency`)
110
+ неразрывный пробел текстовым узлом → `<span>` с валютой. Валюта отдельным элементом нужна
111
+ для `title` и для тестового атрибута; неразрывный пробел — чтобы валюта не отрывалась от
112
+ суммы при переносе строки.
113
+ - **Замена `-` на `−`** — accessibility-контракт, см. ниже. Не «упрощать» обратно
114
+ до дефиса.
115
+ - **`dataTestId` — префикс, а не готовый атрибут.** На корневой элемент `data-test-id` не
116
+ ставится; дочерние получают `${dataTestId}__amount` и `${dataTestId}__currencyName`. Схема
117
+ именования — часть публичного контракта, на неё опираются e2e потребителей.
118
+ - **`IAmountProps` — не только props этого компонента.** `StatusTrackerSum` строит из него
119
+ свой публичный интерфейс: `amountProps: IAmountProps` в `IStatusTrackerSumProps`
120
+ (`src/components/StatusTracker/components/StatusTrackerSum.tsx`). Любое изменение формы
121
+ `IAmountProps` автоматически меняет публичный API `StatusTracker`.
122
+ - **`!important` в `.adaptive`** — достался исторически, причина в репозитории не
123
+ зафиксирована. Внутренние потребители кладут `Amount` внутрь `Title` / `Text`, а не
124
+ навешивают их класс на него, то есть сценария, требующего `!important`, внутри библиотеки
125
+ нет. Снимать — только вместе с прогоном visual-тестов.
126
+ - **`displayName = "Amount"`** — используется в React DevTools.
165
127
 
166
128
  ---
167
129
 
168
130
  ## Accessibility
169
131
 
170
- - **Замена дефиса на настоящий минус (`\u2212`)** — screen reader корректно
171
- озвучивает знак "минус". Это ключевая a11y-особенность компонента.
172
- - **`currency` как отдельный `<span>`** внутри — позволяет потребителю, при
173
- необходимости, добавить `aria-label` через children override.
174
- - **`title={currencyTitle}`** — при наведении курсора показывает полное название
175
- валюты (например, "Российские рубли" для "RUB"). Screen reader читает title
176
- как дополнительное описание.
177
- - **Нет `aria-label` по умолчанию** — если нужно озвучить значение целиком с валютой
178
- ("восемь миллионов девятьсот шестьдесят семь тысяч четыреста пятьдесят два рубля
179
- тридцать одна копейка"), потребитель должен сформировать его сам и передать
180
- через `aria-label` в `...restProps`. Автоматического склонения названия валюты
181
- компонент не делает.
182
-
183
- ---
184
-
185
- ## Дизайн-токены
186
-
187
- Нет — компонент не хардкодит цветов и использует наследуемый от родителя шрифт.
188
- Единственное исключение — класс `.adaptive` с фиксированными `10px/12px`
189
- (не через токены). Это кандидат на рефакторинг с введением токенов.
132
+ - **Знак минуса.** `formatAmount` возвращает отрицательные суммы с дефис-минусом `-`.
133
+ Как его озвучит скрин-ридер, зависит от контекста и настроек пунктуации: перед числом он
134
+ часто читается как «минус», но может и игнорироваться, и давать паузу. Типографский минус
135
+ `−` (U+2212) распознаётся однозначно, поэтому компонент подменяет символ — так озвучивание
136
+ перестаёт зависеть от AT и её настроек. Замена делается только для первого символа —
137
+ внутри числа дефисов не бывает.
138
+ - **Неразрывный пробел** между суммой и валютой (`U+00A0`) удерживает их на одной строке.
139
+ - Компонент неинтерактивен: не получает фокус, не обрабатывает клавиатуру, ARIA-ролей не
140
+ выставляет. Семантику («Итого», «Остаток») даёт окружающая разметка.
141
+ - `currencyTitle` попадает в `title` — это подсказка по наведению, а не доступное имя.
142
+ Строка приходит от потребителя, компонент текст не хардкодит (библиотека мультиязычная).
143
+ - Компонент не выставляет `aria-label` с суммой прописью: текстовое содержимое читается
144
+ скрин-ридером как есть.
190
145
 
191
146
  ---
192
147
 
193
148
  ## Связанные компоненты
194
149
 
195
- - `AmountField` (`src/components/AmountField`) — input-аналог для ввода суммы.
196
- Использует тот же `formatAmount` и ту же знак-замену.
197
- - `Typography` — Amount наследует шрифт от родителя; обычно оборачивается в
198
- `Text` / `Title` нужного размера.
199
- - `formatAmount` / `amountComparator` (`src/utils/amountUtils.ts`) — утилиты,
200
- которые Amount использует внутри, но также могут быть использованы напрямую
201
- потребителем для консистентного форматирования в местах, где Amount-компонент
202
- не подходит.
203
- - `AmountConst` (`src/consts/AmountConst`) — источник констант:
204
- `FractionLength=2`, `DecimalComma=","`, `DecimalPoint="."`, `GroupSeparator="\u00A0"`.
150
+ - `AmountField` (`src/components/AmountField/AmountField.tsx`) — поле ввода суммы.
151
+ Использует не `Amount`, а собственные `AmountBaseInputParser` / `AmountBaseInputFormatter`;
152
+ общего кода с `Amount` у него нет, кроме `AmountConst`.
153
+ - `Text` (`src/components/Typography/Text.tsx`) — типовой родитель: задаёт размер, цвет
154
+ (`EFontType.BRAND` для прихода, `EFontType.ERROR` для расхода) и начертание.
155
+ - `StatusTrackerSum` (`src/components/StatusTracker/components/StatusTrackerSum.tsx`) —
156
+ сумма в шапке статус-трекера, пробрасывает в `Amount` весь `amountProps`.
157
+ - `TableFooterSummaryAmount` (`src/components/Table/TableFooter/components/TableFooterSummaryAmount.tsx`) —
158
+ подытог в подвале таблицы, рендерит `Amount` с `value` и `currency`.
159
+ - `formatAmount` / `amountComparator` (`src/utils/amountUtils.ts`) — публичные утилиты; при
160
+ выводе суммы в разметке предпочитай компонент, при расчётах и сортировке — утилиты.
205
161
 
206
162
  ---
207
163
 
208
164
  ## Stories
209
165
 
210
- `stories/Amount/Amount.stories.tsx`
166
+ Основные истории: `stories/Amount/Amount.stories.tsx`
211
167
  Файлы примеров: `stories/Amount/examples/`
212
168
 
213
169
  | Story | Example file | Что демонстрирует |
214
170
  |---|---|---|
215
- | `Playground` | `PlaygroundExample.tsx` | Интерактивный контроль всех props |
216
- | `Default` | `DefaultExample.tsx` | Базовое использование с RUB |
217
- | `Example` | `ShowcaseExample.tsx` | Расширенный пример (разные значения, знаки) |
171
+ | `Playground` | `PlaygroundExample.tsx` | Интерактивный подбор `value`, `fractionLength`, `currency`, `currencyTitle`, `adaptive` |
172
+ | `Default` | `DefaultExample.tsx` | Минимальный вызов: сумма с валютой внутри `Text` |
173
+ | `Adaptive` | `AdaptiveExample.tsx` | Уменьшение шрифта на длинной сумме (50 млрд) |
174
+ | `Example` | `ShowcaseExample.tsx` | Витрина: разные `fractionLength`, знаки `+` / `-` с цветом, без валюты, акцент, адаптив |
175
+
176
+ Скриншоты снимаются со стори `Default` и `Adaptive` (`amount--default--xs|xl.png`,
177
+ `amount--adaptive--xs|xl.png`). `Playground` и `Example` исключены
178
+ (`testRunner: { skip: true }`).
218
179
 
219
180
  ---
220
181
 
@@ -222,7 +183,7 @@ renderCurrencyName = () => [
222
183
 
223
184
  | Дата | Изменение |
224
185
  |---|---|
225
- | 2026-04-18 | Создан документ |
186
+ | 2026-08-12 | Создан документ. AI-рефакторинг: `Amount` переведён с `React.FC` на `forwardRef` — ref указывает на корневой `<span>`, то есть на тот же элемент, что получает `className` и `...rest` (аддитивное изменение, `IAmountProps` не менялся). Порядок импортов приведён к codestyle, константа `adaptiveAmountLength` переименована в `ADAPTIVE_AMOUNT_LENGTH`, магические символы вынесены в именованные константы `HYPHEN_MINUS` / `MINUS_SIGN` / `NON_BREAKING_SPACE`, нестрогое сравнение `==` заменено на `startsWith`, `let` заменён на `const`, inline-функция `renderCurrencyName` (возвращала массив React-узлов) заменена на фрагмент прямо в JSX, JSDoc props дополнен значениями по умолчанию, `!important` в `.adaptive` получил комментарий-обоснование. Unit-тесты расширены с 4 до 23 кейсов. Публичный API, DOM-разметка и визуальное отображение не изменены. |
226
187
 
227
188
  ---
228
189
 
@@ -243,6 +204,21 @@ export const DefaultExample = () => (
243
204
  );
244
205
  ```
245
206
 
207
+ ### Adaptive
208
+
209
+ `stories/Amount/examples/AdaptiveExample.tsx`
210
+
211
+ ```tsx
212
+ import React from "react";
213
+ import { Amount, EFontType, ETextSize, Text } from "@sberbusiness/triplex-next";
214
+
215
+ export const AdaptiveExample = () => (
216
+ <Text size={ETextSize.B2} type={EFontType.PRIMARY}>
217
+ <Amount value="50000000000.31" currency="RUB" currencyTitle="Российские рубли" fractionLength={2} adaptive />
218
+ </Text>
219
+ );
220
+ ```
221
+
246
222
  ### Example
247
223
 
248
224
  `stories/Amount/examples/ShowcaseExample.tsx`