wimui 0.6.0 → 0.6.1

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("../../icon/check.cjs"),n=require("../../icon/circle.cjs"),r=require("../media/Icon/Icon.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=({intent:e=`info`,icon:o,size:s=`sm`,className:c,color:l})=>{if(o&&i.default.isValidElement(o))return(0,a.jsx)(a.Fragment,{children:o});if(o===!1)return null;switch(e){case`success`:return(0,a.jsx)(r.Icon,{component:t.default,size:s,className:c,color:l});default:return(0,a.jsx)(r.Icon,{component:n.default,size:s,className:c,color:l})}};exports.FeedbackIcon=o;
2
+ const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../icon/alert-circle.cjs"),n=require("../../icon/check.cjs"),r=require("../../icon/circle.cjs"),i=require("../../icon/info-circle.cjs"),a=require("../media/Icon/Icon.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=({intent:e=`info`,icon:t,size:n=`sm`,className:i,color:c})=>t&&o.default.isValidElement(t)?(0,s.jsx)(s.Fragment,{children:t}):t===!1?null:(0,s.jsx)(a.Icon,{component:l[e]??r.default,size:n,className:i,color:c}),l={success:n.default,danger:t.default,warning:t.default,info:i.default};exports.FeedbackIcon=c;
@@ -1,27 +1,22 @@
1
1
  "use client";
2
- import e from "../../icon/check.js";
3
- import t from "../../icon/circle.js";
4
- import { Icon as n } from "../media/Icon/Icon.js";
5
- import r from "react";
6
- import { Fragment as i, jsx as a } from "react/jsx-runtime";
2
+ import e from "../../icon/alert-circle.js";
3
+ import t from "../../icon/check.js";
4
+ import n from "../../icon/circle.js";
5
+ import r from "../../icon/info-circle.js";
6
+ import { Icon as i } from "../media/Icon/Icon.js";
7
+ import a from "react";
8
+ import { Fragment as o, jsx as s } from "react/jsx-runtime";
7
9
  //#region src/components/_internal/FeedbackIcon.tsx
8
- var o = ({ intent: o = "info", icon: s, size: c = "sm", className: l, color: u }) => {
9
- if (s && r.isValidElement(s)) return /* @__PURE__ */ a(i, { children: s });
10
- if (s === !1) return null;
11
- switch (o) {
12
- case "success": return /* @__PURE__ */ a(n, {
13
- component: e,
14
- size: c,
15
- className: l,
16
- color: u
17
- });
18
- default: return /* @__PURE__ */ a(n, {
19
- component: t,
20
- size: c,
21
- className: l,
22
- color: u
23
- });
24
- }
10
+ var c = ({ intent: e = "info", icon: t, size: r = "sm", className: c, color: u }) => t && a.isValidElement(t) ? /* @__PURE__ */ s(o, { children: t }) : t === !1 ? null : /* @__PURE__ */ s(i, {
11
+ component: l[e] ?? n,
12
+ size: r,
13
+ className: c,
14
+ color: u
15
+ }), l = {
16
+ success: t,
17
+ danger: e,
18
+ warning: e,
19
+ info: r
25
20
  };
26
21
  //#endregion
27
- export { o as FeedbackIcon };
22
+ export { c as FeedbackIcon };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../layout/InteractiveArea/InteractiveArea.cjs"),n=require("../../../icon/check.cjs"),r=require("../../../icon/circle.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("./result.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");var l=({intent:e,status:t,className:a})=>{if(t)return(0,c.jsx)(i.Icon,{component:r.default,color:`secondary`,className:a});switch(e){case`success`:return(0,c.jsx)(i.Icon,{component:n.default,color:`success`,className:a});case`danger`:return(0,c.jsx)(i.Icon,{component:r.default,color:`danger`,className:a});case`warning`:return(0,c.jsx)(i.Icon,{component:r.default,color:`warning`,className:a});case`info`:return(0,c.jsx)(i.Icon,{component:r.default,color:`info`,className:a});default:return(0,c.jsx)(i.Icon,{component:r.default,color:`secondary`,className:a})}},u=({intent:e=`default`,status:n,title:r,description:i,extra:o,icon:u,className:d,children:f})=>(0,c.jsx)(t.InteractiveArea,{icon:u||(0,c.jsx)(l,{intent:e,status:n,className:a.default.icon}),title:r??void 0,description:i??void 0,actions:o,variant:`none`,bgVariant:`transparent`,className:(0,s.default)(`wim-result`,a.default.root,e&&a.default[e],n&&a.default[n],d),styles:{inner:a.default.inner,icon:a.default.icon,content:a.default.content},children:f});exports.Result=u;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../layout/InteractiveArea/InteractiveArea.cjs"),n=require("../../../icon/alert-circle.cjs"),r=require("../../../icon/check.cjs"),i=require("../../../icon/circle.cjs"),a=require("../../../icon/info-circle.cjs"),o=require("../../media/Icon/Icon.cjs"),s=require("./result.module.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=({intent:e,status:t,className:s})=>{if(t)return(0,u.jsx)(o.Icon,{component:n.default,color:`secondary`,className:s});switch(e){case`success`:return(0,u.jsx)(o.Icon,{component:r.default,color:`success`,className:s});case`danger`:return(0,u.jsx)(o.Icon,{component:n.default,color:`danger`,className:s});case`warning`:return(0,u.jsx)(o.Icon,{component:n.default,color:`warning`,className:s});case`info`:return(0,u.jsx)(o.Icon,{component:a.default,color:`info`,className:s});default:return(0,u.jsx)(o.Icon,{component:i.default,color:`secondary`,className:s})}},f=({intent:e=`default`,status:n,title:r,description:i,extra:a,icon:o,className:c,children:f})=>(0,u.jsx)(t.InteractiveArea,{icon:o||(0,u.jsx)(d,{intent:e,status:n,className:s.default.icon}),title:r??void 0,description:i??void 0,actions:a,variant:`none`,bgVariant:`transparent`,className:(0,l.default)(`wim-result`,s.default.root,e&&s.default[e],n&&s.default[n],c),styles:{inner:s.default.inner,icon:s.default.icon,content:s.default.content},children:f});exports.Result=f;
@@ -1,64 +1,66 @@
1
1
  "use client";
2
2
  import { InteractiveArea as e } from "../../layout/InteractiveArea/InteractiveArea.js";
3
- import t from "../../../icon/check.js";
4
- import n from "../../../icon/circle.js";
5
- import { Icon as r } from "../../media/Icon/Icon.js";
6
- import i from "./result.module.js";
3
+ import t from "../../../icon/alert-circle.js";
4
+ import n from "../../../icon/check.js";
5
+ import r from "../../../icon/circle.js";
6
+ import i from "../../../icon/info-circle.js";
7
+ import { Icon as a } from "../../media/Icon/Icon.js";
8
+ import o from "./result.module.js";
7
9
  import "react";
8
- import a from "classnames";
9
- import { jsx as o } from "react/jsx-runtime";
10
+ import s from "classnames";
11
+ import { jsx as c } from "react/jsx-runtime";
10
12
  //#region src/components/feedback/Result/Result.tsx
11
- var s = ({ intent: e, status: i, className: a }) => {
12
- if (i) return /* @__PURE__ */ o(r, {
13
- component: n,
13
+ var l = ({ intent: e, status: o, className: s }) => {
14
+ if (o) return /* @__PURE__ */ c(a, {
15
+ component: t,
14
16
  color: "secondary",
15
- className: a
17
+ className: s
16
18
  });
17
19
  switch (e) {
18
- case "success": return /* @__PURE__ */ o(r, {
19
- component: t,
20
+ case "success": return /* @__PURE__ */ c(a, {
21
+ component: n,
20
22
  color: "success",
21
- className: a
23
+ className: s
22
24
  });
23
- case "danger": return /* @__PURE__ */ o(r, {
24
- component: n,
25
+ case "danger": return /* @__PURE__ */ c(a, {
26
+ component: t,
25
27
  color: "danger",
26
- className: a
28
+ className: s
27
29
  });
28
- case "warning": return /* @__PURE__ */ o(r, {
29
- component: n,
30
+ case "warning": return /* @__PURE__ */ c(a, {
31
+ component: t,
30
32
  color: "warning",
31
- className: a
33
+ className: s
32
34
  });
33
- case "info": return /* @__PURE__ */ o(r, {
34
- component: n,
35
+ case "info": return /* @__PURE__ */ c(a, {
36
+ component: i,
35
37
  color: "info",
36
- className: a
38
+ className: s
37
39
  });
38
- default: return /* @__PURE__ */ o(r, {
39
- component: n,
40
+ default: return /* @__PURE__ */ c(a, {
41
+ component: r,
40
42
  color: "secondary",
41
- className: a
43
+ className: s
42
44
  });
43
45
  }
44
- }, c = ({ intent: t = "default", status: n, title: r, description: c, extra: l, icon: u, className: d, children: f }) => /* @__PURE__ */ o(e, {
45
- icon: u || /* @__PURE__ */ o(s, {
46
+ }, u = ({ intent: t = "default", status: n, title: r, description: i, extra: a, icon: u, className: d, children: f }) => /* @__PURE__ */ c(e, {
47
+ icon: u || /* @__PURE__ */ c(l, {
46
48
  intent: t,
47
49
  status: n,
48
- className: i.icon
50
+ className: o.icon
49
51
  }),
50
52
  title: r ?? void 0,
51
- description: c ?? void 0,
52
- actions: l,
53
+ description: i ?? void 0,
54
+ actions: a,
53
55
  variant: "none",
54
56
  bgVariant: "transparent",
55
- className: a("wim-result", i.root, t && i[t], n && i[n], d),
57
+ className: s("wim-result", o.root, t && o[t], n && o[n], d),
56
58
  styles: {
57
- inner: i.inner,
58
- icon: i.icon,
59
- content: i.content
59
+ inner: o.inner,
60
+ icon: o.icon,
61
+ content: o.content
60
62
  },
61
63
  children: f
62
64
  });
63
65
  //#endregion
64
- export { c as Result };
66
+ export { u as Result };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../Button/Button.cjs"),r=require("../FieldTemplate/FieldTemplate.cjs"),i=require("./file-upload.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=({label:e,buttonLabel:c,noFileLabel:l,accept:u,multiple:d=!1,disabled:f=!1,onChange:p,className:m,iconName:h,iconPosition:g,size:_=`md`,error:v,required:y,layout:b=`vertical`})=>{let{t:x}=t.useWimTranslation(`form`),S=`wim-fileupload-${a.default.useId()}`,C=e?`${S}-label`:void 0,w=v?`${S}-error`:void 0,T=(0,a.useRef)(null),[E,D]=(0,a.useState)(null),O=()=>{T.current?.click()},k=e=>{let t=e.target.files;D(t),p&&p(t)},A=E?Array.from(E).map(e=>e.name).join(`, `):l??x(`fileupload.no_file`);return(0,s.jsx)(r.FieldTemplate,{label:e,error:v,required:y,layout:b,labelId:C,errorId:w,className:(0,o.default)(`wim-file-upload`,i.default.root,i.default[_],m),children:(0,s.jsxs)(`div`,{className:i.default.controls,children:[(0,s.jsx)(`input`,{type:`file`,ref:T,accept:u,multiple:d,disabled:f,onChange:k,className:i.default.input,"aria-hidden":`true`,tabIndex:-1}),(0,s.jsx)(n.Button,{onClick:O,disabled:f,variant:`outline`,icon:h,iconPosition:g,size:_,"aria-labelledby":C,"aria-describedby":w,"aria-required":y,"aria-invalid":v?!0:void 0,children:c??x(`fileupload.button`)}),(0,s.jsx)(`span`,{className:(0,o.default)(i.default.fileNames,i.default[_],f&&i.default.disabled),"aria-disabled":f||void 0,children:A})]})})};exports.FileUpload=c;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../layout/VisuallyHidden/VisuallyHidden.cjs"),r=require("../Button/Button.cjs"),i=require("../FieldTemplate/FieldTemplate.cjs"),a=require("./file-upload.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");var l=({label:e,buttonLabel:l,noFileLabel:u,accept:d,multiple:f=!1,disabled:p=!1,onChange:m,className:h,iconName:g,iconPosition:_,size:v=`md`,error:y,required:b,layout:x=`vertical`})=>{let{t:S}=t.useWimTranslation(`form`),C=`wim-fileupload-${o.default.useId()}`,w=e?`${C}-label`:void 0,T=y?`${C}-error`:void 0,E=b?`${C}-required`:void 0,D=[T,E].filter(Boolean).join(` `)||void 0,O=(0,o.useRef)(null),[k,A]=(0,o.useState)(null),j=()=>{O.current?.click()},M=e=>{let t=e.target.files;A(t),m&&m(t)},N=k?Array.from(k).map(e=>e.name).join(`, `):u??S(`fileupload.no_file`);return(0,c.jsx)(i.FieldTemplate,{label:e,error:y,required:b,layout:x,labelId:w,errorId:T,className:(0,s.default)(`wim-file-upload`,a.default.root,a.default[v],h),children:(0,c.jsxs)(`div`,{className:a.default.controls,children:[(0,c.jsx)(`input`,{type:`file`,ref:O,accept:d,multiple:f,disabled:p,onChange:M,className:a.default.input,"aria-hidden":`true`,tabIndex:-1}),(0,c.jsx)(r.Button,{onClick:j,disabled:p,variant:`outline`,icon:g,iconPosition:_,size:v,"aria-labelledby":w,"aria-describedby":D,"aria-invalid":y?!0:void 0,children:l??S(`fileupload.button`)}),b&&(0,c.jsx)(n.VisuallyHidden,{id:E,children:S(`form.required`)}),(0,c.jsx)(`span`,{className:(0,s.default)(a.default.fileNames,a.default[v],p&&a.default.disabled),"aria-disabled":p||void 0,children:N})]})})};exports.FileUpload=l;
@@ -1,62 +1,66 @@
1
1
  "use client";
2
2
  import { useWimTranslation as e } from "../../../i18n/useWimTranslation.js";
3
- import { Button as t } from "../Button/Button.js";
4
- import { FieldTemplate as n } from "../FieldTemplate/FieldTemplate.js";
5
- import r from "./file-upload.module.js";
6
- import i, { useRef as a, useState as o } from "react";
7
- import s from "classnames";
8
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
3
+ import { VisuallyHidden as t } from "../../layout/VisuallyHidden/VisuallyHidden.js";
4
+ import { Button as n } from "../Button/Button.js";
5
+ import { FieldTemplate as r } from "../FieldTemplate/FieldTemplate.js";
6
+ import i from "./file-upload.module.js";
7
+ import a, { useRef as o, useState as s } from "react";
8
+ import c from "classnames";
9
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
9
10
  //#region src/components/form/FileUpload/FileUpload.tsx
10
- var u = ({ label: u, buttonLabel: d, noFileLabel: f, accept: p, multiple: m = !1, disabled: h = !1, onChange: g, className: _, iconName: v, iconPosition: y, size: b = "md", error: x, required: S, layout: C = "vertical" }) => {
11
- let { t: w } = e("form"), T = `wim-fileupload-${i.useId()}`, E = u ? `${T}-label` : void 0, D = x ? `${T}-error` : void 0, O = a(null), [k, A] = o(null), j = () => {
12
- O.current?.click();
13
- }, M = (e) => {
11
+ var d = ({ label: d, buttonLabel: f, noFileLabel: p, accept: m, multiple: h = !1, disabled: g = !1, onChange: _, className: v, iconName: y, iconPosition: b, size: x = "md", error: S, required: C, layout: w = "vertical" }) => {
12
+ let { t: T } = e("form"), E = `wim-fileupload-${a.useId()}`, D = d ? `${E}-label` : void 0, O = S ? `${E}-error` : void 0, k = C ? `${E}-required` : void 0, A = [O, k].filter(Boolean).join(" ") || void 0, j = o(null), [M, N] = s(null), P = () => {
13
+ j.current?.click();
14
+ }, F = (e) => {
14
15
  let t = e.target.files;
15
- A(t), g && g(t);
16
- }, N = k ? Array.from(k).map((e) => e.name).join(", ") : f ?? w("fileupload.no_file");
17
- return /* @__PURE__ */ c(n, {
18
- label: u,
19
- error: x,
20
- required: S,
21
- layout: C,
22
- labelId: E,
23
- errorId: D,
24
- className: s("wim-file-upload", r.root, r[b], _),
25
- children: /* @__PURE__ */ l("div", {
26
- className: r.controls,
16
+ N(t), _ && _(t);
17
+ }, I = M ? Array.from(M).map((e) => e.name).join(", ") : p ?? T("fileupload.no_file");
18
+ return /* @__PURE__ */ l(r, {
19
+ label: d,
20
+ error: S,
21
+ required: C,
22
+ layout: w,
23
+ labelId: D,
24
+ errorId: O,
25
+ className: c("wim-file-upload", i.root, i[x], v),
26
+ children: /* @__PURE__ */ u("div", {
27
+ className: i.controls,
27
28
  children: [
28
- /* @__PURE__ */ c("input", {
29
+ /* @__PURE__ */ l("input", {
29
30
  type: "file",
30
- ref: O,
31
- accept: p,
32
- multiple: m,
33
- disabled: h,
34
- onChange: M,
35
- className: r.input,
31
+ ref: j,
32
+ accept: m,
33
+ multiple: h,
34
+ disabled: g,
35
+ onChange: F,
36
+ className: i.input,
36
37
  "aria-hidden": "true",
37
38
  tabIndex: -1
38
39
  }),
39
- /* @__PURE__ */ c(t, {
40
- onClick: j,
41
- disabled: h,
40
+ /* @__PURE__ */ l(n, {
41
+ onClick: P,
42
+ disabled: g,
42
43
  variant: "outline",
43
- icon: v,
44
- iconPosition: y,
45
- size: b,
46
- "aria-labelledby": E,
47
- "aria-describedby": D,
48
- "aria-required": S,
49
- "aria-invalid": x ? !0 : void 0,
50
- children: d ?? w("fileupload.button")
44
+ icon: y,
45
+ iconPosition: b,
46
+ size: x,
47
+ "aria-labelledby": D,
48
+ "aria-describedby": A,
49
+ "aria-invalid": S ? !0 : void 0,
50
+ children: f ?? T("fileupload.button")
51
51
  }),
52
- /* @__PURE__ */ c("span", {
53
- className: s(r.fileNames, r[b], h && r.disabled),
54
- "aria-disabled": h || void 0,
55
- children: N
52
+ C && /* @__PURE__ */ l(t, {
53
+ id: k,
54
+ children: T("form.required")
55
+ }),
56
+ /* @__PURE__ */ l("span", {
57
+ className: c(i.fileNames, i[x], g && i.disabled),
58
+ "aria-disabled": g || void 0,
59
+ children: I
56
60
  })
57
61
  ]
58
62
  })
59
63
  });
60
64
  };
61
65
  //#endregion
62
- export { u as FileUpload };
66
+ export { d as FileUpload };
@@ -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("../FieldTemplate/FieldTemplate.cjs"),r=require("./otp-input.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=(0,i.forwardRef)(({length:e=6,value:s=``,onChange:c,disabled:l=!1,error:u,required:d,label:f,layout:p,className:m,labels:h={},asChild:g=!1,fullWidth:_=!1,children:v,...y},b)=>{let{digitAriaLabel:x=e=>`Digit ${e}`}=h,[S,C]=(0,i.useState)(Array(e).fill(``)),[w,T]=(0,i.useState)(s),E=(0,i.useRef)([]),D=`wim-otp-input-${(0,i.useId)()}`,O=f?`${D}-label`:void 0,k=u?`${D}-error`:void 0;if(s!==w){T(s);let t=s.split(``).slice(0,e);C(Array(e).fill(``).map((e,n)=>t[n]||``))}let A=e=>{let t=e.join(``);c&&c(t)},j=(t,n)=>{let r=t.target.value.slice(-1),i=[...S];i[n]=r,C(i),A(i),r&&n<e-1&&E.current[n+1]?.focus()},M=(t,n)=>{if(t.key===`Backspace`){if(!S[n]&&n>0){let e=[...S];e[n-1]=``,C(e),A(e),E.current[n-1]?.focus()}else if(S[n]){let e=[...S];e[n]=``,C(e),A(e)}}else t.key===`ArrowLeft`&&n>0?(t.preventDefault(),E.current[n-1]?.focus()):t.key===`ArrowRight`&&n<e-1&&(t.preventDefault(),E.current[n+1]?.focus())},N=t=>{t.preventDefault();let n=t.clipboardData.getData(`text`).slice(0,e).split(``),r=[...S];n.forEach((t,n)=>{n<e&&(r[n]=t)}),C(r),A(r);let i=Math.min(n.length,e-1);E.current[i]?.focus()},P=g?t.Root:`div`;return(0,o.jsx)(n.FieldTemplate,{label:f,error:u,required:d,layout:p,labelId:O,htmlFor:D,errorId:k,className:(0,a.default)(m,_&&r.default.fullWidth),children:(0,o.jsxs)(P,{className:(0,a.default)(`wim-otp-input`,r.default.root,_&&r.default.fullWidth),ref:b,...y,children:[(0,o.jsx)(t.Slottable,{children:(0,o.jsx)(`div`,{className:(0,a.default)(r.default.container,l&&r.default.disabled),role:`group`,"aria-labelledby":O,"data-testid":`otp-input-container`,"data-disabled":l,children:Array.from({length:e}).map((e,t)=>(0,o.jsx)(`input`,{id:t===0?D:void 0,ref:e=>{E.current[t]=e},"data-testid":`otp-input`,className:(0,a.default)(r.default.input,u&&r.default.danger,l&&r.default.disabled),type:`text`,maxLength:1,value:S[t],onChange:e=>j(e,t),onKeyDown:e=>M(e,t),onPaste:N,disabled:l,"aria-label":x(t+1),"aria-invalid":u?`true`:`false`,"aria-describedby":k,"aria-required":d?`true`:void 0},t))})}),v]})})});s.displayName=`OtpInput`,exports.OtpInput=s,exports.default=s;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../FieldTemplate/FieldTemplate.cjs"),r=require("./otp-input.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=(e,t)=>{let n=e.split(``).slice(0,t);return Array(t).fill(``).map((e,t)=>n[t]??``)},c=(0,i.forwardRef)(({length:e=6,value:c=``,onChange:l,disabled:u=!1,error:d,required:f,label:p,layout:m,className:h,labels:g={},asChild:_=!1,fullWidth:v=!1,children:y,...b},x)=>{let{digitAriaLabel:S=e=>`Digit ${e}`}=g,[C,w]=(0,i.useState)(()=>s(c,e)),[T,E]=(0,i.useState)(c),D=(0,i.useRef)([]),O=`wim-otp-input-${(0,i.useId)()}`,k=p?`${O}-label`:void 0,A=d?`${O}-error`:void 0;c!==T&&(E(c),w(s(c,e)));let j=e=>{let t=e.join(``);l&&l(t)},M=(t,n)=>{let r=t.target.value.slice(-1),i=[...C];i[n]=r,w(i),j(i),r&&n<e-1&&D.current[n+1]?.focus()},N=(t,n)=>{if(t.key===`Backspace`){if(!C[n]&&n>0){let e=[...C];e[n-1]=``,w(e),j(e),D.current[n-1]?.focus()}else if(C[n]){let e=[...C];e[n]=``,w(e),j(e)}}else t.key===`ArrowLeft`&&n>0?(t.preventDefault(),D.current[n-1]?.focus()):t.key===`ArrowRight`&&n<e-1&&(t.preventDefault(),D.current[n+1]?.focus())},P=t=>{t.preventDefault();let n=t.clipboardData.getData(`text`).slice(0,e).split(``),r=[...C];n.forEach((t,n)=>{n<e&&(r[n]=t)}),w(r),j(r);let i=Math.min(n.length,e-1);D.current[i]?.focus()},F=_?t.Root:`div`;return(0,o.jsx)(n.FieldTemplate,{label:p,error:d,required:f,layout:m,labelId:k,htmlFor:O,errorId:A,className:(0,a.default)(h,v&&r.default.fullWidth),children:(0,o.jsxs)(F,{className:(0,a.default)(`wim-otp-input`,r.default.root,v&&r.default.fullWidth),ref:x,...b,children:[(0,o.jsx)(t.Slottable,{children:(0,o.jsx)(`div`,{className:(0,a.default)(r.default.container,u&&r.default.disabled),role:`group`,"aria-labelledby":k,"data-testid":`otp-input-container`,"data-disabled":u,children:Array.from({length:e}).map((e,t)=>(0,o.jsx)(`input`,{id:t===0?O:void 0,ref:e=>{D.current[t]=e},"data-testid":`otp-input`,className:(0,a.default)(r.default.input,d&&r.default.danger,u&&r.default.disabled),type:`text`,maxLength:1,value:C[t],onChange:e=>M(e,t),onKeyDown:e=>N(e,t),onPaste:P,disabled:u,"aria-label":S(t+1),"aria-invalid":d?`true`:`false`,"aria-describedby":A,"aria-required":f?`true`:void 0},t))})}),y]})})});c.displayName=`OtpInput`,exports.OtpInput=c,exports.default=c;
@@ -6,80 +6,79 @@ import { forwardRef as i, useId as a, useRef as o, useState as s } from "react";
6
6
  import c from "classnames";
7
7
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
8
8
  //#region src/components/form/OtpInput/OtpInput.tsx
9
- var d = i(({ length: i = 6, value: d = "", onChange: f, disabled: p = !1, error: m, required: h, label: g, layout: _, className: v, labels: y = {}, asChild: b = !1, fullWidth: x = !1, children: S, ...C }, w) => {
10
- let { digitAriaLabel: T = (e) => `Digit ${e}` } = y, [E, D] = s(Array(i).fill("")), [O, k] = s(d), A = o([]), j = `wim-otp-input-${a()}`, M = g ? `${j}-label` : void 0, N = m ? `${j}-error` : void 0;
11
- if (d !== O) {
12
- k(d);
13
- let e = d.split("").slice(0, i);
14
- D(Array(i).fill("").map((t, n) => e[n] || ""));
15
- }
16
- let P = (e) => {
9
+ var d = (e, t) => {
10
+ let n = e.split("").slice(0, t);
11
+ return Array(t).fill("").map((e, t) => n[t] ?? "");
12
+ }, f = i(({ length: i = 6, value: f = "", onChange: p, disabled: m = !1, error: h, required: g, label: _, layout: v, className: y, labels: b = {}, asChild: x = !1, fullWidth: S = !1, children: C, ...w }, T) => {
13
+ let { digitAriaLabel: E = (e) => `Digit ${e}` } = b, [D, O] = s(() => d(f, i)), [k, A] = s(f), j = o([]), M = `wim-otp-input-${a()}`, N = _ ? `${M}-label` : void 0, P = h ? `${M}-error` : void 0;
14
+ f !== k && (A(f), O(d(f, i)));
15
+ let F = (e) => {
17
16
  let t = e.join("");
18
- f && f(t);
19
- }, F = (e, t) => {
20
- let n = e.target.value.slice(-1), r = [...E];
21
- r[t] = n, D(r), P(r), n && t < i - 1 && A.current[t + 1]?.focus();
17
+ p && p(t);
22
18
  }, I = (e, t) => {
19
+ let n = e.target.value.slice(-1), r = [...D];
20
+ r[t] = n, O(r), F(r), n && t < i - 1 && j.current[t + 1]?.focus();
21
+ }, L = (e, t) => {
23
22
  if (e.key === "Backspace") {
24
- if (!E[t] && t > 0) {
25
- let e = [...E];
26
- e[t - 1] = "", D(e), P(e), A.current[t - 1]?.focus();
27
- } else if (E[t]) {
28
- let e = [...E];
29
- e[t] = "", D(e), P(e);
23
+ if (!D[t] && t > 0) {
24
+ let e = [...D];
25
+ e[t - 1] = "", O(e), F(e), j.current[t - 1]?.focus();
26
+ } else if (D[t]) {
27
+ let e = [...D];
28
+ e[t] = "", O(e), F(e);
30
29
  }
31
- } else e.key === "ArrowLeft" && t > 0 ? (e.preventDefault(), A.current[t - 1]?.focus()) : e.key === "ArrowRight" && t < i - 1 && (e.preventDefault(), A.current[t + 1]?.focus());
32
- }, L = (e) => {
30
+ } else e.key === "ArrowLeft" && t > 0 ? (e.preventDefault(), j.current[t - 1]?.focus()) : e.key === "ArrowRight" && t < i - 1 && (e.preventDefault(), j.current[t + 1]?.focus());
31
+ }, R = (e) => {
33
32
  e.preventDefault();
34
- let t = e.clipboardData.getData("text").slice(0, i).split(""), n = [...E];
33
+ let t = e.clipboardData.getData("text").slice(0, i).split(""), n = [...D];
35
34
  t.forEach((e, t) => {
36
35
  t < i && (n[t] = e);
37
- }), D(n), P(n);
36
+ }), O(n), F(n);
38
37
  let r = Math.min(t.length, i - 1);
39
- A.current[r]?.focus();
40
- }, R = b ? e : "div";
38
+ j.current[r]?.focus();
39
+ }, z = x ? e : "div";
41
40
  return /* @__PURE__ */ l(n, {
42
- label: g,
43
- error: m,
44
- required: h,
45
- layout: _,
46
- labelId: M,
47
- htmlFor: j,
48
- errorId: N,
49
- className: c(v, x && r.fullWidth),
50
- children: /* @__PURE__ */ u(R, {
51
- className: c("wim-otp-input", r.root, x && r.fullWidth),
52
- ref: w,
53
- ...C,
41
+ label: _,
42
+ error: h,
43
+ required: g,
44
+ layout: v,
45
+ labelId: N,
46
+ htmlFor: M,
47
+ errorId: P,
48
+ className: c(y, S && r.fullWidth),
49
+ children: /* @__PURE__ */ u(z, {
50
+ className: c("wim-otp-input", r.root, S && r.fullWidth),
51
+ ref: T,
52
+ ...w,
54
53
  children: [/* @__PURE__ */ l(t, { children: /* @__PURE__ */ l("div", {
55
- className: c(r.container, p && r.disabled),
54
+ className: c(r.container, m && r.disabled),
56
55
  role: "group",
57
- "aria-labelledby": M,
56
+ "aria-labelledby": N,
58
57
  "data-testid": "otp-input-container",
59
- "data-disabled": p,
58
+ "data-disabled": m,
60
59
  children: Array.from({ length: i }).map((e, t) => /* @__PURE__ */ l("input", {
61
- id: t === 0 ? j : void 0,
60
+ id: t === 0 ? M : void 0,
62
61
  ref: (e) => {
63
- A.current[t] = e;
62
+ j.current[t] = e;
64
63
  },
65
64
  "data-testid": "otp-input",
66
- className: c(r.input, m && r.danger, p && r.disabled),
65
+ className: c(r.input, h && r.danger, m && r.disabled),
67
66
  type: "text",
68
67
  maxLength: 1,
69
- value: E[t],
70
- onChange: (e) => F(e, t),
71
- onKeyDown: (e) => I(e, t),
72
- onPaste: L,
73
- disabled: p,
74
- "aria-label": T(t + 1),
75
- "aria-invalid": m ? "true" : "false",
76
- "aria-describedby": N,
77
- "aria-required": h ? "true" : void 0
68
+ value: D[t],
69
+ onChange: (e) => I(e, t),
70
+ onKeyDown: (e) => L(e, t),
71
+ onPaste: R,
72
+ disabled: m,
73
+ "aria-label": E(t + 1),
74
+ "aria-invalid": h ? "true" : "false",
75
+ "aria-describedby": P,
76
+ "aria-required": g ? "true" : void 0
78
77
  }, t))
79
- }) }), S]
78
+ }) }), C]
80
79
  })
81
80
  });
82
81
  });
83
- d.displayName = "OtpInput";
82
+ f.displayName = "OtpInput";
84
83
  //#endregion
85
- export { d as OtpInput, d as default };
84
+ export { f as OtpInput, f as default };
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.6.0 — a React 19 component library: 216 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.6.1 — a React 19 component library: 216 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
 
package/dist/llms.txt CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.6.0 — a React 19 component library: 216 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.6.1 — a React 19 component library: 216 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