asma-ui-core 3.33.0 → 3.35.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 (202) hide show
  1. package/dist/asma-ui-core.css +1 -1
  2. package/dist/components/data-display/badge/StyledBadge.js +29 -24
  3. package/dist/components/data-display/chip/StyledChip.js +45 -60
  4. package/dist/components/data-display/interactive-chip/StyledInteractiveChip.js +32 -38
  5. package/dist/components/data-display/tooltip/StyledTooltip.js +50 -33
  6. package/dist/components/data-display/typography/StyledTypography.js +62 -4
  7. package/dist/components/feedback/dialog/StyledDialog.js +70 -50
  8. package/dist/components/feedback/dialog/StyledDialog.module.js +2 -9
  9. package/dist/components/feedback/dialog/StyledDialogActions.js +16 -16
  10. package/dist/components/feedback/dialog/StyledDialogContent.js +17 -14
  11. package/dist/components/feedback/dialog/StyledDialogTitle.js +18 -13
  12. package/dist/components/feedback/minimizable-dialog/MinimizableDialog.js +56 -57
  13. package/dist/components/feedback/snack-bar/StyledAlert.js +72 -14
  14. package/dist/components/feedback/snack-bar/StyledSnackbar.js +34 -8
  15. package/dist/components/feedback/snack-bar/components/StyledDefaultSnackbar.js +33 -34
  16. package/dist/components/inputs/checkbox/base-ui/StyledCheckbox.js +55 -58
  17. package/dist/components/inputs/checkbox/base-ui/StyledCheckbox.module.js +12 -12
  18. package/dist/components/inputs/dynamic-select/components/DynamicInteractiveChipGroup.js +1 -1
  19. package/dist/components/inputs/dynamic-select/components/DynamicSelectAutocomplete.js +1 -1
  20. package/dist/components/inputs/field-styles.js +6 -0
  21. package/dist/components/inputs/input-field/StyledInputField.js +104 -81
  22. package/dist/components/inputs/input-field/StyledInputField.module.js +4 -0
  23. package/dist/components/inputs/radio-button/base-ui/RadioGroupContext.js +6 -0
  24. package/dist/components/inputs/radio-button/base-ui/StyledRadio.js +40 -29
  25. package/dist/components/inputs/radio-button/base-ui/StyledRadio.module.js +10 -10
  26. package/dist/components/inputs/radio-button/base-ui/StyledRadioGroup.js +35 -23
  27. package/dist/components/inputs/select/StyledSelect.js +124 -45
  28. package/dist/components/inputs/select/StyledSelectItem.js +19 -23
  29. package/dist/components/inputs/select-autocomplete/StyledSelectAutocomplete.js +181 -151
  30. package/dist/components/inputs/slider/StyledSlider.js +78 -52
  31. package/dist/components/inputs/slider/StyledSlider.module.js +10 -0
  32. package/dist/components/inputs/switch/base-ui/StyledSwitch.js +44 -39
  33. package/dist/components/miscellaneous/FormControlContext.js +6 -0
  34. package/dist/components/miscellaneous/StyledFormControl.js +39 -21
  35. package/dist/components/miscellaneous/StyledFormControlLabel.js +27 -16
  36. package/dist/components/miscellaneous/StyledFormGroup.js +16 -4
  37. package/dist/components/miscellaneous/StyledFormHelperText.js +12 -4
  38. package/dist/components/miscellaneous/StyledInputLabel.js +20 -4
  39. package/dist/components/mui-compat/Avatar.js +29 -0
  40. package/dist/components/mui-compat/ClickAwayListener.js +29 -0
  41. package/dist/components/mui-compat/Container.js +24 -0
  42. package/dist/components/mui-compat/Fade.js +29 -0
  43. package/dist/components/mui-compat/Fade.module.js +9 -0
  44. package/dist/components/mui-compat/FormLabel.js +22 -0
  45. package/dist/components/mui-compat/Paper.js +44 -0
  46. package/dist/components/mui-compat/Popper.js +35 -0
  47. package/dist/components/mui-compat/Skeleton.js +26 -0
  48. package/dist/components/mui-compat/Stack.js +24 -0
  49. package/dist/components/navigation/drawer/StyledDrawer.js +42 -4
  50. package/dist/components/navigation/listbox/Listbox.js +80 -0
  51. package/dist/components/navigation/menu/StyledMenu.js +27 -11
  52. package/dist/components/navigation/menu/StyledMenuItem.js +16 -18
  53. package/dist/components/navigation/menu/StyledMenuList.js +32 -4
  54. package/dist/components/navigation/tabs/StyledTab.js +25 -13
  55. package/dist/components/navigation/tabs/StyledTabs.js +112 -64
  56. package/dist/components/navigation/tabs/TabsContext.js +6 -0
  57. package/dist/components/utils/accordion/base-ui/AccordionContext.js +10 -0
  58. package/dist/components/utils/accordion/base-ui/StyledAccordion.js +28 -21
  59. package/dist/components/utils/accordion/base-ui/StyledAccordion.module.js +7 -7
  60. package/dist/components/utils/accordion/base-ui/StyledAccordionDetails.js +28 -14
  61. package/dist/components/utils/accordion/base-ui/StyledAccordionSummary.js +31 -27
  62. package/dist/components/utils/popover/StyledPopover.js +43 -15
  63. package/dist/datetime/components/date-picker/StyledDatePicker.js +6 -6
  64. package/dist/datetime/components/date-picker/components/BaseDatePickerInput.js +1 -1
  65. package/dist/datetime/components/date-picker/components/HelperTextWithTooltip.js +6 -6
  66. package/dist/datetime/components/date-picker/components/StyledCalendarPicker.js +11 -11
  67. package/dist/datetime/components/date-picker/components/StyledCalendarPickerFooter.js +13 -14
  68. package/dist/datetime/components/date-picker/components/StyledCalendarPickerSelectMonth.js +14 -14
  69. package/dist/datetime/components/date-picker/components/StyledCalendarPickerSelectYear.js +6 -6
  70. package/dist/datetime/components/date-picker/components/StyledDayPicker.js +4 -5
  71. package/dist/datetime/components/date-picker/hooks/useDatePickerMask.js +4 -4
  72. package/dist/datetime/components/time-picker/StyledTimePicker.js +25 -25
  73. package/dist/datetime/components/time-picker/TimePickerInput.js +15 -16
  74. package/dist/datetime/components/time-picker/TimePickerPopper.js +21 -19
  75. package/dist/datetime/helpers/cn.js +4 -5
  76. package/dist/helpers/arrays.js +4 -0
  77. package/dist/helpers/cn.js +4 -5
  78. package/dist/helpers/inputMask.js +45 -0
  79. package/dist/helpers/sx.js +46 -0
  80. package/dist/hooks/usePopupState.js +60 -0
  81. package/dist/index.js +285 -269
  82. package/dist/src/api-surface.test.d.ts +1 -0
  83. package/dist/src/components/data-display/badge/StyledBadge.d.ts +26 -2
  84. package/dist/src/components/data-display/chip/StyledChip.d.ts +39 -5
  85. package/dist/src/components/data-display/interactive-chip/StyledInteractiveChip.d.ts +11 -4
  86. package/dist/src/components/data-display/tooltip/StyledTooltip.d.ts +36 -2
  87. package/dist/src/components/data-display/typography/StyledTypography.d.ts +19 -1
  88. package/dist/src/components/feedback/dialog/StyledDialog.d.ts +37 -4
  89. package/dist/src/components/feedback/dialog/StyledDialogActions.d.ts +12 -2
  90. package/dist/src/components/feedback/dialog/StyledDialogContent.d.ts +12 -2
  91. package/dist/src/components/feedback/dialog/StyledDialogTitle.d.ts +10 -2
  92. package/dist/src/components/feedback/snack-bar/SnackbarProvider.d.ts +1 -1
  93. package/dist/src/components/feedback/snack-bar/StyledAlert.d.ts +24 -2
  94. package/dist/src/components/feedback/snack-bar/StyledAlertSnackbar.d.ts +1 -1
  95. package/dist/src/components/feedback/snack-bar/StyledSnackbar.d.ts +21 -2
  96. package/dist/src/components/feedback/snack-bar/components/StyledDefaultSnackbar.d.ts +1 -1
  97. package/dist/src/components/feedback/snack-bar/components/StyledInfoSnackbar.d.ts +1 -1
  98. package/dist/src/components/feedback/snack-bar/components/types.d.ts +1 -1
  99. package/dist/src/components/inputs/checkbox/base-ui/StyledCheckbox.d.ts +9 -4
  100. package/dist/src/components/inputs/dynamic-select/types.d.ts +2 -2
  101. package/dist/src/components/inputs/field-styles.d.ts +22 -0
  102. package/dist/src/components/inputs/input-field/StyledInputField.d.ts +67 -11
  103. package/dist/src/components/inputs/input-field/index.d.ts +1 -1
  104. package/dist/src/components/inputs/radio-button/base-ui/RadioGroupContext.d.ts +10 -0
  105. package/dist/src/components/inputs/radio-button/base-ui/StyledRadio.d.ts +20 -5
  106. package/dist/src/components/inputs/radio-button/base-ui/StyledRadioGroup.d.ts +24 -7
  107. package/dist/src/components/inputs/select/StyledSelect.d.ts +39 -16
  108. package/dist/src/components/inputs/select/StyledSelectItem.d.ts +14 -2
  109. package/dist/src/components/inputs/select/index.d.ts +0 -1
  110. package/dist/src/components/inputs/select-autocomplete/StyledSelectAutocomplete.d.ts +88 -17
  111. package/dist/src/components/inputs/slider/StyledSlider.d.ts +55 -3
  112. package/dist/src/components/inputs/switch/base-ui/StyledSwitch.d.ts +20 -4
  113. package/dist/src/components/miscellaneous/FormControlContext.d.ts +14 -0
  114. package/dist/src/components/miscellaneous/StyledFormControl.d.ts +22 -2
  115. package/dist/src/components/miscellaneous/StyledFormControlLabel.d.ts +21 -2
  116. package/dist/src/components/miscellaneous/StyledFormGroup.d.ts +11 -2
  117. package/dist/src/components/miscellaneous/StyledFormHelperText.d.ts +12 -2
  118. package/dist/src/components/miscellaneous/StyledInputLabel.d.ts +20 -2
  119. package/dist/src/components/mui-compat/Avatar.d.ts +6 -0
  120. package/dist/src/components/mui-compat/ClickAwayListener.d.ts +19 -0
  121. package/dist/src/components/mui-compat/Container.d.ts +6 -0
  122. package/dist/src/components/mui-compat/Fade.d.ts +21 -0
  123. package/dist/src/components/mui-compat/FormLabel.d.ts +6 -0
  124. package/dist/src/components/mui-compat/Paper.d.ts +6 -0
  125. package/dist/src/components/mui-compat/Popper.d.ts +29 -0
  126. package/dist/src/components/mui-compat/Skeleton.d.ts +7 -0
  127. package/dist/src/components/mui-compat/Stack.d.ts +7 -0
  128. package/dist/src/components/mui-compat/index.d.ts +9 -0
  129. package/dist/src/components/mui-compat/types.d.ts +46 -0
  130. package/dist/src/components/navigation/drawer/StyledDrawer.d.ts +21 -2
  131. package/dist/src/components/navigation/listbox/Listbox.d.ts +29 -0
  132. package/dist/src/components/navigation/listbox/index.d.ts +1 -0
  133. package/dist/src/components/navigation/menu/StyledMenu.d.ts +25 -2
  134. package/dist/src/components/navigation/menu/StyledMenuItem.d.ts +21 -2
  135. package/dist/src/components/navigation/menu/StyledMenuList.d.ts +16 -2
  136. package/dist/src/components/navigation/menu/index.d.ts +0 -1
  137. package/dist/src/components/navigation/tabs/StyledTab.d.ts +17 -3
  138. package/dist/src/components/navigation/tabs/StyledTabs.d.ts +16 -7
  139. package/dist/src/components/navigation/tabs/TabsContext.d.ts +11 -0
  140. package/dist/src/components/utils/accordion/base-ui/AccordionContext.d.ts +10 -0
  141. package/dist/src/components/utils/accordion/base-ui/StyledAccordion.d.ts +9 -3
  142. package/dist/src/components/utils/accordion/base-ui/StyledAccordionDetails.d.ts +5 -0
  143. package/dist/src/components/utils/accordion/base-ui/StyledAccordionSummary.d.ts +8 -4
  144. package/dist/src/components/utils/copy-wrapper/CopyWrapper.d.ts +1 -1
  145. package/dist/src/components/utils/filter-menu/StyledFilterMenu.d.ts +2 -2
  146. package/dist/src/components/utils/popover/StyledPopover.d.ts +31 -2
  147. package/dist/src/datetime/components/date-picker/components/StyledCalendarPicker.d.ts +1 -1
  148. package/dist/src/datetime/components/date-picker/components/StyledDayPicker.d.ts +1 -1
  149. package/dist/src/datetime/components/date-picker/hooks/useDatePickerMask.d.ts +1 -2
  150. package/dist/src/datetime/components/time-picker/TimePickerInput.d.ts +1 -1
  151. package/dist/src/datetime/components/time-picker/TimePickerPopper.d.ts +1 -1
  152. package/dist/src/datetime/components/time-picker/types.d.ts +1 -2
  153. package/dist/src/datetime/shared-components/StyledFormControl.d.ts +1 -2
  154. package/dist/src/datetime/shared-components/StyledInputField.d.ts +1 -12
  155. package/dist/src/datetime/shared-components/StyledSelect.d.ts +1 -16
  156. package/dist/src/datetime/shared-components/StyledSelectItem.d.ts +1 -2
  157. package/dist/src/datetime/shared-components/StyledTooltip.d.ts +1 -2
  158. package/dist/src/helpers/arrays.d.ts +2 -0
  159. package/dist/src/helpers/arrays.test.d.ts +1 -0
  160. package/dist/src/helpers/inputMask.d.ts +29 -0
  161. package/dist/src/helpers/inputMask.test.d.ts +1 -0
  162. package/dist/src/helpers/sx.d.ts +2 -0
  163. package/dist/src/helpers/sx.test.d.ts +1 -0
  164. package/dist/src/hooks/usePopupState.d.ts +54 -0
  165. package/dist/src/index.d.ts +3 -1
  166. package/dist/src/table/shared-components/StyledCheckbox.d.ts +7 -4
  167. package/dist/src/table/shared-components/StyledMenuItem.d.ts +18 -2
  168. package/dist/src/table/shared-components/menu-item/index.d.ts +13 -2
  169. package/dist/src/table/shared-components/tooltip/index.d.ts +5 -1
  170. package/dist/src/table/types.d.ts +1 -1
  171. package/dist/table/components/Fetching.js +4 -4
  172. package/dist/table/components/TableRow.js +7 -7
  173. package/dist/table/components/TableSkeleton.js +6 -6
  174. package/dist/table/components/columns/action-column/components/HeaderActionMenu.js +24 -24
  175. package/dist/table/components/columns/action-column/components/RowActionMenu.js +26 -25
  176. package/dist/table/components/table-footer/TablePagination.js +27 -24
  177. package/dist/table/components/table-footer/TableRowCountSelect.js +30 -27
  178. package/dist/table/helpers/cn.js +4 -5
  179. package/dist/table/shared-components/StyledCheckbox.js +54 -55
  180. package/dist/table/shared-components/StyledCheckbox.module.js +10 -10
  181. package/dist/table/shared-components/StyledMenuItem.js +12 -18
  182. package/dist/table/shared-components/menu-item/index.js +13 -17
  183. package/dist/table/shared-components/tooltip/index.js +4 -23
  184. package/package.json +9 -16
  185. package/dist/components/feedback/dialog/StyledDialogActions.module.js +0 -8
  186. package/dist/components/feedback/dialog/StyledDialogContent.module.js +0 -4
  187. package/dist/components/feedback/dialog/StyledDialogTitle.module.js +0 -4
  188. package/dist/components/inputs/checkbox/StyledCheckbox.js +0 -20
  189. package/dist/components/inputs/radio-button/StyledRadio.js +0 -17
  190. package/dist/datetime/shared-components/ExpandIcon.js +0 -18
  191. package/dist/datetime/shared-components/StyledFormControl.js +0 -23
  192. package/dist/datetime/shared-components/StyledInputField.js +0 -47
  193. package/dist/datetime/shared-components/StyledSelect.js +0 -47
  194. package/dist/datetime/shared-components/StyledSelectItem.js +0 -13
  195. package/dist/datetime/shared-components/StyledTooltip.js +0 -32
  196. package/dist/src/components/inputs/checkbox/StyledCheckbox.d.ts +0 -4
  197. package/dist/src/components/inputs/radio-button/StyledRadio.d.ts +0 -4
  198. package/dist/src/components/inputs/radio-button/StyledRadioGroup.d.ts +0 -4
  199. package/dist/src/components/inputs/switch/StyledSwitch.d.ts +0 -5
  200. package/dist/src/components/utils/accordion/StyledAccordion.d.ts +0 -2
  201. package/dist/src/components/utils/accordion/StyledAccordionDetails.d.ts +0 -2
  202. package/dist/src/components/utils/accordion/StyledAccordionSummary.d.ts +0 -8
