@recursica/mantine-adapter 0.55.2 → 0.55.3

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/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "url": "git+https://github.com/borderux/recursica.git",
14
14
  "directory": "packages/mantine-adapter"
15
15
  },
16
- "version": "0.55.2",
16
+ "version": "0.55.3",
17
17
  "type": "module",
18
18
  "main": "./dist/mantine-adapter.cjs",
19
19
  "module": "./dist/mantine-adapter.js",
@@ -103,7 +103,7 @@
103
103
  "vitest": "^3.2.4"
104
104
  },
105
105
  "dependencies": {
106
- "@recursica/adapter-common": "^0.28.2"
106
+ "@recursica/adapter-common": "^0.29.0"
107
107
  },
108
108
  "peerDependencies": {
109
109
  "@mantine/core": "^8.0.0",
@@ -23,3 +23,16 @@ This calculation ensures that the optical center of the `.inner` checkmark vecto
23
23
  ### Checkbox.Group Overrides
24
24
 
25
25
  To decouple `<CheckboxGroup>` away from `<Input.Wrapper>`, we explicitly extract the raw array execution mapped correctly against our identical `RecursicaFormControlWrapperProps` schema structurally!
26
+
27
+ ### `Checkbox.Group` `controlMaxWidth` bug (fixed 2026-08-31)
28
+
29
+ `CheckboxGroup` was passing `--recursica_ui-kit_components_checkbox-item_properties_max-width`
30
+ (400px) as its own `controlMaxWidth`. That token caps a single checkbox+its own label — it's
31
+ already applied per-item via `.root` in `Checkbox.module.css`. Passed as the _group's_
32
+ `controlMaxWidth`, `FormControlLayout` applies it to the whole root row (`max-width` on
33
+ `.root`, which contains both `leftSection`/label and `rightSection`/items), so in side-by-side
34
+ layout the group's own label got squeezed into that same 400px alongside the checkboxes. There
35
+ is no group-level max-width token in the schema (`checkbox-group_variants_layouts_*` only
36
+ covers gutter/margin/padding) — fixed by leaving `controlMaxWidth` `undefined`, matching
37
+ `SwitchGroup`'s existing pattern. Same bug existed in `RadioGroup` (`radio-button-item_
38
+ properties_max-width`), fixed the same way.
@@ -89,7 +89,11 @@ export const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(
89
89
  <WithReadOnlyWrapper
90
90
  className={className}
91
91
  style={style as React.CSSProperties}
92
- controlMaxWidth="var(--recursica_ui-kit_components_checkbox-item_properties_max-width)"
92
+ // Not the group's own row width: this token caps a single checkbox+its own label
93
+ // (applied per-item in Checkbox.module.css's `.root`). The group has no max-width token
94
+ // of its own in the schema, so this must stay undefined or FormControlLayout caps the
95
+ // whole label+items row (including the group's own label) at 400px in side-by-side layout.
96
+ controlMaxWidth={undefined}
93
97
  controlMinWidth={undefined}
94
98
  overStyled={overStyled as true}
95
99
  labelElement="div" // Strictly override. ARIA grouping prohibits interactive checkboxes nested natively inside <label>.
@@ -124,3 +124,31 @@ export const WithLeadingIconSelected: Story = {
124
124
  },
125
125
  render: (args: ChipStoryProps) => <Chip {...args} onChange={() => {}} />,
126
126
  };
127
+
128
+ // A label long enough to exceed the chip's own max-width token — should stay a single line and
129
+ // truncate with an ellipsis, never wrap, even with both a leading icon and a dismiss button
130
+ // competing for space.
131
+ export const MaxWidthEllipsis: Story = {
132
+ args: {
133
+ children:
134
+ "A very long chip label that exceeds the maximum width and should truncate with an ellipsis",
135
+ checked: false,
136
+ icon: (
137
+ <svg
138
+ xmlns="http://www.w3.org/2000/svg"
139
+ viewBox="0 0 24 24"
140
+ fill="none"
141
+ stroke="currentColor"
142
+ strokeWidth="2"
143
+ strokeLinecap="round"
144
+ strokeLinejoin="round"
145
+ >
146
+ <circle cx="12" cy="12" r="10"></circle>
147
+ <path d="M12 8v4"></path>
148
+ <path d="M12 16h.01"></path>
149
+ </svg>
150
+ ),
151
+ onDelete: () => console.log("Removal Action Triggered"),
152
+ },
153
+ render: (args: ChipStoryProps) => <Chip {...args} />,
154
+ };
@@ -0,0 +1,12 @@
1
+ # Radio Implementation Notes
2
+
3
+ ### `Radio.Group` `controlMaxWidth` bug (fixed 2026-08-31)
4
+
5
+ `RadioGroup` was passing `--recursica_ui-kit_components_radio-button-item_properties_max-width`
6
+ (400px) as its own `controlMaxWidth`. That token caps a single radio+its own label — it's
7
+ already applied per-item via `.root` in `Radio.module.css`. Passed as the _group's_
8
+ `controlMaxWidth`, `FormControlLayout` applies it to the whole root row, so in side-by-side
9
+ layout the group's own label got squeezed into that same 400px alongside the radios. There is
10
+ no group-level max-width token in the schema — fixed by leaving `controlMaxWidth` `undefined`,
11
+ matching `SwitchGroup`'s existing pattern. Same bug existed in `CheckboxGroup`, fixed the same
12
+ way — see `Checkbox/CHECKBOX_IMPLEMENTATION_NOTES.md`.
@@ -78,7 +78,11 @@ export const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(
78
78
  <WithReadOnlyWrapper
79
79
  className={className}
80
80
  style={style as React.CSSProperties}
81
- controlMaxWidth="var(--recursica_ui-kit_components_radio-button-item_properties_max-width)"
81
+ // Not the group's own row width: this token caps a single radio+its own label (applied
82
+ // per-item in Radio.module.css's `.root`). The group has no max-width token of its own
83
+ // in the schema, so this must stay undefined or FormControlLayout caps the whole
84
+ // label+items row (including the group's own label) at 400px in side-by-side layout.
85
+ controlMaxWidth={undefined}
82
86
  controlMinWidth={undefined}
83
87
  overStyled={overStyled as true}
84
88
  labelElement="div" // Strictly override. ARIA grouping prohibits interactive radios nested natively inside <label>.