@dss-kit/ui-kit 0.2.15 → 0.2.17

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 (73) hide show
  1. package/dist/components/builders/Box/Box.d.ts +2 -0
  2. package/dist/components/builders/Box/Box.d.ts.map +1 -1
  3. package/dist/components/builders/Modal/Modal.d.ts +2 -2
  4. package/dist/components/builders/Modal/Modal.d.ts.map +1 -1
  5. package/dist/components/builders/Modal/ModalFooter/ModalFooter.d.ts +38 -0
  6. package/dist/components/builders/Modal/ModalFooter/ModalFooter.d.ts.map +1 -1
  7. package/dist/components/builders/Modal/ModalHeader/ModalHeader.d.ts +16 -3
  8. package/dist/components/builders/Modal/ModalHeader/ModalHeader.d.ts.map +1 -1
  9. package/dist/components/builders/Modal/ModalMain/ModalMain.d.ts +67 -6
  10. package/dist/components/builders/Modal/ModalMain/ModalMain.d.ts.map +1 -1
  11. package/dist/components/builders/Table/TablePagination/TablePagination.d.ts.map +1 -1
  12. package/dist/components/builders/Table/TablePagination/TablePagination.utils.d.ts +16 -5
  13. package/dist/components/builders/Table/TablePagination/TablePagination.utils.d.ts.map +1 -1
  14. package/dist/components/builders/Text/Text.d.ts +2 -2
  15. package/dist/components/charts/LineChart/LineChart.d.ts +3 -2
  16. package/dist/components/charts/LineChart/LineChart.d.ts.map +1 -1
  17. package/dist/components/charts/LineChart/LineChart.stories.d.ts +3 -1
  18. package/dist/components/charts/LineChart/LineChart.stories.d.ts.map +1 -1
  19. package/dist/components/charts/LineChart/constants.d.ts.map +1 -1
  20. package/dist/components/charts/LineChart/types.d.ts +56 -13
  21. package/dist/components/charts/LineChart/types.d.ts.map +1 -1
  22. package/dist/components/charts/LineChart/utils.d.ts +3 -1
  23. package/dist/components/charts/LineChart/utils.d.ts.map +1 -1
  24. package/dist/components/charts/PieProgressChart/PieProgressChart.d.ts +2 -1
  25. package/dist/components/charts/PieProgressChart/PieProgressChart.d.ts.map +1 -1
  26. package/dist/components/controls/Input/Input.d.ts +1 -1
  27. package/dist/components/controls/Input/Input.d.ts.map +1 -1
  28. package/dist/components/controls/Input/Input.stories.d.ts +1 -0
  29. package/dist/components/controls/Input/Input.stories.d.ts.map +1 -1
  30. package/dist/components/controls/RadioGroup/Radio.d.ts +93 -0
  31. package/dist/components/controls/RadioGroup/Radio.d.ts.map +1 -0
  32. package/dist/components/controls/RadioGroup/RadioGroup.d.ts +116 -0
  33. package/dist/components/controls/RadioGroup/RadioGroup.d.ts.map +1 -0
  34. package/dist/components/controls/RadioGroup/RadioGroup.stories.d.ts +16 -0
  35. package/dist/components/controls/RadioGroup/RadioGroup.stories.d.ts.map +1 -0
  36. package/dist/components/controls/RadioGroup/context.d.ts +87 -0
  37. package/dist/components/controls/RadioGroup/context.d.ts.map +1 -0
  38. package/dist/components/controls/RadioGroup/index.d.ts +3 -0
  39. package/dist/components/controls/RadioGroup/index.d.ts.map +1 -0
  40. package/dist/components/controls/Select/Select.d.ts +12 -1
  41. package/dist/components/controls/Select/Select.d.ts.map +1 -1
  42. package/dist/components/controls/Select/Select.stories.d.ts.map +1 -1
  43. package/dist/components/controls/index.d.ts +1 -0
  44. package/dist/components/controls/index.d.ts.map +1 -1
  45. package/dist/components/index.d.ts +1 -0
  46. package/dist/components/index.d.ts.map +1 -1
  47. package/dist/components/shared/Skeleton/Skeleton.d.ts +296 -0
  48. package/dist/components/shared/Skeleton/Skeleton.d.ts.map +1 -0
  49. package/dist/components/shared/Skeleton/Skeleton.stories.d.ts +15 -0
  50. package/dist/components/shared/Skeleton/Skeleton.stories.d.ts.map +1 -0
  51. package/dist/components/shared/Skeleton/index.d.ts +3 -0
  52. package/dist/components/shared/Skeleton/index.d.ts.map +1 -0
  53. package/dist/components/shared/Tooltip/Tooltip.d.ts +139 -0
  54. package/dist/components/shared/Tooltip/Tooltip.d.ts.map +1 -0
  55. package/dist/components/shared/Tooltip/Tooltip.stories.d.ts +34 -0
  56. package/dist/components/shared/Tooltip/Tooltip.stories.d.ts.map +1 -0
  57. package/dist/components/shared/Tooltip/constants.d.ts +24 -0
  58. package/dist/components/shared/Tooltip/constants.d.ts.map +1 -0
  59. package/dist/components/shared/Tooltip/index.d.ts +3 -0
  60. package/dist/components/shared/Tooltip/index.d.ts.map +1 -0
  61. package/dist/components/shared/Tooltip/types.d.ts +16 -0
  62. package/dist/components/shared/Tooltip/types.d.ts.map +1 -0
  63. package/dist/components/shared/Tooltip/utils.d.ts +14 -0
  64. package/dist/components/shared/Tooltip/utils.d.ts.map +1 -0
  65. package/dist/components/shared/index.d.ts +2 -0
  66. package/dist/components/shared/index.d.ts.map +1 -1
  67. package/dist/root.css +1 -1
  68. package/dist/ui-kit.cjs.js +10 -29
  69. package/dist/ui-kit.cjs.js.map +1 -1
  70. package/dist/ui-kit.css +1 -1
  71. package/dist/ui-kit.es.js +5235 -4234
  72. package/dist/ui-kit.es.js.map +1 -1
  73. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/RadioGroup/Radio.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAKpC;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,UAAU,GAAG;IACvB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,sGAAsG;IACtG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC,uCAAuC;IACvC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAExB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAaF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,KAAK,sFAkIV,CAAC;AAIF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { default as React } from 'react';