@@ -1,19 +1,42 @@
1
- import { SelectProps } from '@mui/material';
2
- export type StyledSelectProps = SelectProps & {
3
- allowClear?: boolean;
4
- errorText?: string;
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { FieldSize } from '../field-styles';
3
+ export interface SelectChangeEvent<T = unknown> {
4
+ target: {
5
+ value: T;
6
+ name?: string;
7
+ };
8
+ }
9
+ export interface StyledSelectProps {
5
10
  dataTest: string;
6
- };
11
+ value?: unknown;
12
+ defaultValue?: unknown;
13
+ onChange?: (event: SelectChangeEvent, child: ReactNode) => void;
14
+ size?: FieldSize;
15
+ error?: boolean;
16
+ errorText?: string;
17
+ allowClear?: boolean;
18
+ disabled?: boolean;
19
+ readOnly?: boolean;
20
+ name?: string;
21
+ placeholder?: string;
22
+ displayEmpty?: boolean;
23
+ renderValue?: (value: unknown) => ReactNode;
24
+ fullWidth?: boolean;
25
+ className?: string;
26
+ style?: CSSProperties;
27
+ /** Accepted for API parity; the design always renders outlined. */
28
+ variant?: string;
29
+ sx?: unknown;
30
+ labelId?: string;
31
+ children?: ReactNode;
32
+ MenuProps?: {
33
+ className?: string;
34
+ };
35
+ }
7
36
  /**
8
- *
9
- * @usage
10
- * use StyleSelect only inside StyledFormControl
11
- *
12
- * @size
13
- * control the size through StyledFormControl
14
- *
15
- * @inputRef
16
- * inputRef to get Node of Input Element inside
17
- *
37
+ * Single-select dropdown (replaces MUI `Select`) — a trigger styled as the outlined field plus a
38
+ * portalled `role="listbox"`. Reports open/filled into a surrounding `StyledFormControl` so its
39
+ * `StyledInputLabel` floats. Public props preserved (DEC-003). Use inside `StyledFormControl`.
40
+ * TASK-402.
18
41
  */
