@recursica/mui-adapter 0.5.0 → 0.7.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 (212) hide show
  1. package/ARCHITECTURE.md +15 -0
  2. package/CHANGELOG.md +15 -0
  3. package/SETUP.md +77 -0
  4. package/USAGE.md +55 -0
  5. package/dist/mui-adapter.cjs +74 -1
  6. package/dist/mui-adapter.cjs.map +1 -1
  7. package/dist/mui-adapter.css +1 -1
  8. package/dist/mui-adapter.js +6863 -205
  9. package/dist/mui-adapter.js.map +1 -1
  10. package/dist/src/components/Accordion/Accordion.d.ts +43 -2
  11. package/dist/src/components/AssistiveElement/AssistiveElement.d.ts +6 -2
  12. package/dist/src/components/Autocomplete/Autocomplete.d.ts +12 -2
  13. package/dist/src/components/Avatar/Avatar.d.ts +10 -3
  14. package/dist/src/components/Badge/Badge.d.ts +10 -3
  15. package/dist/src/components/Breadcrumb/Breadcrumb.d.ts +9 -3
  16. package/dist/src/components/Button/Button.d.ts +2 -17
  17. package/dist/src/components/Card/Card.d.ts +38 -3
  18. package/dist/src/components/Checkbox/Checkbox.d.ts +13 -2
  19. package/dist/src/components/Checkbox/CheckboxGroup.d.ts +18 -0
  20. package/dist/src/components/Checkbox/index.d.ts +5 -1
  21. package/dist/src/components/Chip/Chip.d.ts +9 -2
  22. package/dist/src/components/Container/Container.d.ts +1 -5
  23. package/dist/src/components/DatePicker/DatePicker.d.ts +2 -1
  24. package/dist/src/components/Dropdown/Dropdown.d.ts +12 -2
  25. package/dist/src/components/Flex/Flex.d.ts +2 -22
  26. package/dist/src/components/FormControlLayout/FormControlLayout.d.ts +5 -2
  27. package/dist/src/components/FormControlWrapper/FormControlWrapper.d.ts +9 -2
  28. package/dist/src/components/Group/Group.d.ts +2 -7
  29. package/dist/src/components/HoverCard/HoverCard.d.ts +28 -2
  30. package/dist/src/components/Label/Label.d.ts +6 -2
  31. package/dist/src/components/Link/Link.d.ts +2 -6
  32. package/dist/src/components/Loader/Loader.d.ts +2 -7
  33. package/dist/src/components/Menu/Menu.d.ts +25 -3
  34. package/dist/src/components/Modal/Modal.d.ts +37 -2
  35. package/dist/src/components/NumberInput/NumberInput.d.ts +12 -2
  36. package/dist/src/components/Pagination/Pagination.d.ts +12 -3
  37. package/dist/src/components/Pagination/Pagination.icons.d.ts +8 -0
  38. package/dist/src/components/Panel/Panel.d.ts +52 -3
  39. package/dist/src/components/Radio/Radio.d.ts +13 -3
  40. package/dist/src/components/Radio/RadioGroup.d.ts +9 -0
  41. package/dist/src/components/ReadOnlyField/ReadOnlyBooleanField.d.ts +5 -0
  42. package/dist/src/components/ReadOnlyField/ReadOnlyField.d.ts +4 -2
  43. package/dist/src/components/ReadOnlyField/ReadOnlySwitchField.d.ts +5 -0
  44. package/dist/src/components/ReadOnlyField/ReadOnlyTextField.d.ts +8 -0
  45. package/dist/src/components/ReadOnlyField/WithReadOnlyWrapper.d.ts +28 -0
  46. package/dist/src/components/ReadOnlyField/index.d.ts +1 -0
  47. package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +21 -3
  48. package/dist/src/components/Slider/Slider.d.ts +18 -2
  49. package/dist/src/components/Stack/Stack.d.ts +2 -5
  50. package/dist/src/components/Stepper/Stepper.d.ts +41 -2
  51. package/dist/src/components/Switch/Switch.d.ts +10 -3
  52. package/dist/src/components/Switch/SwitchGroup.d.ts +13 -0
  53. package/dist/src/components/Table/Table.d.ts +2 -1
  54. package/dist/src/components/Tabs/Tabs.d.ts +20 -3
  55. package/dist/src/components/Text/Text.d.ts +2 -16
  56. package/dist/src/components/TextArea/TextArea.d.ts +12 -2
  57. package/dist/src/components/TextField/TextField.d.ts +12 -2
  58. package/dist/src/components/TimePicker/TimePicker.d.ts +2 -1
  59. package/dist/src/components/Timeline/Timeline.d.ts +15 -2
  60. package/dist/src/components/Timeline/TimelineItem.d.ts +18 -0
  61. package/dist/src/components/Title/Title.d.ts +2 -15
  62. package/dist/src/components/Toast/Toast.d.ts +20 -2
  63. package/dist/src/components/Tooltip/Tooltip.d.ts +28 -3
  64. package/dist/src/components/TransferList/TransferList.d.ts +2 -1
  65. package/dist/src/components/Typography/Typography.d.ts +1 -1
  66. package/dist/src/utils/RequireAccessibleLabel.d.ts +1 -18
  67. package/dist/src/utils/filterStylingProps.d.ts +1 -11
  68. package/llms.txt +16 -0
  69. package/package.json +14 -3
  70. package/src/components/Accordion/Accordion.module.css +294 -56
  71. package/src/components/Accordion/Accordion.stories.tsx +131 -21
  72. package/src/components/Accordion/Accordion.tsx +260 -5
  73. package/src/components/AssistiveElement/AssistiveElement.module.css +114 -20
  74. package/src/components/AssistiveElement/AssistiveElement.stories.tsx +60 -20
  75. package/src/components/AssistiveElement/AssistiveElement.tsx +81 -5
  76. package/src/components/Autocomplete/Autocomplete.module.css +319 -42
  77. package/src/components/Autocomplete/Autocomplete.stories.tsx +175 -23
  78. package/src/components/Autocomplete/Autocomplete.tsx +181 -6
  79. package/src/components/Avatar/Avatar.module.css +343 -73
  80. package/src/components/Avatar/Avatar.stories.tsx +94 -22
  81. package/src/components/Avatar/Avatar.tsx +99 -6
  82. package/src/components/Badge/Badge.module.css +127 -29
  83. package/src/components/Badge/Badge.stories.tsx +65 -22
  84. package/src/components/Badge/Badge.tsx +67 -6
  85. package/src/components/Breadcrumb/Breadcrumb.module.css +25 -5
  86. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +57 -22
  87. package/src/components/Breadcrumb/Breadcrumb.tsx +59 -6
  88. package/src/components/Button/Button.module.css +19 -61
  89. package/src/components/Button/Button.stories.tsx +24 -23
  90. package/src/components/Button/Button.tsx +7 -18
  91. package/src/components/Card/Card.module.css +154 -38
  92. package/src/components/Card/Card.stories.tsx +117 -19
  93. package/src/components/Card/Card.tsx +181 -5
  94. package/src/components/Checkbox/Checkbox.module.css +249 -39
  95. package/src/components/Checkbox/Checkbox.stories.tsx +81 -19
  96. package/src/components/Checkbox/Checkbox.tsx +246 -5
  97. package/src/components/Checkbox/CheckboxGroup.stories.tsx +139 -0
  98. package/src/components/Checkbox/CheckboxGroup.tsx +137 -0
  99. package/src/components/Checkbox/index.ts +6 -1
  100. package/src/components/Chip/Chip.module.css +246 -43
  101. package/src/components/Chip/Chip.stories.tsx +101 -21
  102. package/src/components/Chip/Chip.tsx +136 -6
  103. package/src/components/Container/Container.stories.tsx +103 -20
  104. package/src/components/Container/Container.tsx +1 -13
  105. package/src/components/DatePicker/DatePicker.stories.tsx +125 -19
  106. package/src/components/DatePicker/DatePicker.tsx +3 -1
  107. package/src/components/Dropdown/Dropdown.module.css +291 -41
  108. package/src/components/Dropdown/Dropdown.stories.tsx +80 -21
  109. package/src/components/Dropdown/Dropdown.tsx +180 -6
  110. package/src/components/FileInput/FileInput.stories.tsx +2 -19
  111. package/src/components/FileUpload/FileUpload.stories.tsx +2 -19
  112. package/src/components/Flex/Flex.stories.tsx +113 -20
  113. package/src/components/Flex/Flex.tsx +16 -26
  114. package/src/components/FormControlLayout/FormControlLayout.module.css +92 -0
  115. package/src/components/FormControlLayout/FormControlLayout.stories.tsx +67 -20
  116. package/src/components/FormControlLayout/FormControlLayout.tsx +69 -4
  117. package/src/components/FormControlWrapper/FormControlWrapper.module.css +87 -0
  118. package/src/components/FormControlWrapper/FormControlWrapper.stories.tsx +116 -22
  119. package/src/components/FormControlWrapper/FormControlWrapper.tsx +126 -6
  120. package/src/components/Group/Group.stories.tsx +6 -30
  121. package/src/components/Group/Group.tsx +14 -9
  122. package/src/components/HoverCard/HoverCard.module.css +90 -22
  123. package/src/components/HoverCard/HoverCard.stories.tsx +158 -21
  124. package/src/components/HoverCard/HoverCard.tsx +147 -5
  125. package/src/components/Label/Label.module.css +140 -35
  126. package/src/components/Label/Label.stories.tsx +108 -21
  127. package/src/components/Label/Label.tsx +82 -5
  128. package/src/components/Link/Link.module.css +4 -3
  129. package/src/components/Link/Link.stories.tsx +2 -8
  130. package/src/components/Link/Link.tsx +1 -5
  131. package/src/components/Loader/Loader.module.css +1 -2
  132. package/src/components/Loader/Loader.tsx +1 -7
  133. package/src/components/Menu/IMPLEMENTATION_NOTES.md +4 -0
  134. package/src/components/Menu/Menu.module.css +285 -51
  135. package/src/components/Menu/Menu.stories.tsx +229 -25
  136. package/src/components/Menu/Menu.tsx +73 -6
  137. package/src/components/Modal/Modal.module.css +171 -35
  138. package/src/components/Modal/Modal.stories.tsx +66 -22
  139. package/src/components/Modal/Modal.tsx +215 -5
  140. package/src/components/NumberInput/NumberInput.module.css +276 -42
  141. package/src/components/NumberInput/NumberInput.stories.tsx +83 -20
  142. package/src/components/NumberInput/NumberInput.tsx +136 -6
  143. package/src/components/Pagination/IMPLEMENTATION_NOTES.md +3 -0
  144. package/src/components/Pagination/Pagination.icons.tsx +66 -0
  145. package/src/components/Pagination/Pagination.module.css +234 -20
  146. package/src/components/Pagination/Pagination.stories.tsx +34 -21
  147. package/src/components/Pagination/Pagination.tsx +74 -6
  148. package/src/components/Panel/Panel.module.css +206 -38
  149. package/src/components/Panel/Panel.stories.tsx +214 -22
  150. package/src/components/Panel/Panel.tsx +130 -5
  151. package/src/components/Radio/Radio.module.css +235 -37
  152. package/src/components/Radio/Radio.stories.tsx +77 -19
  153. package/src/components/Radio/Radio.tsx +210 -5
  154. package/src/components/Radio/RadioGroup.stories.tsx +117 -0
  155. package/src/components/Radio/RadioGroup.tsx +125 -0
  156. package/src/components/ReadOnlyField/ReadOnlyBooleanField.tsx +21 -0
  157. package/src/components/ReadOnlyField/ReadOnlyField.module.css +53 -15
  158. package/src/components/ReadOnlyField/ReadOnlyField.stories.tsx +147 -19
  159. package/src/components/ReadOnlyField/ReadOnlyField.tsx +105 -5
  160. package/src/components/ReadOnlyField/ReadOnlySwitchField.tsx +21 -0
  161. package/src/components/ReadOnlyField/ReadOnlyTextField.tsx +48 -0
  162. package/src/components/ReadOnlyField/WithReadOnlyWrapper.tsx +93 -0
  163. package/src/components/ReadOnlyField/index.ts +1 -0
  164. package/src/components/SegmentedControl/SegmentedControl.module.css +179 -47
  165. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +102 -20
  166. package/src/components/SegmentedControl/SegmentedControl.tsx +140 -6
  167. package/src/components/Slider/Slider.module.css +539 -86
  168. package/src/components/Slider/Slider.stories.tsx +157 -19
  169. package/src/components/Slider/Slider.tsx +283 -5
  170. package/src/components/Stack/Stack.stories.tsx +4 -25
  171. package/src/components/Stack/Stack.tsx +1 -5
  172. package/src/components/Stepper/IMPLEMENTATION_NOTES.md +4 -0
  173. package/src/components/Stepper/Stepper.module.css +410 -71
  174. package/src/components/Stepper/Stepper.stories.tsx +146 -20
  175. package/src/components/Stepper/Stepper.tsx +147 -6
  176. package/src/components/Switch/Switch.module.css +259 -39
  177. package/src/components/Switch/Switch.stories.tsx +98 -19
  178. package/src/components/Switch/Switch.tsx +200 -6
  179. package/src/components/Switch/SwitchGroup.stories.tsx +132 -0
  180. package/src/components/Switch/SwitchGroup.tsx +120 -0
  181. package/src/components/Table/Table.stories.tsx +1 -19
  182. package/src/components/Table/Table.tsx +3 -1
  183. package/src/components/Tabs/IMPLEMENTATION_NOTES.md +4 -0
  184. package/src/components/Tabs/Tabs.module.css +422 -79
  185. package/src/components/Tabs/Tabs.stories.tsx +156 -20
  186. package/src/components/Tabs/Tabs.tsx +86 -6
  187. package/src/components/Text/Text.stories.tsx +5 -17
  188. package/src/components/Text/Text.tsx +1 -15
  189. package/src/components/TextArea/TextArea.module.css +155 -32
  190. package/src/components/TextArea/TextArea.stories.tsx +80 -21
  191. package/src/components/TextArea/TextArea.tsx +146 -6
  192. package/src/components/TextField/TextField.module.css +261 -42
  193. package/src/components/TextField/TextField.stories.tsx +147 -20
  194. package/src/components/TextField/TextField.tsx +169 -6
  195. package/src/components/TimePicker/TimePicker.stories.tsx +2 -19
  196. package/src/components/TimePicker/TimePicker.tsx +3 -1
  197. package/src/components/Timeline/Timeline.module.css +365 -76
  198. package/src/components/Timeline/Timeline.stories.tsx +114 -21
  199. package/src/components/Timeline/Timeline.tsx +83 -5
  200. package/src/components/Timeline/TimelineItem.tsx +90 -0
  201. package/src/components/Title/Title.stories.tsx +0 -18
  202. package/src/components/Title/Title.tsx +1 -7
  203. package/src/components/Toast/Toast.module.css +166 -28
  204. package/src/components/Toast/Toast.stories.tsx +54 -22
  205. package/src/components/Toast/Toast.tsx +124 -5
  206. package/src/components/Tooltip/Tooltip.module.css +89 -24
  207. package/src/components/Tooltip/Tooltip.stories.tsx +152 -22
  208. package/src/components/Tooltip/Tooltip.tsx +88 -5
  209. package/src/components/TransferList/TransferList.stories.tsx +1 -19
  210. package/src/components/TransferList/TransferList.tsx +3 -1
  211. package/src/utils/RequireAccessibleLabel.ts +1 -12
  212. package/src/utils/filterStylingProps.ts +7 -20