2
+ import { Size } from '../../../types';
3
+ /**
4
+ * RadioGroup — контейнер для группы радио-кнопок.
5
+ *
6
+ * Предназначение:
7
+ * - Обеспечить единый источник правды для набора Radio компонент (через контекст).
8
+ * - Передать общий `name`, `disabled`, `size` и текущее `value` всем дочерним Radio.
9
+ * - Обеспечить контроль над выбором (controlled / uncontrolled API) и удобный callback `onChange`.
10
+ *
11
+ * Ключевые особенности:
12
+ * - Поддерживает controlled (`value` + `onChange`) и uncontrolled (`defaultValue`) режимы.
13
+ * - Экспортирует forwardRef на контейнер `div`.
14
+ * - Помещает в DOM роль `radiogroup` и выставляет `aria-invalid` при необходимости.
15
+ * - Параметр `size` задаёт размер всех Radio в группе (`sm` | `md`).
16
+ *
17
+ * Accessibility notes:
18
+ * - Радиогруппа рендерит `role="radiogroup"` и должна содержать элементы с `role="radio"`.
19
+ * - Компонент не реализует управление фокусом стрелками (arrow-key navigation). Это сделано намеренно —
20
+ * поведение клавиатурной навигации легче и корректнее реализуется там, где известна точная структура DOM
21
+ * и потребности приложения (например, поддержка направления RTL, циклической навигации и т.п.).
22
+ * - Рекомендуемая реализация навигации стрелками (если нужна): добавить обработчик `onKeyDown` на контейнер,
23
+ * получить список `[role="radio"]` и управлять фокусом/выбором через `element.focus()` и `setValue`.
24
+ *
25
+ * Props и поведение:
26
+ * - name?: string — передаётся в контекст; может использоваться для генерации атрибутов `name` при интеграции с формами.
27
+ * - label?: React.ReactNode — заголовок/лейбл группы; строковые значения автоматически оборачиваются в `Text`.
28
+ * - value?: string — контролируемый режим: текущее выбранное значение.
29
+ * - defaultValue?: string — начальное значение при неконтролируемом режиме.
30
+ * - onChange?: (value: string) => void — колбек при изменении выбранного значения.
31
+ * - children: React.ReactNode — ожидаются Radio компоненты (или их комбинации).
32
+ * - className?: string — дополнительный CSS класс для контейнера.
33
+ * - error?: boolean — помечает группу как невалидную (aria-invalid).
34
+ * - disabled?: boolean — если true — передаётся в контекст и отключает все Radio в группе.
35
+ * - size?: "sm" | "md" — глобальный размер для всех Radio в группе (по умолчанию 'md').
36
+ *
37
+ * Example usage:
38
+ *
39
+ * // Controlled
40
+ * const [value, setValue] = useState<string | undefined>("option1");
41
+ * <RadioGroup value={value} onChange={setValue} label="Выберите опцию">
42
+ * <Radio value="option1">Первый</Radio>
43
+ * <Radio value="option2">Второй</Radio>
44
+ * </RadioGroup>
45
+ *
46
+ * // Uncontrolled
47
+ * <RadioGroup defaultValue="option2" label="Пример">
48
+ * <Radio value="option1">Первый</Radio>
49
+ * <Radio value="option2">Второй</Radio>
50
+ * </RadioGroup>
51
+ */
52
+ export type RadioGroupProps = {
53
+ /**
54
+ * Лейбл (заголовок) радиогруппы.
55
+ * - Если передана строка — автоматически оборачивается в компонент <Text />
56
+ * с вторичным цветом.
57
+ * - Если передан ReactNode — рендерится как есть.
58
+ */
59
+ label?: React.ReactNode;
60
+ /**
61
+ * Контролируемое значение выбранного Radio.
62
+ * Если задано — RadioGroup работает в controlled-режиме,
63
+ * а изменение значения возможно только через `onChange`.
64
+ */
65
+ value?: string;
66
+ /**
67
+ * Начальное значение для неконтролируемого режима.
68
+ * Используется только если `value` не задан.
69
+ */
70
+ defaultValue?: string;
71
+ /**
72
+ * Колбек, вызываемый при смене выбранного значения.
73
+ * Вызывается как в controlled, так и в uncontrolled режиме.
74
+ */
75
+ onChange?: (value: string) => void;
76
+ /**
77
+ * Дочерние элементы группы.
78
+ * Ожидаются компоненты <Radio />, либо композиции на их основе.
79
+ */
80
+ children: React.ReactNode;
81
+ /**
82
+ * Дополнительный CSS-класс для корневого контейнера группы.
83
+ * Поддерживает классы из emotion, scss и т.п.
84
+ */
85
+ className?: string;
86
+ /**
87
+ * Помечает группу как невалидную.
88
+ * Устанавливает атрибут `aria-invalid` у контейнера с role="radiogroup".
89
+ */
90
+ error?: boolean;
91
+ /**
92
+ * Отключает всю группу целиком.
93
+ * Значение передаётся в контекст и делает все Radio внутри disabled.
94
+ */
95
+ disabled?: boolean;
96
+ /** Можно переопределить расположение Radio на уровне конкретного Radio.
97
+ *
98
+ * @default "left"
99
+ */
100
+ side?: "left" | "right";
101
+ /**
102
+ * Делает конкретное Radio доступной только для чтения.
103
+ * - Изменение выбранного значения запрещено.
104
+ * - В отличие от `disabled`, визуально не выглядить как отключённое.
105
+ */
106
+ readOnly?: boolean;
107
+ /**
108
+ * Размер всех Radio в группе.
109
+ * Значение по умолчанию — `"md"`.
110
+ * Может быть переопределено на уровне отдельного Radio.
111
+ */
112
+ size?: Extract<Size, "sm" | "md">;
113
+ };
114
+ declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
115
+ export { RadioGroup };
116
+ //# sourceMappingURL=RadioGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAExB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;CACnC,CAAC;AAEF,QAAA,MAAM,UAAU,wFA+Df,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { RadioGroup } from './RadioGroup';
3
+ declare const meta: Meta<typeof RadioGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof RadioGroup>;
6
+ export declare const Playground: Story;
7
+ export declare const Controlled: Story;
8
+ export declare const Uncontrolled: Story;
9
+ export declare const Invalid: Story;
10
+ export declare const Disabled: Story;
11
+ export declare const ReadOnlyGroup: Story;
12
+ export declare const SideVariants: Story;
13
+ export declare const SizeVariants: Story;
14
+ export declare const WithDescriptions: Story;
15
+ export declare const CustomStandalone: Story;
16
+ //# sourceMappingURL=RadioGroup.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/RadioGroup/RadioGroup.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAuBjC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC;AAKzC,eAAO,MAAM,UAAU,EAAE,KAaxB,CAAC;AAKF,eAAO,MAAM,UAAU,EAAE,KAuBxB,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,KAgB1B,CAAC;AAKF,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAKF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAKF,eAAO,MAAM,aAAa,EAAE,KAuC3B,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,KAc1B,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,KAc1B,CAAC;AAKF,eAAO,MAAM,gBAAgB,EAAE,KAqB9B,CAAC;AAKF,eAAO,MAAM,gBAAgB,EAAE,KAiD9B,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { default as React } from 'react';
2
+ import { Size } from '../../../types';
3
+ /**
4
+ * Значение, которое хранится в контексте RadioGroup.
5
+ *
6
+ * Этот тип описывает минимальный контракт между RadioGroup и дочерними Radio.
7
+ * Поля должны быть максимально простыми, чтобы облегчить тестирование и миграции.
8
+ */
9
+ export type RadioGroupContextValue = {
10
+ /**
11
+ * Текущее выбранное значение в группе.
12
+ * - Для controlled RadioGroup это будет value из пропсов.
13
+ * - Для uncontrolled — внутреннее значение по умолчанию / обновляемое через setValue.
14
+ */
15
+ value?: string;
16
+ /**
17
+ * Флаг "только для чтения" на уровне группы.
18
+ * - Если true — попытки изменить выбранное значение должны игнорироваться.
19
+ * - В отличие от `disabled`, элементы остаются фокусируемыми и визуально активными
20
+ * (если нужно иное — стилизуйте отдельно).
21
+ */
22
+ readOnly?: boolean;
23
+ /**
24
+ * Флаг disabled на уровне группы. Если true — дочерние Radio должны выглядеть и вести себя
25
+ * как отключённые (aria-disabled + визуальная индикация).
26
+ */
27
+ disabled?: boolean;
28
+ /**
29
+ * Помечает группу как невалидную.
30
+ * Устанавливает атрибут `aria-invalid` у контейнера с role="radiogroup".
31
+ */
32
+ error?: boolean;
33
+ /**
34
+ * Функция для установки значения. Может быть undefined для read-only / статичных сценариев
35
+ * или если RadioGroup рендерится в режиме, где изменение значения недоступно.
36
+ *
37
+ * В контролируемом режиме этот вызов должен делегировать наружу через onChange.
38
+ */
39
+ setValue?: (v: string) => void;
40
+ /**
41
+ * Размер радиокнопок в группе. Ограничен только "sm" | "md" для совместимости со стилями.
42
+ */
43
+ size?: Extract<Size, "sm" | "md">;
44
+ /**
45
+ * Расположение визуального контролла относительно лейбла: слева или справа.
46
+ * Удобно для случаев, когда дизайн хочет получить radio справа от лейбла.
47
+ */
48
+ side?: "left" | "right";
49
+ };
50
+ /**
51
+ * Контекст RadioGroup.
52
+ *
53
+ * Храним `null` по умолчанию — это упрощает проверку в дочерних компонентах
54
+ * (позволяет отличать использование внутри группы и как standalone).
55
+ */
56
+ export declare const RadioGroupContext: React.Context<RadioGroupContextValue | null>;
57
+ /**
58
+ * Хук-помощник для удобного доступа к контексту.
59
+ *
60
+ * Важно: в компонентах, которые могут использоваться как внутри группы так и standalone,
61
+ * рекомендуется работать с возвращаемым значением как с опциональным:
62
+ *
63
+ * const ctx = useRadioGroupContext();
64
+ * const isGrouped = !!ctx;
65
+ *
66
+ * Если нужно — можно обернуть этот хук в строгий вариант, который кидает ошибку
67
+ * при отсутствии контекста (полезно для внутренних компонентов, которые должны
68
+ * обязательно использоваться внутри RadioGroup).
69
+ *
70
+ * Example strict variant (not exported by default):
71
+ * const useRequiredRadioGroupContext = () => {
72
+ * const ctx = useContext(RadioGroupContext);
73
+ * if (!ctx) throw new Error("Radio must be used within a RadioGroup");
74
+ * return ctx;
75
+ * };
76
+ */
77
+ export declare const useRadioGroupContext: () => RadioGroupContextValue | null;
78
+ /**
79
+ * Рекомендации для разработчиков компонентов, использующих этот контекст:
80
+ *
81
+ * - Для чтения флагов используйте явные приоритеты: `const isDisabled = ctx?.disabled || localDisabled`.
82
+ * - Обрабатывайте readOnly отдельно от disabled:
83
+ * - readOnly должна блокировать setValue, но не снимать фокус или изменять визуализацию по-умолчанию,
84
+ * если дизайнер не просит иного.
85
+ * - Не добавляйте лишней логики в контекст — держите его максимально легковесным.
86
+ */
87
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/RadioGroup/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/B;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,8CAC4B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,qCAAsC,CAAC;AAExE;;;;;;;;GAQG"}
@@ -0,0 +1,3 @@
1
+ export * from './Radio';
2
+ export * from './RadioGroup';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/RadioGroup/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
@@ -86,8 +86,15 @@ export type SelectProps<I, V> = {
86
86
  error?: boolean;
87
87
  /** Текст ошибки, отображаемый под полем при `error = true`. */
88
88
  errorText?: string;
89
+ /** Ширина селекта */
90
+ width?: React.CSSProperties["width"];
89
91
  /** Растягивает селект на всю доступную ширину контейнера. */
90
92
  fullWidth?: boolean;
93
+ /** Минимальная ширина селекта
94
+ *
95
+ * @default 120
96
+ */
97
+ minWidth?: React.CSSProperties["minWidth"];
91
98
  /**
92
99
  * Показывать ли элемент "сбросить выбор" в начале списка
93
100
  * (доступен только в single‑режиме).
@@ -109,6 +116,10 @@ export type SelectProps<I, V> = {
109
116
  observer?: ReactNode;
110
117
  /** Визуальный размер контрола (`"xs" | "sm" | "md"`). */
111
118
  size?: SelectSize;
119
+ /** Максимальная ширина дропдауна в пикселях. */
120
+ dropdownMaxWidth?: number;
121
+ /** Минимальная ширина дропдауна в пикселях. */
122
+ dropdownMinWidth?: number;
112
123
  } & (I extends string | number ? {
113
124
  /**
114
125
  * Функция, которая из элемента `I` возвращает значение `V`.
@@ -181,6 +192,6 @@ export type SelectProps<I, V> = {
181
192
  * =========================================================================
182
193
  * - useControlled: управляет состоянием значения в controlled/uncontrolled режиме
183
194
  */
184
- export declare function Select<I, V extends string | number>({ value, onChange, multiple, returnedValue, renderItem, renderInputItem, renderSingleInputItem, renderMultipleInputItem, renderDropdownItem, placeholder, items, fullWidth, size, showDefaultItem, disabled, label, firstItem, lastItem, observer, emptyText, onBlur, prompt, error, errorText, }: SelectProps<I, V>): import("react/jsx-runtime").JSX.Element;
195
+ export declare function Select<I, V extends string | number>({ value, onChange, multiple, returnedValue, renderItem, renderInputItem, renderSingleInputItem, renderMultipleInputItem, renderDropdownItem, placeholder, items, fullWidth, size, showDefaultItem, disabled, label, firstItem, lastItem, observer, emptyText, onBlur, prompt, error, errorText, dropdownMaxWidth, dropdownMinWidth, minWidth, width, }: SelectProps<I, V>): import("react/jsx-runtime").JSX.Element;
185
196
  export {};
186
197
  //# sourceMappingURL=Select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/Select/Select.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/Select/Select.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/Select/Select.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAcD,KAAK,WAAW,GAAG,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAwD3B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,KAclC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,KA8BpC,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,KAOnB,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,KAgC/B,CAAC;AAkBF,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAoFxB,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,KAsG1B,CAAC"}
1
+ {"version":3,"file":"Select.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/controls/Select/Select.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAoBD,KAAK,WAAW,GAAG,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAwD3B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,KAclC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,KA8BpC,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,KAOnB,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,KAgC/B,CAAC;AAkBF,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAoFxB,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,KAsG1B,CAAC"}
@@ -3,6 +3,7 @@ export * from './Checkbox';
3
3
  export * from './IconButton';
4
4
  export * from './Input';
5
5
  export * from './OtpInput';
6
+ export * from './RadioGroup';
6
7
  export * from './SegmentControl';
7
8
  export * from './Select';
8
9
  export * from './Switch';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './builders';
2
+ export * from './charts';
2
3
  export * from './controls';
3
4
  export * from './navigation';
4
5
  export * from './shared';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,296 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { CornerRadius, Size } from '../../../types/tokens.types';
3
+ /**
4
+ * Варианты отображения скелетона
5
+ *
6
+ * @typedef {string} SkeletonVariant
7
+ * @description Определяет форму и стилизацию скелетона:
8
+ * - `text` - для имитации текстового содержимого с закругленными краями
9
+ * - `rectangular` - прямоугольная форма с умеренными закруглениями (по умолчанию)
10
+ * - `circular` - круглая форма для аватаров, кнопок и иконок
11
+ *
12
+ * @example
13
+ * // Круглый скелетон для аватара
14
+ * <Skeleton variant="circular" size="md" />
15
+ *
16
+ * // Текстовый скелетон
17
+ * <Skeleton variant="text" width="200px" height="16px" />
18
+ */
19
+ export type SkeletonVariant = "text" | "rectangular" | "circular";
20
+ /**
21
+ * Предустановленные размеры скелетона
22
+ *
23
+ * @typedef {string} SkeletonSize
24
+ * @description Размеры из дизайн-системы для быстрого создания скелетонов стандартных размеров:
25
+ * - `xs` - 16x16px - для мелких элементов (иконки, чекбоксы)
26
+ * - `sm` - 24x24px - для небольших кнопок и иконок
27
+ * - `md` - 32x32px - для аватаров среднего размера
28
+ * - `lg` - 40x40px - для крупных элементов интерфейса
29
+ * - `xl` - 48x48px - для больших аватаров и кнопок
30
+ *
31
+ * @example
32
+ * // Скелетон размера 'md' (32x32px)
33
+ * <Skeleton size="md" variant="circular" />
34
+ */
35
+ export type SkeletonSize = Extract<Size, "xs" | "sm" | "md" | "lg" | "xl">;
36
+ /**
37
+ * Типы анимации скелетона
38
+ *
39
+ * @typedef {string} SkeletonAnimation
40
+ * @description Варианты анимации для создания эффекта загрузки:
41
+ * - `wave` - волновая анимация, бегущая слева направо (по умолчанию)
42
+ * - `pulse` - пульсация с изменением прозрачности
43
+ * - `none` - без анимации, статичный скелетон
44
+ *
45
+ * @example
46
+ * // Скелетон с пульсирующей анимацией
47
+ * <Skeleton animation="pulse" />
48
+ *
49
+ * // Статичный скелетон без анимации
50
+ * <Skeleton animation="none" />
51
+ */
52
+ export type SkeletonAnimation = "pulse" | "wave" | "none";
53
+ /**
54
+ * Размеры закругления углов из дизайн-системы
55
+ *
56
+ * @typedef {string} SkeletonBorderRadius
57
+ * @description Доступные варианты закругления соответствующие CSS переменным --corner-*:
58
+ * - `zero` - 0px (без закругления)
59
+ * - `xs` - 4px (минимальное закругление)
60
+ * - `sm` - 8px (маленькое закругление)
61
+ * - `md` - 12px (среднее закругление)
62
+ * - `lg` - 16px (большое закругление)
63
+ * - `xl` - 20px
64
+ * - `2xl` - 24px
65
+ * - `3xl` - 32px
66
+ * - `4xl` - 40px
67
+ * - `5xl` - 48px
68
+ * - `6xl` - 56px
69
+ * - `full-round` - 1000px (полное скругление)
70
+ * - `circular` - 50% (круг)
71
+ *
72
+ * @example
73
+ * // Минимальное закругление
74
+ * <Skeleton borderRadius="xs" />
75
+ *
76
+ * // Квадратный скелетон
77
+ * <Skeleton borderRadius="zero" />
78
+ *
79
+ * // Круглый скелетон
80
+ * <Skeleton borderRadius="circular" />
81
+ *
82
+ * // Большое закругление
83
+ * <Skeleton borderRadius="2xl" />
84
+ */
85
+ export type SkeletonBorderRadius = CornerRadius | "circular";
86
+ /**
87
+ * Свойства компонента Skeleton
88
+ *
89
+ * @interface SkeletonProps
90
+ * @description Интерфейс для настройки внешнего вида и поведения компонента скелетона
91
+ */
92
+ export interface SkeletonProps {
93
+ /**
94
+ * Ширина скелетона
95
+ *
96
+ * @type {string | number | undefined}
97
+ * @description Задает ширину скелетона. Может быть:
98
+ * - Числом (будет преобразовано в пиксели)
99
+ * - Строкой с единицами измерения (px, %, em, rem и т.д.)
100
+ * - Если не указано, будет использована ширина из `size` или 100%
101
+ *
102
+ * @example
103
+ * width={200} // 200px
104
+ * width="50%" // 50% ширины родителя
105
+ * width="10rem" // 10rem
106
+ */
107
+ width?: string | number;
108
+ /**
109
+ * Высота скелетона
110
+ *
111
+ * @type {string | number | undefined}
112
+ * @description Задает высоту скелетона. Может быть:
113
+ * - Числом (будет преобразовано в пиксели)
114
+ * - Строкой с единицами измерения (px, %, em, rem и т.д.)
115
+ * - Если не указано, будет использована высота из `size` или значение по умолчанию
116
+ *
117
+ * @example
118
+ * height={16} // 16px для текста
119
+ * height="2em" // 2em
120
+ * height="100%" // 100% высоты родителя
121
+ */
122
+ height?: string | number;
123
+ /**
124
+ * Вариант отображения скелетона
125
+ *
126
+ * @type {SkeletonVariant | undefined}
127
+ * @default "rectangular"
128
+ * @description Определяет форму и стилизацию скелетона:
129
+ * - `rectangular` - прямоугольная форма (по умолчанию)
130
+ * - `circular` - круглая форма для аватаров
131
+ * - `text` - для имитации текста с мягкими закруглениями
132
+ *
133
+ * @example
134
+ * variant="circular" // для аватаров
135
+ * variant="text" // для текстового содержимого
136
+ */
137
+ variant?: SkeletonVariant;
138
+ /**
139
+ * Предустановленный размер скелетона
140
+ *
141
+ * @type {SkeletonSize | undefined}
142
+ * @default "md"
143
+ * @description Использует предопределенные размеры из дизайн-системы.
144
+ * Игнорируется, если заданы `width` или `height`.
145
+ * Размеры: xs(16px), sm(24px), md(32px), lg(40px), xl(48px)
146
+ *
147
+ * @example
148
+ * size="md" // 32x32px
149
+ * size="lg" // 40x40px - для больших элементов
150
+ */
151
+ size?: SkeletonSize;
152
+ /**
153
+ * Тип анимации скелетона
154
+ *
155
+ * @type {SkeletonAnimation | undefined}
156
+ * @default "wave"
157
+ * @description Определяет тип анимации:
158
+ * - `wave` - волновая анимация слева направо (по умолчанию)
159
+ * - `pulse` - пульсирующая анимация с изменением прозрачности
160
+ * - `none` - без анимации
161
+ *
162
+ * @example
163
+ * animation="pulse" // пульсация
164
+ * animation="none" // статичный скелетон
165
+ */
166
+ animation?: SkeletonAnimation;
167
+ /**
168
+ * Количество строк для текстового скелетона
169
+ *
170
+ * @type {number | undefined}
171
+ * @default 1
172
+ * @description Создает несколько строк скелетона для имитации многострочного текста.
173
+ * Работает только с `variant="text"`. Последняя строка автоматически делается короче (70%)
174
+ * для создания естественного вида текста.
175
+ *
176
+ * @example
177
+ * lines={3} // 3 строки текста
178
+ * lines={5} // 5 строк для длинного текста
179
+ */
180
+ lines?: number;
181
+ /**
182
+ * Дополнительные CSS классы
183
+ *
184
+ * @type {string | undefined}
185
+ * @description Позволяет добавить кастомные стили к скелетону.
186
+ * Классы применяются к корневому элементу компонента.
187
+ *
188
+ * @example
189
+ * className="my-custom-skeleton"
190
+ * className={cx("skeleton-large", isActive && "skeleton-active")}
191
+ */
192
+ className?: string;
193
+ /**
194
+ * Дочерние элементы
195
+ *
196
+ * @type {ReactNode | undefined}
197
+ * @description Контент, который будет показан когда `loading=false`.
198
+ * Позволяет использовать компонент как обертку для условного рендеринга.
199
+ *
200
+ * @example
201
+ * <Skeleton loading={isLoading}>
202
+ * <div>Загруженный контент</div>
203
+ * </Skeleton>
204
+ */
205
+ children?: ReactNode;
206
+ /**
207
+ * Закругление углов скелетона
208
+ *
209
+ * @type {SkeletonBorderRadius | undefined}
210
+ * @description Позволяет переопределить стандартные варианты закругления углов из `variant`.
211
+ * Если задан, игнорирует стили из `variant` и применяет выбранное значение.
212
+ * Все значения соответствуют CSS переменным из дизайн-системы.
213
+ *
214
+ * **Доступные значения:**
215
+ * - `zero` - без закругления (0px)
216
+ * - `xs`, `sm`, `md`, `lg`, `xl` - стандартные размеры закругления
217
+ * - `2xl`, `3xl`, `4xl`, `5xl`, `6xl` - большие размеры закругления
218
+ * - `full-round` - максимальное закругление (1000px)
219
+ * - `circular` - полный круг (50%)
220
+ *
221
+ * @example
222
+ * borderRadius="zero" // квадратные углы
223
+ * borderRadius="xs" // минимальное закругление (4px)
224
+ * borderRadius="md" // среднее закругление (12px)
225
+ * borderRadius="circular" // круглый скелетон
226
+ * borderRadius="2xl" // большое закругление (24px)
227
+ */
228
+ borderRadius?: SkeletonBorderRadius;
229
+ /**
230
+ * Показывать ли скелетон
231
+ *
232
+ * @type {boolean | undefined}
233
+ * @default true
234
+ * @description Управляет отображением скелетона:
235
+ * - `true` - показывает скелетон (по умолчанию)
236
+ * - `false` - показывает `children` если они есть, иначе ничего
237
+ *
238
+ * @example
239
+ * loading={isDataLoading} // связано с состоянием загрузки
240
+ * loading={!data} // показывать пока нет данных
241
+ */
242
+ loading?: boolean;
243
+ }
244
+ /**
245
+ * Компонент Skeleton для отображения состояния загрузки
246
+ *
247
+ * @component
248
+ * @param {SkeletonProps} props - Свойства компонента
249
+ * @returns {JSX.Element | null} JSX элемент скелетона или null
250
+ *
251
+ * @description
252
+ * Универсальный компонент для создания скелетонов (skeleton screens) -
253
+ * заглушек, которые показываются во время загрузки контента.
254
+ *
255
+ * **Основные возможности:**
256
+ * - 3 варианта отображения: прямоугольный, круглый, текстовый
257
+ * - 3 типа анимации: волновая, пульсирующая, без анимации
258
+ * - Предустановленные размеры или кастомные размеры
259
+ * - Поддержка многострочного текста
260
+ * - Условный рендеринг с возможностью обертки контента
261
+ * - Полная кастомизация через className
262
+ *
263
+ * @example
264
+ * // Простой прямоугольный скелетон
265
+ * <Skeleton width={200} height={20} />
266
+ *
267
+ * @example
268
+ * // Круглый скелетон для аватара
269
+ * <Skeleton variant="circular" size="md" />
270
+ *
271
+ * @example
272
+ * // Многострочный текстовый скелетон
273
+ * <Skeleton variant="text" lines={3} width="100%" />
274
+ *
275
+ * @example
276
+ * // Условный рендеринг с оберткой
277
+ * <Skeleton loading={isLoading}>
278
+ * <UserProfile user={userData} />
279
+ * </Skeleton>
280
+ *
281
+ * @example
282
+ * // Кастомная анимация и стили
283
+ * <Skeleton
284
+ * animation="pulse"
285
+ * className="my-skeleton"
286
+ * width="300px"
287
+ * height="150px"
288
+ * />
289
+ *
290
+ * @since 1.0.0
291
+ * @see {@link SkeletonProps} для полного описания свойств
292
+ * @see {@link SkeletonVariant} для вариантов отображения
293
+ * @see {@link SkeletonAnimation} для типов анимации
294
+ */
295
+ export declare const Skeleton: FC<SkeletonProps>;
296
+ //# sourceMappingURL=Skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;AAElE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAE9B;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAEpC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA2DtC,CAAC"}