19
- export declare const StyledSelect: React.FC<StyledSelectProps>;
42
+ export declare const StyledSelect: ({ dataTest, value, defaultValue, onChange, size, error, errorText, allowClear, disabled, readOnly, name, placeholder, displayEmpty, renderValue, fullWidth, className, style, sx, children, MenuProps, }: StyledSelectProps) => JSX.Element;
@@ -1,2 +1,14 @@
1
- import { MenuItemProps } from '@mui/material';
2
- export declare const StyledSelectItem: (item: MenuItemProps) => JSX.Element;
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ export interface StyledSelectItemProps {
3
+ value?: unknown;
4
+ children?: ReactNode;
5
+ selected?: boolean;
6
+ disabled?: boolean;
7
+ className?: string;
8
+ onClick?: (event: MouseEvent<HTMLLIElement>) => void;
9
+ }
10
+ /**
11
+ * Option row for `StyledSelect` (replaces MUI `MenuItem` in the select context). `role="option"`
12
+ * with a leading check column for the selected state. Public props preserved (DEC-003). TASK-402.
13
+ */
14
+ export declare const StyledSelectItem: ({ children, selected, disabled, className, onClick, }: StyledSelectItemProps) => JSX.Element;
@@ -1,3 +1,2 @@
1
1
  export * from './StyledSelect';