@@ -1,3 +1,52 @@
1
- import { default as React } from 'react';
2
- export type PanelProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Panel: React.FC<PanelProps>;
1
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
2
+ import { RecursicaPanelProps } from '@recursica/adapter-common';
3
+ /**
4
+ * Recursica Panel root props. Extends Mui Drawer.
5
+ */
6
+ export type PanelProps = RecursicaOverStyled<RecursicaPanelProps>;
7
+ /**
8
+ * Recursica Panel component wrapping Mui's Drawer.
9
+ *
10
+ * Panels slide in or expand from the edge of the screen to reveal
11
+ * additional content or functionality. They are commonly used to provide
12
+ * supplementary information, navigation options, or toolsets without
13
+ * cluttering the main interface.
14
+ *
15
+ * ```tsx
16
+ * <Panel opened={opened} onClose={close} title="Panel Title" position="right">
17
+ * <Panel.Body>
18
+ * Content goes here
19
+ * </Panel.Body>
20
+ * </Panel>
21
+ * ```
22
+ *
23
+ * Mui Drawer sub-components available via dot-notation:
24
+ * - `Panel.Header` — Top section with title and close button
25
+ * - `Panel.Title` — Title text within the header
26
+ * - `Panel.CloseButton` — Close button within the header
27
+ * - `Panel.Body` — Scrollable body content area
28
+ * - `Panel.Content` — Outer content container
29
+ * - `Panel.Overlay` — Background overlay
30
+ * - `Panel.Root` — Root element for advanced composition
31
+ * - `Panel.Stack` — Stacked drawer context
32
+ */
33
+ declare const PanelBase: {
34
+ ({ overStyled, position, keepMounted, wrapHeaderText, ...rest }: PanelProps & {
35
+ position?: "left" | "right" | "top" | "bottom";
36
+ opened?: boolean;
37
+ }): import("react/jsx-runtime").JSX.Element;
38
+ displayName: string;
39
+ };
40
+ export type PanelFooterProps = RecursicaOverStyled<React.HTMLAttributes<HTMLDivElement>>;
41
+ /**
42
+ * Panel footer section with action buttons.
43
+ * Separated from the body by a divider. Remains fixed at the bottom.
44
+ * This is a Recursica-specific sub-component; Mui Drawer does not
45
+ * natively provide a footer.
46
+ */
47
+ export declare const PanelFooter: import('react').ForwardRefExoticComponent<PanelFooterProps & import('react').RefAttributes<HTMLDivElement>>;
48
+ type PanelComponent = typeof PanelBase & {
49
+ Footer: typeof PanelFooter;
50
+ };
51
+ export declare const Panel: PanelComponent;
52
+ export {};
@@ -1,3 +1,13 @@
1
- import { default as React } from 'react';
2
- export type RadioProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Radio: React.FC<RadioProps>;
1
+ import { RadioProps as MuiRadioProps } from '@mui/material';
2
+ import { ReadOnlyControlProps, RequireAccessibleLabel, RecursicaRadioProps } from '@recursica/adapter-common';
3
+ import { RadioGroup } from './RadioGroup';
4
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
5
+ import { FormControlLayoutProps } from '../FormControlLayout/FormControlLayout';
6
+ export type RadioWrapperProps = Omit<MuiRadioProps, "size" | "color"> & RecursicaRadioProps & ReadOnlyControlProps & Pick<FormControlLayoutProps, "formLayout" | "labelSize" | "controlMaxWidth" | "controlMinWidth">;
7
+ export type RecursicaRadioPropsAlias = RequireAccessibleLabel<RadioWrapperProps>;
8
+ export type RadioProps = RecursicaOverStyled<RecursicaRadioPropsAlias>;
9
+ type RadioComponent = React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>> & {
10
+ Group: typeof RadioGroup;
11
+ };
12
+ export declare const Radio: RadioComponent;
13
+ export {};
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { RadioGroupProps as MuiRadioGroupProps } from '@mui/material';
3
+ import { ReadOnlyControlProps, RecursicaRadioGroupProps as BaseRecursicaRadioGroupProps } from '@recursica/adapter-common';
4
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
5
+ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
6
+ export interface RecursicaRadioGroupProps extends Omit<MuiRadioGroupProps, "size" | "labelProps" | "classes" | "ref" | "onChange" | "value" | "defaultValue">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth" | "classes" | "onChange" | keyof MuiRadioGroupProps>, ReadOnlyControlProps, BaseRecursicaRadioGroupProps {
7
+ }
8
+ export type RadioGroupProps = RecursicaOverStyled<RecursicaRadioGroupProps>;
9
+ export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ export declare const ReadOnlyBooleanField: React.FC<{
3
+ checked: boolean;
4
+ label?: React.ReactNode;
5
+ }>;
@@ -1,3 +1,5 @@
1
1
  import { default as React } from 'react';
