@@ -133,7 +133,7 @@ const Root = forwardRef<
133133 ? [
134134 "overflow-hidden" ,
135135 // Focus state must come AFTER inputVariants to override ring-kumo-line
136- "focus-within:ring-kumo-focus" ,
136+ "focus-within:ring-kumo-focus/50 focus-within:ring-[1.5px] " ,
137137 ]
138138 : // isolate creates a new stacking context so z-index in children doesn't leak out
139139 "isolate overflow-visible ring-0 shadow-none" ,
@@ -200,29 +200,30 @@ const Root = forwardRef<
200200 // so the zone matches adjacent individual-mode buttons exactly.
201201 "ring-0 shadow-none" ,
202202 "border border-kumo-line" ,
203- "focus-within:ring-1 focus-within:ring-kumo-focus" ,
204- // Collapse double borders between zone and adjacent individual-mode button
205- "not-first:border-l-0" ,
206- // Inherit border-radius from the outer container on outer edges only;
207- // inner edges are flat so they butt cleanly against sibling buttons
203+ "focus-within:border-kumo-focus/50" ,
204+ // z-[2] lifts above adjacent button's -ml-px overlap so focus border shows
205+ "focus-within:z-2" ,
206+ // Negative margin (not border-l-0) so the border is still paintable on focus
207+ "not-first:-ml-px" ,
208+ // Outer edges inherit radius; inner edges are flat against sibling buttons
208209 "first:rounded-l-[inherit] last:rounded-r-[inherit] rounded-none" ,
209210 // Size-specific padding adjustments when addons or suffixes are present
210211 INPUT_GROUP_HAS_CLASSES [ size ] ,
211212 // When a suffix is present, let the input shrink to its content width
212- "has-[[ data-slot=input-group-suffix]] :[&_input]:[ field-sizing: content] " ,
213- "has-[[ data-slot=input-group-suffix] ]:[&_input]:max-w-full" ,
214- "has-[[ data-slot=input-group-suffix] ]:[&_input]:grow-0" ,
215- "has-[[ data-slot=input-group-suffix] ]:[&_input]:pr-0" ,
213+ "has-data-[ slot=input-group-suffix]:[&_input]:field-sizing- content" ,
214+ "has-data-[ slot=input-group-suffix]:[&_input]:max-w-full" ,
215+ "has-data-[ slot=input-group-suffix]:[&_input]:grow-0" ,
216+ "has-data-[ slot=input-group-suffix]:[&_input]:pr-0" ,
216217 ) }
217218 >
218- { /* When label exists, an invisible <label> overlay enables click-to-focus
219- inside the container zone without nesting visible <label> elements */ }
219+ { /* When label exists, an invisible <label> overlay enables click-to-focus inside the container zone without nesting visible <label> elements */ }
220220 { label && (
221- // eslint-disable-next-line jsx-a11y/label-has-associated-control -- invisible overlay for click-to-focus; the visible Field label handles a11y
221+ // Invisible overlay for click-to-focus; the visible Field label handles a11y
222+ // eslint-disable-next-line jsx-a11y/label-has-associated-control
222223 < label
223224 htmlFor = { inputId }
224225 // Positioned behind children (z-0) so it catches clicks on empty space
225- className = "absolute inset-0 z-0 cursor-text ! mb-0"
226+ className = "absolute inset-0 z-0 cursor-text mb-0! "
226227 aria-hidden = "true"
227228 />
228229 ) }
@@ -234,9 +235,7 @@ const Root = forwardRef<
234235 </ >
235236 ) ;
236237
237- // Hybrid always uses a <div> container (never <label>) because
238- // individual-zone buttons are siblings — wrapping them in a <label>
239- // would be semantically incorrect.
238+ // Hybrid always uses a <div> container (never <label>) because individual-zone buttons are siblings — wrapping them in a <label> would be semantically incorrect.
240239 const hybridContainer = (
241240 < InputGroupContext . Provider value = { contextValue } >
242241 < div
@@ -272,8 +271,7 @@ const Root = forwardRef<
272271 const useLabelContainer = ! label && focusMode === "container" ;
273272 const container = (
274273 < InputGroupContext . Provider value = { contextValue } >
275- { /* When label is set, use <div> to avoid nested <label> (Field provides one).
276- An invisible <label> overlay handles click-to-focus on empty space. */ }
274+ { /* When label is set, use <div> to avoid nested <label> (Field provides one). An invisible <label> overlay handles click-to-focus on empty space. */ }
277275 { label ? (
278276 < div
279277 ref = { forwardedRef as React . Ref < HTMLDivElement > }
@@ -285,7 +283,7 @@ const Root = forwardRef<
285283 < label
286284 htmlFor = { inputId }
287285 // Positioned behind children (z-0) so it catches clicks on empty space
288- className = "absolute inset-0 z-0 ! mb-0"
286+ className = "absolute inset-0 z-0 mb-0! "
289287 aria-hidden = "true"
290288 />
291289 { children }
@@ -295,7 +293,7 @@ const Root = forwardRef<
295293 < label
296294 ref = { forwardedRef as React . Ref < HTMLLabelElement > }
297295 { ...dataProps }
298- className = { cn ( containerClassName , "! mb-0" ) }
296+ className = { cn ( containerClassName , "mb-0! " ) }
299297 { ...rest }
300298 >
301299 { children }
0 commit comments