wimui 0.50.2 → 0.50.4

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.
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../_internal/BaseListItem/BaseListItem.cjs"),i=require("./menubar.module.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("classnames");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=(0,a.createContext)(null),l=(0,a.createContext)(null),u=()=>{let e=(0,a.useContext)(c);if(!e)throw Error(`Menubar compound parts must be used within <Menubar>`);return e},d=()=>{let e=(0,a.useContext)(l);if(!e)throw Error(`Menubar.Trigger/Content/Item must be used within <Menubar.Menu>`);return e},f=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:l,...u},d)=>{let[f,p]=(0,a.useState)(null),m=(0,a.useRef)(new Map),h=(0,a.useRef)(null),g=(0,a.useCallback)(e=>{h.current=e,typeof d==`function`?d(e):d&&(d.current=e)},[d]),_=(0,a.useCallback)((e,t)=>{t?m.current.set(e,t):m.current.delete(e)},[]),v=(0,a.useCallback)(()=>Array.from(m.current.keys()),[]),y=(0,a.useCallback)(e=>{m.current.get(e)?.focus()},[]);(0,a.useEffect)(()=>{if(!f)return;let e=e=>{h.current&&!h.current.contains(e.target)&&p(null)},t=e=>{e.key===`Escape`&&(p(null),f&&y(f))};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[f,y]);let b=e=>{if(l?.(e),e.defaultPrevented)return;let t=v();if(t.length===0)return;let n=f??t.find(e=>m.current.get(e)===document.activeElement)??null;if(!n)return;let r=t.indexOf(n);if(!(r<0)){if(e.key===`ArrowRight`){e.preventDefault();let n=t[(r+1)%t.length];f&&p(n),y(n)}else if(e.key===`ArrowLeft`){e.preventDefault();let n=t[(r-1+t.length)%t.length];f&&p(n),y(n)}else if(e.key===`Home`){e.preventDefault();let n=t[0];f&&p(n),y(n)}else if(e.key===`End`){e.preventDefault();let n=t[t.length-1];f&&p(n),y(n)}}},x=(0,a.useMemo)(()=>({openMenuId:f,setOpenMenuId:p,registerTrigger:_,getTriggerIds:v,focusTrigger:y}),[f,_,v,y]),S=e?t.Root:`div`;return(0,s.jsx)(c.Provider,{value:x,children:(0,s.jsx)(S,{ref:g,role:`menubar`,className:(0,o.default)(`wim-menubar`,i.default.root,n),onKeyDown:b,...u,children:(0,s.jsx)(t.Slottable,{children:r})})})});f.displayName=`Menubar`;var p=a.default.forwardRef(({value:e,disabled:t=!1,className:n,children:r,...c},d)=>{let{openMenuId:f,setOpenMenuId:p}=u(),m=(0,a.useId)(),h=`wim-menubar-trigger-${e}-${m}`,g=`wim-menubar-content-${e}-${m}`,_=f===e,v=()=>{t||p(e)},y=()=>p(null),b=()=>{t||p(_?null:e)},x=(0,a.useMemo)(()=>({menuId:e,triggerId:h,contentId:g,isOpen:_,open:v,close:y,toggle:b}),[e,h,g,_,t]);return(0,s.jsx)(l.Provider,{value:x,children:(0,s.jsx)(`div`,{ref:d,role:`none`,"data-disabled":t||void 0,className:(0,o.default)(i.default.menu,n),...c,children:r})})});p.displayName=`Menubar.Menu`;var m=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:c,onMouseEnter:l,...f},p)=>{let{openMenuId:m,registerTrigger:h}=u(),{triggerId:g,contentId:_,isOpen:v,open:y,toggle:b,menuId:x}=d(),S=!!f.disabled,C=(0,a.useCallback)(e=>{h(x,e),typeof p==`function`?p(e):p&&(p.current=e)},[h,x,p]),w=e=>{c?.(e),!(e.defaultPrevented||S)&&(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),y())},T=e=>{l?.(e),m&&!S&&y()};return(0,s.jsx)(e?t.Root:`button`,{...f,ref:C,type:e?void 0:`button`,id:g,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":v,"aria-controls":v?_:void 0,disabled:S,className:(0,o.default)(i.default.trigger,v&&i.default.triggerOpen,n),onClick:b,onKeyDown:w,onMouseEnter:T,children:(0,s.jsx)(t.Slottable,{children:r})})});m.displayName=`Menubar.Trigger`;var h=a.default.forwardRef(({align:e=`start`,className:t,children:r,...c},l)=>{let{contentId:u,triggerId:f,isOpen:p}=d(),[m,h]=(0,a.useState)(-1),[g,_]=(0,a.useState)(p),v=(0,a.useRef)(null);p!==g&&(_(p),h(p?0:-1));let y=(0,a.useCallback)(e=>{v.current=e,typeof l==`function`?l(e):l&&(l.current=e)},[l]);(0,a.useEffect)(()=>{!p||m<0||Array.from(v.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[])[m]?.focus()},[m,p]);let b=e=>{let t=Array.from(v.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[]);if(t.length!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),h(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),h(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),h(0);break;case`End`:e.preventDefault(),h(t.length-1)}};return(0,s.jsx)(n.Transition,{...c,ref:y,show:p,preset:`fade`,id:u,role:`menu`,"aria-labelledby":f,className:(0,o.default)(i.default.content,e===`end`?i.default.alignEnd:i.default.alignStart,t),onKeyDown:b,children:r})});h.displayName=`Menubar.Content`;var g=a.default.forwardRef(({children:e,onSelect:t,onClick:n,disabled:a=!1,className:c,...l},u)=>{let{close:f}=d(),p=e=>{a||(e.stopPropagation(),t?.(),n?.(e),f())};return(0,s.jsx)(r.BaseListItem,{...l,ref:u,className:(0,o.default)(i.default.item,c),disabled:a,role:`menuitem`,tabIndex:-1,onClick:p,onKeyDown:e=>{!a&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),p(e))},children:e})});g.displayName=`Menubar.Item`;var _=a.default.forwardRef(({className:e,...t},n)=>(0,s.jsx)(`div`,{ref:n,role:`separator`,className:(0,o.default)(i.default.separator,e),...t}));_.displayName=`Menubar.Separator`;var v=f;v.Menu=p,v.Trigger=m,v.Content=h,v.Item=g,v.Separator=_,exports.Menubar=v,exports.default=v;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../_internal/BaseListItem/BaseListItem.cjs"),i=require("./menubar.module.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("classnames");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=(0,a.createContext)(null),l=(0,a.createContext)(null),u=()=>{let e=(0,a.useContext)(c);if(!e)throw Error(`Menubar compound parts must be used within <Menubar>`);return e},d=()=>{let e=(0,a.useContext)(l);if(!e)throw Error(`Menubar.Trigger/Content/Item must be used within <Menubar.Menu>`);return e},f=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:l,...u},d)=>{let[f,p]=(0,a.useState)(null),m=(0,a.useRef)(new Map),h=(0,a.useRef)(null),g=(0,a.useCallback)(e=>{h.current=e,typeof d==`function`?d(e):d&&(d.current=e)},[d]),_=(0,a.useCallback)((e,t)=>{t?m.current.set(e,t):m.current.delete(e)},[]),v=(0,a.useCallback)(()=>Array.from(m.current.keys()),[]),y=(0,a.useCallback)(e=>{m.current.get(e)?.focus()},[]);(0,a.useEffect)(()=>{if(!f)return;let e=e=>{h.current&&!h.current.contains(e.target)&&p(null)},t=e=>{e.key===`Escape`&&(p(null),f&&y(f))};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[f,y]);let b=e=>{if(l?.(e),e.defaultPrevented)return;let t=v();if(t.length===0)return;let n=f??t.find(e=>m.current.get(e)===document.activeElement)??null;if(!n)return;let r=t.indexOf(n);if(!(r<0)){if(e.key===`ArrowRight`){e.preventDefault();let n=t[(r+1)%t.length];f&&p(n),y(n)}else if(e.key===`ArrowLeft`){e.preventDefault();let n=t[(r-1+t.length)%t.length];f&&p(n),y(n)}else if(e.key===`Home`){e.preventDefault();let n=t[0];f&&p(n),y(n)}else if(e.key===`End`){e.preventDefault();let n=t[t.length-1];f&&p(n),y(n)}}},x=(0,a.useMemo)(()=>({openMenuId:f,setOpenMenuId:p,registerTrigger:_,getTriggerIds:v,focusTrigger:y}),[f,_,v,y]),S=e?t.Root:`div`;return(0,s.jsx)(c.Provider,{value:x,children:(0,s.jsx)(S,{ref:g,role:`menubar`,className:(0,o.default)(`wim-menubar`,i.default.root,n),onKeyDown:b,...u,children:(0,s.jsx)(t.Slottable,{children:r})})})});f.displayName=`Menubar`;var p=a.default.forwardRef(({value:e,disabled:t=!1,className:n,children:r,...c},d)=>{let{openMenuId:f,setOpenMenuId:p,focusTrigger:m}=u(),h=(0,a.useId)(),g=`wim-menubar-trigger-${e}-${h}`,_=`wim-menubar-content-${e}-${h}`,v=f===e,y=()=>{t||p(e)},b=()=>{m(e),p(null)},x=()=>{t||p(v?null:e)},S=(0,a.useMemo)(()=>({menuId:e,triggerId:g,contentId:_,isOpen:v,open:y,close:b,toggle:x}),[e,g,_,v,t]);return(0,s.jsx)(l.Provider,{value:S,children:(0,s.jsx)(`div`,{ref:d,role:`none`,"data-disabled":t||void 0,className:(0,o.default)(i.default.menu,n),...c,children:r})})});p.displayName=`Menubar.Menu`;var m=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:c,onMouseEnter:l,...f},p)=>{let{openMenuId:m,registerTrigger:h}=u(),{triggerId:g,contentId:_,isOpen:v,open:y,toggle:b,menuId:x}=d(),S=!!f.disabled,C=(0,a.useCallback)(e=>{h(x,e),typeof p==`function`?p(e):p&&(p.current=e)},[h,x,p]),w=e=>{c?.(e),!(e.defaultPrevented||S)&&(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),y())},T=e=>{l?.(e),m&&!S&&y()};return(0,s.jsx)(e?t.Root:`button`,{...f,ref:C,type:e?void 0:`button`,id:g,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":v,"aria-controls":v?_:void 0,disabled:S,className:(0,o.default)(i.default.trigger,v&&i.default.triggerOpen,n),onClick:b,onKeyDown:w,onMouseEnter:T,children:(0,s.jsx)(t.Slottable,{children:r})})});m.displayName=`Menubar.Trigger`;var h=a.default.forwardRef(({align:e=`start`,className:t,children:r,...c},l)=>{let{contentId:u,triggerId:f,isOpen:p,close:m}=d(),[h,g]=(0,a.useState)(-1),[_,v]=(0,a.useState)(p),y=(0,a.useRef)(null);p!==_&&(v(p),g(p?0:-1));let b=(0,a.useCallback)(e=>{y.current=e,typeof l==`function`?l(e):l&&(l.current=e)},[l]);(0,a.useEffect)(()=>{!p||h<0||Array.from(y.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[])[h]?.focus()},[h,p]);let x=e=>{let t=Array.from(y.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[]);if(t.length!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),g(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),g(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),g(0);break;case`End`:e.preventDefault(),g(t.length-1);break;case`Tab`:m()}};return(0,s.jsx)(n.Transition,{...c,ref:b,show:p,preset:`fade`,id:u,role:`menu`,"aria-labelledby":f,className:(0,o.default)(i.default.content,e===`end`?i.default.alignEnd:i.default.alignStart,t),onKeyDown:x,children:r})});h.displayName=`Menubar.Content`;var g=a.default.forwardRef(({children:e,onSelect:t,onClick:n,disabled:a=!1,className:c,...l},u)=>{let{close:f}=d(),p=e=>{a||(e.stopPropagation(),t?.(),n?.(e),f())};return(0,s.jsx)(r.BaseListItem,{...l,ref:u,className:(0,o.default)(i.default.item,c),disabled:a,role:`menuitem`,tabIndex:-1,onClick:p,onKeyDown:e=>{!a&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),p(e))},children:e})});g.displayName=`Menubar.Item`;var _=a.default.forwardRef(({className:e,...t},n)=>(0,s.jsx)(`div`,{ref:n,role:`separator`,className:(0,o.default)(i.default.separator,e),...t}));_.displayName=`Menubar.Separator`;var v=f;v.Menu=p,v.Trigger=m,v.Content=h,v.Item=g,v.Separator=_,exports.Menubar=v,exports.default=v;
@@ -86,27 +86,29 @@ var g = o(null), _ = o(null), v = () => {
86
86
  });