2
- export type ReadOnlyFieldProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const ReadOnlyField: React.FC<ReadOnlyFieldProps>;
2
+ import { ReadOnlyControlProps, RecursicaReadOnlyFieldProps as BaseRecursicaReadOnlyFieldProps } from '@recursica/adapter-common';
3
+ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
4
+ export type ReadOnlyFieldProps = Omit<RecursicaFormControlWrapperProps, "error" | "focused" | "controlMaxWidth" | "controlMinWidth"> & ReadOnlyControlProps & BaseRecursicaReadOnlyFieldProps;
5
+ export declare const ReadOnlyField: React.ForwardRefExoticComponent<Omit<ReadOnlyFieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ export declare const ReadOnlySwitchField: React.FC<{
3
+ checked: boolean;
4
+ label?: React.ReactNode;
5
+ }>;
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
3
+ export interface RecursicaReadOnlyTextFieldProps {
4
+ /** The value strictly rendered as text output */
5
+ value?: any;
6
+ }
7
+ export type ReadOnlyTextFieldProps = RecursicaOverStyled<RecursicaReadOnlyTextFieldProps>;
8
+ export declare const ReadOnlyTextField: React.FC<ReadOnlyTextFieldProps>;
@@ -0,0 +1,28 @@
1
+ import { default as React } from 'react';
2
+ import { ReadOnlyFieldType } from '@recursica/adapter-common';
3
+ import { FormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
4
+ export interface WithReadOnlyWrapperProps extends Omit<FormControlWrapperProps, "children" | "overStyled"> {
5
+ /** Injects whether the field defaults to reading mode natively */
6
+ readOnly?: boolean;
7
+ /** Explicit React component directly overtaking the baseline text renderer when read-only mode is active */
8
+ readOnlyComponent?: React.ElementType<any>;
9
+ /** Custom renderer explicitly responsible for formatting missing/empty value mappings (overriding default 'N/A') */
10
+ emptyValueComponent?: React.ElementType<{
11
+ value?: any;
12
+ }>;
13
+ /** The full native props dictionary securely forwarded into the custom readOnlyComponent if active */
14
+ readOnlyNativeProps?: any;
15
+ /** Instructs the underlying generic ReadOnlyField which raw visual structure to bridge automatically */
16
+ readOnlyType?: ReadOnlyFieldType;
17
+ /** The isolated raw data value intercepted explicitly into the ReadOnly formatters */
18
+ readOnlyValue?: any;
19
+ /** Safely enables deep overrides transparently bypassing block filters */
20
+ overStyled?: boolean;
21
+ /** The nested active node dynamically exposed exclusively when read-only bounds are disabled */
22
+ activeComponent: React.ReactNode;
23
+ }
24
+ /**
25
+ * Universal execution barrier trapping readOnly states globally.
26
+ * Natively delegates active logic down avoiding duplicative internal component bindings dynamically.
27
+ */
28
+ export declare const WithReadOnlyWrapper: React.ForwardRefExoticComponent<Omit<WithReadOnlyWrapperProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -1 +1,2 @@
1
1
  export * from './ReadOnlyField';
2
+ export * from './WithReadOnlyWrapper';
@@ -1,3 +1,21 @@
1
- import { default as React } from 'react';
2
- export type SegmentedControlProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const SegmentedControl: React.FC<SegmentedControlProps>;
1
+ import { ToggleButtonGroupProps as MuiSegmentedControlProps } from '@mui/material';
2
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
3
+ import { RecursicaSegmentedControlProps } from '@recursica/adapter-common';
4
+ export type SegmentedControlProps = RecursicaOverStyled<Omit<MuiSegmentedControlProps, "variant" | "size" | "radius" | "color" | "classNames" | "className" | "disabled" | "value" | "onChange"> & {
5
+ className?: string;
6
+ classNames?: Partial<Record<string, string>>;
7
+ } & RecursicaSegmentedControlProps>;
8
+ /**
9
+ * Recursica SegmentedControl component wrapping Mui's SegmentedControl.
10
+ */
11
+ export declare const SegmentedControl: import('react').ForwardRefExoticComponent<(Omit<Omit<Omit<MuiSegmentedControlProps, "className" | "color" | "value" | "classNames" | "onChange" | "variant" | "disabled" | "size" | "radius"> & {
12
+ className?: string;
13
+ classNames?: Partial<Record<string, string>>;
14
+ } & RecursicaSegmentedControlProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
15
+ overStyled?: false | undefined;
16
+ }, "ref"> | Omit<Omit<MuiSegmentedControlProps, "className" | "color" | "value" | "classNames" | "onChange" | "variant" | "disabled" | "size" | "radius"> & {
17
+ className?: string;
18
+ classNames?: Partial<Record<string, string>>;
19
+ } & RecursicaSegmentedControlProps & {
20
+ overStyled: true;
21
+ }, "ref">) & import('react').RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,19 @@
1
1
  import { default as React } from 'react';
