@recursica/mantine-adapter 0.55.0 → 0.55.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/index.d.ts +34 -9
  3. package/dist/mantine-adapter.cjs +2 -2
  4. package/dist/mantine-adapter.cjs.map +1 -1
  5. package/dist/mantine-adapter.css +1 -1
  6. package/dist/mantine-adapter.js +1767 -1728
  7. package/dist/mantine-adapter.js.map +1 -1
  8. package/package.json +2 -2
  9. package/src/components/Accordion/Accordion.stories.tsx +0 -24
  10. package/src/components/AssistiveElement/AssistiveElement.stories.tsx +3 -9
  11. package/src/components/Avatar/Avatar.stories.tsx +0 -15
  12. package/src/components/Breadcrumb/BREADCRUMB_IMPLEMENTATION_NOTES.md +33 -0
  13. package/src/components/Breadcrumb/Breadcrumb.module.css +20 -0
  14. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +55 -5
  15. package/src/components/Breadcrumb/Breadcrumb.tsx +17 -3
  16. package/src/components/Breadcrumb/markCurrentPageItem.test.ts +49 -0
  17. package/src/components/Button/Button.module.css +16 -0
  18. package/src/components/Button/Button.tsx +14 -1
  19. package/src/components/Button/IMPLEMENTATION_NOTES.md +31 -5
  20. package/src/components/DatePicker/DATEPICKER_IMPLEMENTATION_NOTES.md +2 -1
  21. package/src/components/DatePicker/DatePicker.tsx +22 -8
  22. package/src/components/Dropdown/Dropdown.stories.tsx +2 -8
  23. package/src/components/Dropdown/Dropdown.tsx +2 -1
  24. package/src/components/FormControlLayout/FormControlLayout.stories.tsx +1 -1
  25. package/src/components/Grid/GRID_IMPLEMENTATION_NOTES.md +9 -0
  26. package/src/components/Grid/Grid.stories.tsx +24 -0
  27. package/src/components/Label/Label.stories.tsx +1 -1
  28. package/src/components/Link/IMPLEMENTATION_NOTES.md +1 -1
  29. package/src/components/Link/Link.module.css +20 -0
  30. package/src/components/NumberInput/NUMBER_INPUT_IMPLEMENTATION_NOTES.md +6 -0
  31. package/src/components/NumberInput/NumberInput.module.css +11 -0
  32. package/src/components/Panel/Panel.tsx +1 -1
  33. package/src/components/Stepper/IMPLEMENTATION_NOTES.md +28 -0
  34. package/src/components/Stepper/Stepper.module.css +6 -6
  35. package/src/components/Tabs/IMPLEMENTATION_NOTES.md +27 -0
  36. package/src/components/Tabs/Tabs.module.css +30 -9
  37. package/src/components/TimePicker/TIMEPICKER_IMPLEMENTATION_NOTES.md +31 -0
  38. package/src/components/TimePicker/TimePicker.module.css +30 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @recursica/mantine-adapter
2
2
 
3
+ ## 0.55.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: Breadcrumb story: last crumb is now plain text instead of a `Link` — it represents the current page and shouldn't be clickable.
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.55.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.55.0
4
30
 
5
31
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -71,6 +71,7 @@ import { PopoverProps as PopoverProps_2 } from '@mantine/core';
71
71
  import { PopoverTargetProps as PopoverTargetProps_2 } from '@mantine/core';
72
72
  import { RadioGroupProps as RadioGroupProps_2 } from '@mantine/core';
73
73
  import { RadioProps } from '@mantine/core';
74
+ import { ReactNode } from 'react';
74
75
  import { RefAttributes } from 'react';
75
76
  import { SegmentedControlProps as SegmentedControlProps_2 } from '@mantine/core';
76
77
  import { SelectProps } from '@mantine/core';
@@ -196,6 +197,14 @@ export declare type BlockedStylingKeys = "className" | "classNames" | "classes"
196
197
 
197
198
  export declare const Breadcrumb: typeof rawComponents.Breadcrumb;
198
199
 
200
+ /**
201
+ * The last child should always be plain, non-interactive text (e.g. a `<span>`) — it represents
202
+ * the current page and shouldn't be a link. Breadcrumb tries to correct for a Link/anchor passed
203
+ * there anyway via `markCurrentPageItem` (aria-current, stripped href/onClick, CSS reset in
204
+ * Breadcrumb.module.css), but that's a best-effort safety net, not a guarantee — it can't stop a
205
+ * custom Link component (e.g. a router Link) that navigates from its own internal handler. See
206
+ * BREADCRUMB_IMPLEMENTATION_NOTES.md.
207
+ */
199
208
  declare const Breadcrumb_2: ForwardRefExoticComponent<BreadcrumbProps & RefAttributes<HTMLDivElement>>;
200
209
 
201
210
  declare type BreadcrumbProps = RecursicaOverStyled<Omit<BreadcrumbsProps, "variant" | "size"> & RecursicaBreadcrumbProps>;
@@ -883,6 +892,18 @@ declare const Loader_2: ForwardRefExoticComponent<LoaderProps & RefAttributes<HT
883
892
 
