asma-ui-core 3.34.0 → 3.36.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 (198) 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 +7 -7
  51. package/dist/components/navigation/menu/StyledMenu.js +28 -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 +44 -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/index.js +183 -175
  81. package/dist/src/api-surface.test.d.ts +1 -0
  82. package/dist/src/components/data-display/badge/StyledBadge.d.ts +26 -2
  83. package/dist/src/components/data-display/chip/StyledChip.d.ts +39 -5
  84. package/dist/src/components/data-display/interactive-chip/StyledInteractiveChip.d.ts +11 -4
  85. package/dist/src/components/data-display/tooltip/StyledTooltip.d.ts +36 -2
  86. package/dist/src/components/data-display/typography/StyledTypography.d.ts +19 -1
  87. package/dist/src/components/feedback/dialog/StyledDialog.d.ts +50 -4
  88. package/dist/src/components/feedback/dialog/StyledDialogActions.d.ts +12 -2
  89. package/dist/src/components/feedback/dialog/StyledDialogContent.d.ts +12 -2
  90. package/dist/src/components/feedback/dialog/StyledDialogTitle.d.ts +10 -2
  91. package/dist/src/components/feedback/snack-bar/SnackbarProvider.d.ts +1 -1
  92. package/dist/src/components/feedback/snack-bar/StyledAlert.d.ts +24 -2
  93. package/dist/src/components/feedback/snack-bar/StyledAlertSnackbar.d.ts +1 -1
  94. package/dist/src/components/feedback/snack-bar/StyledSnackbar.d.ts +21 -2
  95. package/dist/src/components/feedback/snack-bar/components/StyledDefaultSnackbar.d.ts +1 -1
  96. package/dist/src/components/feedback/snack-bar/components/StyledInfoSnackbar.d.ts +1 -1
  97. package/dist/src/components/feedback/snack-bar/components/types.d.ts +1 -1
  98. package/dist/src/components/inputs/checkbox/base-ui/StyledCheckbox.d.ts +9 -4
  99. package/dist/src/components/inputs/dynamic-select/types.d.ts +2 -2
  100. package/dist/src/components/inputs/field-styles.d.ts +22 -0
  101. package/dist/src/components/inputs/input-field/StyledInputField.d.ts +67 -11
  102. package/dist/src/components/inputs/input-field/index.d.ts +1 -1
  103. package/dist/src/components/inputs/radio-button/base-ui/RadioGroupContext.d.ts +10 -0
  104. package/dist/src/components/inputs/radio-button/base-ui/StyledRadio.d.ts +20 -5
  105. package/dist/src/components/inputs/radio-button/base-ui/StyledRadioGroup.d.ts +24 -7
  106. package/dist/src/components/inputs/select/StyledSelect.d.ts +39 -16
  107. package/dist/src/components/inputs/select/StyledSelectItem.d.ts +14 -2
  108. package/dist/src/components/inputs/select/index.d.ts +0 -1
  109. package/dist/src/components/inputs/select-autocomplete/StyledSelectAutocomplete.d.ts +88 -17
  110. package/dist/src/components/inputs/slider/StyledSlider.d.ts +55 -3
  111. package/dist/src/components/inputs/switch/base-ui/StyledSwitch.d.ts +20 -4
  112. package/dist/src/components/miscellaneous/FormControlContext.d.ts +14 -0
  113. package/dist/src/components/miscellaneous/StyledFormControl.d.ts +22 -2
  114. package/dist/src/components/miscellaneous/StyledFormControlLabel.d.ts +21 -2
  115. package/dist/src/components/miscellaneous/StyledFormGroup.d.ts +11 -2
  116. package/dist/src/components/miscellaneous/StyledFormHelperText.d.ts +12 -2
  117. package/dist/src/components/miscellaneous/StyledInputLabel.d.ts +20 -2
  118. package/dist/src/components/mui-compat/Avatar.d.ts +6 -0
  119. package/dist/src/components/mui-compat/ClickAwayListener.d.ts +19 -0
  120. package/dist/src/components/mui-compat/Container.d.ts +6 -0
  121. package/dist/src/components/mui-compat/Fade.d.ts +21 -0
  122. package/dist/src/components/mui-compat/FormLabel.d.ts +6 -0
  123. package/dist/src/components/mui-compat/Paper.d.ts +6 -0
  124. package/dist/src/components/mui-compat/Popper.d.ts +29 -0
  125. package/dist/src/components/mui-compat/Skeleton.d.ts +7 -0
  126. package/dist/src/components/mui-compat/Stack.d.ts +7 -0
  127. package/dist/src/components/mui-compat/index.d.ts +9 -0
  128. package/dist/src/components/mui-compat/types.d.ts +46 -0
  129. package/dist/src/components/navigation/drawer/StyledDrawer.d.ts +28 -2
  130. package/dist/src/components/navigation/menu/StyledMenu.d.ts +33 -2
  131. package/dist/src/components/navigation/menu/StyledMenuItem.d.ts +23 -2
  132. package/dist/src/components/navigation/menu/StyledMenuList.d.ts +16 -2
  133. package/dist/src/components/navigation/menu/index.d.ts +0 -1
  134. package/dist/src/components/navigation/tabs/StyledTab.d.ts +17 -3
  135. package/dist/src/components/navigation/tabs/StyledTabs.d.ts +16 -7
  136. package/dist/src/components/navigation/tabs/TabsContext.d.ts +11 -0
  137. package/dist/src/components/utils/accordion/base-ui/AccordionContext.d.ts +10 -0
  138. package/dist/src/components/utils/accordion/base-ui/StyledAccordion.d.ts +9 -3
  139. package/dist/src/components/utils/accordion/base-ui/StyledAccordionDetails.d.ts +5 -0
  140. package/dist/src/components/utils/accordion/base-ui/StyledAccordionSummary.d.ts +8 -4
  141. package/dist/src/components/utils/copy-wrapper/CopyWrapper.d.ts +1 -1
  142. package/dist/src/components/utils/filter-menu/StyledFilterMenu.d.ts +2 -2
  143. package/dist/src/components/utils/popover/StyledPopover.d.ts +32 -2
  144. package/dist/src/datetime/components/date-picker/components/StyledCalendarPicker.d.ts +1 -1
  145. package/dist/src/datetime/components/date-picker/components/StyledDayPicker.d.ts +1 -1
  146. package/dist/src/datetime/components/date-picker/hooks/useDatePickerMask.d.ts +1 -2
  147. package/dist/src/datetime/components/time-picker/TimePickerInput.d.ts +1 -1
  148. package/dist/src/datetime/components/time-picker/TimePickerPopper.d.ts +1 -1
  149. package/dist/src/datetime/components/time-picker/types.d.ts +1 -2
  150. package/dist/src/datetime/shared-components/StyledFormControl.d.ts +1 -2
  151. package/dist/src/datetime/shared-components/StyledInputField.d.ts +1 -12
  152. package/dist/src/datetime/shared-components/StyledSelect.d.ts +1 -16
  153. package/dist/src/datetime/shared-components/StyledSelectItem.d.ts +1 -2
  154. package/dist/src/datetime/shared-components/StyledTooltip.d.ts +1 -2
  155. package/dist/src/helpers/arrays.d.ts +2 -0
  156. package/dist/src/helpers/arrays.test.d.ts +1 -0
  157. package/dist/src/helpers/inputMask.d.ts +29 -0
  158. package/dist/src/helpers/inputMask.test.d.ts +1 -0
  159. package/dist/src/helpers/sx.d.ts +2 -0
  160. package/dist/src/helpers/sx.test.d.ts +1 -0
  161. package/dist/src/index.d.ts +1 -1
  162. package/dist/src/table/shared-components/StyledCheckbox.d.ts +7 -4
  163. package/dist/src/table/shared-components/StyledMenuItem.d.ts +18 -2
  164. package/dist/src/table/shared-components/menu-item/index.d.ts +13 -2
  165. package/dist/src/table/shared-components/tooltip/index.d.ts +5 -1
  166. package/dist/src/table/types.d.ts +1 -1
  167. package/dist/table/components/Fetching.js +4 -4
  168. package/dist/table/components/TableRow.js +7 -7
  169. package/dist/table/components/TableSkeleton.js +6 -6
  170. package/dist/table/components/columns/action-column/components/HeaderActionMenu.js +24 -24
  171. package/dist/table/components/columns/action-column/components/RowActionMenu.js +26 -25
  172. package/dist/table/components/table-footer/TablePagination.js +27 -24
  173. package/dist/table/components/table-footer/TableRowCountSelect.js +30 -27
  174. package/dist/table/helpers/cn.js +4 -5
  175. package/dist/table/shared-components/StyledCheckbox.js +54 -55
  176. package/dist/table/shared-components/StyledCheckbox.module.js +10 -10
  177. package/dist/table/shared-components/StyledMenuItem.js +12 -18
  178. package/dist/table/shared-components/menu-item/index.js +13 -17
  179. package/dist/table/shared-components/tooltip/index.js +4 -23
  180. package/package.json +9 -16
  181. package/dist/components/feedback/dialog/StyledDialogActions.module.js +0 -8
  182. package/dist/components/feedback/dialog/StyledDialogContent.module.js +0 -4
  183. package/dist/components/feedback/dialog/StyledDialogTitle.module.js +0 -4
  184. package/dist/components/inputs/checkbox/StyledCheckbox.js +0 -20
  185. package/dist/components/inputs/radio-button/StyledRadio.js +0 -17
  186. package/dist/datetime/shared-components/ExpandIcon.js +0 -18
  187. package/dist/datetime/shared-components/StyledFormControl.js +0 -23
  188. package/dist/datetime/shared-components/StyledInputField.js +0 -47
  189. package/dist/datetime/shared-components/StyledSelect.js +0 -47
  190. package/dist/datetime/shared-components/StyledSelectItem.js +0 -13
  191. package/dist/datetime/shared-components/StyledTooltip.js +0 -32
  192. package/dist/src/components/inputs/checkbox/StyledCheckbox.d.ts +0 -4
  193. package/dist/src/components/inputs/radio-button/StyledRadio.d.ts +0 -4
  194. package/dist/src/components/inputs/radio-button/StyledRadioGroup.d.ts +0 -4
  195. package/dist/src/components/inputs/switch/StyledSwitch.d.ts +0 -5
  196. package/dist/src/components/utils/accordion/StyledAccordion.d.ts +0 -2
  197. package/dist/src/components/utils/accordion/StyledAccordionDetails.d.ts +0 -2
  198. package/dist/src/components/utils/accordion/StyledAccordionSummary.d.ts +0 -8