2
- export type SliderProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Slider: React.FC<SliderProps>;
2
+ import { SliderProps as MuiSliderProps } from '@mui/material';
3
+ import { ReadOnlyControlProps, RecursicaSliderProps as BaseRecursicaSliderProps } from '@recursica/adapter-common';
4
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
5
+ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
6
+ export interface RecursicaSliderProps extends Omit<MuiSliderProps, "size" | "color" | "classes" | "onChange" | "onChangeCommitted">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth" | "error" | "required" | "withAsterisk" | keyof MuiSliderProps>, ReadOnlyControlProps, BaseRecursicaSliderProps {
7
+ }
8
+ export type SliderProps = RecursicaOverStyled<RecursicaSliderProps>;
9
+ /**
10
+ * Recursica Slider component wrapping Mui's Slider.
11
+ *
12
+ * Implements a bidirectional text input field next to the slider track, responsive layouts,
13
+ * custom typography-bound min/max labels, an optional leading icon, and an explicit read-only layout.
14
+ */
15
+ export declare const Slider: React.ForwardRefExoticComponent<(Omit<Omit<RecursicaSliderProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
16
+ overStyled?: false | undefined;
17
+ }, "ref"> | Omit<RecursicaSliderProps & {
18
+ overStyled: true;
19
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
@@ -1,9 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { StackProps as MUIStackProps } from '@mui/material';
3
- import { RecursicaSpacing, OmitSx } from '../../utils/filterStylingProps';
4
- export interface RecursicaStackProps {
5
- children?: React.ReactNode;
6
- gap?: MUIStackProps["spacing"] | RecursicaSpacing;
7
- }
3
+ import { OmitSx } from '../../utils/filterStylingProps';
4
+ import { RecursicaStackProps } from '@recursica/adapter-common';
8
5
  export type StackProps = OmitSx<Omit<MUIStackProps, "spacing"> & RecursicaStackProps>;
9
6
  export declare const Stack: React.ForwardRefExoticComponent<Omit<StackProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,42 @@
1
1
  import { default as React } from 'react';
2
- export type StepperProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Stepper: React.FC<StepperProps>;
2
+ import { StepProps as MuiStepProps, StepLabelProps as MuiStepLabelProps, StepButtonProps as MuiStepButtonProps, StepConnectorProps as MuiStepConnectorProps } from '@mui/material';
3
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
4
+ import { RecursicaStepperProps } from '@recursica/adapter-common';
5
+ export type StepperProps = RecursicaOverStyled<RecursicaStepperProps>;
6
+ export declare const Stepper: React.ForwardRefExoticComponent<StepperProps & React.RefAttributes<HTMLDivElement>>;
7
+ export type StepProps = RecursicaOverStyled<MuiStepProps>;
8
+ export declare const Step: React.ForwardRefExoticComponent<(Omit<Omit<MuiStepProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
9
+ overStyled?: false | undefined;
10
+ }, "ref"> | Omit<{
11
+ component?: React.ElementType | undefined;
12
+ } & import('@mui/material').StepOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "classes" | "style" | "sx" | "children" | "disabled" | "expanded" | "component" | "last" | "active" | "index" | "completed"> & {
13
+ component?: React.ElementType | undefined;
14
+ } & {
15
+ overStyled: true;
16
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
17
+ export type StepButtonProps = RecursicaOverStyled<MuiStepButtonProps>;
18
+ export declare const StepButton: React.ForwardRefExoticComponent<(Omit<Omit<MuiStepButtonProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
19
+ overStyled?: false | undefined;
20
+ }, "ref"> | Omit<import('@mui/material').StepButtonOwnProps & Omit<import('@mui/material').ButtonBaseOwnProps, "classes"> & import('@mui/material/OverridableComponent').CommonProps & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "className" | "classes" | "style" | "sx" | "tabIndex" | "children" | "disabled" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "icon" | "optional"> & {
21
+ component?: React.ElementType | undefined;
22
+ } & {
23
+ overStyled: true;
24
+ }, "ref">) & React.RefAttributes<HTMLButtonElement>>;
25
+ export type StepLabelProps = RecursicaOverStyled<MuiStepLabelProps & {
26
+ description?: React.ReactNode;
27
+ }>;
28
+ export declare const StepLabel: React.ForwardRefExoticComponent<(Omit<Omit<MuiStepLabelProps & {
29
+ description?: React.ReactNode;
30
+ }, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
31
+ overStyled?: false | undefined;
32
+ }, "ref"> | Omit<MuiStepLabelProps & {
33
+ description?: React.ReactNode;
34
+ } & {
35
+ overStyled: true;
36
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
37
+ export type StepConnectorProps = RecursicaOverStyled<MuiStepConnectorProps>;
38
+ export declare const StepConnector: React.ForwardRefExoticComponent<(Omit<Omit<MuiStepConnectorProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
39
+ overStyled?: false | undefined;
40
+ }, "ref"> | Omit<MuiStepConnectorProps & {
41
+ overStyled: true;
42
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,10 @@
1
- import { default as React } from 'react';
2
- export type SwitchProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Switch: React.FC<SwitchProps>;
1
+ import { SwitchProps as MuiSwitchProps } from '@mui/material';
2
+ import { ReadOnlyControlProps, RequireAccessibleLabel, RecursicaSwitchProps } from '@recursica/adapter-common';
3
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
4
+ import { FormControlLayoutProps } from '../FormControlLayout/FormControlLayout';
5
+ export type SwitchWrapperProps = Omit<MuiSwitchProps, "size" | "color" | "radius" | "variant"> & RecursicaSwitchProps & ReadOnlyControlProps & Pick<FormControlLayoutProps, "formLayout" | "labelSize" | "controlMaxWidth" | "controlMinWidth">;
6
+ export type RecursicaSwitchPropsAlias = RequireAccessibleLabel<SwitchWrapperProps>;
7
+ export type SwitchProps = RecursicaOverStyled<RecursicaSwitchPropsAlias>;
8
+ type SwitchComponent = any;
9
+ export declare const Switch: SwitchComponent;
10
+ export {};
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { FormGroupProps as MuiFormGroupProps } from '@mui/material';
3
+ import { ReadOnlyControlProps, RecursicaSwitchGroupProps as BaseRecursicaSwitchGroupProps } from '@recursica/adapter-common';
4
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
5
+ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
6
+ export interface RecursicaSwitchGroupProps extends Omit<MuiFormGroupProps, "size" | "labelProps" | "onChange" | "classes" | "ref" | "value" | "defaultValue">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth" | "classes" | "onChange">, ReadOnlyControlProps, BaseRecursicaSwitchGroupProps {
7
+ }
8
+ export type SwitchGroupProps = RecursicaOverStyled<RecursicaSwitchGroupProps>;
9
+ export declare const SwitchGroup: React.ForwardRefExoticComponent<(Omit<Omit<RecursicaSwitchGroupProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
10
+ overStyled?: false | undefined;
11
+ }, "ref"> | Omit<RecursicaSwitchGroupProps & {
12
+ overStyled: true;
13
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,4 @@
1
1
  import { default as React } from 'react';
2
- export type TableProps = React.HTMLAttributes<HTMLDivElement>;
2
+ import { RecursicaTableProps } from '@recursica/adapter-common';
3
+ export type TableProps = React.HTMLAttributes<HTMLDivElement> & RecursicaTableProps;
3
4
  export declare const Table: React.FC<TableProps>;
@@ -1,3 +1,20 @@
1
- import { default as React } from 'react';
2
- export type TabsProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Tabs: React.FC<TabsProps>;
1
+ import { TabProps as MuiTabProps } from '@mui/material';
2
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
3
+ import { RecursicaTabsProps } from '@recursica/adapter-common';
4
+ import { TabPanelProps as MuiTabPanelProps } from '@mui/lab';
5
+ export type TabsProps = RecursicaOverStyled<RecursicaTabsProps>;
6
+ export declare const Tabs: import('react').ForwardRefExoticComponent<TabsProps & import('react').RefAttributes<HTMLDivElement>>;
7
+ export type TabProps = RecursicaOverStyled<MuiTabProps>;
8
+ export declare const Tab: import('react').ForwardRefExoticComponent<(Omit<Omit<MuiTabProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
9
+ overStyled?: false | undefined;
10
+ }, "ref"> | Omit<import('@mui/material').TabOwnProps & Omit<import('@mui/material').ButtonBaseOwnProps, "classes"> & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "classes" | "style" | "sx" | "value" | "tabIndex" | "children" | "disabled" | "label" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "icon" | "disableFocusRipple" | "iconPosition" | "wrapped"> & {
11
+ component?: React.ElementType | undefined;
12
+ } & {
13
+ overStyled: true;
14
+ }, "ref">) & import('react').RefAttributes<HTMLDivElement>>;
15
+ export type TabPanelProps = RecursicaOverStyled<MuiTabPanelProps>;
16
+ export declare const TabPanel: import('react').ForwardRefExoticComponent<(Omit<Omit<MuiTabPanelProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
17
+ overStyled?: false | undefined;
18
+ }, "ref"> | Omit<MuiTabPanelProps & {
19
+ overStyled: true;
20
+ }, "ref">) & import('react').RefAttributes<HTMLDivElement>>;
@@ -1,19 +1,5 @@
1
1
  import { default as React } from 'react';
2
2
  import { RecursicaOverStyled } from '../../utils/filterStylingProps';
3
- import { TypographyProps as MuiTypographyProps } from '@mui/material';
4
- export type TextVariant = "body" | "body-small" | "caption" | "overline" | "subtitle" | "subtitle-small";
5
- export type RecursicaTextProps = Omit<MuiTypographyProps, "variant"> & {
6
- variant?: TextVariant;
7
- children?: React.ReactNode;
8
- component?: React.ElementType;
9
- };
3
+ import { RecursicaTextProps } from '@recursica/adapter-common';
10
4
  export type TextProps = RecursicaOverStyled<RecursicaTextProps>;
11
- export declare const Text: React.ForwardRefExoticComponent<(Omit<Omit<RecursicaTextProps, "style" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "bgcolor" | "color" | "zIndex" | "position" | "boxShadow" | "typography" | "fontFamily" | "fontSize" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "backgroundColor" | "sx"> & import('../../utils/filterStylingProps').ForbiddenStyles & {
12
- overStyled?: false | undefined;
13
- }, "ref"> | Omit<Omit<MuiTypographyProps, "variant"> & {
14
- variant?: TextVariant;
15
- children?: React.ReactNode;
16
- component?: React.ElementType;
17
- } & {
18
- overStyled: true;
19
- }, "ref">) & React.RefAttributes<HTMLElement>>;
5
+ export declare const Text: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLElement>>;
@@ -1,3 +1,13 @@
1
1
  import { default as React } from 'react';
2
- export type TextAreaProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const TextArea: React.FC<TextAreaProps>;
2
+ import { TextFieldProps as MuiTextareaProps } from '@mui/material';
3
+ import { ReadOnlyControlProps, RecursicaTextAreaProps as BaseRecursicaTextAreaProps } from '@recursica/adapter-common';
4
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
5
+ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
6
+ export interface RecursicaTextAreaProps extends Omit<MuiTextareaProps, "size" | "variant" | "radius" | "wrapperProps">, Pick<RecursicaFormControlWrapperProps, "assistiveText" | "assistiveWithIcon" | "formLayout" | "labelSize" | "labelAlignment" | "labelOptionalText" | "labelWithEditIcon" | "onLabelEditClick">, ReadOnlyControlProps, BaseRecursicaTextAreaProps {
7
+ }
8
+ export type TextAreaProps = RecursicaOverStyled<RecursicaTextAreaProps>;
9
+ export declare const TextArea: React.ForwardRefExoticComponent<(Omit<Omit<RecursicaTextAreaProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
10
+ overStyled?: false | undefined;
11
+ }, "ref"> | Omit<RecursicaTextAreaProps & {
12
+ overStyled: true;
13
+ }, "ref">) & React.RefAttributes<HTMLTextAreaElement>>;
@@ -1,3 +1,13 @@
1
1
  import { default as React } from 'react';