87
87
  b.displayName = "Menubar";
88
88
  var x = a.forwardRef(({ value: e, disabled: t = !1, className: n, children: r, ...a }, o) => {
89
- let { openMenuId: s, setOpenMenuId: c } = v(), l = u(), f = `wim-menubar-trigger-${e}-${l}`, p = `wim-menubar-content-${e}-${l}`, g = s === e, y = () => {
89
+ let { openMenuId: s, setOpenMenuId: c, focusTrigger: l } = v(), f = u(), p = `wim-menubar-trigger-${e}-${f}`, g = `wim-menubar-content-${e}-${f}`, y = s === e, b = () => {
90
90
  t || c(e);
91
- }, b = () => c(null), x = () => {
92
- t || c(g ? null : e);
93
- }, S = d(() => ({
91
+ }, x = () => {
92
+ l(e), c(null);
93
+ }, S = () => {
94
+ t || c(y ? null : e);
95
+ }, C = d(() => ({
94
96
  menuId: e,
95
- triggerId: f,
96
- contentId: p,
97
- isOpen: g,
98
- open: y,
99
- close: b,
100
- toggle: x
97
+ triggerId: p,
98
+ contentId: g,
99
+ isOpen: y,
100
+ open: b,
101
+ close: x,
102
+ toggle: S
101
103
  }), [
102
104
  e,
103
- f,
104
105
  p,
105
106
  g,
107
+ y,
106
108
  t
107
109
  ]);
108
110
  return /* @__PURE__ */ h(_.Provider, {
109
- value: S,
111
+ value: C,
110
112
  children: /* @__PURE__ */ h("div", {
111
113
  ref: o,
112
114
  role: "none",
@@ -149,39 +151,42 @@ var S = a.forwardRef(({ asChild: n = !1, className: r, children: a, onKeyDown: o
149
151
  });
150
152
  S.displayName = "Menubar.Trigger";
151
153
  var C = a.forwardRef(({ align: e = "start", className: t, children: r, ...a }, o) => {
152
- let { contentId: c, triggerId: u, isOpen: d } = y(), [g, _] = p(-1), [v, b] = p(d), x = f(null);
153
- d !== v && (b(d), _(d ? 0 : -1));
154
- let S = s((e) => {
155
- x.current = e, typeof o == "function" ? o(e) : o && (o.current = e);
154
+ let { contentId: c, triggerId: u, isOpen: d, close: g } = y(), [_, v] = p(-1), [b, x] = p(d), S = f(null);
155
+ d !== b && (x(d), v(d ? 0 : -1));
156
+ let C = s((e) => {
157
+ S.current = e, typeof o == "function" ? o(e) : o && (o.current = e);
156
158
  }, [o]);
157
159
  l(() => {
158
- !d || g < 0 || Array.from(x.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? [])[g]?.focus();
159
- }, [g, d]);
160
- let C = (e) => {
161
- let t = Array.from(x.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? []);
160
+ !d || _ < 0 || Array.from(S.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? [])[_]?.focus();
161
+ }, [_, d]);
162
+ let w = (e) => {
163
+ let t = Array.from(S.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? []);
162
164
  if (t.length !== 0) switch (e.key) {
163
165
  case "ArrowDown":
164
- e.preventDefault(), _((e) => e < t.length - 1 ? e + 1 : 0);
166
+ e.preventDefault(), v((e) => e < t.length - 1 ? e + 1 : 0);
165
167
  break;
166
168
  case "ArrowUp":
167
- e.preventDefault(), _((e) => e > 0 ? e - 1 : t.length - 1);
169
+ e.preventDefault(), v((e) => e > 0 ? e - 1 : t.length - 1);
168
170
  break;
169
171
  case "Home":
170
- e.preventDefault(), _(0);
172
+ e.preventDefault(), v(0);
173
+ break;
174
+ case "End":
175
+ e.preventDefault(), v(t.length - 1);
171
176
  break;
172
- case "End": e.preventDefault(), _(t.length - 1);
177
+ case "Tab": g();
173
178
  }
174
179
  };
175
180
  return /* @__PURE__ */ h(n, {
176
181
  ...a,
177
- ref: S,
182
+ ref: C,
178
183
  show: d,
179
184
  preset: "fade",
180
185
  id: c,
181
186
  role: "menu",
182
187
  "aria-labelledby": u,
183
188
  className: m(i.content, e === "end" ? i.alignEnd : i.alignStart, t),
184
- onKeyDown: C,
189
+ onKeyDown: w,
185
190
  children: r
186
191
  });
187
192
  });
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../form/FloatButton/FloatButton.cjs"),n=require("./speed-dial.module.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("classnames");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=r.default.forwardRef(({actions:e,icon:o=`PlusIcon`,activeIcon:s=`CloseIcon`,direction:c=`up`,trigger:l=`hover`,open:u,onOpenChange:d,className:f,"aria-label":p,...m},h)=>{let[g,_]=(0,r.useState)(!1),v=u??g,y=e=>{_(e),d?.(e)},b=()=>{l===`hover`&&y(!0)},x=()=>{l===`hover`&&y(!1)},S=()=>{l===`click`&&y(!v)};return(0,a.jsxs)(`div`,{ref:h,className:(0,i.default)(`wim-speed-dial`,n.default.root,n.default[c],v&&n.default.open,f),onMouseEnter:b,onMouseLeave:x,...m,children:[(0,a.jsx)(`div`,{className:n.default.actions,children:e.map((e,r)=>(0,a.jsx)(`div`,{className:n.default.actionWrapper,style:{transitionDelay:v?`${r*50}ms`:`0ms`},children:(0,a.jsx)(t.FloatButton,{iconName:e.icon,label:e.label,size:`sm`,intent:e.intent,className:e.className,onClick:()=>{e.onClick?.(),l===`click`&&y(!1)},position:`inline`})},r))}),(0,a.jsx)(t.FloatButton,{iconName:v?s:o,onClick:S,className:n.default.trigger,position:`inline`,"aria-expanded":v,"aria-haspopup":`true`,"aria-label":p})]})});o.displayName=`SpeedDial`,exports.SpeedDial=o;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../form/FloatButton/FloatButton.cjs"),r=require("./speed-dial.module.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("classnames");a=e.__toESM(a,1);let o=require("react/jsx-runtime");var s=i.default.forwardRef(({actions:e,icon:s=`PlusIcon`,activeIcon:c=`CloseIcon`,direction:l=`up`,trigger:u=`hover`,open:d,onOpenChange:f,className:p,"aria-label":m,...h},g)=>{let{t:_}=t.useWimTranslation(`common`),[v,y]=(0,i.useState)(!1),b=d??v,x=(0,i.useRef)(null),S=(0,i.useRef)(!1),C=e=>{y(e),f?.(e)},w=()=>{u===`hover`&&C(!0)},T=()=>{u===`hover`&&C(!1)},E=()=>{u===`click`&&C(!b)},D=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),S.current=!b,C(!b))};return(0,i.useEffect)(()=>{b&&S.current&&x.current?.querySelector(`button`)?.focus()},[b]),(0,o.jsxs)(`div`,{ref:g,className:(0,a.default)(`wim-speed-dial`,r.default.root,r.default[l],b&&r.default.open,p),onMouseEnter:w,onMouseLeave:T,onKeyDown:e=>{e.key===`Escape`&&b&&(e.preventDefault(),S.current=!1,C(!1),e.currentTarget.querySelector(`[aria-haspopup]`)?.focus())},onBlur:e=>{S.current&&(e.currentTarget.contains(e.relatedTarget)||(S.current=!1,C(!1)))},...h,children:[(0,o.jsx)(`div`,{ref:x,className:r.default.actions,inert:!b,children:e.map((e,t)=>(0,o.jsx)(`div`,{className:r.default.actionWrapper,style:{transitionDelay:b?`${t*50}ms`:`0ms`},children:(0,o.jsx)(n.FloatButton,{iconName:e.icon,label:e.label,size:`sm`,intent:e.intent,className:e.className,onClick:()=>{e.onClick?.(),u===`click`&&C(!1)},position:`inline`})},t))}),(0,o.jsx)(n.FloatButton,{iconName:b?c:s,onClick:E,className:r.default.trigger,position:`inline`,"aria-expanded":b,"aria-haspopup":`true`,"aria-label":m??_(b?`a11y.close_menu`:`a11y.open_menu`),onKeyDown:D})]})});s.displayName=`SpeedDial`,exports.SpeedDial=s;
@@ -36,7 +36,7 @@ export type SpeedDialProps = React.ComponentPropsWithoutRef<"div"> & {
36
36
  /**
37
37
  * Accessible name for the trigger button.
38
38
  * Lands on the inner `FloatButton`, not on the wrapper `div`.
39
- * Omit to keep the icon-name fallback (`PlusIcon` / `CloseIcon`).
39
+ * Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following the open state.
40
40
  */
41
41
  "aria-label"?: string;
42
42
  };
@@ -76,7 +76,7 @@ export declare const SpeedDial: React.ForwardRefExoticComponent<Omit<React.Detai
76
76
  /**
77
77
  * Accessible name for the trigger button.
78
78
  * Lands on the inner `FloatButton`, not on the wrapper `div`.
79
- * Omit to keep the icon-name fallback (`PlusIcon` / `CloseIcon`).
79
+ * Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following the open state.
80
80
  */
81
81
  "aria-label"?: string;
82
82
  } & React.RefAttributes<HTMLDivElement>>;
@@ -1,54 +1,68 @@
1
1
  "use client";
2
- import { FloatButton as e } from "../../form/FloatButton/FloatButton.js";
3
- import t from "./speed-dial.module.js";
4
- import n, { useState as r } from "react";
5
- import i from "classnames";
6
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
2
+ import { useWimTranslation as e } from "../../../i18n/useWimTranslation.js";
3
+ import { FloatButton as t } from "../../form/FloatButton/FloatButton.js";
4
+ import n from "./speed-dial.module.js";
5
+ import r, { useEffect as i, useRef as a, useState as o } from "react";
6
+ import s from "classnames";
7
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
8
  //#region src/components/navigation/SpeedDial/SpeedDial.tsx
8
- var s = n.forwardRef(({ actions: n, icon: s = "PlusIcon", activeIcon: c = "CloseIcon", direction: l = "up", trigger: u = "hover", open: d, onOpenChange: f, className: p, "aria-label": m, ...h }, g) => {
9
- let [_, v] = r(!1), y = d ?? _, b = (e) => {
10
- v(e), f?.(e);
11
- }, x = () => {
12
- u === "hover" && b(!0);
13
- }, S = () => {
14
- u === "hover" && b(!1);
15
- }, C = () => {
16
- u === "click" && b(!y);
9
+ var u = r.forwardRef(({ actions: r, icon: u = "PlusIcon", activeIcon: d = "CloseIcon", direction: f = "up", trigger: p = "hover", open: m, onOpenChange: h, className: g, "aria-label": _, ...v }, y) => {
10
+ let { t: b } = e("common"), [x, S] = o(!1), C = m ?? x, w = a(null), T = a(!1), E = (e) => {
11
+ S(e), h?.(e);
12
+ }, D = () => {
13
+ p === "hover" && E(!0);
14
+ }, O = () => {
15
+ p === "hover" && E(!1);
16
+ }, k = () => {
17
+ p === "click" && E(!C);
18
+ }, A = (e) => {
19
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), T.current = !C, E(!C));
17
20
  };
18
- return /* @__PURE__ */ o("div", {
19
- ref: g,
20
- className: i("wim-speed-dial", t.root, t[l], y && t.open, p),
21
- onMouseEnter: x,
22
- onMouseLeave: S,
23
- ...h,
24
- children: [/* @__PURE__ */ a("div", {
25
- className: t.actions,
26
- children: n.map((n, r) => /* @__PURE__ */ a("div", {
27
- className: t.actionWrapper,
28
- style: { transitionDelay: y ? `${r * 50}ms` : "0ms" },
29
- children: /* @__PURE__ */ a(e, {
30
- iconName: n.icon,
31
- label: n.label,
21
+ return i(() => {
22
+ C && T.current && w.current?.querySelector("button")?.focus();
23
+ }, [C]), /* @__PURE__ */ l("div", {
24
+ ref: y,
25
+ className: s("wim-speed-dial", n.root, n[f], C && n.open, g),
26
+ onMouseEnter: D,
27
+ onMouseLeave: O,
28
+ onKeyDown: (e) => {
29
+ e.key === "Escape" && C && (e.preventDefault(), T.current = !1, E(!1), e.currentTarget.querySelector("[aria-haspopup]")?.focus());
30
+ },
31
+ onBlur: (e) => {
32
+ T.current && (e.currentTarget.contains(e.relatedTarget) || (T.current = !1, E(!1)));
33
+ },
34
+ ...v,
35
+ children: [/* @__PURE__ */ c("div", {
36
+ ref: w,
37
+ className: n.actions,
38
+ inert: !C,
39
+ children: r.map((e, r) => /* @__PURE__ */ c("div", {
40
+ className: n.actionWrapper,
41
+ style: { transitionDelay: C ? `${r * 50}ms` : "0ms" },
42
+ children: /* @__PURE__ */ c(t, {
43
+ iconName: e.icon,
44
+ label: e.label,
32
45
  size: "sm",
33
- intent: n.intent,
34
- className: n.className,
46
+ intent: e.intent,
47
+ className: e.className,
35
48
  onClick: () => {
36
- n.onClick?.(), u === "click" && b(!1);
49
+ e.onClick?.(), p === "click" && E(!1);
37
50
  },
38
51
  position: "inline"
39
52
  })
40
53
  }, r))
41
- }), /* @__PURE__ */ a(e, {
42
- iconName: y ? c : s,
43
- onClick: C,
44
- className: t.trigger,
54
+ }), /* @__PURE__ */ c(t, {
55
+ iconName: C ? d : u,
56
+ onClick: k,
57
+ className: n.trigger,
45
58
  position: "inline",
46
- "aria-expanded": y,
59
+ "aria-expanded": C,
47
60
  "aria-haspopup": "true",
48
- "aria-label": m
61
+ "aria-label": _ ?? b(C ? "a11y.close_menu" : "a11y.open_menu"),
62
+ onKeyDown: A
49
63
  })]
50
64
  });
51
65
  });
52
- s.displayName = "SpeedDial";
66
+ u.displayName = "SpeedDial";
53
67
  //#endregion
54
- export { s as SpeedDial };
68
+ export { u as SpeedDial };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../_internal/BaseListItem/BaseListItem.cjs"),i=require("../../_internal/mergeRefs.cjs"),a=require("./dropdown.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("@floating-ui/react");var u=o.default.createContext({isOpen:!1,toggle:()=>{},close:()=>{},menuId:``,triggerId:``,focusedIndex:-1,setFocusedIndex:()=>{},registerItem:()=>0,containerRef:{current:null},setReference:()=>{},setFloating:()=>{},floatingStyles:{},floatingRef:{current:null},setAlign:()=>{}}),d=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,defaultOpen:d=!1,open:f,onOpenChange:p,...m},h)=>{let[g,_]=(0,o.useState)(d),v=f??g,y=(0,o.useCallback)(e=>{f===void 0&&_(e),p?.(e)},[f,p]),[b,x]=(0,o.useState)(-1),S=(0,o.useRef)(null),C=(0,o.useRef)(0),[w,T]=(0,o.useState)(`left`),{refs:E,floatingStyles:D}=(0,l.useFloating)({open:v,placement:w===`right`?`bottom-end`:`bottom-start`,whileElementsMounted:l.autoUpdate,middleware:[(0,l.offset)(4),(0,l.flip)(),(0,l.shift)({padding:8})]}),O=i.mergeRefs(S,h);(0,o.useEffect)(()=>{C.current=0});let k=()=>{let e=C.current;return C.current+=1,e},A=(0,o.useId)(),j=`wim-dropdown-menu-${A}`,M=`wim-dropdown-trigger-${A}`,N=()=>{let e=!v;y(e),x(e?0:-1)},P=(0,o.useCallback)(()=>{y(!1),x(-1)},[y]);(0,o.useEffect)(()=>{let e=e=>{let t=e.target,n=E.floating.current?.contains(t)??!1;S.current&&!S.current.contains(t)&&!n&&P()},t=e=>{e.key===`Escape`&&P()};return v&&(document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t)),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[v,E.floating,P]);let F=e=>{if(!v)return;let t=Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[]);switch(e.key){case`ArrowDown`:e.preventDefault(),x(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),x(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),x(0);break;case`End`:e.preventDefault(),x(t.length-1);break;case`Tab`:P()}};(0,o.useEffect)(()=>{v&&b>=0&&Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[])[b]?.focus({preventScroll:!0})},[b,v,E.floating]);let I=r?t.Root:`div`;return(0,c.jsx)(u.Provider,{value:{isOpen:v,toggle:N,close:P,menuId:j,triggerId:M,focusedIndex:b,setFocusedIndex:x,registerItem:k,containerRef:S,setReference:E.setReference,setFloating:E.setFloating,floatingStyles:D,floatingRef:E.floating,setAlign:T},children:(0,c.jsx)(I,{...m,role:`none`,className:(0,s.default)(`wim-dropdown`,a.default.root,n),ref:O,onKeyDown:F,children:(0,c.jsx)(t.Slottable,{children:e})})})});d.displayName=`Dropdown`;var f=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,...l},d)=>{let{toggle:f,isOpen:p,menuId:m,triggerId:h,setReference:g}=o.default.useContext(u),_=r?t.Root:`div`,v=i.mergeRefs(g,d);return(0,c.jsx)(_,{...l,ref:v,id:h,className:(0,s.default)(a.default.trigger,n),onClick:f,"aria-haspopup":`menu`,"aria-expanded":p,"aria-controls":p?m:void 0,role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),f())},children:(0,c.jsx)(t.Slottable,{children:e})})});f.displayName=`Dropdown.Trigger`;var p=(0,o.forwardRef)(({children:e,className:t,align:r=`left`,show:d,style:f,...p},m)=>{let{isOpen:h,menuId:g,triggerId:_,setFloating:v,floatingStyles:y,setAlign:b}=o.default.useContext(u);(0,o.useEffect)(()=>{b(r)},[r,b]);let x=i.mergeRefs(v,m);return(0,c.jsx)(l.FloatingPortal,{children:(0,c.jsx)(n.Transition,{...p,ref:x,show:d===void 0?h:d,preset:`fade`,id:g,style:{...y,...f},className:(0,s.default)(a.default.menu,t),role:`menu`,"aria-labelledby":_,children:e})})});p.displayName=`Dropdown.Menu`;var m=(0,o.forwardRef)(({children:e,onClick:t,disabled:n=!1,className:i,...l},d)=>{let{close:f,focusedIndex:p,setFocusedIndex:m,registerItem:h}=o.default.useContext(u),[g]=(0,o.useState)(()=>h()),_=p===g,v=e=>{n||(e.stopPropagation(),t&&t(),f())};return(0,c.jsx)(r.BaseListItem,{...l,ref:d,className:(0,s.default)(a.default.item,i),onClick:v,onFocus:()=>m(g),disabled:n,role:`menuitem`,tabIndex:_?0:-1,onKeyDown:e=>{!n&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v(e))},children:e})});m.displayName=`Dropdown.Item`;var h=(0,o.forwardRef)((e,t)=>(0,c.jsx)(d,{...e,ref:t}));h.displayName=`Dropdown`,h.Trigger=f,h.Menu=p,h.Item=m,exports.Dropdown=h,exports.default=h,exports.DropdownItem=m,exports.DropdownMenu=p,exports.DropdownTrigger=f;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../_internal/BaseListItem/BaseListItem.cjs"),i=require("../../_internal/mergeRefs.cjs"),a=require("./dropdown.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("@floating-ui/react");var u=o.default.createContext({isOpen:!1,toggle:()=>{},close:()=>{},menuId:``,triggerId:``,focusedIndex:-1,setFocusedIndex:()=>{},registerItem:()=>0,containerRef:{current:null},setReference:()=>{},setFloating:()=>{},floatingStyles:{},floatingRef:{current:null},setAlign:()=>{}}),d=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,defaultOpen:d=!1,open:f,onOpenChange:p,...m},h)=>{let[g,_]=(0,o.useState)(d),v=f??g,y=(0,o.useCallback)(e=>{f===void 0&&_(e),p?.(e)},[f,p]),[b,x]=(0,o.useState)(-1),S=(0,o.useRef)(null),C=(0,o.useRef)(0),[w,T]=(0,o.useState)(`left`),{refs:E,floatingStyles:D}=(0,l.useFloating)({open:v,placement:w===`right`?`bottom-end`:`bottom-start`,whileElementsMounted:l.autoUpdate,middleware:[(0,l.offset)(4),(0,l.flip)(),(0,l.shift)({padding:8})]}),O=i.mergeRefs(S,h);(0,o.useEffect)(()=>{C.current=0});let k=()=>{let e=C.current;return C.current+=1,e},A=(0,o.useId)(),j=`wim-dropdown-menu-${A}`,M=`wim-dropdown-trigger-${A}`,N=()=>{let e=!v;y(e),x(e?0:-1)},P=(0,o.useCallback)(()=>{let e=E.floating.current,t=!!e&&e.contains(document.activeElement);y(!1),x(-1),t&&E.reference.current?.focus?.({preventScroll:!0})},[y,E.floating,E.reference]);(0,o.useEffect)(()=>{let e=e=>{let t=e.target,n=E.floating.current?.contains(t)??!1;S.current&&!S.current.contains(t)&&!n&&P()},t=e=>{e.key===`Escape`&&P()};return v&&(document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t)),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[v,E.floating,P]);let F=e=>{if(!v)return;let t=Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[]);switch(e.key){case`ArrowDown`:e.preventDefault(),x(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),x(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),x(0);break;case`End`:e.preventDefault(),x(t.length-1);break;case`Tab`:P()}};(0,o.useEffect)(()=>{v&&b>=0&&Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[])[b]?.focus({preventScroll:!0})},[b,v,E.floating]);let I=r?t.Root:`div`;return(0,c.jsx)(u.Provider,{value:{isOpen:v,toggle:N,close:P,menuId:j,triggerId:M,focusedIndex:b,setFocusedIndex:x,registerItem:k,containerRef:S,setReference:E.setReference,setFloating:E.setFloating,floatingStyles:D,floatingRef:E.floating,setAlign:T},children:(0,c.jsx)(I,{...m,role:`none`,className:(0,s.default)(`wim-dropdown`,a.default.root,n),ref:O,onKeyDown:F,children:(0,c.jsx)(t.Slottable,{children:e})})})});d.displayName=`Dropdown`;var f=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,...l},d)=>{let{toggle:f,isOpen:p,menuId:m,triggerId:h,setReference:g}=o.default.useContext(u),_=r?t.Root:`div`,v=i.mergeRefs(g,d);return(0,c.jsx)(_,{...l,ref:v,id:h,className:(0,s.default)(a.default.trigger,n),onClick:f,"aria-haspopup":`menu`,"aria-expanded":p,"aria-controls":p?m:void 0,role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`&&!p)&&(e.preventDefault(),f())},children:(0,c.jsx)(t.Slottable,{children:e})})});f.displayName=`Dropdown.Trigger`;var p=(0,o.forwardRef)(({children:e,className:t,align:r=`left`,show:d,style:f,...p},m)=>{let{isOpen:h,menuId:g,triggerId:_,setFloating:v,floatingStyles:y,setAlign:b}=o.default.useContext(u);(0,o.useEffect)(()=>{b(r)},[r,b]);let x=i.mergeRefs(v,m);return(0,c.jsx)(l.FloatingPortal,{children:(0,c.jsx)(n.Transition,{...p,ref:x,show:d===void 0?h:d,preset:`fade`,id:g,style:{...y,...f},className:(0,s.default)(a.default.menu,t),role:`menu`,"aria-labelledby":_,children:e})})});p.displayName=`Dropdown.Menu`;var m=(0,o.forwardRef)(({children:e,onClick:t,disabled:n=!1,className:i,...l},d)=>{let{close:f,focusedIndex:p,setFocusedIndex:m,registerItem:h}=o.default.useContext(u),[g]=(0,o.useState)(()=>h()),_=p===g,v=e=>{n||(e.stopPropagation(),t&&t(),f())};return(0,c.jsx)(r.BaseListItem,{...l,ref:d,className:(0,s.default)(a.default.item,i),onClick:v,onFocus:()=>m(g),disabled:n,role:`menuitem`,tabIndex:_?0:-1,onKeyDown:e=>{!n&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v(e))},children:e})});m.displayName=`Dropdown.Item`;var h=(0,o.forwardRef)((e,t)=>(0,c.jsx)(d,{...e,ref:t}));h.displayName=`Dropdown`,h.Trigger=f,h.Menu=p,h.Item=m,exports.Dropdown=h,exports.default=h,exports.DropdownItem=m,exports.DropdownMenu=p,exports.DropdownTrigger=f;
@@ -47,8 +47,13 @@ var x = o.createContext({
47
47
  let e = !D;
48
48
  O(e), A(e ? 0 : -1);
49
49
  }, U = c(() => {
50
- O(!1), A(-1);
51
- }, [O]);
50
+ let e = F.floating.current, t = !!e && e.contains(document.activeElement);
51
+ O(!1), A(-1), t && F.reference.current?.focus?.({ preventScroll: !0 });
52
+ }, [
53
+ O,
54
+ F.floating,
55
+ F.reference
56
+ ]);
52
57
  l(() => {
53
58
  let e = (e) => {
54
59
  let t = e.target, n = F.floating.current?.contains(t) ?? !1;
@@ -133,7 +138,7 @@ var C = s(({ children: n, className: r, asChild: s = !1, ...c }, l) => {
133
138
  role: "button",
134
139
  tabIndex: 0,
135
140
  onKeyDown: (e) => {
136
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), u());
141
+ (e.key === "Enter" || e.key === " " || e.key === "ArrowDown" && !d) && (e.preventDefault(), u());
137
142
  },
138
143
  children: /* @__PURE__ */ m(t, { children: n })
139
144
  });
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./focus-trap.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({children:e,active:a=!0,initialFocus:o=!0,className:s})=>{let c=(0,n.useRef)(null),l=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!a)return;l.current=document.activeElement;let e=c.current;if(!e)return;let t=()=>Array.from(e.querySelectorAll(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>{let t=window.getComputedStyle(e);return e.tabIndex>=0&&t.display!==`none`&&t.visibility!==`hidden`&&!e.disabled});if(o){let e=t();e.length>0&&e[0].focus()}let n=n=>{if(n.key!==`Tab`)return;let r=t();if(r.length===0){n.preventDefault();return}let i=r[0],a=r[r.length-1],o=document.activeElement;if(!o||!e.contains(o))return;let s=r.indexOf(o);n.shiftKey?(s>=0?s>0:r.some(e=>e.compareDocumentPosition(o)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),a.focus()):(s>=0?s<r.length-1:r.some(e=>o.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),i.focus())};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n),l.current&&l.current.focus()}},[a,o]),(0,i.jsx)(`div`,{ref:c,className:(0,r.default)(`wim-focus-trap`,t.default.root,s),children:e})};exports.FocusTrap=a;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./focus-trap.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({children:e,active:a=!0,initialFocus:o=!0,className:s})=>{let c=(0,n.useRef)(null),l=(0,n.useRef)(null),u=(0,n.useRef)(!1);return a&&!u.current&&typeof document<`u`?(l.current=document.activeElement,u.current=!0):!a&&u.current&&(u.current=!1),(0,n.useEffect)(()=>{if(!a)return;let e=c.current;if(!e)return;let t=()=>Array.from(e.querySelectorAll(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>{let t=window.getComputedStyle(e);return e.tabIndex>=0&&t.display!==`none`&&t.visibility!==`hidden`&&!e.disabled});if(o){let e=t();e.length>0&&e[0].focus()}let n=n=>{if(n.key!==`Tab`)return;let r=t();if(r.length===0){n.preventDefault();return}let i=r[0],a=r[r.length-1],o=document.activeElement;if(!o||!e.contains(o))return;let s=r.indexOf(o);n.shiftKey?(s>=0?s>0:r.some(e=>e.compareDocumentPosition(o)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),a.focus()):(s>=0?s<r.length-1:r.some(e=>o.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),i.focus())};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n);let e=l.current;e&&e.isConnected&&e.focus()}},[a,o]),(0,i.jsx)(`div`,{ref:c,className:(0,r.default)(`wim-focus-trap`,t.default.root,s),children:e})};exports.FocusTrap=a;
@@ -5,10 +5,9 @@ import r from "classnames";
5
5
  import { jsx as i } from "react/jsx-runtime";
6
6
  //#region src/components/overlay/FocusTrap/FocusTrap.tsx
7
7
  var a = ({ children: a, active: o = !0, initialFocus: s = !0, className: c }) => {
8
- let l = n(null), u = n(null);
9
- return t(() => {
8
+ let l = n(null), u = n(null), d = n(!1);
9
+ return o && !d.current && typeof document < "u" ? (u.current = document.activeElement, d.current = !0) : !o && d.current && (d.current = !1), t(() => {
10
10
  if (!o) return;
11
- u.current = document.activeElement;
12
11
  let e = l.current;
13
12
  if (!e) return;
14
13
  let t = () => Array.from(e.querySelectorAll("button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])")).filter((e) => {
@@ -32,7 +31,9 @@ var a = ({ children: a, active: o = !0, initialFocus: s = !0, className: c }) =>
32
31
  n.shiftKey ? (s >= 0 ? s > 0 : r.some((e) => e.compareDocumentPosition(o) & Node.DOCUMENT_POSITION_FOLLOWING)) || (n.preventDefault(), a.focus()) : (s >= 0 ? s < r.length - 1 : r.some((e) => o.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING)) || (n.preventDefault(), i.focus());
33
32
  };
34
33
  return document.addEventListener("keydown", n), () => {
35
- document.removeEventListener("keydown", n), u.current && u.current.focus();
34
+ document.removeEventListener("keydown", n);
35
+ let e = u.current;
36
+ e && e.isConnected && e.focus();
36
37
  };
37
38
  }, [o, s]), /* @__PURE__ */ i("div", {
38
39
  ref: l,
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.50.2 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
7
+ **wimui** v0.50.4 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
8
8
 
9
9
  ## Install & required setup
10
10
 
@@ -2160,7 +2160,7 @@ near the right edge pushes the page into a horizontal scroll. Anchor a
2160
2160
  - `onOpenChange: (open: boolean) => void` — Callback when open state changes
2161
2161
  - `aria-label: string` — Accessible name for the trigger button.
2162
2162
  Lands on the inner `FloatButton`, not on the wrapper `div`.
2163
- Omit to keep the icon-name fallback (`PlusIcon` / `CloseIcon`).
2163
+ Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following the open state.
2164
2164
  - **Stepper** — Visual sequence steps
2165
2165
  - ⚠️ Not the same as elsewhere: In Apple HIG and macOS, a "Stepper" is the control that increments a number — that is `NumberInput` here. WIM's `Stepper` shows progress through a sequence of steps, which is what Material calls a Stepper.
2166
2166
  - `steps: Step[]` = [] — Array of step configurations
package/dist/llms.txt CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.50.2 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
7
+ **wimui** v0.50.4 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
8
8
 
9
9
  ## Install & required setup
10
10