@recursica/mui-adapter 0.21.1 → 0.22.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 (65) hide show
  1. package/ARCHITECTURE.md +3 -0
  2. package/CHANGELOG.md +52 -0
  3. package/dist/index.d.ts +90 -35
  4. package/dist/mui-adapter.cjs +68 -68
  5. package/dist/mui-adapter.cjs.map +1 -1
  6. package/dist/mui-adapter.css +1 -1
  7. package/dist/mui-adapter.js +5660 -5582
  8. package/dist/mui-adapter.js.map +1 -1
  9. package/package.json +1 -1
  10. package/src/components/Accordion/ACCORDION_IMPLEMENTATION_NOTES.md +63 -0
  11. package/src/components/Accordion/Accordion.module.css +21 -2
  12. package/src/components/Accordion/Accordion.stories.tsx +38 -0
  13. package/src/components/Accordion/Accordion.tsx +27 -12
  14. package/src/components/AssistiveElement/ASSISTIVEELEMENT_IMPLEMENTATION_NOTES.md +59 -0
  15. package/src/components/AssistiveElement/AssistiveElement.module.css +8 -1
  16. package/src/components/AssistiveElement/AssistiveElement.tsx +17 -7
  17. package/src/components/Autocomplete/Autocomplete.tsx +18 -2
  18. package/src/components/Avatar/AVATAR_IMPLEMENTATION_NOTES.md +36 -0
  19. package/src/components/Avatar/Avatar.tsx +6 -9
  20. package/src/components/Badge/Badge.module.css +0 -12
  21. package/src/components/Badge/Badge.tsx +0 -4
  22. package/src/components/Card/Card.tsx +5 -5
  23. package/src/components/Checkbox/Checkbox.module.css +17 -21
  24. package/src/components/Checkbox/Checkbox.tsx +24 -18
  25. package/src/components/Chip/Chip.module.css +16 -7
  26. package/src/components/Chip/Chip.tsx +1 -1
  27. package/src/components/Flex/Flex.tsx +1 -1
  28. package/src/components/FormControlWrapper/FORMCONTROLWRAPPER_IMPLEMENTATION_NOTES.md +35 -0
  29. package/src/components/FormControlWrapper/FormControlWrapper.tsx +24 -8
  30. package/src/components/Grid/Grid.tsx +1 -1
  31. package/src/components/Group/Group.tsx +1 -1
  32. package/src/components/HoverCard/HoverCard.tsx +1 -1
  33. package/src/components/Label/Label.module.css +15 -2
  34. package/src/components/Label/Label.tsx +7 -6
  35. package/src/components/Menu/Menu.tsx +1 -1
  36. package/src/components/Modal/Modal.tsx +1 -1
  37. package/src/components/NumberInput/NumberInput.tsx +1 -1
  38. package/src/components/Pagination/Pagination.tsx +1 -1
  39. package/src/components/Panel/Panel.tsx +1 -1
  40. package/src/components/Radio/Radio.module.css +33 -38
  41. package/src/components/Radio/Radio.tsx +58 -44
  42. package/src/components/Radio/RadioGroup.tsx +5 -0
  43. package/src/components/SegmentedControl/SegmentedControl.module.css +0 -7
  44. package/src/components/SegmentedControl/SegmentedControl.tsx +4 -8
  45. package/src/components/Slider/Slider.tsx +1 -1
  46. package/src/components/Stack/Stack.tsx +1 -1
  47. package/src/components/Stepper/Stepper.tsx +3 -3
  48. package/src/components/Switch/SWITCH_IMPLEMENTATION_NOTES.md +123 -0
  49. package/src/components/Switch/Switch.module.css +152 -89
  50. package/src/components/Switch/Switch.tsx +140 -33
  51. package/src/components/Switch/SwitchGroup.tsx +37 -9
  52. package/src/components/Table/Table.tsx +1 -1
  53. package/src/components/Tabs/IMPLEMENTATION_NOTES.md +10 -0
  54. package/src/components/Tabs/Tabs.module.css +120 -43
  55. package/src/components/Tabs/Tabs.stories.tsx +5 -2
  56. package/src/components/Tabs/Tabs.tsx +1 -1
  57. package/src/components/Tabs/USAGE.md +27 -11
  58. package/src/components/TextField/TextField.tsx +1 -1
  59. package/src/components/TimePicker/TimePicker.tsx +1 -1
  60. package/src/components/Timeline/Timeline.tsx +1 -1
  61. package/src/components/Timeline/TimelineItem.tsx +2 -2
  62. package/src/components/Toast/Toast.tsx +4 -4
  63. package/src/components/Tooltip/Tooltip.tsx +1 -1
  64. package/src/components/Tree/Tree.tsx +1 -1
  65. package/src/types/mantine.d.ts +0 -7