2
- export type TextFieldProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const TextField: React.FC<TextFieldProps>;
2
+ import { InputBaseProps } from '@mui/material';
3
+ import { ReadOnlyControlProps, RecursicaTextFieldProps as BaseRecursicaTextFieldProps } from '@recursica/adapter-common';
4
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
5
+ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
6
+ export interface RecursicaTextFieldProps extends Omit<InputBaseProps, "color" | "size" | "startAdornment" | "endAdornment" | "autoComplete">, Omit<React.ComponentPropsWithoutRef<"input">, keyof InputBaseProps | "size" | "color" | "style" | "className" | "id">, Pick<RecursicaFormControlWrapperProps, "label" | "error" | "required" | "id" | "assistiveText" | "assistiveWithIcon" | "formLayout" | "labelSize" | "labelAlignment" | "labelOptionalText" | "labelWithEditIcon" | "onLabelEditClick">, ReadOnlyControlProps, BaseRecursicaTextFieldProps {
7
+ }
8
+ export type TextFieldProps = RecursicaOverStyled<RecursicaTextFieldProps>;
9
+ export declare const TextField: React.ForwardRefExoticComponent<(Omit<Omit<RecursicaTextFieldProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
10
+ overStyled?: false | undefined;
11
+ }, "ref"> | Omit<RecursicaTextFieldProps & {
12
+ overStyled: true;
13
+ }, "ref">) & React.RefAttributes<HTMLInputElement>>;
@@ -1,3 +1,4 @@
1
1
  import { default as React } from 'react';
