@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/CHANGELOG.md +8 -0
- package/dist/mantine-adapter.cjs +2 -2
- package/dist/mantine-adapter.cjs.map +1 -1
- package/dist/mantine-adapter.js +2 -2
- package/dist/mantine-adapter.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Checkbox/CHECKBOX_IMPLEMENTATION_NOTES.md +13 -0
- package/src/components/Checkbox/CheckboxGroup.tsx +5 -1
- package/src/components/Chip/Chip.stories.tsx +28 -0
- package/src/components/Radio/RADIO_IMPLEMENTATION_NOTES.md +12 -0
- package/src/components/Radio/RadioGroup.tsx +5 -1
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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>.
|