@mantine/core 9.4.3-alpha.0 → 9.5.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/cjs/components/Accordion/Accordion.cjs +5 -2
  2. package/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/cjs/components/AngleSlider/AngleSlider.cjs +4 -1
  4. package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
  5. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs +15 -14
  6. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
  7. package/cjs/components/Cascader/Cascader.cjs +371 -0
  8. package/cjs/components/Cascader/Cascader.cjs.map +1 -0
  9. package/cjs/components/Cascader/Cascader.module.cjs +18 -0
  10. package/cjs/components/Cascader/Cascader.module.cjs.map +1 -0
  11. package/cjs/components/Cascader/CascaderColumns.cjs +136 -0
  12. package/cjs/components/Cascader/CascaderColumns.cjs.map +1 -0
  13. package/cjs/components/Cascader/flatten-cascader-paths.cjs +26 -0
  14. package/cjs/components/Cascader/flatten-cascader-paths.cjs.map +1 -0
  15. package/cjs/components/Cascader/get-cascader-columns.cjs +30 -0
  16. package/cjs/components/Cascader/get-cascader-columns.cjs.map +1 -0
  17. package/cjs/components/Cascader/get-cascader-path-options.cjs +19 -0
  18. package/cjs/components/Cascader/get-cascader-path-options.cjs.map +1 -0
  19. package/cjs/components/Cascader/use-cascader.cjs +135 -0
  20. package/cjs/components/Cascader/use-cascader.cjs.map +1 -0
  21. package/cjs/components/ColorPicker/converters/converters.cjs +5 -0
  22. package/cjs/components/ColorPicker/converters/parsers.cjs +5 -0
  23. package/cjs/components/Combobox/use-combobox/use-combobox.cjs +6 -2
  24. package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
  25. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs +2 -1
  26. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -1
  27. package/cjs/components/Drawer/DrawerStack.cjs +1 -1
  28. package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
  29. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs +2 -1
  30. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
  31. package/cjs/components/FloatingWindow/FloatingWindow.cjs +34 -10
  32. package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
  33. package/cjs/components/FloatingWindow/FloatingWindow.context.cjs +8 -0
  34. package/cjs/components/FloatingWindow/FloatingWindow.context.cjs.map +1 -0
  35. package/cjs/components/FloatingWindow/FloatingWindow.module.cjs.map +1 -1
  36. package/cjs/components/FloatingWindow/FloatingWindowResizeHandle.cjs +186 -0
  37. package/cjs/components/FloatingWindow/FloatingWindowResizeHandle.cjs.map +1 -0
  38. package/cjs/components/Input/InputLabel/InputLabel.cjs +3 -1
  39. package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
  40. package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
  41. package/cjs/components/Modal/ModalStack.cjs +1 -1
  42. package/cjs/components/Modal/ModalStack.cjs.map +1 -1
  43. package/cjs/components/OverflowList/OverflowList.cjs +2 -1
  44. package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
  45. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs +1 -0
  46. package/cjs/components/ScrollArea/ScrollArea.cjs +7 -2
  47. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  48. package/cjs/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  49. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs +1 -0
  50. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs +8 -4
  51. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
  52. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs +3 -1
  53. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
  54. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs +1 -1
  55. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
  56. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs +18 -11
  57. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
  58. package/cjs/components/Table/Table.components.cjs +1 -0
  59. package/cjs/components/TagsInput/TagsInput.cjs +2 -1
  60. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  61. package/cjs/components/Timeline/Timeline.cjs +5 -1
  62. package/cjs/components/Timeline/Timeline.cjs.map +1 -1
  63. package/cjs/components/Timeline/Timeline.module.cjs +2 -1
  64. package/cjs/components/Timeline/Timeline.module.cjs.map +1 -1
  65. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs +31 -20
  66. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
  67. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  68. package/cjs/components/Tree/use-tree.cjs +1 -1
  69. package/cjs/components/Tree/use-tree.cjs.map +1 -1
  70. package/cjs/components/TreeSelect/TreeSelect.cjs +3 -2
  71. package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
  72. package/cjs/core/Box/get-box-mod/get-box-mod.cjs +1 -0
  73. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs +6 -5
  74. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
  75. package/cjs/core/MantineProvider/merge-mantine-theme/merge-mantine-theme.cjs +2 -0
  76. package/cjs/core/MantineProvider/use-matches/use-matches.cjs +3 -2
  77. package/cjs/core/MantineProvider/use-matches/use-matches.cjs.map +1 -1
  78. package/cjs/index.cjs +7 -1
  79. package/esm/components/Accordion/Accordion.mjs +5 -2
  80. package/esm/components/Accordion/Accordion.mjs.map +1 -1
  81. package/esm/components/AngleSlider/AngleSlider.mjs +4 -1
  82. package/esm/components/AngleSlider/AngleSlider.mjs.map +1 -1
  83. package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs +15 -14
  84. package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
  85. package/esm/components/Cascader/Cascader.mjs +371 -0
  86. package/esm/components/Cascader/Cascader.mjs.map +1 -0
  87. package/esm/components/Cascader/Cascader.module.mjs +18 -0
  88. package/esm/components/Cascader/Cascader.module.mjs.map +1 -0
  89. package/esm/components/Cascader/CascaderColumns.mjs +135 -0
  90. package/esm/components/Cascader/CascaderColumns.mjs.map +1 -0
  91. package/esm/components/Cascader/flatten-cascader-paths.mjs +26 -0
  92. package/esm/components/Cascader/flatten-cascader-paths.mjs.map +1 -0
  93. package/esm/components/Cascader/get-cascader-columns.mjs +28 -0
  94. package/esm/components/Cascader/get-cascader-columns.mjs.map +1 -0
  95. package/esm/components/Cascader/get-cascader-path-options.mjs +19 -0
  96. package/esm/components/Cascader/get-cascader-path-options.mjs.map +1 -0
  97. package/esm/components/Cascader/use-cascader.mjs +135 -0
  98. package/esm/components/Cascader/use-cascader.mjs.map +1 -0
  99. package/esm/components/ColorPicker/converters/converters.mjs +1 -1
  100. package/esm/components/ColorPicker/converters/parsers.mjs +1 -1
  101. package/esm/components/Combobox/use-combobox/use-combobox.mjs +6 -2
  102. package/esm/components/Combobox/use-combobox/use-combobox.mjs.map +1 -1
  103. package/esm/components/ComboboxPopover/ComboboxPopover.mjs +2 -1
  104. package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -1
  105. package/esm/components/Drawer/DrawerStack.mjs +1 -1
  106. package/esm/components/Drawer/DrawerStack.mjs.map +1 -1
  107. package/esm/components/FloatingIndicator/FloatingIndicator.mjs +2 -1
  108. package/esm/components/FloatingIndicator/FloatingIndicator.mjs.map +1 -1
  109. package/esm/components/FloatingWindow/FloatingWindow.context.mjs +8 -0
  110. package/esm/components/FloatingWindow/FloatingWindow.context.mjs.map +1 -0
  111. package/esm/components/FloatingWindow/FloatingWindow.mjs +35 -11
  112. package/esm/components/FloatingWindow/FloatingWindow.mjs.map +1 -1
  113. package/esm/components/FloatingWindow/FloatingWindow.module.mjs.map +1 -1
  114. package/esm/components/FloatingWindow/FloatingWindowResizeHandle.mjs +186 -0
  115. package/esm/components/FloatingWindow/FloatingWindowResizeHandle.mjs.map +1 -0
  116. package/esm/components/Input/InputLabel/InputLabel.mjs +3 -1
  117. package/esm/components/Input/InputLabel/InputLabel.mjs.map +1 -1
  118. package/esm/components/Input/InputWrapper/InputWrapper.mjs.map +1 -1
  119. package/esm/components/Modal/ModalStack.mjs +1 -1
  120. package/esm/components/Modal/ModalStack.mjs.map +1 -1
  121. package/esm/components/OverflowList/OverflowList.mjs +2 -1
  122. package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
  123. package/esm/components/Pagination/PaginationEdges/PaginationEdges.mjs +1 -1
  124. package/esm/components/ScrollArea/ScrollArea.mjs +7 -2
  125. package/esm/components/ScrollArea/ScrollArea.mjs.map +1 -1
  126. package/esm/components/ScrollArea/ScrollArea.module.mjs.map +1 -1
  127. package/esm/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.mjs +1 -1
  128. package/esm/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.mjs +8 -4
  129. package/esm/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.mjs.map +1 -1
  130. package/esm/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.mjs +3 -2
  131. package/esm/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.mjs.map +1 -1
  132. package/esm/components/SimpleGrid/SimpleGridVariables.mjs +1 -1
  133. package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
  134. package/esm/components/Slider/RangeSlider/RangeSlider.mjs +18 -11
  135. package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
  136. package/esm/components/Table/Table.components.mjs +1 -1
  137. package/esm/components/TagsInput/TagsInput.mjs +2 -1
  138. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  139. package/esm/components/Timeline/Timeline.mjs +5 -1
  140. package/esm/components/Timeline/Timeline.mjs.map +1 -1
  141. package/esm/components/Timeline/Timeline.module.mjs +2 -1
  142. package/esm/components/Timeline/Timeline.module.mjs.map +1 -1
  143. package/esm/components/Timeline/TimelineItem/TimelineItem.mjs +31 -20
  144. package/esm/components/Timeline/TimelineItem/TimelineItem.mjs.map +1 -1
  145. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  146. package/esm/components/Tree/use-tree.mjs +1 -1
  147. package/esm/components/Tree/use-tree.mjs.map +1 -1
  148. package/esm/components/TreeSelect/TreeSelect.mjs +3 -2
  149. package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
  150. package/esm/core/Box/get-box-mod/get-box-mod.mjs +1 -1
  151. package/esm/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs +6 -5
  152. package/esm/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs.map +1 -1
  153. package/esm/core/MantineProvider/merge-mantine-theme/merge-mantine-theme.mjs +1 -1
  154. package/esm/core/MantineProvider/use-matches/use-matches.mjs +3 -2
  155. package/esm/core/MantineProvider/use-matches/use-matches.mjs.map +1 -1
  156. package/esm/index.mjs +5 -2
  157. package/lib/components/Accordion/Accordion.d.ts +2 -0
  158. package/lib/components/Cascader/Cascader.d.ts +114 -0
  159. package/lib/components/Cascader/CascaderColumns.d.ts +36 -0
  160. package/lib/components/Cascader/flatten-cascader-paths.d.ts +12 -0
  161. package/lib/components/Cascader/get-cascader-columns.d.ts +4 -0
  162. package/lib/components/Cascader/get-cascader-path-options.d.ts +2 -0
  163. package/lib/components/Cascader/index.d.ts +12 -0
  164. package/lib/components/Cascader/use-cascader.d.ts +25 -0
  165. package/lib/components/FloatingWindow/FloatingWindow.context.d.ts +30 -0
  166. package/lib/components/FloatingWindow/FloatingWindow.d.ts +16 -5
  167. package/lib/components/FloatingWindow/FloatingWindowResizeHandle.d.ts +11 -0
  168. package/lib/components/FloatingWindow/index.d.ts +2 -0
  169. package/lib/components/Input/InputWrapper/InputWrapper.d.ts +5 -5
  170. package/lib/components/Input/use-input-props.d.ts +4 -4
  171. package/lib/components/MaskInput/use-mask-input-props.d.ts +4 -4
  172. package/lib/components/ScrollArea/ScrollArea.d.ts +5 -0
  173. package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +5 -1
  174. package/lib/components/index.d.ts +1 -0
  175. package/package.json +3 -3
  176. package/styles/Cascader.css +215 -0
  177. package/styles/Cascader.layer.css +216 -0
  178. package/styles/FloatingWindow.css +2 -0
  179. package/styles/FloatingWindow.layer.css +2 -0
  180. package/styles/ScrollArea.css +58 -0
  181. package/styles/ScrollArea.layer.css +58 -0
  182. package/styles/Timeline.css +88 -14
  183. package/styles/Timeline.layer.css +88 -14
  184. package/styles.css +364 -14
  185. package/styles.layer.css +364 -14