package/ARCHITECTURE.md CHANGED
@@ -13,3 +13,6 @@ This document describes the high-level architecture and philosophy of the `@recu
13
13
 
14
14
  - Components map closely to Material UI's structure but enforce Recursica design tokens.
15
15
  - We avoid over-styling; components only diverge from MUI defaults when dictated by the Recursica design system.
16
+ - Each component adheres to the underlying UI-kit prop signature so that they can easily replace components in the existing code-base
17
+ - Recursica defines a set of common props that are shared across all framework adapters. These sometimes serve the same purpose as existing UI-kit props. In that case, the Recursica prop takes precedence and are the preferred way to achieve the desired effect.
18
+ - Adapter props are removed from the underlying UI-kit when it leads to behavior that Recursica does not support. Recursica is opinionated about the behavior of its components and does not support all of the behavior of the underlying UI-kit.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @recursica/mui-adapter
2
2
 
3
+ ## 0.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 106bc34: Accordion: closed silent prop-contract conflicts where native `expanded`/`onChange`/`expandIcon`/`icon` could override Recursica's own computed state, made `variant` a real predefined union instead of a bare string, and formally supported a per-item `disabled` prop in both adapters.
8
+ Also documented `children` across all Accordion sub-components in `RecursicaAccordionProps.ts`, including a new `RecursicaAccordionPanelProps` interface for the Panel.
9
+ - 106bc34: AssistiveElement: `assistiveVariant="error"` now defaults `role="alert"` in both adapters so
10
+ error text is announced by assistive tech as it appears or changes (an explicit `role` still
11
+ wins). Also (MUI only) closed a prop-contract conflict where native `error`/`component` could
12
+ silently override Recursica's own computed values, added the missing `RecursicaOverStyled`
13
+ wrapper, and hardened a CSS specificity tie against MUI's own `.Mui-error` color. Documented
14
+ `children` in `RecursicaAssistiveElementProps.ts` and added implementation notes to both adapters.
15
+
16
+ ### Patch Changes
17
+
18
+ - 106bc34: Autocomplete (MUI): fixed four bugs, all traced to `renderInput` discarding MUI's `InputProps` (dropping the `classes.inputRoot` className, the anchor ref, and adornment slots). Restored `InputProps` so the design-system border/padding actually applies instead of MUI's default underline chrome; wired `leftSection`/`rightSection` into `startAdornment`/`endAdornment` (previously destructured but never rendered, so icons never showed); and stopped coercing `error` to a boolean before the wrapper, which was discarding the error message string (ErrorState story showed no assistive text).
19
+ - 106bc34: Avatar (MUI): fixed `variant` being fed into MUI's native shape prop instead of a color treatment, making it a silent no-op. Also documented `children` in the shared prop types and added missing mui-adapter implementation notes.
20
+ - 106bc34: Checkbox (MUI): fixed the checkmark never appearing on click — `checked` was always
21
+ forced onto MUI's native input even for plain uncontrolled usage (no `checked`/only
22
+ `defaultChecked`), pinning it to a value that never updates after the initial render.
23
+ Now only forced when grouped (CheckboxGroup owns state) or the caller explicitly passes
24
+ `checked`, matching the existing `Switch` pattern. Also fixed the label rendering
25
+ vertically offset from the checkbox (`.labelWrapper` needed `display: flex` to blockify
26
+ the native inline `<label>`, mirroring Mantine's own wrapper) and the checkmark icon
27
+ rendering off-center inside the box in both standalone Checkbox and CheckboxGroup
28
+ (`.input` now centers its icon child directly).
29
+ - 106bc34: Disabled Checkbox/Switch's MUI-default click ripple (not present in Mantine) and made their description/error text mutually exclusive (error wins), matching the same fixes just made to Radio.
30
+ - 106bc34: Chip (MUI): fixed three visual bugs vs `mantine-adapter` — extra right padding on short-text chips (duplicate `min-width`/`max-width` applied on both `.root` and `.label`, now only on `.root`), delete/leading icon color and spacing leaking MUI's own default styles (fixed via CSS specificity match on `.leadingIcon`/`.removeIconWrapper`), and a missing icon-text gap on the leading icon (accidental blanket `margin: 0` collapsed it — restored `margin-right` for the gap, matching the selected-state check icon).
31
+ - 106bc34: FormControlWrapper (MUI): fixed ARIA wiring to match the Mantine adapter — a self-generated
32
+ `id` fallback (via `useId`) now fires by default instead of only when a caller supplies their
33
+ own `id`, and help/error text each get their own id (`aria-describedby`/`aria-errormessage`)
34
+ instead of sharing one. Neither attribute is set if the child already has its own explicit
35
+ value.
36
+ - 106bc34: Label (MUI): fixed focused descendant controls (e.g. a grouped Switch/Checkbox) bleeding MUI's default blue into the label text, mirroring the existing `.Mui-error` override with a matching `.Mui-focused` one.
37
+ - 106bc34: Label (MUI): fixed optional text rendering inline next to the label instead of on its own line — `innerLayout` now wraps and `optionalText` is forced onto a full-width row, matching `mantine-adapter`.
38
+ - 106bc34: Audited every component for the "spread after computed props" ordering bug (caller props silently overriding internal className/classes/icon/sx/onChange) and reordered spread-first in ~25 components. See COMPONENT_DEV_GUIDE.md §3.2 (adapter-common) for the rule.
39
+ - 106bc34: Removed leftover literal Mantine references from mui-adapter CSS/types (dead `:global(.mantine-*)` selectors, unused classes wiring, a stray `@mantine/core` type augmentation) and swapped a hardcoded Mantine red for the real error-text token in Radio/Checkbox/Switch.
40
+ - 106bc34: Radio/Checkbox/Switch description and error text now render through the shared `AssistiveElement` component instead of locally styled divs, removing the last hardcoded hex values (Mantine's default dimmed gray) from mui-adapter CSS.
41
+ - 106bc34: Fixed Radio rendering no visible circle (only the label) — `classes` was being read as `classNames` with Mantine-shaped slot names MUI doesn't support, so the circle's styling was silently dropped. Also fixed the label rendering vertically offset from the circle, disabled MUI's default click ripple, made description/error mutually exclusive (error wins), and reordered the props spread so it can no longer silently override the render-critical props placed after it.
42
+ - 106bc34: Fixed RadioGroup selection not updating in mui-adapter — its onChange was typed and wired as MUI's native `(event, value)`, but Mantine's RadioGroup (the cross-adapter source of truth) only ever calls back with `(value)`. Normalized the shared contract and mui-adapter's wiring to single-argument.
43
+ - 106bc34: Switch: attached `SwitchGroup` as the `Switch.Group` compound export (it existed standalone but was never attached), and tightened `RecursicaSwitchGroupProps` value types from `unknown[]` to `string[]`.
44
+ - 106bc34: Switch (MUI): `SwitchGroup` now actually controls its children via a `SwitchGroupContext` (same pattern as `Checkbox`/`CheckboxGroup`) — previously `value`/`defaultValue`/`onChange` were destructured and discarded, so grouped switches never checked or updated.
45
+ - 106bc34: SwitchGroup: fixed `side-by-side` layout always rendering as if stacked — the group was capped to the switch-item label's own 200px max-width, narrower than the mandatory 224px label column, guaranteeing a wrap.
46
+ - 106bc34: Switch (MUI): fixed track/thumb geometry, checked-state color and opacity, thumb icon, disabled-state opacity, the focus ring target/color, and a `classes`/`classNames` prop bug — bringing it to visual parity with `mantine-adapter`.
47
+ - 106bc34: Tabs (MUI): fixed missing `value` on `Tabs` (never read `TabContext`, so no tab was ever selected), the panel rendering beside instead of below the tab list, and dead `.Mui-selected`/`.panel` CSS selectors.
48
+ - Updated dependencies [106bc34]
49
+ - Updated dependencies [106bc34]
50
+ - Updated dependencies [106bc34]
51
+ - Updated dependencies [106bc34]
52
+ - Updated dependencies [106bc34]
53
+ - @recursica/adapter-common@0.15.0
54
+
3
55
  ## 0.21.1
4
56
 
5
57
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { AccordionDetailsProps } from '@mui/material';
2
2
  import { AccordionProps as AccordionProps_2 } from '@mui/material';
3
- import { AccordionSummaryOwnProps } from '@mui/material';
4
3
  import { AccordionSummaryProps } from '@mui/material';
5
4
  import { AlertProps } from '@mui/material';
6
5
  import { AutocompleteProps } from '@mui/material';
@@ -8,7 +7,6 @@ import { AvatarProps as AvatarProps_2 } from '@mui/material';
8
7
  import { BadgeProps as BadgeProps_2 } from '@mui/material';
9
8
  import { BoxProps as BoxProps_2 } from '@mui/material';
10
9
  import { BreadcrumbsProps } from '@mui/material';
11
- import { ButtonBaseOwnProps } from '@mui/material';
12
10
  import { ButtonProps as ButtonProps_2 } from '@mui/material';
13
11
  import { CardOwnProps } from '@mui/material';
14
12
  import { CardProps as CardProps_2 } from '@mui/material';
@@ -85,13 +83,9 @@ declare type AccordionComponent = typeof AccordionBase & {
85
83
 
86
84
  export declare const AccordionControl: typeof rawComponents.AccordionControl;
87
85
 
88
- declare const AccordionControl_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<AccordionSummaryOwnProps & Omit<ButtonBaseOwnProps, "classes"> & CommonProps & Omit<default_2.DetailedHTMLProps<default_2.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "classes" | "style" | "sx" | "tabIndex" | "children" | "disabled" | "slots" | "slotProps" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "expandIcon"> & {
89
- component?: default_2.ElementType | undefined;
90
- } & RecursicaAccordionControlProps>, BlockedStylingKeys> & ForbiddenStyles & {
86
+ declare const AccordionControl_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<AccordionSummaryProps, "expandIcon"> & RecursicaAccordionControlProps>, BlockedStylingKeys> & ForbiddenStyles & {
91
87
  overStyled?: false | undefined;
92
- }, "ref"> | Omit<Omit<AccordionSummaryOwnProps & Omit<ButtonBaseOwnProps, "classes"> & CommonProps & Omit<default_2.DetailedHTMLProps<default_2.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "classes" | "style" | "sx" | "tabIndex" | "children" | "disabled" | "slots" | "slotProps" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "expandIcon"> & {
93
- component?: default_2.ElementType | undefined;
94
- } & RecursicaAccordionControlProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
88
+ }, "ref"> | Omit<Omit<Omit<AccordionSummaryProps, "expandIcon"> & RecursicaAccordionControlProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
95
89
  m?: string | number | RecursicaSpacing;
96
90
  mx?: string | number | RecursicaSpacing;
97
91
  my?: string | number | RecursicaSpacing;
@@ -106,16 +100,16 @@ component?: default_2.ElementType | undefined;
106
100
  overStyled: true;
107
101
  }, "ref">) & default_2.RefAttributes<HTMLDivElement>>;
108
102
 
109
- declare type AccordionControlWrapperProps = RecursicaOverStyled<AccordionSummaryProps & RecursicaAccordionControlProps>;
103
+ declare type AccordionControlWrapperProps = RecursicaOverStyled<Omit<AccordionSummaryProps, "expandIcon"> & RecursicaAccordionControlProps>;
110
104
 
111
105
  export declare const AccordionItem: typeof rawComponents.AccordionItem;
112
106
 
113
- declare const AccordionItem_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<AccordionProps_2, "value" | "children"> & {
107
+ declare const AccordionItem_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<AccordionProps_2, "value" | "children" | "onChange" | "defaultExpanded" | "expanded"> & {
114
108
  children?: default_2.ReactNode;
115
109
  value: string;
116
110
  } & RecursicaAccordionItemProps>, BlockedStylingKeys> & ForbiddenStyles & {
117
111
  overStyled?: false | undefined;
118
- }, "ref"> | Omit<Omit<Omit<AccordionProps_2, "value" | "children"> & {
112
+ }, "ref"> | Omit<Omit<Omit<AccordionProps_2, "value" | "children" | "onChange" | "defaultExpanded" | "expanded"> & {
119
113
  children?: default_2.ReactNode;
120
114
  value: string;
121
115
  } & RecursicaAccordionItemProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
@@ -133,16 +127,16 @@ value: string;
133
127
  overStyled: true;
134
128
  }, "ref">) & default_2.RefAttributes<HTMLDivElement>>;
135
129
 
136
- declare type AccordionItemWrapperProps = RecursicaOverStyled<Omit<AccordionProps_2, "children" | "value"> & {
130
+ declare type AccordionItemWrapperProps = RecursicaOverStyled<Omit<AccordionProps_2, "children" | "value" | "expanded" | "onChange" | "defaultExpanded"> & {
137
131
  children?: default_2.ReactNode;
138
132
  value: string;
139
133
  } & RecursicaAccordionItemProps>;
140
134
 
141
135
  export declare const AccordionPanel: typeof rawComponents.AccordionPanel;
142
136
 
143
- declare const AccordionPanel_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<AccordionDetailsProps>, BlockedStylingKeys> & ForbiddenStyles & {
137
+ declare const AccordionPanel_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<AccordionDetailsProps & RecursicaAccordionPanelProps>, BlockedStylingKeys> & ForbiddenStyles & {
144
138
  overStyled?: false | undefined;
145
- }, "ref"> | Omit<Omit<AccordionDetailsProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
139
+ }, "ref"> | Omit<Omit<AccordionDetailsProps & RecursicaAccordionPanelProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
146
140
  m?: string | number | RecursicaSpacing;
147
141
  mx?: string | number | RecursicaSpacing;
148
142
  my?: string | number | RecursicaSpacing;
@@ -157,17 +151,30 @@ declare const AccordionPanel_2: default_2.ForwardRefExoticComponent<(Omit<Omit<W
157
151
  overStyled: true;
158
152
  }, "ref">) & default_2.RefAttributes<HTMLDivElement>>;
159
153
 
160
- declare type AccordionPanelWrapperProps = RecursicaOverStyled<AccordionDetailsProps>;
154
+ declare type AccordionPanelWrapperProps = RecursicaOverStyled<AccordionDetailsProps & RecursicaAccordionPanelProps>;
161
155
 
162
156
  declare type AccordionProps = RecursicaOverStyled<default_2.HTMLAttributes<HTMLDivElement> & RecursicaAccordionProps>;
163
157
 
164
158
  export declare const AssistiveElement: typeof rawComponents.AssistiveElement;
165
159
 
166
- declare const AssistiveElement_2: default_2.ForwardRefExoticComponent<Omit<AssistiveElementProps, "ref"> & default_2.RefAttributes<HTMLParagraphElement>>;
160
+ declare const AssistiveElement_2: default_2.ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<FormHelperTextProps, "component" | "error"> & RecursicaAssistiveElementProps>, BlockedStylingKeys> & ForbiddenStyles & {
161
+ overStyled?: false | undefined;
162
+ }, "ref"> | Omit<Omit<Omit<FormHelperTextProps, "component" | "error"> & RecursicaAssistiveElementProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
163
+ m?: string | number | RecursicaSpacing;
164
+ mx?: string | number | RecursicaSpacing;
165
+ my?: string | number | RecursicaSpacing;
166
+ mt?: string | number | RecursicaSpacing;
167
+ mb?: string | number | RecursicaSpacing;
168
+ ml?: string | number | RecursicaSpacing;
169
+ mr?: string | number | RecursicaSpacing;
170
+ gap?: string | number | RecursicaSpacing;
171
+ rowGap?: string | number | RecursicaSpacing;
172
+ columnGap?: string | number | RecursicaSpacing;
173
+ } & {
174
+ overStyled: true;
175
+ }, "ref">) & default_2.RefAttributes<HTMLParagraphElement>>;
167
176
 
168
- declare interface AssistiveElementProps extends FormHelperTextProps, RecursicaAssistiveElementProps {
169
- overStyled?: boolean;
170
- }
177
+ declare type AssistiveElementProps = RecursicaOverStyled<Omit<FormHelperTextProps, "error" | "component"> & RecursicaAssistiveElementProps>;
171
178
 
172
179
  export declare const Autocomplete: typeof rawComponents.Autocomplete;
173
180
 
@@ -197,9 +204,9 @@ export declare const Avatar: typeof rawComponents.Avatar;
197
204
  *
198
205
  * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.
199
206
  */
200
- declare const Avatar_2: ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<AvatarProps_2, "color" | "variant" | "size" | "radius"> & RecursicaAvatarProps>, BlockedStylingKeys> & ForbiddenStyles & {
207
+ declare const Avatar_2: ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<AvatarProps_2, "variant"> & RecursicaAvatarProps>, BlockedStylingKeys> & ForbiddenStyles & {
201
208
  overStyled?: false | undefined;
202
- }, "ref"> | Omit<Omit<Omit<AvatarProps_2, "color" | "variant" | "size" | "radius"> & RecursicaAvatarProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
209
+ }, "ref"> | Omit<Omit<Omit<AvatarProps_2, "variant"> & RecursicaAvatarProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
203
210
  m?: string | number | RecursicaSpacing;
204
211
  mx?: string | number | RecursicaSpacing;
205
212
  my?: string | number | RecursicaSpacing;
@@ -214,7 +221,7 @@ columnGap?: string | number | RecursicaSpacing;
214
221
  overStyled: true;
215
222
  }, "ref">) & RefAttributes<HTMLDivElement>>;
216
223
 
217
- declare type AvatarProps = RecursicaOverStyled<Omit<AvatarProps_2, "variant" | "size" | "color" | "radius"> & RecursicaAvatarProps>;
224
+ declare type AvatarProps = RecursicaOverStyled<Omit<AvatarProps_2, "variant"> & RecursicaAvatarProps>;
218
225
 
219
226
  export declare const Badge: typeof rawComponents.Badge;
220
227
 
@@ -1078,6 +1085,7 @@ declare namespace rawComponents {
1078
1085
  RecursicaSwitchPropsAlias,
1079
1086
  SwitchProps_2 as SwitchProps,
1080
1087
  Switch_2 as Switch,
1088
+ SwitchGroupContext,
1081
1089
  RecursicaSwitchGroupProps_2 as RecursicaSwitchGroupProps,
1082
1090
  SwitchGroupProps,
1083
1091
  SwitchGroup_2 as SwitchGroup,
@@ -1169,6 +1177,8 @@ export declare const RECURSICA_COMPONENTS: readonly ["Accordion", "AssistiveElem
1169
1177
  * Props for the Recursica Accordion Control component.
1170
1178
  */
1171
1179
  export declare interface RecursicaAccordionControlProps {
1180
+ /** The control's label content */
1181
+ children?: default_2.ReactNode;
1172
1182
  /** Leading icon displayed inside the control boundary */
1173
1183
  leftIcon?: default_2.ReactNode;
1174
1184
  }
@@ -1177,7 +1187,14 @@ export declare interface RecursicaAccordionControlProps {
1177
1187
  * Props for the Recursica Accordion Item component.
1178
1188
  */
1179
1189
  export declare interface RecursicaAccordionItemProps {
1180
- /** The text or element label for the item control */
1190
+ /**
1191
+ * When `title` is set, this is the panel content — the control and panel are constructed
1192
+ * automatically, with `children` becoming the panel body. When `title` is omitted, this is
1193
+ * expected to be a manually composed `Accordion.Control`/`Accordion.Panel` pair instead.
1194
+ */
1195
+ children?: default_2.ReactNode;
1196
+ /** The text or element label for the item control. When set, the control and panel are
1197
+ * constructed automatically; omit it to compose the control and panel manually instead. */
1181
1198
  title?: default_2.ReactNode;
1182
1199
  /** Leading icon for the item control */
1183
1200
  leftIcon?: default_2.ReactNode;
@@ -1185,14 +1202,30 @@ export declare interface RecursicaAccordionItemProps {
1185
1202
  divider?: boolean;
1186
1203
  /** Unique value identifier for this item */
1187
1204
  value?: string;
1205
+ /** Disables interaction with this item — it can't be expanded or collapsed, and is dimmed */
1206
+ disabled?: boolean;
1207
+ }
1208
+
1209
+ /**
1210
+ * Props for the Recursica Accordion Panel component.
1211
+ */
1212
+ export declare interface RecursicaAccordionPanelProps {
1213
+ /** The panel's content, shown when the item is expanded */
1214
+ children?: default_2.ReactNode;
1188
1215
  }
1189
1216
 
1190
1217
  /**
1191
1218
  * Props for the Recursica Accordion container component.
1192
1219
  */
1193
1220
  export declare interface RecursicaAccordionProps {
1194
- /** The styling variant of the accordion */
1195
- variant?: string;
1221
+ /** The `Accordion.Item` elements that make up the accordion */
1222
+ children?: default_2.ReactNode;
1223
+ /**
1224
+ * The styling variant of the accordion. `"default"` is the only variant with dedicated
1225
+ * Recursica styling today; any other string is accepted for advanced/custom theming but
1226
+ * has no guaranteed styling.
1227
+ */
1228
+ variant?: "default" | (string & {});
1196
1229
  /** Current expanded value(s) in controlled mode */
1197
1230
  value?: string | string[];
1198
1231
  /** Initial expanded value(s) in uncontrolled mode */
@@ -1201,7 +1234,8 @@ export declare interface RecursicaAccordionProps {
1201
1234
  onChange?: (value: string | string[] | null) => void;
1202
1235
  /** Allow multiple panels to be open simultaneously */
1203
1236
  multiple?: boolean;
1204
- /** Custom chevron icon to replace the default expand/collapse indicator */
1237
+ /** Custom chevron icon to replace the default expand/collapse indicator. Applies to every
1238
+ * item; a single item's control can still override it individually. */
1205
1239
  chevron?: default_2.ReactNode;
1206
1240
  }
1207
1241
 
@@ -1209,9 +1243,14 @@ export declare interface RecursicaAccordionProps {
1209
1243
  * Props for the Recursica AssistiveElement component.
1210
1244
  */
1211
1245
  export declare interface RecursicaAssistiveElementProps {
1212
- /** The semantic variant driving the icon and text colors */
1246
+ /** The helper or error text content */
1247
+ children?: default_2.ReactNode;
1248
+ /** The semantic variant driving the icon and text colors. `"error"` also defaults the
1249
+ * element's `role` to `"alert"` so assistive tech announces it as it appears or changes —
1250
+ * pass an explicit `role` to override. */
1213
1251
  assistiveVariant?: "help" | "error";
1214
- /** Explicitly toggle the rendering of the variant-specific SVG icon */
1252
+ /** Explicitly toggle the rendering of the variant-specific SVG icon. There is no slot for a
1253
+ * custom icon — the icon is always the fixed one belonging to the current `assistiveVariant`. */
1215
1254
  assistiveWithIcon?: boolean;
1216
1255
  }
1217
1256
 
@@ -1246,6 +1285,8 @@ declare interface RecursicaAutocompleteProps_2 {
1246
1285
  * Props for the Recursica Avatar component.
1247
1286
  */
1248
1287
  export declare interface RecursicaAvatarProps {
1288
+ /** Initials or other text fallback, shown when neither `src` nor `icon` is set */
1289
+ children?: default_2.ReactNode;
1249
1290
  /** Size of the avatar */
1250
1291
  size?: "small" | "default" | "large";
1251
1292
  /** Visual variant style */
@@ -1697,8 +1738,13 @@ export declare interface RecursicaRadioGroupProps {
1697
1738
  value?: unknown;
1698
1739
  /** Initial selected value in uncontrolled mode */
1699
1740
  defaultValue?: unknown;
1700
- /** Callback triggered when active value changes */
1701
- onChange?: (event: any, value: string) => void;
1741
+ /**
1742
+ * Callback triggered when active value changes.
1743
+ * Single-argument by design (no event): matches Mantine's native RadioGroup
1744
+ * onChange, the cross-adapter source of truth. mui-adapter's RadioGroup
1745
+ * normalizes MUI's native two-argument (event, value) callback down to this.
1746
+ */
1747
+ onChange?: (value: string) => void;
1702
1748
  }
1703
1749
 
1704
1750
  declare interface RecursicaRadioGroupProps_2 extends Omit<RadioGroupProps_2, "size" | "labelProps" | "classes" | "ref" | "onChange" | "value" | "defaultValue">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth" | "classes" | "onChange" | keyof RadioGroupProps_2>, ReadOnlyControlProps, RecursicaRadioGroupProps {
@@ -1830,12 +1876,12 @@ declare interface RecursicaStepperPropsExtended extends Omit<Partial<StepperProp
1830
1876
  * Props for the Recursica SwitchGroup component.
1831
1877
  */
1832
1878
  export declare interface RecursicaSwitchGroupProps {
1833
- /** Checked values list in controlled mode */
1834
- value?: unknown[];
1879
+ /** Checked values list in controlled mode — each entry matches a child Switch's own `value` */
1880
+ value?: string[];
1835
1881
  /** Checked default values list in uncontrolled mode */
1836
- defaultValue?: unknown[];
1882
+ defaultValue?: string[];
1837
1883
  /** Callback triggered when any switch toggles state */
1838
- onChange?: (value: unknown[]) => void;
1884
+ onChange?: (value: string[]) => void;
1839
1885
  }
1840
1886
 
1841
1887
  declare interface RecursicaSwitchGroupProps_2 extends Omit<FormGroupProps, "size" | "labelProps" | "onChange" | "classes" | "ref" | "value" | "defaultValue">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth" | "classes" | "onChange" | "defaultValue">, ReadOnlyControlProps, RecursicaSwitchGroupProps {
@@ -2272,7 +2318,9 @@ export declare const Switch: typeof rawComponents.Switch;
2272
2318
 
2273
2319
  declare const Switch_2: SwitchComponent;
2274
2320
 
2275
- declare type SwitchComponent = React.ComponentType<SwitchProps_2>;
2321
+ declare type SwitchComponent = React.ForwardRefExoticComponent<SwitchProps_2 & React.RefAttributes<HTMLInputElement>> & {
2322
+ Group: typeof SwitchGroup_2;
2323
+ };
2276
2324
 
2277
2325
  export declare const SwitchGroup: typeof rawComponents.SwitchGroup;
2278
2326
 
@@ -2293,6 +2341,13 @@ declare const SwitchGroup_2: default_2.ForwardRefExoticComponent<(Omit<Omit<With
2293
2341
  overStyled: true;
2294
2342
  }, "ref">) & default_2.RefAttributes<HTMLDivElement>>;
2295
2343
 
2344
+ declare const SwitchGroupContext: default_2.Context<{
2345
+ value?: string[];
2346
+ onChange?: (event: default_2.SyntheticEvent, value: string[]) => void;
2347
+ name?: string;
2348
+ readOnly?: boolean;
2349
+ } | null>;
2350
+
2296
2351
  declare type SwitchGroupProps = RecursicaOverStyled<RecursicaSwitchGroupProps_2>;
2297
2352
 
2298
2353
  declare type SwitchProps_2 = RecursicaOverStyled<RecursicaSwitchPropsAlias>;