884
893
  declare type LoaderProps = RecursicaOverStyled<Omit<LoaderProps_2, "variant" | "size" | "type"> & RecursicaLoaderProps>;
885
894
 
895
+ /**
896
+ * Marks the last Breadcrumb child as the current page: adds `aria-current="page"`, and — if the
897
+ * element looks interactive (has `href` or `onClick`) — strips those props and sets `tabIndex={-1}`
898
+ * so it drops out of the tab order.
899
+ *
900
+ * This is best-effort, not a guarantee. `cloneElement` can only override props the element
901
+ * actually reads. A custom Link component (e.g. React Router's) that drives navigation from its
902
+ * own internal handler rather than a passed-through `onClick` will keep navigating regardless.
903
+ * The last crumb should really just be plain text — see BREADCRUMB_IMPLEMENTATION_NOTES.md.
904
+ */
905
+ export declare function markCurrentPageItem(children: ReactNode): ReactNode;
906
+
886
907
  export declare const Menu: typeof rawComponents.Menu;
887
908
 
888
909
  declare const Menu_2: MenuComponent;
@@ -1727,8 +1748,11 @@ export declare interface RecursicaAccordionItemProps {
1727
1748
  leftIcon?: default_2.ReactNode;
1728
1749
  /** Toggle visibility of the divider below the item */
1729
1750
  divider?: boolean;
1730
- /** Unique value identifier for this item */
1731
- value?: string;
1751
+ /** Unique value identifier for this item. Required — omitting it on multiple items collapses
1752
+ * them to the same identity and they toggle together (see beam-adapter's
1753
+ * docs/OPEN_DECISIONS.md #23b). Was optional in the type until 2026-08-29 even though every
1754
+ * real consumer already supplied it. */
1755
+ value: string;
1732
1756
  /** Disables interaction with this item — it can't be expanded or collapsed, and is dimmed */
1733
1757
  disabled?: boolean;
1734
1758
  }
@@ -1978,7 +2002,7 @@ export declare interface RecursicaDatePickerProps extends Omit<DatePickerInputPr
1978
2002
  declare interface RecursicaDatePickerProps_2 {
1979
2003
  }
1980
2004
 
1981
- export declare interface RecursicaDropdownProps extends Omit<SelectProps, "size" | "variant" | "radius" | "wrapperProps" | "data">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth">, ReadOnlyControlProps, RecursicaDropdownProps_2 {
2005
+ export declare interface RecursicaDropdownProps extends Omit<SelectProps, "size" | "variant" | "radius" | "wrapperProps" | "data" | "searchable">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth">, ReadOnlyControlProps, RecursicaDropdownProps_2 {
1982
2006
  }
1983
2007
 
1984
2008
  /**
@@ -1991,8 +2015,6 @@ declare interface RecursicaDropdownProps_2 {
1991
2015
  * selected display text — stays a real string (a whole subtree can't be matched/written),
1992
2016
  * unlike the `ReactNode` this was previously typed as. Falls back to `value` when omitted. */
1993
2017
  data?: RecursicaComboboxData;
1994
- /** Enable autocomplete search functionality */
1995
- searchable?: boolean;
1996
2018
  /** Show input clear option button */
1997
2019
  clearable?: boolean;
1998
2020
  /** Marks field with visual asterisk */
@@ -2195,8 +2217,9 @@ declare interface RecursicaFileUploadProps_2 extends Omit<default_2.HTMLAttribut
2195
2217
  export declare interface RecursicaFormControlLayoutProps {
2196
2218
  /** Layout structure direction */
2197
2219
  formLayout?: "stacked" | "side-by-side";
2198
- /** Label sizing constraint */
2199
- labelSize?: "small" | "default" | "md";
2220
+ /** Label sizing constraint. Only `small`/`default` are defined by Recursica's Label tokens —
2221
+ * `md` was never a real design size and has been removed. */
2222
+ labelSize?: "small" | "default";
2200
2223
  /** Optional left section element (usually Label) */
2201
2224
  leftSection?: default_2.ReactNode;
2202
2225
  /** Main wrapper bounding maximum width */
@@ -2268,8 +2291,10 @@ export declare interface RecursicaHoverCardProps {
2268
2291
  * Base properties for Recursica label indicators.
2269
2292
  */
2270
2293
  export declare interface RecursicaLabelProps {
2271
- /** Specifies the sizing metrics natively mapping the Label boundaries. */
2272
- labelSize?: "default" | "small" | "md";
2294
+ /** Specifies the sizing metrics natively mapping the Label boundaries. Only `default`/`small`
2295
+ * are defined by Recursica's Label tokens — `md` was never a real design size (no adapter had
2296
+ * a width rule for it) and has been removed; see docs/OPEN_DECISIONS.md #41 in beam-adapter. */
2297
+ labelSize?: "default" | "small";
2273
2298
  /**
2274
2299
  * Overall alignment directive for the label strings natively forcing Left/Right justification.
2275
2300
  * Not renamed to Forge's `labelAlign`: our own vocabulary, not either kit's native term.