@@ -1,2 +1,20 @@
1
- import { TypographyProps } from '@mui/material';
1
+ import { CSSProperties, ElementType, HTMLAttributes, ReactNode } from 'react';
2
+ export interface TypographyProps extends Omit<HTMLAttributes<HTMLElement>, 'color'> {
3
+ variant?: string;
4
+ variantMapping?: Record<string, string>;
5
+ align?: CSSProperties['textAlign'];
6
+ noWrap?: boolean;
7
+ gutterBottom?: boolean;
8
+ color?: string;
9
+ component?: ElementType;
10
+ sx?: unknown;
11
+ classes?: Record<string, string>;
12
+ children?: ReactNode;
13
+ }
14
+ /**
15
+ * Native, MUI-free reimplementation of the previous `Typography` passthrough. Reproduces MUI v9's
16
+ * default typography scale via Tailwind utilities, the variant→element mapping, and the
17
+ * `align`/`noWrap`/`gutterBottom`/`color` props. `sx` is honoured via `resolveSx` (DEC-007).
18
+ * Signature unchanged: still accepts `TypographyProps` (DEC-003).
19
+ */
2
20
  export declare const StyledTypography: (props: TypographyProps) => JSX.Element;
@@ -1,11 +1,57 @@
1
- import { DialogProps } from '@mui/material/Dialog';
2
- import { ReactNode } from 'react';
3
- export interface IStyledDialogProps extends DialogProps {
1
+ import { CSSProperties, ReactNode, SyntheticEvent } from 'react';
2
+ export type DialogCloseReason = 'escapeKeyDown' | 'backdropClick';
3
+ export type DialogMaxWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;
4
+ interface DialogPaperProps {
5
+ className?: string;
6
+ sx?: unknown;
7
+ ref?: React.Ref<HTMLDialogElement>;
8
+ }
9
+ export interface IStyledDialogProps {
10
+ open: boolean;
11
+ onClose?: (event: SyntheticEvent | Event, reason: DialogCloseReason) => void;
12
+ children?: ReactNode;
13
+ dataTest: string;
14
+ maxWidth?: DialogMaxWidth;
15
+ fullWidth?: boolean;
16
+ fullScreen?: boolean;
17
+ scroll?: 'paper' | 'body';
18
+ disableEscapeKeyDown?: boolean;
19
+ /**
20
+ * Accepted for MUI `Dialog` parity (DEC-003). Focus is trapped by the native `<dialog>`
21
+ * `showModal()`, so this MUI `Modal` prop is a typed no-op.
22
+ */
23
+ disableEnforceFocus?: boolean;
24
+ className?: string;
25
+ style?: CSSProperties;
26
+ sx?: unknown;
27
+ /**
28
+ * MUI `Dialog` `classes` parity (DEC-003). The native `<dialog>` is the paper, so `classes.paper`
29
+ * is merged onto it; `classes.root` is accepted as a typed no-op (no separate root element).
30
+ */
31
+ classes?: {
32
+ paper?: string;
33
+ root?: string;
34
+ };
35
+ PaperProps?: DialogPaperProps;
36
+ slotProps?: {
37
+ paper?: DialogPaperProps;
38
+ backdrop?: Record<string, unknown>;
39
+ };
4
40
  onCloseText?: ReactNode;
5
41
  showCloseIcon?: boolean;
6
- dataTest: string;
7
42
  dialogLabel?: ReactNode;
8
43
  dialogTitle?: ReactNode;
9
44
  dialogHeaderNode?: ReactNode;
10
45
  }
46
+ /**
47
+ * Modal dialog built on the native `<dialog>` element (replaces MUI `Dialog`) — backdrop, focus
48
+ * trap and ESC handling come from `showModal()` for free. The `<dialog>` element is the "paper",
49
+ * so `PaperProps`/`slotProps.paper` and `className` style it directly; `::backdrop` is the overlay.
50
+ * Public props preserved (DEC-003). TASK-205.
51
+ *
52
+ * ponytail: open/close is instant (no MUI fade) and body-scroll behind the modal isn't locked —
53
+ * both known ceilings; Chromatic in CI is the visual gate. Upgrade path: add `@starting-style`
54
+ * transitions and a scroll-lock effect if a diff calls for it.
55
+ */
11
56
  export declare const StyledDialog: React.FC<IStyledDialogProps>;
57
+ export {};
@@ -1,2 +1,12 @@
1
- import { DialogActionsProps } from '@mui/material';
2
- export declare const StyledDialogActions: (props: DialogActionsProps) => JSX.Element;
1
+ import { HTMLAttributes } from 'react';
2
+ interface DialogActionsProps extends HTMLAttributes<HTMLDivElement> {
3
+ sx?: unknown;
4
+ classes?: Record<string, string>;
5
+ disableSpacing?: boolean;
6
+ }
7
+ /**
8
+ * MUI-free dialog actions: a right-aligned flex row of buttons; on mobile each button wrapper
9
+ * stretches full width (was a SCSS media query, now Tailwind `max-md:` arbitrary variant). TASK-101.
10
+ */
11
+ export declare const StyledDialogActions: ({ children, className, sx, style, classes: _classes, disableSpacing: _disableSpacing, ...rest }: DialogActionsProps) => JSX.Element;
12
+ export {};
@@ -1,2 +1,12 @@
1
- import { DialogContentProps } from '@mui/material';
2
- export declare const StyledDialogContent: ({ children, classes, className, ...rest }: DialogContentProps) => JSX.Element;
1
+ import { HTMLAttributes } from 'react';
2
+ interface DialogContentProps extends HTMLAttributes<HTMLDivElement> {
3
+ sx?: unknown;
4
+ classes?: Record<string, string>;
5
+ dividers?: boolean;
6
+ }
7
+ /**
8
+ * MUI-free dialog content: a scrollable `<div>` with the previous SCSS metrics as Tailwind,
9
+ * plus MUI's optional `dividers` borders. TASK-101.
10
+ */
11
+ export declare const StyledDialogContent: ({ children, className, sx, style, dividers, classes: _classes, ...rest }: DialogContentProps) => JSX.Element;
12
+ export {};
@@ -1,2 +1,10 @@
1
- import { DialogTitleProps } from '@mui/material/DialogTitle';
2
- export declare const StyledDialogTitle: ({ children, ...rest }: DialogTitleProps) => JSX.Element | null;
1
+ import { HTMLAttributes } from 'react';
2
+ interface DialogTitleProps extends HTMLAttributes<HTMLHeadingElement> {
3
+ sx?: unknown;
4
+ classes?: Record<string, string>;
5
+ }
6
+ /**
7
+ * MUI-free dialog title: a semantic `<h2>` with the previous SCSS metrics as Tailwind. TASK-101.
8
+ */
9
+ export declare const StyledDialogTitle: ({ children, className, sx, style, classes: _classes, ...rest }: DialogTitleProps) => JSX.Element | null;
10
+ export {};
@@ -1,4 +1,4 @@
1
- import { AlertColor } from '@mui/material';
1
+ import { AlertColor } from './StyledAlert';
2
2
  import { SnackbarProviderProps } from 'notistack';
3
3
  export declare const SnackbarProvider: (props: SnackbarProviderProps) => JSX.Element;
4
4
  declare module 'notistack' {
@@ -1,2 +1,24 @@
1
- import { AlertProps } from '@mui/material';
2
- export declare const StyledAlert: (props: AlertProps) => JSX.Element;
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ export type AlertColor = 'success' | 'info' | 'warning' | 'error';
3
+ export type AlertVariant = 'standard' | 'filled' | 'outlined';
4
+ export interface AlertProps {
5
+ severity?: AlertColor;
6
+ variant?: AlertVariant;
7
+ icon?: ReactNode | false;
8
+ iconMapping?: Partial<Record<AlertColor, ReactNode>>;
9
+ action?: ReactNode;
10
+ onClose?: (event: MouseEvent<HTMLButtonElement>) => void;
11
+ children?: ReactNode;
12
+ className?: string;
13
+ sx?: unknown;
14
+ role?: string;
15
+ }
16
+ /**
17
+ * Alert banner (replaces MUI `Alert`). Native `role="alert"` with a leading severity icon, message
18
+ * and optional action/close button; `standard`/`filled`/`outlined` variants. Public props preserved
19
+ * (DEC-003). TASK-402.
20
+ *
21
+ * ponytail: severity uses the semantic `success`/`info`/`warning`/`error` token families —
22
+ * Chromatic in CI is the visual gate for exact shades.
23
+ */
24
+ export declare const StyledAlert: ({ severity, variant, icon, iconMapping, action, onClose, children, className, sx, role, }: AlertProps) => JSX.Element;
@@ -1,4 +1,4 @@
1
- import { AlertColor } from '@mui/material';
1
+ import { AlertColor } from './StyledAlert';
2
2
  import { CustomContentProps } from 'notistack';
3
3
  interface StyledAlertSnackbarProps extends CustomContentProps {
4
4
  severity?: AlertColor;
@@ -1,2 +1,21 @@
1
- import { SnackbarProps } from '@mui/material';
2
- export declare const StyledSnackbar: ({ children, ...props }: SnackbarProps) => JSX.Element;
1
+ import { ReactNode } from 'react';
2
+ export interface SnackbarOrigin {
3
+ vertical: 'top' | 'bottom';
4
+ horizontal: 'left' | 'center' | 'right';
5
+ }
6
+ export interface SnackbarProps {
7
+ open?: boolean;
8
+ autoHideDuration?: number | null;
9
+ onClose?: (event: Event | null, reason: 'timeout' | 'clickaway') => void;
10
+ anchorOrigin?: SnackbarOrigin;
11
+ message?: ReactNode;
12
+ action?: ReactNode;
13
+ children?: ReactNode;
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Positioned auto-hiding toast (replaces MUI `Snackbar`). Portalled, fixed to the `anchorOrigin`
18
+ * corner; auto-hides after `autoHideDuration` (null disables). Public props preserved (DEC-003).
19
+ * TASK-402.
20
+ */
21
+ export declare const StyledSnackbar: ({ open, autoHideDuration, onClose, anchorOrigin, message, action, children, className, }: SnackbarProps) => JSX.Element | null;
@@ -1,4 +1,4 @@
1
- import { AlertColor } from '@mui/material';
1
+ import { AlertColor } from '../StyledAlert';
2
2
  import { CustomContentProps, SnackbarMessage } from 'notistack';
3
3
  export interface StyledDefaultSnackbarProps extends CustomContentProps {
4
4
  severity: AlertColor;
@@ -1,4 +1,4 @@
1
- import { AlertColor } from '@mui/material';
1
+ import { AlertColor } from '../StyledAlert';
2
2
  import { CustomContentProps } from 'notistack';
3
3
  interface StyledInfoSnackbarProps extends CustomContentProps {
4
4
  severity?: AlertColor;
@@ -1,4 +1,4 @@
1
- import { AlertColor } from '@mui/material';
1
+ import { AlertColor } from '../StyledAlert';
2
2
  import { SnackbarProviderProps } from 'notistack';
3
3
  export type MessageProps = SnackbarProviderProps & {
4
4
  severity?: AlertColor;
@@ -1,5 +1,4 @@
1
- import { default as React, SVGProps } from 'react';
2
- import { Checkbox } from '@base-ui/react/checkbox';
1
+ import { default as React, ChangeEvent, SVGProps } from 'react';
3
2
  type StyledCheckboxProps = {
4
3
  dataTest: string;
5
4
  size?: 'small' | 'medium';
@@ -9,9 +8,15 @@ type StyledCheckboxProps = {
9
8
  hideWrapper?: boolean;
10
9
  className?: string;
11
10
  checkboxClassName?: string;
12
- onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean) => void;
13
- } & Omit<React.ComponentProps<typeof Checkbox.Root>, 'children'>;
11
+ onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
12
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'checked' | 'type'>;
14
13
  export declare const IndeterminateIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
15
14
  export declare const CheckIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
15
+ /**
16
+ * Native `<input type="checkbox">` checkbox (replaces `@base-ui/react`). A visually-hidden input
17
+ * carries state + a11y; the visual box, ripple, and indeterminate bar come from the SCSS module
18
+ * (kept: `@keyframes`/pseudo-elements aren't Tailwind-expressible — GUD-003), whose `data-*`
19
+ * selectors are driven from React here. Public props unchanged. TASK-201.
20
+ */
16
21
  export declare const StyledCheckbox: React.FC<StyledCheckboxProps>;
17
22
  export {};
@@ -1,4 +1,4 @@
1
- import { AutocompleteProps } from '@mui/material';
1
+ import { StyledSelectAutocompleteProps } from '../select-autocomplete';
2
2
  import { default as React } from 'react';
3
3
  export type DynamicSelectOptionPrimitive = string | number | boolean;
4
4
  export type DynamicSelectOptionObject = {
@@ -70,7 +70,7 @@ interface DynamicSelectCommonProps<TOption extends DynamicSelectOption> {
70
70
  /** Node prepended inside the autocomplete text input (e.g. a search icon). */
71
71
  startAdornment?: React.ReactNode;
72
72
  /** Escape hatch to pass any MUI `Autocomplete` prop directly. Applied on top of internal defaults in the autocomplete variant. */
73
- autocompleteProps?: Partial<AutocompleteProps<TOption, boolean | undefined, boolean | undefined, boolean | undefined>>;
73
+ autocompleteProps?: Partial<StyledSelectAutocompleteProps<TOption, boolean | undefined, boolean | undefined, boolean | undefined>>;
74
74
  /**
75
75
  * When `true`, renders loading skeletons (chip group) or disables the input (autocomplete)
76
76
  * while data is being fetched.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared outlined-field styling so `StyledInputField`, `StyledInputLabel` (+ `StyledFormControl`)
3
+ * and `StyledSelect` render an identical border + floating label without MUI. TASK-401.
4
+ */
5
+ export type FieldSize = 'small' | 'medium';
6
+ interface FieldState {
7
+ focused?: boolean;
8
+ error?: boolean;
9
+ disabled?: boolean;
10
+ readOnly?: boolean;
11
+ }
12
+ /** The border overlay (an absolutely-positioned sibling so width changes never reflow the input). */
13
+ export declare const outlineClass: ({ focused, error, disabled, readOnly }: FieldState) => string;
14
+ /**
15
+ * The floating label. `shrink` lifts it onto the top border (white background masks the line —
16
+ * the technique the old FormControl `sx` used, so no fieldset/legend notch is needed).
17
+ */
18
+ export declare const floatingLabelClass: ({ shrink, focused, error, disabled, size, }: FieldState & {
19
+ shrink: boolean;
20
+ size?: FieldSize;
21
+ }) => string;
22
+ export {};
@@ -1,14 +1,70 @@
1
- import { TextFieldProps } from '@mui/material';
1
+ import { ChangeEvent, CSSProperties, FocusEvent, HTMLAttributes, ReactNode, Ref, InputHTMLAttributes } from 'react';
2
+ import { FieldSize } from '../field-styles';
3
+ interface InputSlot {
4
+ startAdornment?: ReactNode;
5
+ endAdornment?: ReactNode;
6
+ className?: string;
7
+ style?: CSSProperties;
8
+ ref?: Ref<HTMLInputElement | HTMLDivElement>;
9
+ [key: string]: unknown;
10
+ }
11
+ type HtmlInputSlot = InputHTMLAttributes<HTMLInputElement> & {
12
+ ref?: Ref<HTMLInputElement>;
13
+ };
14
+ export interface StyledInputFieldProps {
15
+ dataTest: string;
16
+ label?: ReactNode;
17
+ value?: string | number;
18
+ defaultValue?: string | number;
19
+ onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
20
+ onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
21
+ onFocus?: (event: FocusEvent<HTMLInputElement>) => void;
22
+ error?: boolean;
23
+ helperText?: ReactNode;
24
+ disabled?: boolean;
25
+ readOnly?: boolean;
26
+ required?: boolean;
27
+ allowClear?: boolean;
28
+ onClear?: () => void;
29
+ type?: string;
30
+ placeholder?: string;
31
+ name?: string;
32
+ id?: string;
33
+ autoComplete?: string;
34
+ autoFocus?: boolean;
35
+ multiline?: boolean;
36
+ rows?: number;
37
+ minRows?: number;
38
+ maxRows?: number;
39
+ size?: FieldSize;
40
+ /** Accepted for API parity; the design always renders outlined. */
41
+ variant?: string;
42
+ fullWidth?: boolean;
43
+ className?: string;
44
+ style?: CSSProperties;
45
+ sx?: unknown;
46
+ inputRef?: Ref<HTMLInputElement | HTMLTextAreaElement>;
47
+ slotProps?: {
48
+ input?: InputSlot;
49
+ htmlInput?: HtmlInputSlot;
50
+ inputLabel?: HTMLAttributes<HTMLLabelElement> & Record<string, unknown>;
51
+ formHelperText?: {
52
+ sx?: unknown;
53
+ className?: string;
54
+ };
55
+ };
56
+ /** Legacy MUI adornment slot (still used by ~22 call sites). */
57
+ InputProps?: InputSlot;
58
+ onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
59
+ }
2
60
  /**
61
+ * Outlined text field with a floating label (replaces MUI `TextField`). Self-contained: manages its
62
+ * own focus/value state to drive the shared field styling ([[field-styles]]); supports multiline,
63
+ * start/end adornments, an optional clear button, and error/helper text. Public props preserved
64
+ * (DEC-003). TASK-401.
3
65
  *
4
- * @inputRef
5
- * inputRef to get Node of Input Element inside
6
- *
7
- * type='mui-input' is temporary, remove it after deleting antd from all projects. Antd lib overwrites styles for type[text]
66
+ * ponytail: `variant` is accepted but always renders outlined, and multiline uses fixed `rows`
67
+ * (no auto-grow to `maxRows`) — known ceilings; Chromatic in CI is the visual gate.
8
68
  */
9
- export declare const StyledInputField: React.FC<TextFieldProps & {
10
- allowClear?: boolean;
11
- onClear?: () => void;
12
- readOnly?: boolean;
13
- dataTest: string;
14
- }>;
69
+ export declare const StyledInputField: ({ dataTest, label, value, defaultValue, onChange, onBlur, onFocus, error, helperText, disabled, readOnly, required, allowClear, onClear, type, placeholder, name, id, autoComplete, autoFocus, multiline, rows, minRows, maxRows: _maxRows, size, fullWidth, className, style, sx, inputRef, slotProps, InputProps, onKeyDown, variant: _variant, }: StyledInputFieldProps) => JSX.Element;
70
+ export {};
@@ -1,2 +1,2 @@
1
1
  export * from './StyledInputField';
2
- export { type TextFieldProps } from '@mui/material';
2
+ export type { StyledInputFieldProps as TextFieldProps } from './StyledInputField';
@@ -0,0 +1,10 @@
1
+ export type RadioValue = string | number | boolean | null;
2
+ export interface RadioGroupContextValue {
3
+ name: string;
4
+ value?: RadioValue;
5
+ disabled?: boolean;
6
+ onSelect: (value: RadioValue) => void;
7
+ }
8
+ /** Shared state for the native radio group (replaces `@base-ui/react`'s RadioGroup context). */
9
+ export declare const RadioGroupContext: import('node_modules/@types/react').Context<RadioGroupContextValue | null>;
10
+ export declare const useRadioGroupContext: () => RadioGroupContextValue | null;
@@ -1,10 +1,25 @@
1
- import { default as React } from 'react';
2
- import { Radio } from '@base-ui/react/radio';
1
+ import { default as React, ChangeEvent, InputHTMLAttributes } from 'react';
2
+ import { RadioValue } from './RadioGroupContext';
3
3
  export type StyledRadioProps = {
4
- value?: string | number | boolean;
4
+ value?: RadioValue;
5
5
  dataTest?: string;
6
6
  className?: string;
7
7
  size?: 'small' | 'medium';
8
8
  error?: boolean;
9
- } & Omit<React.ComponentProps<typeof Radio.Root>, 'value' | 'className'>;
10
- export declare const StyledRadio: React.ForwardRefExoticComponent<Omit<StyledRadioProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
9
+ checked?: boolean;
10
+ onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
11
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'className' | 'size' | 'checked' | 'onChange' | 'type'>;
12
+ /**
13
+ * Native `<input type="radio">` (replaces `@base-ui/react`). Uses the surrounding
14
+ * `StyledRadioGroup` context for name/selection when present, else the standalone `checked` prop.
15
+ * SCSS module (ripple/pseudo-elements — GUD-003) is driven via `data-*` from React. TASK-201.
16
+ */
17
+ export declare const StyledRadio: React.ForwardRefExoticComponent<{
18
+ value?: RadioValue;
19
+ dataTest?: string;
20
+ className?: string;
21
+ size?: "small" | "medium";
22
+ error?: boolean;
23
+ checked?: boolean;
24
+ onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
25
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "className" | "onChange" | "size" | "type" | "checked"> & React.RefAttributes<HTMLInputElement>>;
@@ -1,14 +1,31 @@
1
- import { default as React } from 'react';
2
- import { RadioGroup } from '@base-ui/react/radio-group';
1
+ import { default as React, HTMLAttributes } from 'react';
2
+ import { RadioValue } from './RadioGroupContext';
3
3
  export type StyledRadioGroupProps = {
4
- value?: string | number | boolean | null;
5
- defaultValue?: string | number | boolean | null;
6
- onValueChange?: (value: string | number | boolean | null) => void;
4
+ value?: RadioValue;
5
+ defaultValue?: RadioValue;
6
+ onValueChange?: (value: RadioValue) => void;
7
7
  disabled?: boolean;
8
8
  dataTest?: string;
9
9
  error?: boolean;
10
10
  errorText?: string;
11
11
  helperText?: string;
12
12
  children: React.ReactNode;
13
- } & Omit<React.ComponentProps<typeof RadioGroup>, 'children' | 'defaultValue' | 'value'>;
14
- export declare const StyledRadioGroup: React.ForwardRefExoticComponent<Omit<StyledRadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ name?: string;
14
+ } & Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'>;
15
+ /**
16
+ * Native radio group (replaces `@base-ui/react`): a `role="radiogroup"` container that shares
17
+ * name/selection with its `StyledRadio` children via context, controlled or uncontrolled, plus the
18
+ * error/helper text row. TASK-201.
19
+ */
20
+ export declare const StyledRadioGroup: React.ForwardRefExoticComponent<{
21
+ value?: RadioValue;
22
+ defaultValue?: RadioValue;
23
+ onValueChange?: (value: RadioValue) => void;
24
+ disabled?: boolean;
25
+ dataTest?: string;
26
+ error?: boolean;
27
+ errorText?: string;
28
+ helperText?: string;
29
+ children: React.ReactNode;
30
+ name?: string;
31
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange"> & React.RefAttributes<HTMLDivElement>>;
@@ -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';