2
2
  export * from './StyledSelectItem';
3
- export { type SelectChangeEvent } from '@mui/material';
@@ -1,25 +1,96 @@
1
- import { AutocompleteProps, ChipTypeMap } from '@mui/material';
2
- type StyledSelectAutocompleteBaseProps<T, Multiple extends boolean | undefined, DisableClearable extends boolean | undefined, FreeSolo extends boolean | undefined, ChipComponent extends React.ElementType> = Omit<AutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>, 'multiple'> & {
1
+ import { HTMLAttributes, KeyboardEvent, ReactNode, SyntheticEvent } from 'react';
2
+ export type AutocompleteChangeReason = 'createOption' | 'selectOption' | 'removeOption' | 'clear' | 'blur';
3
+ export type AutocompleteInputChangeReason = 'input' | 'reset' | 'clear';
4
+ export interface AutocompleteRenderOptionState {
5
+ selected: boolean;
6
+ index: number;
7
+ inputValue: string;
8
+ }
9
+ /** Props the combobox hands to `renderInput`; spread straight onto `StyledInputField`. */
10
+ export interface AutocompleteRenderInputParams {
11
+ disabled?: boolean;
12
+ size?: 'small' | 'medium';
13
+ fullWidth?: boolean;
14
+ value: string;
15
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
16
+ onFocus: () => void;
17
+ onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => void;
18
+ slotProps: {
19
+ htmlInput: Record<string, unknown> & {
20
+ ref: React.Ref<HTMLInputElement>;
21
+ };
22
+ input: {
23
+ startAdornment?: ReactNode;
24
+ endAdornment?: ReactNode;
25
+ };
26
+ };
27
+ }
28
+ type OptionLiProps = HTMLAttributes<HTMLLIElement> & {
29
+ key?: string;
30
+ ref?: React.Ref<HTMLLIElement>;
31
+ [dataAttr: `data-${string}`]: unknown;
32
+ };
33
+ type SingleValue<T> = T | null;
34
+ type MultiValue<T> = T[];
35
+ type AutocompleteValue<T, Multiple, DisableClearable, FreeSolo> = Multiple extends true ? MultiValue<T> : FreeSolo extends true ? T | string | null : DisableClearable extends true ? T : SingleValue<T>;
36
+ export interface StyledSelectAutocompleteProps<T, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false> {
3
37
  dataTest: string;
4
- autoHeight?: boolean;
38
+ options: readonly T[];
39
+ renderInput: (params: AutocompleteRenderInputParams) => ReactNode;
40
+ value?: SingleValue<T> | MultiValue<T> | string | undefined;
41
+ defaultValue?: SingleValue<T> | MultiValue<T> | string | undefined;
42
+ onChange?: (event: SyntheticEvent, value: AutocompleteValue<T, Multiple, DisableClearable, FreeSolo>, reason: AutocompleteChangeReason, details?: {
43
+ option: T;
44
+ }) => void;
5
45
  getOptionLabel?: (option: T) => string;
6
- wrapperClassName?: string;
7
- };
8
- type StyledSelectAutocompleteConditionalProps<Multiple extends boolean | undefined> = Multiple extends true ? {
9
- multiple: true;
46
+ isOptionEqualToValue?: (option: T, value: T) => boolean;
47
+ renderOption?: (props: OptionLiProps, option: T, state: AutocompleteRenderOptionState) => ReactNode;
48
+ renderValue?: (value: MultiValue<T>, getItemProps: (opts: {
49
+ index: number;
50
+ }) => OptionLiProps) => ReactNode;
51
+ filterOptions?: (options: T[], state: {
52
+ inputValue: string;
53
+ }) => T[];
54
+ groupBy?: (option: T) => string;
55
+ loading?: boolean;
56
+ loadingText?: ReactNode;
57
+ noOptionsText?: ReactNode;
58
+ disabled?: boolean;
59
+ readOnly?: boolean;
60
+ size?: 'small' | 'medium';
61
+ disableClearable?: boolean;
62
+ freeSolo?: boolean;
63
+ open?: boolean;
64
+ onOpen?: (event?: SyntheticEvent) => void;
65
+ onClose?: (event?: SyntheticEvent, reason?: string) => void;
66
+ disableCloseOnSelect?: boolean;
67
+ inputValue?: string;
68
+ onInputChange?: (event: SyntheticEvent | null, value: string, reason: AutocompleteInputChangeReason) => void;
69
+ popupIcon?: ReactNode;
70
+ autoHeight?: boolean;
71
+ multiple?: Multiple;
10
72
  allowSelectAll?: boolean;
11
73
  selectAllLabel?: string;
12
- } : {
13
- multiple?: Multiple;
14
- allowSelectAll?: never;
15
- selectAllLabel?: never;
16
- };
17
- export type StyledSelectAutocompleteProps<T, Multiple extends boolean | undefined, DisableClearable extends boolean | undefined, FreeSolo extends boolean | undefined, ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent']> = StyledSelectAutocompleteBaseProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent> & StyledSelectAutocompleteConditionalProps<Multiple>;
74
+ fullWidth?: boolean;
75
+ /** Accepted for MUI parity; single-select already omits selected options via filtering. */
76
+ filterSelectedOptions?: boolean;
77
+ classes?: {
78
+ root?: string;
79
+ paper?: string;
80
+ listbox?: string;
81
+ };
82
+ className?: string;
83
+ wrapperClassName?: string;
84
+ sx?: unknown;
85
+ }
18
86
  /**
87
+ * Custom combobox (replaces MUI `Autocomplete`, DEC-002) built on `@floating-ui/react`. Supports
88
+ * single + multiple selection (with tag chips + optional select-all), type-ahead filtering,
89
+ * async `loading`, grouping, and the MUI `renderInput`/`renderOption`/`renderValue` callback
90
+ * contracts. Public props/generics preserved (DEC-003). TASK-401.
19
91
  *
20
- * @inputRef
21
- * inputRef to get Node of Input Element inside
22
- *
92
+ * ponytail: `freeSolo` is accepted (arbitrary input is emitted via onInputChange) but not turned
93
+ * into option values; exact keyboard-parity edge cases are Chromatic/axe-gated.
23
94
  */