2
- export type TimePickerProps = React.HTMLAttributes<HTMLDivElement>;
2
+ import { RecursicaTimePickerProps } from '@recursica/adapter-common';
3
+ export type TimePickerProps = React.HTMLAttributes<HTMLDivElement> & RecursicaTimePickerProps;
3
4
  export declare const TimePicker: React.FC<TimePickerProps>;
@@ -1,3 +1,16 @@
1
1
  import { default as React } from 'react';
2
- export type TimelineProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Timeline: React.FC<TimelineProps>;
2
+ import { TimelineProps as MuiTimelineProps } from '@mui/lab/Timeline';
3
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
4
+ import { TimelineItem } from './TimelineItem';
5
+ import { RecursicaTimelineProps } from '@recursica/adapter-common';
6
+ /**
7
+ * Properties for the strictly-tokenized Timeline component.
8
+ * Native Mui abstract properties like `color`, `radius`, `bulletSize`, and `lineWidth`
9
+ * have been stripped out to strictly enforce the structural mappings of the Recursica UI Kit.
10
+ */
11
+ export type TimelineProps = RecursicaOverStyled<Omit<MuiTimelineProps, "color" | "radius" | "bulletSize" | "lineWidth"> & RecursicaTimelineProps>;
12
+ interface TimelineComponent extends React.ForwardRefExoticComponent<TimelineProps & React.RefAttributes<HTMLDivElement>> {
13
+ Item: typeof TimelineItem;
14
+ }
15
+ export declare const Timeline: TimelineComponent;
16
+ export {};
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ import { TimelineItemProps as MuiTimelineItemProps } from '@mui/lab/TimelineItem';
3
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
4
+ import { RecursicaTimelineItemProps } from '@recursica/adapter-common';
5
+ export type TimelineItemProps = RecursicaOverStyled<Omit<MuiTimelineItemProps, "radius" | "color" | "lineVariant"> & RecursicaTimelineItemProps>;
6
+ /**
7
+ * The individual item component for the Timeline.
8
+ *
9
+ * **Recursica Abstract:**
10
+ * The `Timeline.Item` has been extended to support a `timestamp` string natively,
11
+ * rendering it below the body content. It also accepts a `bulletVariant` to morph
12
+ * the structural dimensions of the node circle automatically.
13
+ */
14
+ export declare const TimelineItem: React.ForwardRefExoticComponent<(Omit<Omit<Omit<MuiTimelineItemProps, "color" | "radius" | "lineVariant"> & RecursicaTimelineItemProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
15
+ overStyled?: false | undefined;
16
+ }, "ref"> | Omit<Omit<MuiTimelineItemProps, "color" | "radius" | "lineVariant"> & RecursicaTimelineItemProps & {
17
+ overStyled: true;
18
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
@@ -1,18 +1,5 @@
1
1
  import { default as React } from 'react';
2
2
  import { RecursicaOverStyled } from '../../utils/filterStylingProps';
3
- import { TypographyProps as MuiTypographyProps } from '@mui/material';
4
- export type RecursicaTitleProps = Omit<MuiTypographyProps, "variant"> & {
5
- order?: 1 | 2 | 3 | 4 | 5 | 6;
6
- children?: React.ReactNode;
7
- component?: React.ElementType;
8
- };
3
+ import { RecursicaTitleProps } from '@recursica/adapter-common';
9
4
  export type TitleProps = RecursicaOverStyled<RecursicaTitleProps>;
10
- export declare const Title: React.ForwardRefExoticComponent<(Omit<Omit<RecursicaTitleProps, "style" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "bgcolor" | "color" | "zIndex" | "position" | "boxShadow" | "typography" | "fontFamily" | "fontSize" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "backgroundColor" | "sx"> & import('../../utils/filterStylingProps').ForbiddenStyles & {
11
- overStyled?: false | undefined;
12
- }, "ref"> | Omit<Omit<MuiTypographyProps, "variant"> & {
13
- order?: 1 | 2 | 3 | 4 | 5 | 6;
14
- children?: React.ReactNode;
15
- component?: React.ElementType;
16
- } & {
17
- overStyled: true;
18
- }, "ref">) & React.RefAttributes<HTMLElement>>;
5
+ export declare const Title: React.ForwardRefExoticComponent<TitleProps & React.RefAttributes<HTMLElement>>;
@@ -1,3 +1,21 @@
1
1
  import { default as React } from 'react';
2
- export type ToastProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Toast: React.FC<ToastProps>;
2
+ import { AlertProps as MuiAlertProps } from '@mui/material';
3
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
4
+ import { RecursicaToastProps as BaseRecursicaToastProps } from '@recursica/adapter-common';
5
+ export interface RecursicaToastProps extends BaseRecursicaToastProps {
6
+ withCloseButton?: boolean;
7
+ title?: React.ReactNode;
8
+ icon?: React.ReactNode;
9
+ onClose?: () => void;
10
+ }
11
+ /**
12
+ * Toast component wrapping Mui's Alert.
13
+ *
14
+ * Can be used as a standalone visual component to display a notification or message.
15
+ */
16
+ export type ToastProps = RecursicaOverStyled<Omit<MuiAlertProps, "color" | "radius" | "variant" | "onClose"> & RecursicaToastProps>;
17
+ export declare const Toast: React.ForwardRefExoticComponent<(Omit<Omit<Omit<MuiAlertProps, "color" | "variant" | "onClose" | "radius"> & RecursicaToastProps, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
18
+ overStyled?: false | undefined;
19
+ }, "ref"> | Omit<Omit<MuiAlertProps, "color" | "variant" | "onClose" | "radius"> & RecursicaToastProps & {
20
+ overStyled: true;
21
+ }, "ref">) & React.RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,28 @@
1
- import { default as React } from 'react';
2
- export type TooltipProps = React.HTMLAttributes<HTMLDivElement>;
3
- export declare const Tooltip: React.FC<TooltipProps>;
1
+ import { TooltipProps as MuiTooltipProps } from '@mui/material';
2
+ import { RecursicaOverStyled } from '../../utils/filterStylingProps';
3
+ import { RecursicaTooltipProps } from '@recursica/adapter-common';
4
+ /**
5
+ * Recursica Tooltip component wrapping Mui's Tooltip.
6
+ *
7
+ * Displays a floating label when the user hovers over or focuses a target element.
8
+ * Unlike HoverCard, Tooltip is a single component (not composable) — content is
9
+ * passed via the `label` prop, and the trigger is passed as `children`.
10
+ *
11
+ * ```tsx
12
+ * <Tooltip label="Helpful information" withBeak>
13
+ * <Button>Hover me</Button>
14
+ * </Tooltip>
15
+ * ```
16
+ *
17
+ * Static sub-components available via dot-notation:
18
+ * - `// Tooltip.Floating` — Tooltip that follows the cursor
19
+ * - `// Tooltip.Group` — Shared hover delay group for multiple tooltips
20
+ */
21
+ export type TooltipProps = RecursicaOverStyled<MuiTooltipProps & RecursicaTooltipProps>;
22
+ export declare const Tooltip: {
23
+ ({ overStyled, withBeak, label, opened, ...rest }: TooltipProps & {
24
+ label?: React.ReactNode;
25
+ opened?: boolean;
26
+ }): import("react/jsx-runtime").JSX.Element;
27
+ displayName: string;
28
+ };
@@ -1,3 +1,4 @@
1
1
  import { default as React } from 'react';
