@recursica/mui-adapter 0.39.0 → 0.39.2
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.
- package/CHANGELOG.md +26 -0
- package/dist/index.d.ts +42 -11
- package/dist/mui-adapter.cjs +64 -64
- package/dist/mui-adapter.cjs.map +1 -1
- package/dist/mui-adapter.css +1 -1
- package/dist/mui-adapter.js +6702 -6501
- package/dist/mui-adapter.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Accordion/ACCORDION_IMPLEMENTATION_NOTES.md +44 -0
- package/src/components/Accordion/Accordion.module.css +15 -1
- package/src/components/Accordion/Accordion.stories.tsx +0 -21
- package/src/components/AssistiveElement/AssistiveElement.stories.tsx +3 -9
- package/src/components/AutoComplete/AutoComplete.module.css +15 -0
- package/src/components/AutoComplete/AutoComplete.tsx +8 -0
- package/src/components/AutoComplete/IMPLEMENTATION_NOTES.md +15 -0
- package/src/components/Avatar/Avatar.stories.tsx +0 -15
- package/src/components/Breadcrumb/BREADCRUMB_IMPLEMENTATION_NOTES.md +51 -0
- package/src/components/Breadcrumb/Breadcrumb.module.css +20 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +55 -5
- package/src/components/Breadcrumb/Breadcrumb.tsx +17 -3
- package/src/components/Button/BUTTON_IMPLEMENTATION_NOTES.md +35 -1
- package/src/components/Button/Button.module.css +19 -0
- package/src/components/Button/Button.tsx +13 -6
- package/src/components/Dropdown/DROPDOWN_IMPLEMENTATION_NOTES.md +25 -0
- package/src/components/Dropdown/Dropdown.module.css +19 -0
- package/src/components/Dropdown/Dropdown.stories.tsx +2 -8
- package/src/components/Dropdown/Dropdown.tsx +6 -3
- package/src/components/FormControlLayout/FormControlLayout.stories.tsx +1 -1
- package/src/components/Grid/IMPLEMENTATION_NOTES.md +8 -0
- package/src/components/Group/Group.tsx +42 -13
- package/src/components/Label/LABEL_IMPLEMENTATION_NOTES.md +27 -0
- package/src/components/Label/Label.module.css +5 -0
- package/src/components/Label/Label.stories.tsx +1 -1
- package/src/components/Label/Label.tsx +11 -1
- package/src/components/Link/LINK_IMPLEMENTATION_NOTES.md +9 -0
- package/src/components/Link/Link.module.css +20 -0
- package/src/components/Modal/MODAL_IMPLEMENTATION_NOTES.md +19 -0
- package/src/components/Modal/Modal.module.css +24 -4
- package/src/components/NumberInput/NUMBER_INPUT_IMPLEMENTATION_NOTES.md +93 -0
- package/src/components/NumberInput/NumberInput.module.css +101 -82
- package/src/components/NumberInput/NumberInput.tsx +126 -33
- package/src/components/Pagination/IMPLEMENTATION_NOTES.md +37 -0
- package/src/components/Pagination/Pagination.module.css +9 -0
- package/src/components/Pagination/Pagination.tsx +53 -3
- package/src/components/Panel/PANEL_IMPLEMENTATION_NOTES.md +59 -0
- package/src/components/Panel/Panel.module.css +30 -8
- package/src/components/Panel/Panel.tsx +71 -15
- package/src/components/Stepper/IMPLEMENTATION_NOTES.md +62 -0
- package/src/components/Stepper/Stepper.module.css +31 -0
- package/src/components/Stepper/Stepper.stories.tsx +1 -5
- package/src/components/Switch/SWITCH_IMPLEMENTATION_NOTES.md +24 -0
- package/src/components/Switch/Switch.stories.tsx +1 -1
- package/src/components/Switch/Switch.tsx +1 -1
- package/src/components/Tabs/IMPLEMENTATION_NOTES.md +50 -0
- package/src/components/Tabs/Tabs.module.css +90 -23
- package/src/components/Text/TEXT_IMPLEMENTATION_NOTES.md +10 -0
- package/src/components/Text/Text.stories.tsx +1 -1
- package/src/components/TextArea/TEXTAREA_IMPLEMENTATION_NOTES.md +42 -0
- package/src/components/TextArea/TextArea.module.css +11 -0
- package/src/components/TimePicker/TIMEPICKER_IMPLEMENTATION_NOTES.md +14 -0
- package/src/components/TimePicker/TimePicker.module.css +10 -0
- package/src/components/Timeline/IMPLEMENTATION_NOTES.md +16 -0
- package/src/components/Timeline/Timeline.module.css +13 -0
- package/src/components/Toast/TOAST_IMPLEMENTATION_NOTES.md +37 -0
- package/src/components/Toast/Toast.module.css +17 -0
- package/src/components/Toast/Toast.tsx +4 -1
- package/src/components/Tree/IMPLEMENTATION_NOTES.md +2 -0
- package/src/components/Tree/Tree.module.css +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @recursica/mui-adapter
|
|
2
2
|
|
|
3
|
+
## 0.39.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 46b123a: Breadcrumb now marks its last child `aria-current="page"` and, if it looks interactive (has `href`/`onClick`), strips both and drops it from the tab order — best-effort, not a guarantee for custom Link components with their own internal navigation. Backed by a CSS reset (no color/underline/pointer-events) and the current item now picks up Link's font-family. New shared `markCurrentPageItem` util in adapter-common. mui-adapter's story also gets parity with mantine-adapter's: the last crumb renders as plain text, not a `Link`.
|
|
8
|
+
- 39de7b2: mui-adapter: Dropdown now renders its `placeholder` prop and gains a matching `.placeholder` style; Autocomplete's open menu now has the same input-to-menu gap as mantine; TimePicker's leading icon is no longer offset too far right.
|
|
9
|
+
mantine-adapter: DatePicker's read-only value is now formatted via `valueFormat` instead of a raw `Date.toString()`; TimePicker's leading icon no longer overlaps the field text.
|
|
10
|
+
- 46b123a: Link now replaces the browser's native focus outline with the recursica focus ring (`--recursica_brand_states_focus_*`), matching Button/every other interactive component instead of falling back to the browser default. Fixes the same incorrect ring on Breadcrumb, since its items are typically Links.
|
|
11
|
+
- 39de7b2: Fix Accordion chevron not rotating on expand, Modal centering instead of anchoring near top, and Toast showing a default icon it shouldn't. Add missing Accordion LayerOne story and exclude the intentional Grid span/size naming divergence from story parity. Fix NumberInput's default MUI focus ring/non-numeric input/icon spacing-color/height/border-radius, and TextArea's oversized autosize height.
|
|
12
|
+
- 39de7b2: mui-adapter: Stepper's connector gap, description content, and button spacing now match mantine; Stepper vertical spacing now matches mantine; Timeline's connector now reaches the next bullet; Tree's chevron-to-label gap now uses the right token; Pagination is now fully wired up (circle size/colors/outline, chevron colors/hover, ripple removed, ellipsis centering, text labels).
|
|
13
|
+
mantine-adapter: Stepper's completed/current label and description colors now apply (were silently falling back to Mantine's own default gray/black).
|
|
14
|
+
- 39de7b2: mui-adapter: Switch's read-only label and static-variations spacing now match mantine; Label's right-alignment and optional-text parentheses now work; Button's loading state shows only a centered loader (no label); Text's static-variations spacing matches mantine; Tabs' `inverted` variant now actually renders the tab list below the content.
|
|
15
|
+
mantine-adapter: Button's loader color now matches its label text color; Tabs' `inverted` variant now actually renders the tab list below the content; Grid gains a `ResponsiveSizes` story mirroring mui-adapter's.
|
|
16
|
+
- Updated dependencies [46b123a]
|
|
17
|
+
- @recursica/adapter-common@0.28.2
|
|
18
|
+
|
|
19
|
+
## 0.39.1
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- a104e8a: Removed `searchable` from `Dropdown`'s shared contract — not a supported feature (that's `AutoComplete`'s job). mantine-adapter now strips it at runtime like its other unsupported native props; mui-adapter never wired it up.
|
|
24
|
+
- a104e8a: Fixed `Panel`'s `wrapHeaderText` default (was `false`, contract documents `true`) in both adapters.
|
|
25
|
+
- Updated dependencies [a104e8a]
|
|
26
|
+
- Updated dependencies [a104e8a]
|
|
27
|
+
- @recursica/adapter-common@0.28.1
|
|
28
|
+
|
|
3
29
|
## 0.39.0
|
|
4
30
|
|
|
5
31
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ import { MenuProps as MenuProps_2 } from '@mui/material';
|
|
|
41
41
|
import { PaginationProps as PaginationProps_2 } from '@mui/material';
|
|
42
42
|
import { RadioGroupProps as RadioGroupProps_2 } from '@mui/material';
|
|
43
43
|
import { RadioProps } from '@mui/material';
|
|
44
|
+
import { ReactNode } from 'react';
|
|
44
45
|
import { RefAttributes } from 'react';
|
|
45
46
|
import { SelectProps } from '@mui/material';
|
|
46
47
|
import { SliderProps } from '@mui/material';
|
|
@@ -275,6 +276,14 @@ export declare type BlockedStylingKeys = "className" | "classNames" | "classes"
|
|
|
275
276
|
|
|
276
277
|
export declare const Breadcrumb: typeof rawComponents.Breadcrumb;
|
|
277
278
|
|
|
279
|
+
/**
|
|
280
|
+
* The last child should always be plain, non-interactive text (e.g. a `<span>`) — it represents
|
|
281
|
+
* the current page and shouldn't be a link. Breadcrumb tries to correct for a Link/anchor passed
|
|
282
|
+
* there anyway via `markCurrentPageItem` (aria-current, stripped href/onClick, CSS reset in
|
|
283
|
+
* Breadcrumb.module.css), but that's a best-effort safety net, not a guarantee — it can't stop a
|
|
284
|
+
* custom Link component (e.g. a router Link) that navigates from its own internal handler. See
|
|
285
|
+
* BREADCRUMB_IMPLEMENTATION_NOTES.md.
|
|
286
|
+
*/
|
|
278
287
|
declare const Breadcrumb_2: ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<Omit<BreadcrumbsProps, "variant" | "size"> & RecursicaBreadcrumbProps>, BlockedStylingKeys> & ForbiddenStyles & {
|
|
279
288
|
overStyled?: false | undefined;
|
|
280
289
|
}, "ref"> | Omit<Omit<Omit<BreadcrumbsProps, "variant" | "size"> & RecursicaBreadcrumbProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap" | "gutter" | "spacing"> & {
|
|
@@ -794,6 +803,18 @@ declare const Loader_2: default_2.ForwardRefExoticComponent<LoaderProps & defaul
|
|
|
794
803
|
|
|
795
804
|
declare type LoaderProps = RecursicaOverStyled<default_2.HTMLAttributes<HTMLSpanElement> & RecursicaLoaderProps>;
|
|
796
805
|
|
|
806
|
+
/**
|
|
807
|
+
* Marks the last Breadcrumb child as the current page: adds `aria-current="page"`, and — if the
|
|
808
|
+
* element looks interactive (has `href` or `onClick`) — strips those props and sets `tabIndex={-1}`
|
|
809
|
+
* so it drops out of the tab order.
|
|
810
|
+
*
|
|
811
|
+
* This is best-effort, not a guarantee. `cloneElement` can only override props the element
|
|
812
|
+
* actually reads. A custom Link component (e.g. React Router's) that drives navigation from its
|
|
813
|
+
* own internal handler rather than a passed-through `onClick` will keep navigating regardless.
|
|
814
|
+
* The last crumb should really just be plain text — see BREADCRUMB_IMPLEMENTATION_NOTES.md.
|
|
815
|
+
*/
|
|
816
|
+
export declare function markCurrentPageItem(children: ReactNode): ReactNode;
|
|
817
|
+
|
|
797
818
|
export declare const Menu: typeof rawComponents.Menu;
|
|
798
819
|
|
|
799
820
|
declare const Menu_2: ForwardRefExoticComponent<(Omit<Omit<WithRecursicaSpacing<MenuProps_2 & RecursicaMenuProps>, BlockedStylingKeys> & ForbiddenStyles & {
|
|
@@ -1108,7 +1129,7 @@ declare const Panel_2: PanelComponent;
|
|
|
1108
1129
|
* - `Panel.Stack` — Stacked drawer context
|
|
1109
1130
|
*/
|
|
1110
1131
|
declare const PanelBase: {
|
|
1111
|
-
({ overStyled, placement, keepMounted, wrapHeaderText, opened, ...rest }: PanelProps): JSX.Element;
|
|
1132
|
+
({ overStyled, placement, keepMounted, wrapHeaderText, opened, title, withOverlay, withCloseButton, onClose, children, ...rest }: PanelProps): JSX.Element;
|
|
1112
1133
|
displayName: string;
|
|
1113
1134
|
};
|
|
1114
1135
|
|
|
@@ -1525,8 +1546,11 @@ export declare interface RecursicaAccordionItemProps {
|
|
|
1525
1546
|
leftIcon?: default_2.ReactNode;
|
|
1526
1547
|
/** Toggle visibility of the divider below the item */
|
|
1527
1548
|
divider?: boolean;
|
|
1528
|
-
/** Unique value identifier for this item
|
|
1529
|
-
|
|
1549
|
+
/** Unique value identifier for this item. Required — omitting it on multiple items collapses
|
|
1550
|
+
* them to the same identity and they toggle together (see beam-adapter's
|
|
1551
|
+
* docs/OPEN_DECISIONS.md #23b). Was optional in the type until 2026-08-29 even though every
|
|
1552
|
+
* real consumer already supplied it. */
|
|
1553
|
+
value: string;
|
|
1530
1554
|
/** Disables interaction with this item — it can't be expanded or collapsed, and is dimmed */
|
|
1531
1555
|
disabled?: boolean;
|
|
1532
1556
|
}
|
|
@@ -1801,8 +1825,6 @@ declare interface RecursicaDropdownProps_2 {
|
|
|
1801
1825
|
* selected display text — stays a real string (a whole subtree can't be matched/written),
|
|
1802
1826
|
* unlike the `ReactNode` this was previously typed as. Falls back to `value` when omitted. */
|
|
1803
1827
|
data?: RecursicaComboboxData;
|
|
1804
|
-
/** Enable autocomplete search functionality */
|
|
1805
|
-
searchable?: boolean;
|
|
1806
1828
|
/** Show input clear option button */
|
|
1807
1829
|
clearable?: boolean;
|
|
1808
1830
|
/** Marks field with visual asterisk */
|
|
@@ -2009,8 +2031,9 @@ declare interface RecursicaFileUploadProps_2 extends Omit<default_2.HTMLAttribut
|
|
|
2009
2031
|
export declare interface RecursicaFormControlLayoutProps {
|
|
2010
2032
|
/** Layout structure direction */
|
|
2011
2033
|
formLayout?: "stacked" | "side-by-side";
|
|
2012
|
-
/** Label sizing constraint
|
|
2013
|
-
|
|
2034
|
+
/** Label sizing constraint. Only `small`/`default` are defined by Recursica's Label tokens —
|
|
2035
|
+
* `md` was never a real design size and has been removed. */
|
|
2036
|
+
labelSize?: "small" | "default";
|
|
2014
2037
|
/** Optional left section element (usually Label) */
|
|
2015
2038
|
leftSection?: default_2.ReactNode;
|
|
2016
2039
|
/** Main wrapper bounding maximum width */
|
|
@@ -2089,8 +2112,10 @@ export declare interface RecursicaHoverCardProps {
|
|
|
2089
2112
|
* Base properties for Recursica label indicators.
|
|
2090
2113
|
*/
|
|
2091
2114
|
export declare interface RecursicaLabelProps {
|
|
2092
|
-
/** Specifies the sizing metrics natively mapping the Label boundaries.
|
|
2093
|
-
|
|
2115
|
+
/** Specifies the sizing metrics natively mapping the Label boundaries. Only `default`/`small`
|
|
2116
|
+
* are defined by Recursica's Label tokens — `md` was never a real design size (no adapter had
|
|
2117
|
+
* a width rule for it) and has been removed; see docs/OPEN_DECISIONS.md #41 in beam-adapter. */
|
|
2118
|
+
labelSize?: "default" | "small";
|
|
2094
2119
|
/**
|
|
2095
2120
|
* Overall alignment directive for the label strings natively forcing Left/Right justification.
|
|
2096
2121
|
* Not renamed to Forge's `labelAlign`: our own vocabulary, not either kit's native term.
|
|
@@ -2183,7 +2208,7 @@ export declare interface RecursicaModalProps {
|
|
|
2183
2208
|
title?: default_2.ReactNode;
|
|
2184
2209
|
}
|
|
2185
2210
|
|
|
2186
|
-
export declare interface RecursicaNumberInputProps extends Omit<
|
|
2211
|
+
export declare interface RecursicaNumberInputProps extends Omit<InputBaseProps, "color" | "size" | "startAdornment" | "endAdornment" | "autoComplete" | "error">, Pick<RecursicaFormControlWrapperProps, "label" | "error" | "required" | "id" | "assistiveText" | "assistiveWithIcon" | "formLayout" | "labelSize" | "labelAlignment" | "labelOptionalText" | "labelWithEditIcon" | "onLabelEditClick">, ReadOnlyControlProps, RecursicaNumberInputProps_2 {
|
|
2187
2212
|
}
|
|
2188
2213
|
|
|
2189
2214
|
/**
|
|
@@ -2246,7 +2271,13 @@ export declare interface RecursicaPanelProps {
|
|
|
2246
2271
|
/**
|
|
2247
2272
|
* Recursica Panel root props. Extends Mui Drawer.
|
|
2248
2273
|
*/
|
|
2249
|
-
declare interface RecursicaPanelProps_2 extends Omit<DrawerProps, "classes" | "position" | "style" | "anchor" | "open">, RecursicaPanelProps {
|
|
2274
|
+
declare interface RecursicaPanelProps_2 extends Omit<DrawerProps, "classes" | "position" | "style" | "anchor" | "open" | "title">, RecursicaPanelProps {
|
|
2275
|
+
/** Panel header title label. */
|
|
2276
|
+
title?: ReactNode;
|
|
2277
|
+
/** Whether to display a background overlay. Default true. */
|
|
2278
|
+
withOverlay?: boolean;
|
|
2279
|
+
/** Whether to display the close button in the header. Default true. */
|
|
2280
|
+
withCloseButton?: boolean;
|
|
2250
2281
|
}
|
|
2251
2282
|
|
|
2252
2283
|
/**
|