24
- export declare function StyledSelectAutocomplete<T, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false, ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent']>({ dataTest, autoHeight, getOptionLabel, wrapperClassName, multiple, allowSelectAll, selectAllLabel, className, defaultValue, isOptionEqualToValue, onChange, options, popupIcon, readOnly, renderOption, renderValue, sx, value, ...props }: StyledSelectAutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>): JSX.Element;
95
+ export declare function StyledSelectAutocomplete<T, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false>({ dataTest, options, renderInput, value, onChange, getOptionLabel, isOptionEqualToValue, renderOption, renderValue, filterOptions, loading, loadingText, noOptionsText, disabled, readOnly, size, disableClearable, popupIcon, multiple, fullWidth, classes, inputValue: controlledInput, onInputChange, open: controlledOpen, onOpen, onClose, className, wrapperClassName, }: StyledSelectAutocompleteProps<T, Multiple, DisableClearable, FreeSolo>): JSX.Element;
25
96
  export {};
@@ -1,8 +1,60 @@
1
- import { SliderProps } from '@mui/material';
2
- export interface StyledSliderProps extends SliderProps {
1
+ import { ReactNode, SyntheticEvent } from 'react';
2
+ export interface SliderMark {
3
+ value: number;
4
+ label?: ReactNode;
5
+ }
6
+ type SliderValue = number | number[];
7
+ interface SliderClasses {
8
+ root?: string;
9
+ rail?: string;
10
+ track?: string;
11
+ thumb?: string;
12
+ mark?: string;
13
+ markActive?: string;
14
+ markLabel?: string;
15
+ markLabelActive?: string;
16
+ }
17
+ interface SliderSlotProps {
18
+ thumb?: {
19
+ className?: string;
20
+ };
21
+ rail?: {
22
+ className?: string;
23
+ };
24
+ markLabel?: {
25
+ className?: string;
26
+ };
27
+ }
28
+ export interface StyledSliderProps {
3
29
  dataTest: string;
30
+ min?: number;
31
+ max?: number;
32
+ step?: number;
33
+ value?: SliderValue;
34
+ defaultValue?: SliderValue;
35
+ disabled?: boolean;
36
+ size?: 'small' | 'medium';
37
+ orientation?: 'horizontal' | 'vertical';
38
+ marks?: boolean | SliderMark[];
39
+ name?: string;
40
+ className?: string;
41
+ classes?: SliderClasses;
42
+ slotProps?: SliderSlotProps;
4
43
  error?: boolean;
5
44
  errorText?: string;
6
45
  helperText?: string;
46
+ onChange?: (event: SyntheticEvent, value: SliderValue, activeThumb: number) => void;
47
+ onChangeCommitted?: (event: SyntheticEvent, value: SliderValue) => void;
7
48
  }
8
- export declare const StyledSlider: ({ dataTest, error, errorText, helperText, ...props }: StyledSliderProps) => JSX.Element;
49
+ /**
50
+ * Native range-input slider (replaces MUI `Slider`). Single value uses one `<input type="range">`;
51
+ * a two-element `value` renders two stacked inputs (each thumb independently grabbable via
52
+ * pointer-events on the thumb only). Marks, vertical orientation, `classes`/`slotProps` slots and
53
+ * `onChange`/`onChangeCommitted` are preserved (DEC-003).
54
+ *
55
+ * ponytail: exact-pixel parity with MUI's thumb travel/animation is a known ceiling — Chromatic in
56
+ * CI is the visual gate. Upgrade path: tune the 8px thumb inset if a diff shows misalignment.
57
+ * TASK-204.
58
+ */
59
+ export declare const StyledSlider: ({ dataTest, min, max, step, value, defaultValue, disabled, size, orientation, marks, name, className, classes, slotProps, error, errorText, helperText, onChange, onChangeCommitted, }: StyledSliderProps) => JSX.Element;
60
+ export {};
@@ -1,5 +1,4 @@
1
- import { default as React } from 'react';
2
- import { Switch } from '@base-ui/react/switch';
1
+ import { default as React, ButtonHTMLAttributes } from 'react';
3
2
  type StyledSwitchProps = {
4
3
  checked?: boolean;
5
4
  defaultChecked?: boolean;
@@ -9,7 +8,24 @@ type StyledSwitchProps = {
9
8
  required?: boolean;
10
9
  id?: string;
11
10
  dataTest?: string;
12
- } & Omit<React.ComponentProps<typeof Switch.Root>, 'children'>;
11
+ className?: string;
12
+ } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'type'>;
13
13
  export type SwitchProps = StyledSwitchProps;
14
- export declare const StyledSwitch: React.ForwardRefExoticComponent<Omit<StyledSwitchProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
14
+ /**
15
+ * Native `<button role="switch">` toggle (replaces `@base-ui/react`). Drives the SCSS module's
16
+ * `data-checked`/`data-unchecked`/`data-disabled` selectors from React; the visual track/thumb stay
17
+ * in SCSS (transitions/pseudo-elements — GUD-003). Public props + `onChange(event, checked)`
18
+ * unchanged. TASK-201.
19
+ */
20
+ export declare const StyledSwitch: React.ForwardRefExoticComponent<{
21
+ checked?: boolean;
22
+ defaultChecked?: boolean;
23
+ onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean) => void;
24
+ disabled?: boolean;
25
+ readOnly?: boolean;
26
+ required?: boolean;
27
+ id?: string;
28
+ dataTest?: string;
29
+ className?: string;
30
+ } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onChange" | "type"> & React.RefAttributes<HTMLButtonElement>>;
15
31
  export {};