2
- export type TransferListProps = React.HTMLAttributes<HTMLDivElement>;
2
+ import { RecursicaTransferListProps } from '@recursica/adapter-common';
3
+ export type TransferListProps = React.HTMLAttributes<HTMLDivElement> & RecursicaTransferListProps;
3
4
  export declare const TransferList: React.FC<TransferListProps>;
@@ -14,7 +14,7 @@ export declare const Typography: React.ForwardRefExoticComponent<(Omit<Omit<Omit
14
14
  */
15
15
  typographyClass: string;
16
16
  component?: React.ElementType;
17
- }, "style" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "bgcolor" | "color" | "zIndex" | "position" | "boxShadow" | "typography" | "fontFamily" | "fontSize" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "backgroundColor" | "sx"> & import('../../utils/filterStylingProps').ForbiddenStyles & {
17
+ }, import('@recursica/adapter-common').BlockedStylingKeys> & import('@recursica/adapter-common').ForbiddenStyles & {
18
18
  overStyled?: false | undefined;
19
19
  }, "ref"> | Omit<Omit<MuiTypographyProps, "variant"> & {
20
20
  /**
@@ -1,18 +1 @@
1
- import { ReactNode } from 'react';
2
- /**
3
- * Enforces accessibility by strictly requiring at least one form of labeling:
4
- * either a visual \`label\`, an \`aria-label\`, or an \`aria-labelledby\`.
5
- */
6
- export type RequireAccessibleLabel<T> = T & ({
7
- label: ReactNode;
8
- "aria-label"?: string;
9
- "aria-labelledby"?: string;
10
- } | {
11
- label?: ReactNode;
12
- "aria-label": string;
13
- "aria-labelledby"?: string;
14
- } | {
15
- label?: ReactNode;
16
- "aria-label"?: string;
17
- "aria-labelledby": string;
18
- });
1
+ export { type RequireAccessibleLabel } from '@recursica/adapter-common';
@@ -22,18 +22,8 @@
22
22
  * @returns Sanitized component props safe for internal styling merging
23
23
  */
24
24
  export declare const BLOCKED_STYLING_KEYS: readonly ["className", "classes", "style", "sx", "color", "bgcolor", "backgroundColor", "typography", "fontFamily", "fontSize", "fontWeight", "lineHeight", "letterSpacing", "textAlign", "border", "borderTop", "borderBottom", "borderLeft", "borderRight", "borderColor", "borderRadius", "boxShadow", "display", "position", "zIndex"];
25
- export type BlockedStylingKeys = (typeof BLOCKED_STYLING_KEYS)[number];
26
- export type RecursicaSpacing = "rec-none" | "rec-sm" | "rec-default" | "rec-md" | "rec-lg" | "rec-xl" | "rec-2xl";
27
- export type RecursicaSize = "small" | "default" | "large";
25
+ export { type RecursicaSpacing, type RecursicaSize, type RecursicaOverStyled, type BlockedStylingKeys, type ForbiddenStyles, } from '@recursica/adapter-common';
28
26
  export declare const SPACING_MAP: Record<string, string>;
29
- export type ForbiddenStyles = {
30
- [K in BlockedStylingKeys]?: never;
31
- };
32
27
  export type OmitSx<T> = Omit<T, "sx">;
33
28
  export declare function filterSxProp<T extends Record<string, unknown>>(props: T): Omit<T, "sx">;
34
- export type RecursicaOverStyled<T> = (Omit<T, BlockedStylingKeys> & ForbiddenStyles & {
35
- overStyled?: false | undefined;
36
- }) | (T & {
37
- overStyled: true;
38
- });
39
29
  export declare function filterStylingProps<T extends Record<string, unknown>>(props: T, overStyled?: boolean): Partial<T>;
package/llms.txt ADDED
@@ -0,0 +1,16 @@
1
+ # @recursica/mui-adapter
2
+
3
+ > Reusable UI components for Recursica applications based on Material UI (MUI) v7.
4
+
5
+ This adapter converts Recursica design tokens into MUI-specific themes and components.
6
+
7
+ ## Usage Guidelines
8
+
9
+ - Relies on `@mui/material`, `@emotion/react`, and `@emotion/styled` peer dependencies.
10
+ - When building UI in consumer applications, prioritize using components exported by this package to adhere to the Recursica design system.
11
+
12
+ ## Documentation
13
+
14
+ - [USAGE](USAGE.md): Detailed usage instructions.
15
+ - [ARCHITECTURE](ARCHITECTURE.md): Package architecture and dependencies.
16
+ - [README](README.md)