@tribepad/themis 1.6.3 → 1.6.5
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 +16 -0
- package/dist/elements/AlertDialog/index.js +1 -1
- package/dist/elements/AlertDialog/index.js.map +1 -1
- package/dist/elements/AlertDialog/index.mjs +1 -1
- package/dist/elements/AlertDialog/index.mjs.map +1 -1
- package/dist/elements/ColorPicker/index.js +1 -1
- package/dist/elements/ColorPicker/index.js.map +1 -1
- package/dist/elements/ColorPicker/index.mjs +1 -1
- package/dist/elements/ColorPicker/index.mjs.map +1 -1
- package/dist/elements/Combobox/index.js +1 -1
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/Combobox/index.mjs +1 -1
- package/dist/elements/Combobox/index.mjs.map +1 -1
- package/dist/elements/DatePicker/index.js +1 -1
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/index.mjs +1 -1
- package/dist/elements/DatePicker/index.mjs.map +1 -1
- package/dist/elements/FileField/index.js +1 -1
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +1 -1
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/Filters/index.js +1 -1
- package/dist/elements/Filters/index.js.map +1 -1
- package/dist/elements/Filters/index.mjs +1 -1
- package/dist/elements/Filters/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.d.ts +2 -2
- package/dist/elements/Modal/Modal.d.ts.map +1 -1
- package/dist/elements/Modal/Modal.styles.d.ts +25 -0
- package/dist/elements/Modal/Modal.styles.d.ts.map +1 -1
- package/dist/elements/Modal/Modal.types.d.ts +27 -0
- package/dist/elements/Modal/Modal.types.d.ts.map +1 -1
- package/dist/elements/Modal/index.d.ts +3 -3
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +1 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Modal/index.mjs +1 -1
- package/dist/elements/Modal/index.mjs.map +1 -1
- package/dist/elements/NumberField/index.js +1 -1
- package/dist/elements/NumberField/index.js.map +1 -1
- package/dist/elements/NumberField/index.mjs +1 -1
- package/dist/elements/NumberField/index.mjs.map +1 -1
- package/dist/elements/PasswordField/index.js +1 -1
- package/dist/elements/PasswordField/index.js.map +1 -1
- package/dist/elements/PasswordField/index.mjs +1 -1
- package/dist/elements/PasswordField/index.mjs.map +1 -1
- package/dist/elements/Resizable/index.js +1 -1
- package/dist/elements/Resizable/index.js.map +1 -1
- package/dist/elements/Resizable/index.mjs +1 -1
- package/dist/elements/Resizable/index.mjs.map +1 -1
- package/dist/elements/SearchField/SearchField.types.d.ts +4 -0
- package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -1
- package/dist/elements/SearchField/index.js +1 -1
- package/dist/elements/SearchField/index.js.map +1 -1
- package/dist/elements/SearchField/index.mjs +1 -1
- package/dist/elements/SearchField/index.mjs.map +1 -1
- package/dist/elements/Select/index.js +1 -1
- package/dist/elements/Select/index.js.map +1 -1
- package/dist/elements/Select/index.mjs +1 -1
- package/dist/elements/Select/index.mjs.map +1 -1
- package/dist/elements/Sidebar/index.js +1 -1
- package/dist/elements/Sidebar/index.js.map +1 -1
- package/dist/elements/Sidebar/index.mjs +1 -1
- package/dist/elements/Sidebar/index.mjs.map +1 -1
- package/dist/elements/Table/index.js +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +1 -1
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
- package/dist/elements/Tabs/index.js +1 -1
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/Tabs/index.mjs +1 -1
- package/dist/elements/Tabs/index.mjs.map +1 -1
- package/dist/elements/TextField/index.js +1 -1
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +1 -1
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/TimeField/index.js +1 -1
- package/dist/elements/TimeField/index.js.map +1 -1
- package/dist/elements/TimeField/index.mjs +1 -1
- package/dist/elements/TimeField/index.mjs.map +1 -1
- package/dist/elements/Wizard/index.js +1 -1
- package/dist/elements/Wizard/index.js.map +1 -1
- package/dist/elements/Wizard/index.mjs +1 -1
- package/dist/elements/Wizard/index.mjs.map +1 -1
- package/dist/elements/index.js +1 -1
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +1 -1
- package/dist/elements/index.mjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/styles/animations.css +32 -0
- package/dist/styles/index.js +1 -1
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/index.mjs +1 -1
- package/dist/styles/index.mjs.map +1 -1
- package/dist/styles/shared-variants.d.ts +17 -0
- package/dist/styles/shared-variants.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/elements/Modal/Modal.stories.tsx +106 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {createContext,memo,forwardRef,useId,useState,useCallback,useMemo,useContext,useEffect}from'react';import {Button,Label,Input,Text,FieldError,TextField}from'react-aria-components';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {Loader2,Zap,Search,X}from'lucide-react';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';function d(...t){return twMerge(clsx(t))}var ie="data-[pressed]:scale-[0.97]";var Y="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",j="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground",le="disabled:pointer-events-none disabled:opacity-50";var Z={sm:"h-9",default:"h-10",lg:"h-11"},V={sm:`${Z.sm} px-2 text-xs`,default:`${Z.default} px-3 text-sm`,lg:`${Z.lg} px-4 text-base`},de="min-h-[44px] flex items-center";var ce=cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),ue=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-6 text-base",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Pe=createContext(null);Pe.displayName="ButtonGroupContext";function Oe(){return useContext(Pe)}var Ce=createContext(null);Ce.displayName="ButtonGroupItemContext";function Le(){return useContext(Ce)}cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Re=cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var B=memo(forwardRef(({className:t,buttonVisualClassName:o,variant:n,size:r,visualSize:s,fullWidth:u,loading:c=false,loadingText:p="Loading...",shortcut:v,children:x,isDisabled:g,paywall:i=false,paywallRedirect:E,paywallDescription:ee,onPress:te,...G},oe)=>{let I=useId(),N=Oe(),z=Le(),_=n??N?.variant??"default",h=r??N?.size,U=g??N?.isDisabled??false,C=N?.orientation==="vertical",T=u||C,$=z?Re({orientation:N?.orientation??"horizontal",position:z.position}):"",y=s??h??"default";return process.env.NODE_ENV!=="production"&&(y==="dot"||y==="icon")&&!G["aria-label"]&&!x&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsx(Button,{ref:oe,isDisabled:U||c||void 0,"aria-disabled":i?true:void 0,"aria-describedby":i?I:void 0,onPress:S=>{if(i){E&&window.open(E,"_blank","noopener,noreferrer");return}te?.(S);},className:d(ce({fullWidth:T,inVerticalGroup:C}),t),...G,children:S=>jsxs("span",{className:d(ue({variant:_,visualSize:y,paywall:i,fullWidth:T}),$,o,ie,"",Y,j),"data-pressed":S.isPressed||void 0,children:[c&&jsxs(Fragment,{children:[jsx(Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsx("span",{className:"sr-only","aria-live":"polite",children:p})]}),!c&&x,i&&jsx(Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),i&&jsxs("span",{id:I,className:"sr-only",children:["Premium feature: ",ee||"Upgrade required to access this feature"]}),S.isFocusVisible&&v&&jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:v})]})})}));B.displayName="Button";var we=()=>jsxs("svg",{"data-testid":"password-toggle-icon-show",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]}),Ve=()=>jsxs("svg",{"data-testid":"password-toggle-icon-hide",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M10.5 5.5l-5 5"}),jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]});var M=cva("flex w-full rounded-md border bg-[var(--content-background)] px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",{variants:{size:{sm:`${V.sm} py-1`,default:`${V.default} py-2`,lg:`${V.lg} py-3`},state:{default:"border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",error:"border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",success:"border-[var(--success-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--success-ring)] focus-visible:ring-offset-2",disabled:"cursor-not-allowed opacity-50",readonly:"cursor-default bg-[var(--content-background)] opacity-70"}},defaultVariants:{size:"default",state:"default"}}),k=cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),me=cva("text-sm text-[var(--content-foreground)]"),Be=cva("text-sm text-[var(--destructive-background)] font-medium"),q=cva("text-sm text-[var(--success-foreground)] font-medium");function Me({expandOnFocus:t,collapsedWidth:o,value:n,defaultValue:r,userOnFocus:s,userOnBlur:u}){let[c,p]=useState(false),v=useCallback(i=>{t&&p(true),s?.(i);},[t,s]),x=useCallback(i=>{t&&i.target.value===""&&p(false),u?.(i);},[t,u]),g=useMemo(()=>t?c||(n!==void 0?n!=="":r!==void 0&&r!=="")?"100%":o:void 0,[t,c,n,r,o]);return {handleFocus:v,handleBlur:x,inputWidth:g}}function ke({disableCopyPaste:t}){let[o,n]=useState(false),[r,s]=useState("");useEffect(()=>{t&&typeof process<"u"&&process.env.NODE_ENV==="development"&&console.warn("[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers.");},[t]);let u=useCallback(c=>{t&&(c.preventDefault(),n(true),s("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{n(false),s("");},250));},[t]);return {isShaking:o,screenReaderMessage:r,handlePaste:u}}function Ge({type:t,showPasswordToggle:o}){let[n,r]=useState(false),s=useCallback(()=>{r(c=>!c);},[]),u=useMemo(()=>t==="password"&&o&&n?"text":t,[t,o,n]);return {showPassword:n,actualType:u,handlePasswordToggle:s}}var We=forwardRef(({className:t,state:o="default",children:n,...r},s)=>jsx(Label,{ref:s,className:d(k({state:o}),t),...r,children:n}));We.displayName="TextFieldLabel";var Ye=forwardRef(({className:t,size:o="default",state:n="default",...r},s)=>jsx(Input,{ref:s,className:d(M({size:o,state:n}),le,t),...r}));Ye.displayName="TextFieldInput";var je=forwardRef(({className:t,children:o,...n},r)=>jsx(Text,{ref:r,slot:"description",className:d(me(),t),...n,children:o}));je.displayName="TextFieldDescription";var ge=forwardRef(({className:t,children:o,...n},r)=>jsx(FieldError,{ref:r,...n,className:d(Be(),t),children:o}));ge.displayName="TextFieldError";var Ze=forwardRef(({className:t,children:o,...n},r)=>jsx(Text,{ref:r,slot:"description",className:d(q(),t),...n,children:o}));Ze.displayName="TextFieldSuccess";var qe=forwardRef(({className:t,size:o="default",label:n,labelHint:r,description:s,errorMessage:u,successMessage:c,type:p="text",isRequired:v=false,isReadOnly:x=false,isDisabled:g=false,isInvalid:i=false,isValid:E=false,id:ee,autoComplete:te,disableCopyPaste:G=false,pattern:oe,patternDescription:I,expandOnFocus:N=false,collapsedWidth:z="200px",prefix:_,suffix:h,prefixSize:U=16,suffixSize:C=16,showPasswordToggle:T,isIconHidden:$=false,onSubmit:y,onClear:ne,value:L,defaultValue:S,onFocus:Je,onBlur:et,...R},tt)=>{let Te=useId(),ot=useId(),nt=ee||ot,{handleFocus:rt,handleBlur:at,inputWidth:it}=Me({expandOnFocus:N,collapsedWidth:z,value:L,defaultValue:S,userOnFocus:Je,userOnBlur:et}),{isShaking:st,screenReaderMessage:be,handlePaste:lt}=ke({disableCopyPaste:G}),{showPassword:re,actualType:dt,handlePasswordToggle:ve}=Ge({type:p,showPasswordToggle:T}),f=p==="search",[ct,he]=useState(S??""),w=L!==void 0,b=w?L:ct,ut=useCallback(l=>{w||he(l),R.onChange?.(l);},[w,R]),W=useCallback(()=>{w||he(""),R.onChange?.(""),ne?.();},[w,R,ne]),pt=useCallback(l=>{l.key==="Enter"&&y&&y(b),l.key==="Escape"&&b&&(l.preventDefault(),W());},[b,y,W]),ft=useMemo(()=>g?"disabled":x?"readonly":i?"error":E?"success":"default",[g,x,i,E]),mt=useMemo(()=>g?"disabled":"default",[g]),Se=useMemo(()=>s&&I?`${s} ${I}`:s||I,[s,I]),A=useMemo(()=>f&&!$&&!_?jsx(Search,{className:o==="sm"?"h-3.5 w-3.5":o==="lg"?"h-5 w-5":"h-4 w-4"}):_,[f,$,_,o]),Ee=useMemo(()=>{let l={left:12,right:12};if(A){let ae=typeof A=="string"?A.length*8+16:U+16;l.left=ae;}if(p==="password"&&T)l.right=32;else if(f&&b)l.right=44;else if(h){let ae=typeof h=="string"?h.length*8+16:C+16;l.right=ae;}return l},[A,_,h,U,C,p,T,f,b]),Ie=useMemo(()=>p==="password"&&T?jsx(B,{variant:"ghost",visualSize:"icon",onPress:ve,"aria-label":re?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:re?jsx(Ve,{}):jsx(we,{})}):f&&b?jsx(B,{variant:"ghost",visualSize:"icon",onPress:W,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsx(X,{className:o==="sm"?"h-3 w-3":o==="lg"?"h-5 w-5":"h-4 w-4"})}):h,[p,T,re,h,ve,f,b,o,W]),Ne=p==="password"&&T||f&&!!b;return jsxs(TextField,{ref:tt,className:d("flex flex-col gap-1.5",t),isRequired:v,isReadOnly:x,isDisabled:g,isInvalid:i,value:f?b:L,defaultValue:f?void 0:S,onChange:f?ut:void 0,...R,children:[n&&jsxs(Label,{className:d(k({state:mt}),r&&"flex items-baseline justify-between"),children:[jsxs("span",{children:[n,v&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsx("strong",{children:"*"})})]}),r&&jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:r})]}),Se&&jsx(Text,{slot:"description",className:d(me()),children:Se}),jsxs("div",{className:d(de,"relative cursor-text motion-safe:transition-colors motion-safe:duration-200"),style:{width:it},onClick:l=>{l.target===l.currentTarget&&l.currentTarget.querySelector("input")?.focus();},children:[A&&jsx("div",{"data-testid":"textfield-prefix",className:"absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]","aria-hidden":"true",children:A}),jsx(Input,{type:dt,id:nt,className:d(M({size:o,state:ft}),le,st&&"shake"),style:{width:"100%",paddingLeft:`${Ee.left}px`,paddingRight:`${Ee.right}px`},autoComplete:te,pattern:oe,onPaste:lt,onFocus:rt,onBlur:at,onKeyDown:f?pt:void 0,"aria-required":v?"true":void 0,"aria-readonly":x?"true":void 0,"aria-errormessage":i&&u?Te:void 0}),Ie&&jsx("div",{"data-testid":"textfield-suffix",className:d("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",Ne?"":"pointer-events-none"),"aria-hidden":Ne?void 0:"true",children:Ie})]}),E&&c&&!i&&jsx(Text,{slot:"description",className:d(q()),children:c}),i&&u&&jsx(ge,{id:Te,children:u}),be&&jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:be})]})});qe.displayName="TextField";var Xe=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var Ke=z.enum(["off","on","name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname","email","username","new-password","current-password","one-time-code","organization-title","organization","street-address","address-line1","address-line2","address-line3","address-level4","address-level3","address-level2","address-level1","country","country-name","postal-code","cc-name","cc-given-name","cc-additional-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type","transaction-currency","transaction-amount","language","bday","bday-day","bday-month","bday-year","sex","tel","tel-country-code","tel-national","tel-area-code","tel-local","tel-extension","impp","url","photo"]),Lt=[/\(\.\*\)\+/,/\(\.\+\)\+/,/\([^)]*\)\{.*,.*\}/,/\(\?!\)/,/\(\?<=\)/],Qe=t=>{for(let n of Lt)if(n.test(t))return false;return !((t.match(/[*+{}]/g)||[]).length>5)},Rt=Xe.extend({size:z.enum(["sm","default","lg"]).optional().default("default"),label:z.string().optional(),labelHint:z.string().optional(),description:z.string().optional(),errorMessage:z.string().optional(),successMessage:z.string().optional(),type:z.enum(["text","email","password","url","search"]).optional().default("text"),isRequired:z.boolean().optional(),isReadOnly:z.boolean().optional(),isDisabled:z.boolean().optional(),isInvalid:z.boolean().optional(),isValid:z.boolean().optional(),placeholder:z.string().optional(),value:z.string().optional(),defaultValue:z.string().optional(),name:z.string().optional(),autoFocus:z.boolean().optional(),autoComplete:Ke.optional(),maxLength:z.number().optional(),minLength:z.number().optional(),pattern:z.string().optional(),patternDescription:z.string().optional(),disableCopyPaste:z.boolean().optional().default(false),prefix:z.any().optional(),suffix:z.any().optional(),prefixSize:z.number().optional().default(16),suffixSize:z.number().optional().default(16),expandOnFocus:z.boolean().optional().default(false),collapsedWidth:z.string().optional().default("200px"),showPasswordToggle:z.boolean().optional(),isIconHidden:z.boolean().optional().default(false),onSubmit:z.custom().optional(),onClear:z.custom().optional()}).refine(t=>!t.pattern||t.patternDescription,{message:"patternDescription is required when pattern is provided",path:["patternDescription"]}).refine(t=>!t.pattern||Qe(t.pattern),{message:"Unsafe regex pattern detected. Pattern may cause ReDoS vulnerability. Avoid patterns like (.*)+, (.+)+, or excessive quantifiers.",path:["pattern"]}).refine(t=>!(t.successMessage&&t.errorMessage),{message:"Cannot provide both successMessage and errorMessage. Use one based on validation state.",path:["successMessage"]}).refine(t=>(typeof process<"u"&&process.env.NODE_ENV==="development"&&t.isValid&&t.isInvalid&&console.error("[TextField] Both isValid and isInvalid are true. isInvalid takes precedence."),true)),wt=z.object({children:z.any().optional(),className:z.string().optional(),htmlFor:z.string().optional(),state:z.enum(["default","disabled"]).optional().default("default")}),Vt=z.object({className:z.string().optional(),size:z.enum(["sm","default","lg"]).optional().default("default"),state:z.enum(["default","error","success","disabled","readonly"]).optional().default("default")}),Dt=z.object({children:z.any().optional(),className:z.string().optional()}),Bt=z.object({children:z.any().optional(),className:z.string().optional()}),Ht=z.object({children:z.any().optional(),className:z.string().optional()});export{Ke as AutoCompleteValueSchema,qe as TextField,je as TextFieldDescription,Dt as TextFieldDescriptionPropsSchema,ge as TextFieldError,Bt as TextFieldErrorPropsSchema,Ye as TextFieldInput,Vt as TextFieldInputPropsSchema,We as TextFieldLabel,wt as TextFieldLabelPropsSchema,Rt as TextFieldPropsSchema,Ze as TextFieldSuccess,Ht as TextFieldSuccessPropsSchema,M as inputVariants,k as labelVariants,q as successMessageVariants,M as textFieldInputVariants,k as textFieldLabelVariants,Qe as validatePatternSafety};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import {createContext,memo,forwardRef,useId,useState,useCallback,useMemo,useContext,useEffect}from'react';import {Button,Label,Input,Text,FieldError,TextField}from'react-aria-components';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {Loader2,Zap,Search,X}from'lucide-react';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';function d(...t){return twMerge(clsx(t))}var ie="data-[pressed]:scale-[0.97]";var Y="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",j="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground",le="disabled:pointer-events-none disabled:opacity-50";var Z={sm:"h-9",default:"h-10",lg:"h-11"},w={sm:`${Z.sm} px-2 text-xs`,default:`${Z.default} px-3 text-sm`,lg:`${Z.lg} px-4 text-base`},de="min-h-[44px] flex items-center";var ce=cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),ue=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-6 text-base",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Fe=createContext(null);Fe.displayName="ButtonGroupContext";function Pe(){return useContext(Fe)}var Le=createContext(null);Le.displayName="ButtonGroupItemContext";function Ce(){return useContext(Le)}cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var De=cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var B=memo(forwardRef(({className:t,buttonVisualClassName:o,variant:n,size:a,visualSize:s,fullWidth:u,loading:c=false,loadingText:p="Loading...",shortcut:v,children:x,isDisabled:g,paywall:i=false,paywallRedirect:E,paywallDescription:ee,onPress:te,...G},oe)=>{let I=useId(),_=Pe(),U=Ce(),y=n??_?.variant??"default",S=a??_?.size,z=g??_?.isDisabled??false,L=_?.orientation==="vertical",T=u||L,$=U?De({orientation:_?.orientation??"horizontal",position:U.position}):"",N=s??S??"default";return process.env.NODE_ENV!=="production"&&(N==="dot"||N==="icon")&&!G["aria-label"]&&!x&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsx(Button,{ref:oe,isDisabled:z||c||void 0,"aria-disabled":i?true:void 0,"aria-describedby":i?I:void 0,onPress:h=>{if(i){E&&window.open(E,"_blank","noopener,noreferrer");return}te?.(h);},className:d(ce({fullWidth:T,inVerticalGroup:L}),t),...G,children:h=>jsxs("span",{className:d(ue({variant:y,visualSize:N,paywall:i,fullWidth:T}),$,o,ie,"",Y,j),"data-pressed":h.isPressed||void 0,children:[c&&jsxs(Fragment,{children:[jsx(Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsx("span",{className:"sr-only","aria-live":"polite",children:p})]}),!c&&x,i&&jsx(Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),i&&jsxs("span",{id:I,className:"sr-only",children:["Premium feature: ",ee||"Upgrade required to access this feature"]}),h.isFocusVisible&&v&&jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:v})]})})}));B.displayName="Button";var Re=()=>jsxs("svg",{"data-testid":"password-toggle-icon-show",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]}),we=()=>jsxs("svg",{"data-testid":"password-toggle-icon-hide",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M10.5 5.5l-5 5"}),jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]});var H=cva("flex w-full rounded-md border bg-[var(--content-background)] px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",{variants:{size:{sm:`${w.sm} py-1`,default:`${w.default} py-2`,lg:`${w.lg} py-3`},state:{default:"border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",error:"border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",success:"border-[var(--success-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--success-ring)] focus-visible:ring-offset-2",disabled:"cursor-not-allowed opacity-50",readonly:"cursor-default bg-[var(--content-background)] opacity-70"}},defaultVariants:{size:"default",state:"default"}}),k=cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),me=cva("text-sm text-[var(--content-foreground)]"),Be=cva("text-sm text-[var(--destructive-background)] font-medium"),q=cva("text-sm text-[var(--success-foreground)] font-medium");function He({expandOnFocus:t,collapsedWidth:o,value:n,defaultValue:a,userOnFocus:s,userOnBlur:u}){let[c,p]=useState(false),v=useCallback(i=>{t&&p(true),s?.(i);},[t,s]),x=useCallback(i=>{t&&i.target.value===""&&p(false),u?.(i);},[t,u]),g=useMemo(()=>t?c||(n!==void 0?n!=="":a!==void 0&&a!=="")?"100%":o:void 0,[t,c,n,a,o]);return {handleFocus:v,handleBlur:x,inputWidth:g}}function ke({disableCopyPaste:t}){let[o,n]=useState(false),[a,s]=useState("");useEffect(()=>{t&&typeof process<"u"&&process.env.NODE_ENV==="development"&&console.warn("[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers.");},[t]);let u=useCallback(c=>{t&&(c.preventDefault(),n(true),s("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{n(false),s("");},250));},[t]);return {isShaking:o,screenReaderMessage:a,handlePaste:u}}function Ge({type:t,showPasswordToggle:o}){let[n,a]=useState(false),s=useCallback(()=>{a(c=>!c);},[]),u=useMemo(()=>t==="password"&&o&&n?"text":t,[t,o,n]);return {showPassword:n,actualType:u,handlePasswordToggle:s}}var We=forwardRef(({className:t,state:o="default",children:n,...a},s)=>jsx(Label,{ref:s,className:d(k({state:o}),t),...a,children:n}));We.displayName="TextFieldLabel";var Ye=forwardRef(({className:t,size:o="default",state:n="default",...a},s)=>jsx(Input,{ref:s,className:d(H({size:o,state:n}),le,t),...a}));Ye.displayName="TextFieldInput";var je=forwardRef(({className:t,children:o,...n},a)=>jsx(Text,{ref:a,slot:"description",className:d(me(),t),...n,children:o}));je.displayName="TextFieldDescription";var ge=forwardRef(({className:t,children:o,...n},a)=>jsx(FieldError,{ref:a,...n,className:d(Be(),t),children:o}));ge.displayName="TextFieldError";var Ze=forwardRef(({className:t,children:o,...n},a)=>jsx(Text,{ref:a,slot:"description",className:d(q(),t),...n,children:o}));Ze.displayName="TextFieldSuccess";var qe=forwardRef(({className:t,size:o="default",label:n,labelHint:a,description:s,errorMessage:u,successMessage:c,type:p="text",isRequired:v=false,isReadOnly:x=false,isDisabled:g=false,isInvalid:i=false,isValid:E=false,id:ee,autoComplete:te,disableCopyPaste:G=false,pattern:oe,patternDescription:I,expandOnFocus:_=false,collapsedWidth:U="200px",prefix:y,suffix:S,prefixSize:z=16,suffixSize:L=16,showPasswordToggle:T,isIconHidden:$=false,onSubmit:N,onClear:ne,value:C,defaultValue:h,onFocus:Je,onBlur:et,...D},tt)=>{let Te=useId(),ot=useId(),nt=ee||ot,{handleFocus:at,handleBlur:rt,inputWidth:it}=He({expandOnFocus:_,collapsedWidth:U,value:C,defaultValue:h,userOnFocus:Je,userOnBlur:et}),{isShaking:st,screenReaderMessage:be,handlePaste:lt}=ke({disableCopyPaste:G}),{showPassword:ae,actualType:dt,handlePasswordToggle:ve}=Ge({type:p,showPasswordToggle:T}),f=p==="search",[ct,Se]=useState(h??""),R=C!==void 0,b=R?C:ct,ut=useCallback(l=>{R||Se(l),D.onChange?.(l);},[R,D]),W=useCallback(()=>{R||Se(""),D.onChange?.(""),ne?.();},[R,D,ne]),pt=useCallback(l=>{l.key==="Enter"&&N&&N(b),l.key==="Escape"&&b&&(l.preventDefault(),W());},[b,N,W]),ft=useMemo(()=>g?"disabled":x?"readonly":i?"error":E?"success":"default",[g,x,i,E]),mt=useMemo(()=>g?"disabled":"default",[g]),he=useMemo(()=>s&&I?`${s} ${I}`:s||I,[s,I]),A=useMemo(()=>f&&!$&&!y?jsx(Search,{className:o==="sm"?"h-3.5 w-3.5":o==="lg"?"h-5 w-5":"h-4 w-4"}):y,[f,$,y,o]),Ee=useMemo(()=>{let l={left:12,right:12};if(A){let re=typeof A=="string"?A.length*8+16:z+16;l.left=re;}if(p==="password"&&T)l.right=32;else if(f&&b)l.right=44;else if(S){let re=typeof S=="string"?S.length*8+16:L+16;l.right=re;}return l},[A,y,S,z,L,p,T,f,b]),Ie=useMemo(()=>p==="password"&&T?jsx(B,{variant:"ghost",visualSize:"icon",onPress:ve,"aria-label":ae?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:ae?jsx(we,{}):jsx(Re,{})}):f&&b?jsx(B,{variant:"ghost",visualSize:"icon",onPress:W,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsx(X,{className:o==="sm"?"h-3 w-3":o==="lg"?"h-5 w-5":"h-4 w-4"})}):S,[p,T,ae,S,ve,f,b,o,W]),_e=p==="password"&&T||f&&!!b;return jsxs(TextField,{ref:tt,className:d("flex flex-col gap-1.5",t),isRequired:v,isReadOnly:x,isDisabled:g,isInvalid:i,value:f?b:C,defaultValue:f?void 0:h,onChange:f?ut:void 0,...D,children:[n&&jsxs(Label,{className:d(k({state:mt}),a&&"flex items-baseline justify-between"),children:[jsxs("span",{children:[n,v&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsx("strong",{children:"*"})})]}),a&&jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:a})]}),he&&jsx(Text,{slot:"description",className:d(me()),children:he}),jsxs("div",{className:d(de,"relative cursor-text motion-safe:transition-colors motion-safe:duration-200"),style:{width:it},onClick:l=>{l.target===l.currentTarget&&l.currentTarget.querySelector("input")?.focus();},children:[A&&jsx("div",{"data-testid":"textfield-prefix",className:"absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]","aria-hidden":"true",children:A}),jsx(Input,{type:dt,id:nt,className:d(H({size:o,state:ft}),le,st&&"shake"),style:{width:"100%",paddingLeft:`${Ee.left}px`,paddingRight:`${Ee.right}px`},autoComplete:te,pattern:oe,onPaste:lt,onFocus:at,onBlur:rt,onKeyDown:f?pt:void 0,"aria-required":v?"true":void 0,"aria-readonly":x?"true":void 0,"aria-errormessage":i&&u?Te:void 0}),Ie&&jsx("div",{"data-testid":"textfield-suffix",className:d("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",_e?"":"pointer-events-none"),"aria-hidden":_e?void 0:"true",children:Ie})]}),E&&c&&!i&&jsx(Text,{slot:"description",className:d(q()),children:c}),i&&u&&jsx(ge,{id:Te,children:u}),be&&jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:be})]})});qe.displayName="TextField";var Xe=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var Ke=z.enum(["off","on","name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname","email","username","new-password","current-password","one-time-code","organization-title","organization","street-address","address-line1","address-line2","address-line3","address-level4","address-level3","address-level2","address-level1","country","country-name","postal-code","cc-name","cc-given-name","cc-additional-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type","transaction-currency","transaction-amount","language","bday","bday-day","bday-month","bday-year","sex","tel","tel-country-code","tel-national","tel-area-code","tel-local","tel-extension","impp","url","photo"]),Ct=[/\(\.\*\)\+/,/\(\.\+\)\+/,/\([^)]*\)\{.*,.*\}/,/\(\?!\)/,/\(\?<=\)/],Qe=t=>{for(let n of Ct)if(n.test(t))return false;return !((t.match(/[*+{}]/g)||[]).length>5)},Dt=Xe.extend({size:z.enum(["sm","default","lg"]).optional().default("default"),label:z.string().optional(),labelHint:z.string().optional(),description:z.string().optional(),errorMessage:z.string().optional(),successMessage:z.string().optional(),type:z.enum(["text","email","password","url","search"]).optional().default("text"),isRequired:z.boolean().optional(),isReadOnly:z.boolean().optional(),isDisabled:z.boolean().optional(),isInvalid:z.boolean().optional(),isValid:z.boolean().optional(),placeholder:z.string().optional(),value:z.string().optional(),defaultValue:z.string().optional(),name:z.string().optional(),autoFocus:z.boolean().optional(),autoComplete:Ke.optional(),maxLength:z.number().optional(),minLength:z.number().optional(),pattern:z.string().optional(),patternDescription:z.string().optional(),disableCopyPaste:z.boolean().optional().default(false),prefix:z.any().optional(),suffix:z.any().optional(),prefixSize:z.number().optional().default(16),suffixSize:z.number().optional().default(16),expandOnFocus:z.boolean().optional().default(false),collapsedWidth:z.string().optional().default("200px"),showPasswordToggle:z.boolean().optional(),isIconHidden:z.boolean().optional().default(false),onSubmit:z.custom().optional(),onClear:z.custom().optional()}).refine(t=>!t.pattern||t.patternDescription,{message:"patternDescription is required when pattern is provided",path:["patternDescription"]}).refine(t=>!t.pattern||Qe(t.pattern),{message:"Unsafe regex pattern detected. Pattern may cause ReDoS vulnerability. Avoid patterns like (.*)+, (.+)+, or excessive quantifiers.",path:["pattern"]}).refine(t=>!(t.successMessage&&t.errorMessage),{message:"Cannot provide both successMessage and errorMessage. Use one based on validation state.",path:["successMessage"]}).refine(t=>(typeof process<"u"&&process.env.NODE_ENV==="development"&&t.isValid&&t.isInvalid&&console.error("[TextField] Both isValid and isInvalid are true. isInvalid takes precedence."),true)),Rt=z.object({children:z.any().optional(),className:z.string().optional(),htmlFor:z.string().optional(),state:z.enum(["default","disabled"]).optional().default("default")}),wt=z.object({className:z.string().optional(),size:z.enum(["sm","default","lg"]).optional().default("default"),state:z.enum(["default","error","success","disabled","readonly"]).optional().default("default")}),Vt=z.object({children:z.any().optional(),className:z.string().optional()}),Bt=z.object({children:z.any().optional(),className:z.string().optional()}),Mt=z.object({children:z.any().optional(),className:z.string().optional()});export{Ke as AutoCompleteValueSchema,qe as TextField,je as TextFieldDescription,Vt as TextFieldDescriptionPropsSchema,ge as TextFieldError,Bt as TextFieldErrorPropsSchema,Ye as TextFieldInput,wt as TextFieldInputPropsSchema,We as TextFieldLabel,Rt as TextFieldLabelPropsSchema,Dt as TextFieldPropsSchema,Ze as TextFieldSuccess,Mt as TextFieldSuccessPropsSchema,H as inputVariants,k as labelVariants,q as successMessageVariants,H as textFieldInputVariants,k as textFieldLabelVariants,Qe as validatePatternSafety};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|