@@ -0,0 +1,14 @@
1
+ import { FieldSize } from '../inputs/field-styles';
2
+ export interface FormControlContextValue {
3
+ focused: boolean;
4
+ filled: boolean;
5
+ error: boolean;
6
+ disabled: boolean;
7
+ required: boolean;
8
+ size: FieldSize;
9
+ labelId?: string;
10
+ setFocused: (value: boolean) => void;
11
+ setFilled: (value: boolean) => void;
12
+ }
13
+ export declare const FormControlContext: import('node_modules/@types/react').Context<FormControlContextValue | null>;
14
+ export declare const useFormControlContext: () => FormControlContextValue | null;
@@ -1,2 +1,22 @@
1
- import { FormControlProps } from '@mui/material';
2
- export declare const StyledFormControl: (props: FormControlProps) => JSX.Element;
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { FieldSize } from '../inputs/field-styles';
3
+ export interface FormControlProps {
4
+ children?: ReactNode;
5
+ error?: boolean;
6
+ disabled?: boolean;
7
+ required?: boolean;
8
+ size?: FieldSize;
9
+ fullWidth?: boolean;
10
+ /** Accepted for API parity; the design always renders outlined. */
11
+ variant?: string;
12
+ className?: string;
13
+ style?: CSSProperties;
14
+ sx?: unknown;
15
+ id?: string;
16
+ }
17
+ /**
18
+ * Form-field context provider + positioned container (replaces MUI `FormControl`). Tracks
19
+ * focus/filled state so `StyledInputLabel` can float and `StyledFormHelperText` can colour itself;
20
+ * `StyledSelect` reports its state into this context. Public props preserved (DEC-003). TASK-401.
21
+ */
22
+ export declare const StyledFormControl: ({ children, error, disabled, required, size, fullWidth, className, style, sx, id, }: FormControlProps) => JSX.Element;
@@ -1,2 +1,21 @@
1
- import { FormControlLabelProps } from '@mui/material';
2
- export declare const StyledFormControlLabel: ({ sx, ...props }: FormControlLabelProps) => JSX.Element;
1
+ import { ChangeEvent, ReactElement, ReactNode } from 'react';
2
+ export type LabelPlacement = 'end' | 'start' | 'top' | 'bottom';
3
+ export interface FormControlLabelProps {
4
+ /** The control element (a checkbox, radio, or switch). Receives `checked`/`onChange`/`disabled`/`name`/`value` unless already set. */
5
+ control: ReactElement;
6
+ label?: ReactNode;
7
+ checked?: boolean;
8
+ disabled?: boolean;
9
+ name?: string;
10
+ value?: unknown;
11
+ labelPlacement?: LabelPlacement;
12
+ className?: string;
13
+ sx?: unknown;
14
+ onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
15
+ }
16
+ /**
17
+ * Native replacement for MUI `FormControlLabel` — a `<label>` that pairs a form control with a
18
+ * text label and forwards `checked`/`onChange`/`disabled`/`name`/`value` into the control (MUI's
19
+ * clone behavior). Public props preserved (DEC-003). TASK-203.
20
+ */
21
+ export declare const StyledFormControlLabel: ({ control, label, checked, disabled, name, value, labelPlacement, className, sx, onChange, }: FormControlLabelProps) => JSX.Element;
@@ -1,2 +1,11 @@
1
- import { FormGroupProps } from '@mui/material';
2
- export declare const StyledFormGroup: React.FC<FormGroupProps>;
1
+ import { HTMLAttributes } from 'react';
2
+ interface FormGroupProps extends HTMLAttributes<HTMLDivElement> {
3
+ row?: boolean;
4
+ sx?: unknown;
5
+ classes?: Record<string, string>;
6
+ }
7
+ /**
8
+ * MUI-free `FormGroup`: a flex container, column by default or `row`. TASK-101.
9
+ */
10
+ export declare const StyledFormGroup: ({ row, className, sx, style, children, classes: _classes, ...rest }: FormGroupProps) => JSX.Element;
11
+ export {};
@@ -1,2 +1,12 @@
1
- import { FormHelperTextProps } from '@mui/material';
2
- export declare const StyledFormHelperText: (props: FormHelperTextProps) => JSX.Element;
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface FormHelperTextProps extends Omit<HTMLAttributes<HTMLParagraphElement>, 'children'> {
3
+ children?: ReactNode;
4
+ error?: boolean;
5
+ disabled?: boolean;
6
+ }
7
+ /**
8
+ * Helper/validation text under a field (replaces MUI `FormHelperText`). Inherits `error`/`disabled`
9
+ * from a surrounding `StyledFormControl` when present, else from props. Public props preserved
10
+ * (DEC-003). TASK-401.
11
+ */
12
+ export declare const StyledFormHelperText: ({ children, error, disabled, className, ...rest }: FormHelperTextProps) => JSX.Element;
@@ -1,2 +1,20 @@
1
- import { InputLabelProps } from '@mui/material';
2
- export declare const StyledInputLabel: (props: InputLabelProps) => JSX.Element;
1
+ import { ReactNode } from 'react';
2
+ import { FieldSize } from '../inputs/field-styles';
3
+ export interface InputLabelProps {
4
+ children?: ReactNode;
5
+ htmlFor?: string;
6
+ id?: string;
7
+ required?: boolean;
8
+ disabled?: boolean;
9
+ error?: boolean;
10
+ size?: FieldSize;
11
+ /** Force the shrunk (floated) state; otherwise derived from the surrounding FormControl. */
12
+ shrink?: boolean;
13
+ className?: string;
14
+ }
15
+ /**
16
+ * Floating field label (replaces MUI `InputLabel`). Reads focus/filled/error/size from the
17
+ * surrounding `StyledFormControl`; `shrink` lifts it onto the border. Public props preserved
18
+ * (DEC-003). TASK-401.
19
+ */
20
+ export declare const StyledInputLabel: ({ children, htmlFor, id, required, disabled, error, size, shrink, className, }: InputLabelProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { AvatarProps } from './types';
2
+ /**
3
+ * MUI-free `Avatar`: 40×40 flex box showing an image (`src`) or fallback children/initials on a
4
+ * grey background. Reproduces MUI default metrics + `variant`. TASK-102.
5
+ */
6
+ export declare const Avatar: ({ src, srcSet, alt, variant, sizes, className, sx, style, children, classes: _classes, component: _component, ...rest }: AvatarProps) => JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { ReactElement } from 'react';
2
+ type MouseEventName = 'onClick' | 'onMouseDown' | 'onMouseUp';
3
+ type TouchEventName = 'onTouchStart' | 'onTouchEnd';
4
+ export interface ClickAwayListenerProps {
5
+ children: ReactElement;
6
+ onClickAway: (event: MouseEvent | TouchEvent) => void;
7
+ mouseEvent?: MouseEventName | false;
8
+ touchEvent?: TouchEventName | false;
9
+ disableReactTree?: boolean;
10
+ }
11
+ /**
12
+ * MUI-free `ClickAwayListener`: fires `onClickAway` when a pointer event lands outside the single
13
+ * child element. Matches the MUI API subset this library uses (`onClickAway`, `mouseEvent`,
14
+ * `touchEvent`). The child must forward a ref to its root DOM node.
15
+ *
16
+ * @see asma-modules/_docs/frontend/plans/2026-07-10-19-12-plan-asma-ui-core-mui-removal.md — TASK-102
17
+ */
18
+ export declare const ClickAwayListener: ({ children, onClickAway, mouseEvent, touchEvent, }: ClickAwayListenerProps) => ReactElement;
19
+ export {};
@@ -0,0 +1,6 @@
1
+ import { ContainerProps } from './types';
2
+ /**
3
+ * MUI-free `Container`: full-width, horizontally centred, with default 16px gutters and a
4
+ * breakpoint `maxWidth` (default `lg`). `fixed` is not reproduced (rare). TASK-102.
5
+ */
6
+ export declare const Container: ({ maxWidth, disableGutters, className, sx, style, component, children, fixed: _fixed, ...rest }: ContainerProps) => JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { CSSProperties, ReactElement } from 'react';
2
+ type Timeout = number | {
3
+ enter?: number;
4
+ exit?: number;
5
+ };
6
+ export interface FadeProps {
7
+ in?: boolean;
8
+ timeout?: Timeout;
9
+ appear?: boolean;
10
+ children: ReactElement;
11
+ onEnter?: () => void;
12
+ onExited?: () => void;
13
+ style?: CSSProperties;
14
+ }
15
+ /**
16
+ * Opacity transition (replaces MUI `Fade`). Clones its single child and runs a CSS keyframe on
17
+ * enter/exit, keeping the child mounted through the exit tween before calling `onExited` (so a
18
+ * parent `Popper` can unmount it). Public props preserved (DEC-003). TASK-403.
19
+ */
20
+ export declare const Fade: ({ in: inProp, timeout, children, onExited, style, }: FadeProps) => JSX.Element | null;
21
+ export {};
@@ -0,0 +1,6 @@
1
+ import { FormLabelProps } from './types';
2
+ /**
3
+ * MUI-free `FormLabel`: a `<label>` with MUI's default form-label typography/colour. Distinct from
4
+ * this library's `StyledFormLabel` (data-display); this is the raw MUI passthrough. TASK-102.
5
+ */
6
+ export declare const FormLabel: ({ required, className, sx, style, children, classes: _classes, component: _component, error: _error, focused: _focused, filled: _filled, color: _color, ...rest }: FormLabelProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { PaperProps } from './types';
2
+ /**
3
+ * MUI-free `Paper`: white surface with border-radius and an elevation shadow (default 1) or an
4
+ * outlined border (`variant="outlined"`). Reproduces the MUI default-theme shadow scale (TASK-102).
5
+ */
6
+ export declare const Paper: ({ elevation, square, variant, className, sx, style, component, children, classes: _classes, ...rest }: PaperProps) => JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { Placement } from '@floating-ui/react';
3
+ export interface PopperTransitionProps {
4
+ in: boolean;
5
+ onExited: () => void;
6
+ }
7
+ type PopperChildren = ReactNode | ((props: {
8
+ TransitionProps: PopperTransitionProps;
9
+ placement: Placement;
10
+ }) => ReactNode);
11
+ export interface PopperProps {
12
+ open?: boolean;
13
+ anchorEl?: Element | null;
14
+ id?: string;
15
+ placement?: Placement;
16
+ transition?: boolean;
17
+ disablePortal?: boolean;
18
+ className?: string;
19
+ style?: CSSProperties;
20
+ children?: PopperChildren;
21
+ }
22
+ /**
23
+ * Positioning primitive (replaces MUI `Popper`) built on `@floating-ui/react`. Positions its
24
+ * content against `anchorEl`; with `transition`, renders children as a function receiving
25
+ * `TransitionProps` (`in`/`onExited`) so a child `Fade` can animate and unmount. Public props
26
+ * preserved (DEC-003). TASK-403.
27
+ */
28
+ export declare const Popper: ({ open, anchorEl, id, placement, transition, disablePortal, className, style, children, }: PopperProps) => JSX.Element | null;
29
+ export {};
@@ -0,0 +1,7 @@
1
+ import { SkeletonProps } from './types';
2
+ /**
3
+ * MUI-free `Skeleton`: grey placeholder with the pulse animation (default). Reproduces MUI's
4
+ * variants (`text`/`circular`/`rectangular`/`rounded`), `width`/`height`, and background. `wave`
5
+ * animation degrades to `pulse` (Tailwind-first). TASK-102.
6
+ */
7
+ export declare const Skeleton: ({ variant, width, height, animation, className, sx, style, children, classes: _classes, component: _component, ...rest }: SkeletonProps) => JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { StackProps } from './types';
2
+ /**
3
+ * MUI-free `Stack`: a flex container with `direction` and `spacing` (× 8px gap) and optional
4
+ * `divider` between children. Scalar direction/spacing only — responsive breakpoint objects are not
5
+ * reproduced (rare on this library's usage). TASK-102.
6
+ */
7
+ export declare const Stack: ({ direction, spacing, divider, className, sx, style, component, children, useFlexGap: _useFlexGap, ...rest }: StackProps) => JSX.Element;
@@ -0,0 +1,9 @@
1
+ export { ClickAwayListener } from './ClickAwayListener';
2
+ export { Paper } from './Paper';
3
+ export { Stack } from './Stack';
4
+ export { Container } from './Container';
5
+ export { Avatar } from './Avatar';
6
+ export { Skeleton } from './Skeleton';
7
+ export { FormLabel } from './FormLabel';
8
+ export { Fade } from './Fade';
9
+ export { Popper } from './Popper';
@@ -0,0 +1,46 @@
1
+ import { ElementType, HTMLAttributes, ReactNode } from 'react';
2
+ interface BaseShimProps extends HTMLAttributes<HTMLElement> {
3
+ sx?: unknown;
4
+ component?: ElementType;
5
+ classes?: Record<string, string>;
6
+ }
7
+ export interface PaperProps extends BaseShimProps {
8
+ elevation?: number;
9
+ square?: boolean;
10
+ variant?: 'elevation' | 'outlined';
11
+ }
12
+ export interface StackProps extends BaseShimProps {
13
+ direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
14
+ spacing?: number | string;
15
+ divider?: ReactNode;
16
+ useFlexGap?: boolean;
17
+ }
18
+ export interface AvatarProps extends BaseShimProps {
19
+ src?: string;
20
+ srcSet?: string;
21
+ alt?: string;
22
+ sizes?: string;
23
+ variant?: 'circular' | 'rounded' | 'square';
24
+ }
25
+ export interface SkeletonProps extends BaseShimProps {
26
+ variant?: 'text' | 'rectangular' | 'rounded' | 'circular';
27
+ width?: number | string;
28
+ height?: number | string;
29
+ animation?: 'pulse' | 'wave' | false;
30
+ }
31
+ export interface ContainerProps extends BaseShimProps {
32
+ maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;
33
+ disableGutters?: boolean;
34
+ fixed?: boolean;
35
+ }
36
+ export interface FormLabelProps extends HTMLAttributes<HTMLLabelElement> {
37
+ sx?: unknown;
38
+ component?: ElementType;
39
+ classes?: Record<string, string>;
40
+ required?: boolean;
41
+ error?: boolean;
42
+ focused?: boolean;
43
+ filled?: boolean;
44
+ color?: string;
45
+ }
46
+ export {};
@@ -1,3 +1,22 @@
1
- import { DrawerProps } from '@mui/material';
2
- import { FC } from 'react';
1
+ import { FC, ReactNode } from 'react';
2
+ export type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';
3
+ export type DrawerCloseReason = 'backdropClick' | 'escapeKeyDown';
4
+ export interface DrawerProps {
5
+ open?: boolean;
6
+ onClose?: (event: Event | React.SyntheticEvent, reason: DrawerCloseReason) => void;
7
+ anchor?: DrawerAnchor;
8
+ variant?: 'temporary' | 'persistent' | 'permanent';
9
+ hideBackdrop?: boolean;
10
+ className?: string;
11
+ sx?: unknown;
12
+ PaperProps?: {
13
+ className?: string;
14
+ sx?: unknown;
15
+ };
16
+ children?: ReactNode;
17
+ }
18
+ /**
19
+ * Sliding edge panel (replaces MUI `Drawer`). Portalled, slides from `anchor`, temporary variant
20
+ * shows a backdrop and closes on backdrop-click / Escape. Public props preserved (DEC-003). TASK-304.
21
+ */
3
22
  export declare const StyledDrawer: FC<DrawerProps>;