@jamsrui/otp-input 0.0.20 → 0.0.21
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/dist/styles.d.mts +3 -12
- package/dist/styles.mjs +1 -1
- package/dist/use-otp-input.d.mts +1 -0
- package/dist/use-otp-input.mjs +1 -1
- package/package.json +4 -4
package/dist/styles.d.mts
CHANGED
|
@@ -26,13 +26,10 @@ declare const otpInputVariants: _jamsrui_utils.TVReturnType<{
|
|
|
26
26
|
caret: string;
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
|
-
isInvalid: {
|
|
30
|
-
true: {};
|
|
31
|
-
};
|
|
32
29
|
}, {
|
|
33
30
|
root: string;
|
|
34
31
|
group: string;
|
|
35
|
-
slot: string;
|
|
32
|
+
slot: string[];
|
|
36
33
|
separator: string;
|
|
37
34
|
input: string[];
|
|
38
35
|
caret: string;
|
|
@@ -61,13 +58,10 @@ declare const otpInputVariants: _jamsrui_utils.TVReturnType<{
|
|
|
61
58
|
caret: string;
|
|
62
59
|
};
|
|
63
60
|
};
|
|
64
|
-
isInvalid: {
|
|
65
|
-
true: {};
|
|
66
|
-
};
|
|
67
61
|
}, {
|
|
68
62
|
root: string;
|
|
69
63
|
group: string;
|
|
70
|
-
slot: string;
|
|
64
|
+
slot: string[];
|
|
71
65
|
separator: string;
|
|
72
66
|
input: string[];
|
|
73
67
|
caret: string;
|
|
@@ -96,13 +90,10 @@ declare const otpInputVariants: _jamsrui_utils.TVReturnType<{
|
|
|
96
90
|
caret: string;
|
|
97
91
|
};
|
|
98
92
|
};
|
|
99
|
-
isInvalid: {
|
|
100
|
-
true: {};
|
|
101
|
-
};
|
|
102
93
|
}, {
|
|
103
94
|
root: string;
|
|
104
95
|
group: string;
|
|
105
|
-
slot: string;
|
|
96
|
+
slot: string[];
|
|
106
97
|
separator: string;
|
|
107
98
|
input: string[];
|
|
108
99
|
caret: string;
|
package/dist/styles.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{radiusVariant as t,tv as r}from"@jamsrui/utils";const
|
|
1
|
+
import{radiusVariant as t,tv as r}from"@jamsrui/utils";const a=r({slots:{root:"otp-input otp-input__root relative flex gap-2 items-center group data-disabled:status-disabled",group:"otp-input__group flex",slot:["otp-input__slot border-border relative flex items-center justify-center","border-y border-r first:border-l first:rounded-l-md last:rounded-r-md outline-solid outline-0 outline-border/20","transition-all duration-300 ease-in-out","group-data-hover:border-border-dark data-active:border-transparent data-active:outline-focus data-active:outline-2","group-data-invalid:border-danger group-data-invalid:data-active:outline-danger"],separator:"otp-input__separator w-4 h-1 bg-divider",input:["otp-input__input absolute bg-transparent inset-0 size-full outline-none outline-0 border-none border-0","z-10 text-transparent selection:text-transparent selection:bg-transparent","disabled:cursor-not-allowed"],caret:"otp-input__caret absolute pointer-events-none flex w-[1.5px] bg-foreground animate-caret-blink z-1"},variants:{radius:t(["group","separator"],"otp-input"),size:{sm:{slot:"w-8 h-8",caret:"h-4"},md:{slot:"w-10 h-10",caret:"h-5"},lg:{slot:"w-12 h-12",caret:"h-6"}}},defaultVariants:{radius:"md",size:"md"}});export{a as otpInputVariants};
|
package/dist/use-otp-input.d.mts
CHANGED
package/dist/use-otp-input.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{useCallback as l,useEffect as
|
|
1
|
+
"use client";import{useCallback as l,useEffect as at,useMemo as C,useRef as J,useState as Q}from"react";import{useControlledState as lt,useFocus as ut,useHover as ct,useMergeRefs as pt}from"@jamsrui/hooks";import{dataAttr as v,dataAttrDev as m,mapPropsVariants as it,mergeProps as mt}from"@jamsrui/utils";import{otpInputVariants as U}from"./styles.mjs";const Pt=S=>{const[W,X]=it(S,U.variantKeys),o=U(X),{value:Y,onValueChange:Z,defaultValue:tt,disabled:c=!1,maxLength:r,onComplete:b,placeholder:y,pattern:N,ref:et,isInvalid:w=!1,...V}=W,[p="",G]=lt({defaultProp:tt,prop:Y,onChange:Z}),s=J(null),{ref:nt,isHovered:D}=ct({isDisabled:c}),{ref:ot,isFocused:L}=ut({isDisabled:c}),M=pt([s,nt,ot,et]),R=J([s.current?.selectionStart??null,s.current?.selectionEnd??null,s.current?.selectionDirection??"none"]),d=C(()=>N?new RegExp(N):null,[N]),[f,I]=Q(null),[P,h]=Q(null),T=l(t=>{I(null),h(null)},[]),k=l(t=>{if(s.current){const e=Math.min(s.current.value.length,r-1),n=s.current.value.length;s.current.setSelectionRange(e,n),I(e),h(n)}},[r]),F=l(t=>{const e=t.currentTarget.value.slice(0,r);if(e.length>0&&d&&!d.test(e)){t.preventDefault();return}G(e),e.length===r&&b?.(e)},[r,b,d,G]);at(()=>{const t=s.current;if(!t)return;R.current=[t.selectionStart,t.selectionEnd,t.selectionDirection];function e(){if(!t)return;if(document.activeElement!==t){I(null),h(null);return}const n=t.selectionStart,g=t.selectionEnd,E=t.selectionDirection,i=R.current;let a=-1,u=-1,O;if(p.length!==0&&n!==null&&g!==null){if(n===g){if(n===0)a=0,u=1;else if(n===r)a=r-1,u=r;else if(r>1&&p.length>1){let z=0;if(i[0]!==null&&i[1]!==null){O=n<i[1]?"backward":"forward";const st=i[0]===i[1]&&i[0]<n;O==="backward"&&!st&&(z=-1)}a=n+z,u=a+1}}a!=-1&&u!==-1&&a!==u&&t.setSelectionRange(a,u,O)}const $=a!==-1?a:n,q=u!==-1?u:g,rt=O??E;I($),h(q),R.current=[$,q,rt]}return document.addEventListener("selectionchange",e,{capture:!0}),()=>{document.removeEventListener("selectionchange",e,{capture:!0})}},[r,p]);const H=C(()=>Array.from({length:6}).map((t,e)=>{const n=p[e]??null,g=y?.[e],E=f!==null&&P!==null&&(f===P&&f===e||f<=e&&P>e);return{char:n,placeholderChar:g,isActive:E}}),[y,P,f,p]),x=l(t=>({"data-slot":m("root"),"data-disabled":v(c),"aria-disabled":v(c),"data-hover":v(D),"data-focus":v(L),"data-invalid":v(w),...t,className:o.root({className:t.className})}),[c,D,L,w,o]),A=l(t=>({"data-slot":m("group"),...t,className:o.group({className:t.className})}),[o]),B=l(t=>({"data-slot":m("slot"),...t,className:o.slot({className:t.className})}),[o]),K=l(t=>({"data-slot":m("separator"),...t,className:o.separator({className:t.className})}),[o]),j=l(()=>({...mt(V,{onChange:F,onBlur:T,onFocus:k}),ref:M,"data-slot":m("input"),value:p,maxLength:r,className:o.input({className:S.className}),disabled:c,pattern:d?.source}),[V,p,F,T,k,M,r,o,S.className,c,d?.source]),_=l(t=>({"data-slot":m("caret"),...t,className:o.caret({className:t.className})}),[o]);return C(()=>({getRootProps:x,getGroupProps:A,getSlotProps:B,getSeparatorProps:K,getInputProps:j,getCaretProps:_,slots:H}),[x,A,B,K,j,_,H])};export{Pt as useOtpInput};
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jamsrui/otp-input",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"react": ">=19"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@jamsrui/core": "^0.0.
|
|
9
|
-
"@jamsrui/hooks": "^0.0.
|
|
10
|
-
"@jamsrui/utils": "^0.0.
|
|
8
|
+
"@jamsrui/core": "^0.0.16",
|
|
9
|
+
"@jamsrui/hooks": "^0.0.20",
|
|
10
|
+
"@jamsrui/utils": "^0.0.20"
|
|
11
11
|
},
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|