@@ -0,0 +1,114 @@
1
+ import { BoxProps, ElementProps, Factory, MantineColor, StylesApiProps } from '../../core';
2
+ import { ComboboxLikeStylesNames } from '../Combobox';
3
+ import { __BaseInputProps, __InputStylesNames, ClearSectionMode, InputClearButtonProps, InputVariant } from '../Input';
4
+ import { ScrollAreaProps } from '../ScrollArea';
5
+ export interface CascaderOption {
6
+ /** Option value, must be unique across the whole data tree */
7
+ value: string;
8
+ /** Option label, if not set `value` is used instead */
9
+ label?: React.ReactNode;
10
+ /** Nested options */
11
+ children?: CascaderOption[];
12
+ /** If set, the option cannot be selected or expanded */
13
+ disabled?: boolean;
14
+ }
15
+ export interface CascaderFormatValueInput {
16
+ /** Selected path from root to node */
17
+ value: string[];
18
+ /** Option chain resolved from the selected path */
19
+ options: CascaderOption[];
20
+ }
21
+ export type CascaderFormatValue = (input: CascaderFormatValueInput) => React.ReactNode;
22
+ export type CascaderStylesNames = __InputStylesNames | ComboboxLikeStylesNames | 'columnsList' | 'columnsOverflow' | 'column' | 'columnScroll' | 'columnOption' | 'columnOptionLabel' | 'columnOptionIcon' | 'columnOptionCheck' | 'columnEmpty' | 'flatOption';
23
+ export interface CascaderProps extends BoxProps, __BaseInputProps, StylesApiProps<CascaderFactory>, ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {
24
+ /** Hierarchical options data */
25
+ data: CascaderOption[];
26
+ /** Controlled selected path from root to node */
27
+ value?: string[] | null;
28
+ /** Uncontrolled selected path from root to node */
29
+ defaultValue?: string[] | null;
30
+ /** Called when the selected path changes with the path and the resolved option chain */
31
+ onChange?: (value: string[] | null, options: CascaderOption[]) => void;
32
+ /** If set, any intermediate option can be selected, not only leaf options @default false */
33
+ changeOnSelect?: boolean;
34
+ /** Determines whether the dropdown should be closed when a value is selected, defaults to `!allowDeselect` */
35
+ closeOnSelect?: boolean;
36
+ /** If set, the selected value can be deselected by selecting it again @default true */
37
+ allowDeselect?: boolean;
38
+ /** If set, the check icon is displayed on the selected option @default true */
39
+ withCheckIcon?: boolean;
40
+ /** Position of the check icon relative to the option label @default 'right' */
41
+ checkIconPosition?: 'left' | 'right';
42
+ /** Renders the dropdown as cascading columns. When `false`, options are rendered as a flat list of paths, the same way as search results (useful for narrow/mobile layouts) @default true */
43
+ withColumns?: boolean;
44
+ /** Determines how the next column is opened @default 'click' */
45
+ expandTrigger?: 'click' | 'hover';
46
+ /** If set, options can be searched by their flattened paths @default false */
47
+ searchable?: boolean;
48
+ /** Controlled search value */
49
+ searchValue?: string;
50
+ /** Uncontrolled search value */
51
+ defaultSearchValue?: string;
52
+ /** Called when the search value changes */
53
+ onSearchChange?: (value: string) => void;
54
+ /** Custom search filter, matched against the full option path */
55
+ filter?: (query: string, options: CascaderOption[]) => boolean;
56
+ /** Custom rendering of a search result row */
57
+ renderSearchOption?: (query: string, options: CascaderOption[]) => React.ReactNode;
58
+ /** A function to format the selected path displayed in the input, should return a string */
59
+ formatValue?: CascaderFormatValue;
60
+ /** Custom rendering of an option in columns */
61
+ renderOption?: (option: CascaderOption, level: number) => React.ReactNode;
62
+ /** Path separator displayed in the input and search results @default '/' */
63
+ separator?: React.ReactNode;
64
+ /** Width of each column */
65
+ columnWidth?: number | string;
66
+ /** Maximum number of columns (levels) displayed next to each other, deeper levels replace earlier ones @default 3 */
67
+ maxDisplayedLevels?: number;
68
+ /** `aria-label` and `title` of the control that reveals levels hidden before the visible ones by `maxDisplayedLevels` @default 'Show previous levels' */
69
+ previousLevelsControlLabel?: string;
70
+ /** `aria-label` and `title` of the control that reveals levels hidden after the visible ones by `maxDisplayedLevels` @default 'Show next levels' */
71
+ nextLevelsControlLabel?: string;
72
+ /** Max height of a column before it becomes scrollable @default 260 */
73
+ maxDropdownHeight?: number | string;
74
+ /** Message displayed when there are no options or search results */
75
+ nothingFoundMessage?: React.ReactNode;
76
+ /** If set, the clear button is displayed when a value is selected @default false */
77
+ clearable?: boolean;
78
+ /** Determines how the clear button and `rightSection` are rendered @default 'both' */
79
+ clearSectionMode?: ClearSectionMode;
80
+ /** Props passed down to the clear button */
81
+ clearButtonProps?: InputClearButtonProps;
82
+ /** Called when the clear button is clicked */
83
+ onClear?: () => void;
84
+ /** Controlled dropdown opened state */
85
+ dropdownOpened?: boolean;
86
+ /** Uncontrolled dropdown opened state */
87
+ defaultDropdownOpened?: boolean;
88
+ /** Called when the dropdown opens */
89
+ onDropdownOpen?: () => void;
90
+ /** Called when the dropdown closes */
91
+ onDropdownClose?: () => void;
92
+ /** Props passed down to the underlying `Combobox` component */
93
+ comboboxProps?: Record<string, any>;
94
+ /** Props passed down to the dropdown `ScrollArea` */
95
+ scrollAreaProps?: ScrollAreaProps;
96
+ /** Controls the default chevron color */
97
+ chevronColor?: MantineColor;
98
+ /** Props passed down to the hidden input */
99
+ hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;
100
+ /** Opens the dropdown when the input is focused in `searchable` mode @default true */
101
+ openOnFocus?: boolean;
102
+ }
103
+ export type CascaderFactory = Factory<{
104
+ props: CascaderProps;
105
+ ref: HTMLInputElement;
106
+ stylesNames: CascaderStylesNames;
107
+ variant: InputVariant;
108
+ }>;
109
+ export declare const Cascader: import("../..").MantineComponent<{
110
+ props: CascaderProps;
111
+ ref: HTMLInputElement;
112
+ stylesNames: CascaderStylesNames;
113
+ variant: InputVariant;
114
+ }>;
@@ -0,0 +1,36 @@
1
+ import type { GetStylesApi } from '../../core';
2
+ import { ScrollAreaProps } from '../ScrollArea';
3
+ import type { CascaderOption, CascaderStylesNames } from './Cascader';
4
+ type CascaderColumnsGetStyles = GetStylesApi<{
5
+ props: any;
6
+ stylesNames: CascaderStylesNames;
7
+ }>;
8
+ export interface CascaderColumnsProps {
9
+ data: CascaderOption[];
10
+ activePath: string[];
11
+ value: string[] | null;
12
+ keyboardNav: boolean;
13
+ withCheckIcon: boolean | undefined;
14
+ checkIconPosition: 'left' | 'right' | undefined;
15
+ renderOption: ((option: CascaderOption, level: number) => React.ReactNode) | undefined;
16
+ columnWidth: number | string | undefined;
17
+ maxDisplayedLevels: number | undefined;
18
+ previousLevelsControlLabel: string | undefined;
19
+ nextLevelsControlLabel: string | undefined;
20
+ maxDropdownHeight: number | string | undefined;
21
+ nothingFoundMessage: React.ReactNode;
22
+ getStyles: CascaderColumnsGetStyles;
23
+ unstyled: boolean | undefined;
24
+ scrollAreaProps: ScrollAreaProps | undefined;
25
+ onOptionClick: (level: number, option: CascaderOption) => void;
26
+ onOptionMouseEnter: (level: number, option: CascaderOption) => void;
27
+ onColumnsMouseLeave: (() => void) | undefined;
28
+ onPointerActivity: (() => void) | undefined;
29
+ listId: string | undefined;
30
+ }
31
+ export declare function getCascaderOptionId(listId: string | undefined, level: number, value: string): string | undefined;
32
+ export declare function CascaderColumns({ data, activePath, value, keyboardNav, withCheckIcon, checkIconPosition, renderOption, columnWidth, maxDisplayedLevels, previousLevelsControlLabel, nextLevelsControlLabel, maxDropdownHeight, nothingFoundMessage, getStyles, unstyled, scrollAreaProps, onOptionClick, onOptionMouseEnter, onColumnsMouseLeave, onPointerActivity, listId, }: CascaderColumnsProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare namespace CascaderColumns {
34
+ var displayName: string;
35
+ }
36
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { CascaderOption } from './Cascader';
2
+ export interface CascaderFlatPath {
3
+ /** Values from root to node */
4
+ path: string[];
5
+ /** Option chain from root to node */
6
+ options: CascaderOption[];
7
+ /** `true` if the node has no children */
8
+ leaf: boolean;
9
+ /** `true` if the node or any of its ancestors is disabled */
10
+ disabled: boolean;
11
+ }
12
+ export declare function flattenCascaderPaths(data: CascaderOption[]): CascaderFlatPath[];
@@ -0,0 +1,4 @@
1
+ import type { CascaderOption } from './Cascader';
2
+ export declare function cascaderOptionHasChildren(option: CascaderOption): boolean;
3
+ export declare function findCascaderOption(options: CascaderOption[], value: string): CascaderOption | undefined;
4
+ export declare function getCascaderColumns(data: CascaderOption[], activePath: string[]): CascaderOption[][];
@@ -0,0 +1,2 @@
1
+ import type { CascaderOption } from './Cascader';
2
+ export declare function getCascaderPathOptions(data: CascaderOption[], value: string[] | null | undefined): CascaderOption[];
@@ -0,0 +1,12 @@
1
+ import type { CascaderFactory, CascaderFormatValue, CascaderFormatValueInput, CascaderOption, CascaderProps, CascaderStylesNames } from './Cascader';
2
+ export { Cascader } from './Cascader';
3
+ export type { CascaderFlatPath } from './flatten-cascader-paths';
4
+ export { flattenCascaderPaths } from './flatten-cascader-paths';
5
+ export { getCascaderPathOptions } from './get-cascader-path-options';
6
+ export type { CascaderProps, CascaderStylesNames, CascaderFactory, CascaderOption, CascaderFormatValue, CascaderFormatValueInput, };
7
+ export declare namespace Cascader {
8
+ type Props = CascaderProps;
9
+ type StylesNames = CascaderStylesNames;
10
+ type Factory = CascaderFactory;
11
+ type Option = CascaderOption;
12
+ }
@@ -0,0 +1,25 @@
1
+ import type { CascaderOption } from './Cascader';
2
+ export interface UseCascaderInput {
3
+ data: CascaderOption[];
4
+ value: string[] | null | undefined;
5
+ defaultValue: string[] | null | undefined;
6
+ onChange: ((value: string[] | null, options: CascaderOption[]) => void) | undefined;
7
+ changeOnSelect: boolean | undefined;
8
+ allowDeselect: boolean | undefined;
9
+ expandTrigger: 'click' | 'hover' | undefined;
10
+ onLeafSelect?: () => void;
11
+ }
12
+ export declare function useCascader({ data, value, defaultValue, onChange, changeOnSelect, allowDeselect, expandTrigger, onLeafSelect, }: UseCascaderInput): {
13
+ value: string[] | null;
14
+ setValue: (value: string[] | null, ...payload: any[]) => void;
15
+ selectPath: (path: string[]) => void;
16
+ activePath: string[];
17
+ setActivePath: import("react").Dispatch<import("react").SetStateAction<string[]>>;
18
+ resetActivePath: () => void;
19
+ keyboardNav: boolean;
20
+ setKeyboardNav: import("react").Dispatch<import("react").SetStateAction<boolean>>;
21
+ handleOptionClick: (level: number, option: CascaderOption) => void;
22
+ handleOptionMouseEnter: (level: number, option: CascaderOption) => void;
23
+ handleColumnsKeyDown: (event: React.KeyboardEvent) => boolean;
24
+ pathOptions: CascaderOption[];
25
+ };
@@ -0,0 +1,30 @@
1
+ export interface FloatingWindowDimensions {
2
+ /** Initial width of the floating window in px */
3
+ initialWidth?: number;
4
+ /** Minimum width of the floating window in px */
5
+ minWidth?: number;
6
+ /** Maximum width of the floating window in px */
7
+ maxWidth?: number;
8
+ /** Initial height of the floating window in px */
9
+ initialHeight?: number;
10
+ /** Minimum height of the floating window in px */
11
+ minHeight?: number;
12
+ /** Maximum height of the floating window in px */
13
+ maxHeight?: number;
14
+ }
15
+ export interface FloatingWindowSize {
16
+ /** Width of the floating window in px */
17
+ width: number;
18
+ /** Height of the floating window in px */
19
+ height: number;
20
+ }
21
+ export interface FloatingWindowContextValue {
22
+ rootRef: React.RefObject<HTMLDivElement | null>;
23
+ dimensions: FloatingWindowDimensions | undefined;
24
+ constrainToViewport: boolean | undefined;
25
+ constrainOffset: number | undefined;
26
+ onResizeStart: (() => void) | undefined;
27
+ onResizeEnd: (() => void) | undefined;
28
+ onSizeChange: ((size: FloatingWindowSize) => void) | undefined;
29
+ }
30
+ export declare const FloatingWindowProvider: import("react").Context<FloatingWindowContextValue | null>, useFloatingWindowContext: () => FloatingWindowContextValue;
@@ -2,6 +2,8 @@ import { SetFloatingWindowPosition, UseFloatingWindowOptions } from '@mantine/ho
2
2
  import { BoxProps, ElementProps, Factory, StylesApiProps } from '../../core';
3
3
  import { PaperBaseProps } from '../Paper';
4
4
  import { PortalProps } from '../Portal';
5
+ import { FloatingWindowDimensions, FloatingWindowSize } from './FloatingWindow.context';
6
+ import { FloatingWindowResizeHandle } from './FloatingWindowResizeHandle';
5
7
  export type FloatingWindowStylesNames = 'root';
6
8
  export interface FloatingWindowProps extends UseFloatingWindowOptions, PaperBaseProps, BoxProps, StylesApiProps<FloatingWindowFactory>, ElementProps<'div', keyof UseFloatingWindowOptions> {
7
9
  /** Assigns ref to set position programmatically */
@@ -12,19 +14,28 @@ export interface FloatingWindowProps extends UseFloatingWindowOptions, PaperBase
12
14
  portalProps?: Omit<PortalProps, 'children'>;
13
15
  /** `z-index` of the root element @default 400 */
14
16
  zIndex?: React.CSSProperties['zIndex'];
17
+ /** Dimensions configuration for resizable floating window */
18
+ dimensions?: FloatingWindowDimensions;
19
+ /** Called when the window is resized with `FloatingWindow.ResizeHandle` */
20
+ onSizeChange?: (size: FloatingWindowSize) => void;
21
+ /** Called when the resize with `FloatingWindow.ResizeHandle` starts. Not called for keyboard resize. */
22
+ onResizeStart?: () => void;
23
+ /** Called when the resize with `FloatingWindow.ResizeHandle` stops. Not called for keyboard resize. */
24
+ onResizeEnd?: () => void;
15
25
  }
16
26
  export type FloatingWindowFactory = Factory<{
17
27
  props: FloatingWindowProps;
18
28
  ref: HTMLDivElement;
19
29
  stylesNames: FloatingWindowStylesNames;
30
+ staticComponents: {
31
+ ResizeHandle: typeof FloatingWindowResizeHandle;
32
+ };
20
33
  }>;
21
34
  export declare const FloatingWindow: import("../..").MantineComponent<{
22
35
  props: FloatingWindowProps;
23
36
  ref: HTMLDivElement;
24
37
  stylesNames: FloatingWindowStylesNames;
38
+ staticComponents: {
39
+ ResizeHandle: typeof FloatingWindowResizeHandle;
40
+ };
25
41
  }>;
26
- export declare namespace FloatingWindow {
27
- type Props = FloatingWindowProps;
28
- type StylesNames = FloatingWindowStylesNames;
29
- type Factory = FloatingWindowFactory;
30
- }
@@ -0,0 +1,11 @@
1
+ import { BoxProps, ElementProps, Factory } from '../../core';
2
+ export interface FloatingWindowResizeHandleProps extends BoxProps, ElementProps<'div', 'role'> {
3
+ }
4
+ export type FloatingWindowResizeHandleFactory = Factory<{
5
+ props: FloatingWindowResizeHandleProps;
6
+ ref: HTMLDivElement;
7
+ }>;
8
+ export declare const FloatingWindowResizeHandle: import("../..").MantineComponent<{
9
+ props: FloatingWindowResizeHandleProps;
10
+ ref: HTMLDivElement;
11
+ }>;
@@ -1,3 +1,5 @@
1
1
  import type { FloatingWindowFactory, FloatingWindowProps, FloatingWindowStylesNames } from './FloatingWindow';
2
2
  export { FloatingWindow } from './FloatingWindow';
3
3
  export type { FloatingWindowProps, FloatingWindowStylesNames, FloatingWindowFactory };
4
+ export type { FloatingWindowDimensions, FloatingWindowSize } from './FloatingWindow.context';
5
+ export type { FloatingWindowResizeHandleProps, FloatingWindowResizeHandleFactory, } from './FloatingWindowResizeHandle';
@@ -1,4 +1,4 @@
1
- import { BoxProps, DataAttributes, ElementProps, Factory, MantineFontSize, StylesApiProps } from '../../../core';
1
+ import { BoxProps, DataAttributes, ElementProps, Factory, MantineFontSize, PlaceholderPolymorphicProps, StylesApiProps } from '../../../core';
2
2
  import { InputDescriptionCssVariables, InputDescriptionProps, InputDescriptionStylesNames } from '../InputDescription/InputDescription';
3
3
  import { InputErrorCssVariables, InputErrorProps, InputErrorStylesNames } from '../InputError/InputError';
4
4
  import { InputLabelCssVariables, InputLabelProps, InputLabelStylesNames } from '../InputLabel/InputLabel';
@@ -19,13 +19,13 @@ export interface __InputWrapperProps {
19
19
  /** If set, the required asterisk is displayed next to the label. Overrides `required` prop. Does not add required attribute to the input. @default false */
20
20
  withAsterisk?: boolean;
21
21
  /** Props passed down to the `Input.Label` component */
22
- labelProps?: InputLabelProps & DataAttributes;
22
+ labelProps?: InputLabelProps & DataAttributes & PlaceholderPolymorphicProps;
23
23
  /** Props passed down to the `Input.Description` component */
24
- descriptionProps?: InputDescriptionProps & DataAttributes;
24
+ descriptionProps?: InputDescriptionProps & DataAttributes & PlaceholderPolymorphicProps;
25
25
  /** Props passed down to the `Input.Error` component */
26
- errorProps?: InputErrorProps & DataAttributes;
26
+ errorProps?: InputErrorProps & DataAttributes & PlaceholderPolymorphicProps;
27
27
  /** Props passed down to the `Input.Success` component */
28
- successProps?: InputSuccessProps & DataAttributes;
28
+ successProps?: InputSuccessProps & DataAttributes & PlaceholderPolymorphicProps;
29
29
  /** Render function to wrap the input element. Useful for adding tooltips, popovers, or other wrappers around the input. @default React.Fragment */
30
30
  inputContainer?: (children: React.ReactNode) => React.ReactNode;
31
31
  /** Controls order and visibility of wrapper elements. Only elements included in this array will be rendered. @default ['label', 'description', 'input', 'error'] */
@@ -303,10 +303,10 @@ export declare function useInputProps<T extends BaseProps, U extends Partial<T>
303
303
  classNames: Partial<Record<string, string | undefined>> | ((theme: import("../..").MantineTheme, props: any, ctx: unknown) => Partial<Record<string, string | undefined>>) | undefined;
304
304
  __staticSelector: string | undefined;
305
305
  __stylesApiProps: Record<string, any> | BaseProps;
306
- errorProps: (import(".").InputErrorProps & import("../..").DataAttributes) | undefined;
307
- successProps: (import(".").InputSuccessProps & import("../..").DataAttributes) | undefined;
308
- labelProps: (import(".").InputLabelProps & import("../..").DataAttributes) | undefined;
309
- descriptionProps: (import(".").InputDescriptionProps & import("../..").DataAttributes) | undefined;
306
+ errorProps: (import(".").InputErrorProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps) | undefined;
307
+ successProps: (import(".").InputSuccessProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps) | undefined;
308
+ labelProps: (import(".").InputLabelProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps) | undefined;
309
+ descriptionProps: (import(".").InputDescriptionProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps) | undefined;
310
310
  unstyled: boolean | undefined;
311
311
  styles: Partial<Record<string, import("../..").CSSProperties>> | ((theme: import("../..").MantineTheme, props: any, ctx: unknown) => Partial<Record<string, import("../..").CSSProperties>>) | undefined;
312
312
  size: (string & {}) | import("../..").MantineSize | undefined;
@@ -74,10 +74,10 @@ export declare function useMaskInputProps(props: MaskInputProps & {
74
74
  success?: React.ReactNode;
75
75
  required?: boolean;
76
76
  withAsterisk?: boolean;
77
- labelProps?: import("..").InputLabelProps & import("../..").DataAttributes;
78
- descriptionProps?: import("..").InputDescriptionProps & import("../..").DataAttributes;
79
- errorProps?: import("..").InputErrorProps & import("../..").DataAttributes;
80
- successProps?: import("..").InputSuccessProps & import("../..").DataAttributes;
77
+ labelProps?: import("..").InputLabelProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps;
78
+ descriptionProps?: import("..").InputDescriptionProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps;
79
+ errorProps?: import("..").InputErrorProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps;
80
+ successProps?: import("..").InputSuccessProps & import("../..").DataAttributes & import("../..").PlaceholderPolymorphicProps;
81
81
  inputContainer?: (children: React.ReactNode) => React.ReactNode;
82
82
  inputWrapperOrder?: ("label" | "input" | "description" | "error")[];
83
83
  leftSection?: React.ReactNode;
@@ -62,6 +62,11 @@ export interface ScrollAreaProps extends BoxProps, StylesApiProps<ScrollAreaFact
62
62
  x?: number;
63
63
  y?: number;
64
64
  };
65
+ /**
66
+ * Pins the vertical scrollbar to a physical side (`left` or `right`) regardless of direction.
67
+ * By default, the scrollbar follows the inline-end edge (right in LTR, left in RTL).
68
+ */
69
+ verticalScrollbarPosition?: 'left' | 'right';
65
70
  }
66
71
  export interface ScrollAreaAutosizeProps extends ScrollAreaProps {
67
72
  /** Called when content overflows due to max-height, making the container scrollable */
@@ -1,5 +1,5 @@
1
1
  import { BoxProps, CompoundStylesApiProps, ElementProps, Factory, MantineColor, MantineRadius } from '../../../core';
2
- export type TimelineItemStylesNames = 'itemBody' | 'itemContent' | 'itemBullet' | 'item' | 'itemTitle';
2
+ export type TimelineItemStylesNames = 'itemBody' | 'itemContent' | 'itemBullet' | 'item' | 'itemTitle' | 'itemOpposite';
3
3
  export interface TimelineItemProps extends BoxProps, CompoundStylesApiProps<TimelineItemFactory>, ElementProps<'div', 'title'> {
4
4
  __active?: boolean;
5
5
  __lineActive?: boolean;
@@ -10,6 +10,10 @@ export interface TimelineItemProps extends BoxProps, CompoundStylesApiProps<Time
10
10
  children?: React.ReactNode;
11
11
  /** React node that should be rendered inside the bullet – icon, image, avatar, etc. By default, large white dot is displayed. */
12
12
  bullet?: React.ReactNode;
13
+ /** Content displayed on the opposite side of the timeline item */
14
+ opposite?: React.ReactNode;
15
+ /** If set, switches the position of content and opposite @default false */
16
+ alternate?: boolean;
13
17
  /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default 'xl' */
14
18
  radius?: MantineRadius;
15
19
  /** Key of `theme.colors` or any valid CSS color to control active item colors @default theme.primaryColor */
@@ -31,6 +31,7 @@ export * from './Breadcrumbs';
31
31
  export * from './Burger';
32
32
  export * from './Button';
33
33
  export * from './Card';
34
+ export * from './Cascader';
34
35
  export * from './Center';
35
36
  export * from './Checkbox';
36
37
  export * from './Chip';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/core",
3
- "version": "9.4.3-alpha.0",
3
+ "version": "9.5.1-alpha.0",
4
4
  "description": "React components library focused on usability, accessibility and developer experience",
5
5
  "homepage": "https://mantine.dev/",
6
6
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "directory": "packages/@mantine/core"
44
44
  },
45
45
  "peerDependencies": {
46
- "@mantine/hooks": "9.4.3-alpha.0",
46
+ "@mantine/hooks": "9.5.1-alpha.0",
47
47
  "react": "^19.2.0",
48
48
  "react-dom": "^19.2.0"
49
49
  },
@@ -52,7 +52,7 @@
52
52
  "clsx": "^2.1.1",
53
53
  "react-number-format": "^5.4.5",
54
54
  "react-remove-scroll": "^2.7.2",
55
- "type-fest": "^5.7.0"
55
+ "type-fest": "^5.8.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@mantine-tests/core": "workspace:*",
@@ -0,0 +1,215 @@
1
+ .m_9a782f2c {
2
+ --cascader-column-width: 200px;
3
+
4
+ display: flex;
5
+ flex-direction: row;
6
+ align-items: stretch;
7
+ }
8
+
9
+ .m_4c5a03a5 {
10
+ display: flex;
11
+ flex-direction: column;
12
+ width: var(--cascader-column-width);
13
+ min-width: var(--cascader-column-width);
14
+ border-inline-end: calc(0.0625rem * var(--mantine-scale)) solid var(--popover-border-color, var(--mantine-color-default-border));
15
+ }
16
+
17
+ /* Keep the border width reserved so revealing the next column does not shift the layout */
18
+
19
+ .m_4c5a03a5:where([data-last]) {
20
+ border-inline-end-color: transparent;
21
+ }
22
+
23
+ .m_7f3ac6d2 {
24
+ flex: 1;
25
+ padding: var(--combobox-padding);
26
+ }
27
+
28
+ .m_6b93b90 {
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ align-self: stretch;
33
+ padding-inline: calc(var(--combobox-padding) / 2);
34
+ color: var(--mantine-color-dimmed);
35
+ cursor: pointer;
36
+ border-inline-end: calc(0.0625rem * var(--mantine-scale)) solid var(--popover-border-color, var(--mantine-color-default-border));
37
+ }
38
+
39
+ @media (hover: hover) {
40
+ :where([data-mantine-color-scheme='light']) .m_6b93b90:hover {
41
+ background-color: var(--mantine-color-gray-0);
42
+ }
43
+
44
+ :where([data-mantine-color-scheme='dark']) .m_6b93b90:hover {
45
+ background-color: var(--mantine-color-dark-7);
46
+ }
47
+ }
48
+
49
+ @media (hover: none) {
50
+ :where([data-mantine-color-scheme='light']) .m_6b93b90:active {
51
+ background-color: var(--mantine-color-gray-0);
52
+ }
53
+
54
+ :where([data-mantine-color-scheme='dark']) .m_6b93b90:active {
55
+ background-color: var(--mantine-color-dark-7);
56
+ }
57
+ }
58
+
59
+ .m_6b93b90 > svg {
60
+ width: 0.9em;
61
+ height: 0.9em;
62
+ transform: rotate(90deg);
63
+ }
64
+
65
+ /* Round the corners that sit against the rounded dropdown edge so the hover background
66
+ does not overflow the dropdown corners */
67
+
68
+ .m_6b93b90:where([data-position='start']) {
69
+ border-start-start-radius: var(--popover-radius, var(--mantine-radius-default));
70
+ border-end-start-radius: var(--popover-radius, var(--mantine-radius-default));
71
+ }
72
+
73
+ /* The divider on the left is provided by the previous column, so this control has none */
74
+
75
+ .m_6b93b90:where([data-position='end']) {
76
+ border-inline-end-color: transparent;
77
+ border-start-end-radius: var(--popover-radius, var(--mantine-radius-default));
78
+ border-end-end-radius: var(--popover-radius, var(--mantine-radius-default));
79
+ }
80
+
81
+ .m_6b93b90:where([data-position='end']) > svg {
82
+ transform: rotate(-90deg);
83
+ }
84
+
85
+ :where([dir="rtl"]) .m_6b93b90 > svg {
86
+ transform: rotate(-90deg);
87
+ }
88
+
89
+ :where([dir="rtl"]) .m_6b93b90:where([data-position='end']) > svg {
90
+ transform: rotate(90deg);
91
+ }
92
+
93
+ .m_791f687a {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: var(--mantine-spacing-xs);
97
+ width: 100%;
98
+ padding: var(--combobox-option-padding);
99
+ font-size: var(--combobox-option-fz, var(--mantine-font-size-sm));
100
+ border-radius: var(--combobox-option-radius, var(--mantine-radius-default));
101
+ color: var(--mantine-color-text);
102
+ cursor: pointer;
103
+ }
104
+
105
+ @media (hover: hover) {
106
+ :where([data-mantine-color-scheme='light']) .m_791f687a:hover:where(:not([data-disabled], [data-active])) {
107
+ background-color: var(--mantine-color-gray-0);
108
+ }
109
+
110
+ :where([data-mantine-color-scheme='dark']) .m_791f687a:hover:where(:not([data-disabled], [data-active])) {
111
+ background-color: var(--mantine-color-dark-7);
112
+ }
113
+ }
114
+
115
+ @media (hover: none) {
116
+ :where([data-mantine-color-scheme='light']) .m_791f687a:active:where(:not([data-disabled], [data-active])) {
117
+ background-color: var(--mantine-color-gray-0);
118
+ }
119
+
120
+ :where([data-mantine-color-scheme='dark']) .m_791f687a:active:where(:not([data-disabled], [data-active])) {
121
+ background-color: var(--mantine-color-dark-7);
122
+ }
123
+ }
124
+
125
+ /* Selected options in the ancestor columns (the navigation trail) */
126
+
127
+ :where([data-mantine-color-scheme='light']) .m_791f687a:where([data-in-path]) {
128
+ background-color: var(--mantine-color-gray-1);
129
+ }
130
+
131
+ :where([data-mantine-color-scheme='dark']) .m_791f687a:where([data-in-path]) {
132
+ background-color: var(--mantine-color-dark-6);
133
+ }
134
+
135
+ /* Option in the column that is currently being navigated */
136
+
137
+ .m_791f687a:where([data-active]) {
138
+ background-color: var(--mantine-primary-color-filled);
139
+ color: var(--mantine-color-white);
140
+ }
141
+
142
+ @media (hover: hover) {
143
+
144
+ .m_791f687a:where([data-active]):hover {
145
+ background-color: var(--mantine-primary-color-filled-hover);
146
+ }
147
+ }
148
+
149
+ @media (hover: none) {
150
+
151
+ .m_791f687a:where([data-active]):active {
152
+ background-color: var(--mantine-primary-color-filled-hover);
153
+ }
154
+ }
155
+
156
+ .m_791f687a:where([data-disabled]) {
157
+ color: var(--mantine-color-dimmed);
158
+ cursor: not-allowed;
159
+ opacity: 0.5;
160
+ }
161
+
162
+ .m_452a61d {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: var(--mantine-spacing-xs);
166
+ width: 100%;
167
+ }
168
+
169
+ .m_aecd629a {
170
+ flex: 1;
171
+ overflow: hidden;
172
+ text-overflow: ellipsis;
173
+ white-space: nowrap;
174
+ }
175
+
176
+ .m_92054c13 {
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ width: 0.9em;
181
+ min-width: 0.9em;
182
+ height: 0.9em;
183
+ color: var(--mantine-color-dimmed);
184
+ transform: rotate(-90deg);
185
+ }
186
+
187
+ :where([data-active]) .m_92054c13 {
188
+ color: inherit;
189
+ }
190
+
191
+ :where([dir="rtl"]) .m_92054c13 {
192
+ transform: rotate(90deg);
193
+ }
194
+
195
+ .m_ae51c8ae {
196
+ width: 0.8em;
197
+ min-width: 0.8em;
198
+ height: 0.8em;
199
+ opacity: 0.4;
200
+ }
201
+
202
+ :where([data-active]) .m_ae51c8ae,
203
+ :where([data-combobox-selected]) .m_ae51c8ae {
204
+ opacity: 1;
205
+ }
206
+
207
+ .m_97ff10a8 {
208
+ display: flex;
209
+ align-items: center;
210
+ justify-content: center;
211
+ padding: var(--combobox-option-padding);
212
+ color: var(--mantine-color-dimmed);
213
+ font-size: var(--combobox-option-fz, var(--mantine-font-size-sm));
214
+ white-space: nowrap;
215
+ }