@tribepad/themis 1.0.17 → 1.0.19

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.
Files changed (202) hide show
  1. package/dist/elements/Accordion/Accordion.d.ts +3 -1
  2. package/dist/elements/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/elements/Accordion/index.js +1 -1
  4. package/dist/elements/Accordion/index.js.map +1 -1
  5. package/dist/elements/Accordion/index.mjs +1 -1
  6. package/dist/elements/Accordion/index.mjs.map +1 -1
  7. package/dist/elements/AlertDialog/index.js +1 -1
  8. package/dist/elements/AlertDialog/index.js.map +1 -1
  9. package/dist/elements/AlertDialog/index.mjs +1 -1
  10. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  11. package/dist/elements/Breadcrumbs/index.js +1 -1
  12. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  13. package/dist/elements/Breadcrumbs/index.mjs +1 -1
  14. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  15. package/dist/elements/Button/Button.d.ts.map +1 -1
  16. package/dist/elements/Button/index.js +1 -1
  17. package/dist/elements/Button/index.js.map +1 -1
  18. package/dist/elements/Button/index.mjs +1 -1
  19. package/dist/elements/Button/index.mjs.map +1 -1
  20. package/dist/elements/Card/Card.d.ts +21 -1
  21. package/dist/elements/Card/Card.d.ts.map +1 -1
  22. package/dist/elements/Card/Card.types.d.ts +36 -0
  23. package/dist/elements/Card/Card.types.d.ts.map +1 -1
  24. package/dist/elements/Card/index.d.ts +10 -3
  25. package/dist/elements/Card/index.d.ts.map +1 -1
  26. package/dist/elements/Card/index.js +1 -1
  27. package/dist/elements/Card/index.js.map +1 -1
  28. package/dist/elements/Card/index.mjs +1 -1
  29. package/dist/elements/Card/index.mjs.map +1 -1
  30. package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
  31. package/dist/elements/Carousel/index.js +1 -1
  32. package/dist/elements/Carousel/index.js.map +1 -1
  33. package/dist/elements/Carousel/index.mjs +1 -1
  34. package/dist/elements/Carousel/index.mjs.map +1 -1
  35. package/dist/elements/Chart/Chart.d.ts.map +1 -1
  36. package/dist/elements/Chart/Chart.types.d.ts +21 -4
  37. package/dist/elements/Chart/Chart.types.d.ts.map +1 -1
  38. package/dist/elements/Chart/ChartAreaSeries.d.ts +32 -0
  39. package/dist/elements/Chart/ChartAreaSeries.d.ts.map +1 -0
  40. package/dist/elements/Chart/ChartContext.d.ts +4 -1
  41. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  42. package/dist/elements/Chart/ChartLegend.d.ts +2 -2
  43. package/dist/elements/Chart/ChartLegend.d.ts.map +1 -1
  44. package/dist/elements/Chart/ChartPieSeries.d.ts +28 -0
  45. package/dist/elements/Chart/ChartPieSeries.d.ts.map +1 -0
  46. package/dist/elements/Chart/ChartRadarSeries.d.ts +28 -0
  47. package/dist/elements/Chart/ChartRadarSeries.d.ts.map +1 -0
  48. package/dist/elements/Chart/ChartSVG.d.ts +7 -1
  49. package/dist/elements/Chart/ChartSVG.d.ts.map +1 -1
  50. package/dist/elements/Chart/ChartScatterSeries.d.ts +31 -0
  51. package/dist/elements/Chart/ChartScatterSeries.d.ts.map +1 -0
  52. package/dist/elements/Chart/index.js +1 -1
  53. package/dist/elements/Chart/index.js.map +1 -1
  54. package/dist/elements/Chart/index.mjs +1 -1
  55. package/dist/elements/Chart/index.mjs.map +1 -1
  56. package/dist/elements/Checkbox/index.js +1 -1
  57. package/dist/elements/Checkbox/index.js.map +1 -1
  58. package/dist/elements/Checkbox/index.mjs +1 -1
  59. package/dist/elements/Checkbox/index.mjs.map +1 -1
  60. package/dist/elements/ColorPicker/ColorPicker.d.ts.map +1 -1
  61. package/dist/elements/ColorPicker/ColorPicker.styles.d.ts +3 -1
  62. package/dist/elements/ColorPicker/ColorPicker.styles.d.ts.map +1 -1
  63. package/dist/elements/ColorPicker/index.js +1 -1
  64. package/dist/elements/ColorPicker/index.js.map +1 -1
  65. package/dist/elements/ColorPicker/index.mjs +1 -1
  66. package/dist/elements/ColorPicker/index.mjs.map +1 -1
  67. package/dist/elements/Combobox/Combobox.d.ts +1 -1
  68. package/dist/elements/Combobox/Combobox.d.ts.map +1 -1
  69. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -1
  70. package/dist/elements/Combobox/index.js +1 -1
  71. package/dist/elements/Combobox/index.js.map +1 -1
  72. package/dist/elements/Combobox/index.mjs +1 -1
  73. package/dist/elements/Combobox/index.mjs.map +1 -1
  74. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  75. package/dist/elements/DatePicker/index.js +1 -1
  76. package/dist/elements/DatePicker/index.js.map +1 -1
  77. package/dist/elements/DatePicker/index.mjs +1 -1
  78. package/dist/elements/DatePicker/index.mjs.map +1 -1
  79. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  80. package/dist/elements/Dropdown/index.js +1 -1
  81. package/dist/elements/Dropdown/index.js.map +1 -1
  82. package/dist/elements/Dropdown/index.mjs +1 -1
  83. package/dist/elements/Dropdown/index.mjs.map +1 -1
  84. package/dist/elements/FileField/index.js +1 -1
  85. package/dist/elements/FileField/index.js.map +1 -1
  86. package/dist/elements/FileField/index.mjs +1 -1
  87. package/dist/elements/FileField/index.mjs.map +1 -1
  88. package/dist/elements/Modal/Modal.d.ts +2 -1
  89. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  90. package/dist/elements/Modal/index.js +1 -1
  91. package/dist/elements/Modal/index.js.map +1 -1
  92. package/dist/elements/Modal/index.mjs +1 -1
  93. package/dist/elements/Modal/index.mjs.map +1 -1
  94. package/dist/elements/NumberField/NumberField.d.ts.map +1 -1
  95. package/dist/elements/NumberField/NumberField.types.d.ts +1 -1
  96. package/dist/elements/NumberField/NumberField.variants.d.ts.map +1 -1
  97. package/dist/elements/NumberField/index.js +1 -1
  98. package/dist/elements/NumberField/index.js.map +1 -1
  99. package/dist/elements/NumberField/index.mjs +1 -1
  100. package/dist/elements/NumberField/index.mjs.map +1 -1
  101. package/dist/elements/OTPInput/index.js +1 -1
  102. package/dist/elements/OTPInput/index.js.map +1 -1
  103. package/dist/elements/OTPInput/index.mjs +1 -1
  104. package/dist/elements/OTPInput/index.mjs.map +1 -1
  105. package/dist/elements/Pagination/index.js +1 -1
  106. package/dist/elements/Pagination/index.js.map +1 -1
  107. package/dist/elements/Pagination/index.mjs +1 -1
  108. package/dist/elements/Pagination/index.mjs.map +1 -1
  109. package/dist/elements/Panel/index.js +1 -1
  110. package/dist/elements/Panel/index.js.map +1 -1
  111. package/dist/elements/Panel/index.mjs +1 -1
  112. package/dist/elements/Panel/index.mjs.map +1 -1
  113. package/dist/elements/PasswordField/index.js +1 -1
  114. package/dist/elements/PasswordField/index.js.map +1 -1
  115. package/dist/elements/PasswordField/index.mjs +1 -1
  116. package/dist/elements/PasswordField/index.mjs.map +1 -1
  117. package/dist/elements/Progress/index.js +1 -1
  118. package/dist/elements/Progress/index.js.map +1 -1
  119. package/dist/elements/Progress/index.mjs +1 -1
  120. package/dist/elements/Progress/index.mjs.map +1 -1
  121. package/dist/elements/RatingScale/index.js +1 -1
  122. package/dist/elements/RatingScale/index.js.map +1 -1
  123. package/dist/elements/RatingScale/index.mjs +1 -1
  124. package/dist/elements/RatingScale/index.mjs.map +1 -1
  125. package/dist/elements/Resizable/index.js +1 -1
  126. package/dist/elements/Resizable/index.js.map +1 -1
  127. package/dist/elements/Resizable/index.mjs +1 -1
  128. package/dist/elements/Resizable/index.mjs.map +1 -1
  129. package/dist/elements/SearchField/index.js +1 -1
  130. package/dist/elements/SearchField/index.js.map +1 -1
  131. package/dist/elements/SearchField/index.mjs +1 -1
  132. package/dist/elements/SearchField/index.mjs.map +1 -1
  133. package/dist/elements/Select/Select.d.ts.map +1 -1
  134. package/dist/elements/Select/Select.styles.d.ts.map +1 -1
  135. package/dist/elements/Select/index.js +1 -1
  136. package/dist/elements/Select/index.js.map +1 -1
  137. package/dist/elements/Select/index.mjs +1 -1
  138. package/dist/elements/Select/index.mjs.map +1 -1
  139. package/dist/elements/SituationalJudgement/index.js +1 -1
  140. package/dist/elements/SituationalJudgement/index.js.map +1 -1
  141. package/dist/elements/SituationalJudgement/index.mjs +1 -1
  142. package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
  143. package/dist/elements/Table/index.js +1 -1
  144. package/dist/elements/Table/index.js.map +1 -1
  145. package/dist/elements/Table/index.mjs +1 -1
  146. package/dist/elements/Table/index.mjs.map +1 -1
  147. package/dist/elements/Tabs/index.js +1 -1
  148. package/dist/elements/Tabs/index.js.map +1 -1
  149. package/dist/elements/Tabs/index.mjs +1 -1
  150. package/dist/elements/Tabs/index.mjs.map +1 -1
  151. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  152. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -1
  153. package/dist/elements/TextField/index.js +1 -1
  154. package/dist/elements/TextField/index.js.map +1 -1
  155. package/dist/elements/TextField/index.mjs +1 -1
  156. package/dist/elements/TextField/index.mjs.map +1 -1
  157. package/dist/elements/TimeField/TimeField.d.ts.map +1 -1
  158. package/dist/elements/TimeField/TimeField.types.d.ts.map +1 -1
  159. package/dist/elements/TimeField/index.js +1 -1
  160. package/dist/elements/TimeField/index.js.map +1 -1
  161. package/dist/elements/TimeField/index.mjs +1 -1
  162. package/dist/elements/TimeField/index.mjs.map +1 -1
  163. package/dist/elements/Toast/Toast.d.ts +21 -43
  164. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  165. package/dist/elements/Toast/Toast.types.d.ts +27 -1
  166. package/dist/elements/Toast/Toast.types.d.ts.map +1 -1
  167. package/dist/elements/Toast/Toaster.d.ts +0 -12
  168. package/dist/elements/Toast/Toaster.d.ts.map +1 -1
  169. package/dist/elements/Toast/index.d.ts +1 -1
  170. package/dist/elements/Toast/index.d.ts.map +1 -1
  171. package/dist/elements/Toast/index.js +1 -1
  172. package/dist/elements/Toast/index.js.map +1 -1
  173. package/dist/elements/Toast/index.mjs +1 -1
  174. package/dist/elements/Toast/index.mjs.map +1 -1
  175. package/dist/elements/Tooltip/index.js +1 -1
  176. package/dist/elements/Tooltip/index.js.map +1 -1
  177. package/dist/elements/Tooltip/index.mjs +1 -1
  178. package/dist/elements/Tooltip/index.mjs.map +1 -1
  179. package/dist/elements/index.d.ts +1 -1
  180. package/dist/elements/index.d.ts.map +1 -1
  181. package/dist/elements/index.js +1 -1
  182. package/dist/elements/index.js.map +1 -1
  183. package/dist/elements/index.mjs +1 -1
  184. package/dist/elements/index.mjs.map +1 -1
  185. package/dist/index.js +2 -2
  186. package/dist/index.js.map +1 -1
  187. package/dist/index.mjs +2 -2
  188. package/dist/index.mjs.map +1 -1
  189. package/dist/styles/animations.css +110 -0
  190. package/dist/styles/defaults.css +32 -0
  191. package/dist/styles/index.d.ts +1 -1
  192. package/dist/styles/index.d.ts.map +1 -1
  193. package/dist/styles/index.js +1 -1
  194. package/dist/styles/index.js.map +1 -1
  195. package/dist/styles/index.mjs +1 -1
  196. package/dist/styles/index.mjs.map +1 -1
  197. package/dist/styles/shared-variants.d.ts +21 -2
  198. package/dist/styles/shared-variants.d.ts.map +1 -1
  199. package/package.json +35 -34
  200. package/src/elements/Chart/Chart.stories.tsx +186 -2
  201. package/src/elements/Modal/Modal.stories.tsx +6 -9
  202. package/src/elements/Toast/Toast.stories.tsx +745 -648
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),lucideReact=require('lucide-react'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function p(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var ae="data-[pressed]:scale-[0.97]";var ne="data-[hovered]:shadow-md";var q="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",ie="disabled:pointer-events-none disabled:opacity-50";var le=classVarianceAuthority.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}}),de=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_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)] data-[pressed]:bg-[var(--primary-action)]/80",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]",link:"text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]: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-8",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)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Le=react.createContext(null);Le.displayName="ButtonGroupContext";function Ae(){return react.useContext(Le)}var Oe=react.createContext(null);Oe.displayName="ButtonGroupItemContext";function ke(){return react.useContext(Oe)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var ze=classVarianceAuthority.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"}});classVarianceAuthority.cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var R=react.memo(react.forwardRef(({className:t,buttonVisualClassName:o,variant:r,size:a,visualSize:i,fullWidth:u,loading:l=false,loadingText:d="Loading...",shortcut:b,children:x,isDisabled:c,paywall:s=false,paywallRedirect:P,paywallDescription:J,onPress:Q,..._},ee)=>{let F=react.useId(),S=Ae(),G=ke(),N=r??S?.variant??"default",w=a??S?.size,H=c??S?.isDisabled??false,O=S?.orientation==="vertical",h=u||O,W=G?ze({orientation:S?.orientation??"horizontal",position:G.position}):"",E=i??w??"default";return process.env.NODE_ENV!=="production"&&(E==="dot"||E==="icon")&&!_["aria-label"]&&!x&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsxRuntime.jsx(reactAriaComponents.Button,{ref:ee,isDisabled:H||l||void 0,"aria-disabled":s?true:void 0,"aria-describedby":s?F:void 0,onPress:y=>{if(s){P&&window.open(P,"_blank","noopener,noreferrer");return}Q?.(y);},className:p(le({fullWidth:h,inVerticalGroup:O}),t),..._,children:y=>jsxRuntime.jsxs("span",{className:p(de({variant:N,visualSize:E,paywall:s,fullWidth:h}),W,o,ae,ne,q,j),"data-pressed":y.isPressed||void 0,children:[l&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lucideReact.Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"sr-only","aria-live":"polite",children:d})]}),!l&&x,s&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),s&&jsxRuntime.jsxs("span",{id:F,className:"sr-only",children:["Premium feature: ",J||"Upgrade required to access this feature"]}),y.isFocusVisible&&b&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:b}),y.isPressed&&jsxRuntime.jsx("span",{className:"absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95","aria-hidden":"true"})]})})}));R.displayName="Button";var Be=()=>jsxRuntime.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:[jsxRuntime.jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"2"})]}),Re=()=>jsxRuntime.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:[jsxRuntime.jsx("path",{d:"M10.5 5.5l-5 5"}),jsxRuntime.jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsxRuntime.jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"2"})]});var ce=classVarianceAuthority.cva("flex w-full rounded-md border bg-[var(--content-background)] shadow-xs 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:"h-9 text-xs px-2 py-1",default:"h-10 px-3 py-2",lg:"h-11 px-4 py-3 text-base"},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"}}),fe=classVarianceAuthority.cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",error:"text-[var(--destructive-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),me=classVarianceAuthority.cva("text-sm text-[var(--content-foreground)]"),Me=classVarianceAuthority.cva("text-sm text-[var(--destructive-foreground)] font-medium mt-1.5"),xe=classVarianceAuthority.cva("text-sm text-[var(--success-foreground)] font-medium mt-1.5");function Ge({expandOnFocus:t,collapsedWidth:o,value:r,defaultValue:a,userOnFocus:i,userOnBlur:u}){let[l,d]=react.useState(false),b=react.useCallback(s=>{t&&d(true),i?.(s);},[t,i]),x=react.useCallback(s=>{t&&s.target.value===""&&d(false),u?.(s);},[t,u]),c=react.useMemo(()=>t?l||(r!==void 0?r!=="":a!==void 0&&a!=="")?"100%":o:void 0,[t,l,r,a,o]);return {handleFocus:b,handleBlur:x,inputWidth:c}}function He({disableCopyPaste:t}){let[o,r]=react.useState(false),[a,i]=react.useState("");react.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=react.useCallback(l=>{t&&(l.preventDefault(),r(true),i("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{r(false),i("");},400));},[t]);return {isShaking:o,screenReaderMessage:a,handlePaste:u}}function We({type:t,showPasswordToggle:o}){let[r,a]=react.useState(false),i=react.useCallback(()=>{a(l=>!l);},[]),u=react.useMemo(()=>t==="password"&&o&&r?"text":t,[t,o,r]);return {showPassword:r,actualType:u,handlePasswordToggle:i}}var Vt=react.forwardRef(({className:t,state:o="default",children:r,...a},i)=>jsxRuntime.jsx(reactAriaComponents.Label,{ref:i,className:p(fe({state:o}),t),...a,children:r}));Vt.displayName="TextFieldLabel";var Ct=react.forwardRef(({className:t,size:o="default",state:r="default",...a},i)=>jsxRuntime.jsx(reactAriaComponents.Input,{ref:i,className:p(ce({size:o,state:r}),ie,t),...a}));Ct.displayName="TextFieldInput";var It=react.forwardRef(({className:t,children:o,...r},a)=>jsxRuntime.jsx(reactAriaComponents.Text,{ref:a,slot:"description",className:p(me(),t),...r,children:o}));It.displayName="TextFieldDescription";var Ye=react.forwardRef(({className:t,children:o,...r},a)=>jsxRuntime.jsx(reactAriaComponents.FieldError,{ref:a,...r,className:p(Me(),t),children:jsxRuntime.jsxs("span",{className:"flex items-center gap-2",role:"alert",children:[jsxRuntime.jsx(lucideReact.CircleAlert,{className:"h-4 w-4"}),o]})}));Ye.displayName="TextFieldError";var Lt=react.forwardRef(({className:t,children:o,...r},a)=>jsxRuntime.jsx(reactAriaComponents.Text,{ref:a,slot:"description",className:p(xe(),t),...r,children:o}));Lt.displayName="TextFieldSuccess";var be=react.forwardRef(({className:t,size:o="default",label:r,labelHint:a,description:i,errorMessage:u,successMessage:l,type:d="text",isRequired:b=false,isReadOnly:x=false,isDisabled:c=false,isInvalid:s=false,isValid:P=false,id:J,autoComplete:Q,disableCopyPaste:_=false,pattern:ee,patternDescription:F,expandOnFocus:S=false,collapsedWidth:G="200px",prefix:N,suffix:w,prefixSize:H=16,suffixSize:O=16,showPasswordToggle:h,isIconHidden:W=false,onSubmit:E,onClear:te,value:k,defaultValue:y,onFocus:Xe,onBlur:Ke,...z},Ze)=>{let he=react.useId(),Je=react.useId(),Qe=J||Je,{handleFocus:et,handleBlur:tt,inputWidth:ot}=Ge({expandOnFocus:S,collapsedWidth:G,value:k,defaultValue:y,userOnFocus:Xe,userOnBlur:Ke}),{isShaking:rt,screenReaderMessage:ye,handlePaste:at}=He({disableCopyPaste:_}),{showPassword:oe,actualType:nt,handlePasswordToggle:Te}=We({type:d,showPasswordToggle:h}),g=d==="search",[st,we]=react.useState(y??""),B=k!==void 0,T=B?k:st,it=react.useCallback(f=>{B||we(f),z.onChange?.(f);},[B,z]),$=react.useCallback(()=>{B||we(""),z.onChange?.(""),te?.();},[B,z,te]),lt=react.useCallback(f=>{f.key==="Enter"&&E&&E(T),f.key==="Escape"&&T&&(f.preventDefault(),$());},[T,E,$]),dt=react.useMemo(()=>c?"disabled":x?"readonly":s?"error":P?"success":"default",[c,x,s,P]),pt=react.useMemo(()=>c?"disabled":s?"error":"default",[c,s]),Pe=react.useMemo(()=>i&&F?`${i} ${F}`:i||F,[i,F]),V=react.useMemo(()=>g&&!W&&!N?jsxRuntime.jsx(lucideReact.Search,{className:o==="sm"?"h-3.5 w-3.5":o==="lg"?"h-5 w-5":"h-4 w-4"}):N,[g,W,N,o]),Fe=react.useMemo(()=>{let f={left:12,right:12};if(V){let re=typeof V=="string"?V.length*8+16:H+16;f.left=re;}if(d==="password"&&h)f.right=32;else if(g&&T)f.right=44;else if(w){let re=typeof w=="string"?w.length*8+16:O+16;f.right=re;}return f},[V,N,w,H,O,d,h,g,T]),Se=react.useMemo(()=>d==="password"&&h?jsxRuntime.jsx(R,{variant:"ghost",visualSize:"icon",onPress:Te,"aria-label":oe?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:oe?jsxRuntime.jsx(Re,{}):jsxRuntime.jsx(Be,{})}):g&&T?jsxRuntime.jsx(R,{variant:"ghost",visualSize:"icon",onPress:$,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsxRuntime.jsx(lucideReact.X,{className:o==="sm"?"h-3 w-3":o==="lg"?"h-5 w-5":"h-4 w-4"})}):w,[d,h,oe,w,Te,g,T,o,$]),Ee=d==="password"&&h||g&&!!T;return jsxRuntime.jsxs(reactAriaComponents.TextField,{ref:Ze,className:p("flex flex-col gap-1.5",t),isRequired:b,isReadOnly:x,isDisabled:c,isInvalid:s,value:g?T:k,defaultValue:g?void 0:y,onChange:g?it:void 0,...z,children:[r&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:p(fe({state:pt}),a&&"flex items-baseline justify-between"),children:[jsxRuntime.jsxs("span",{children:[r,b&&jsxRuntime.jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsxRuntime.jsx("strong",{children:"*"})})]}),a&&jsxRuntime.jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:a})]}),Pe&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:p(me()),children:Pe}),jsxRuntime.jsxs("div",{className:"relative flex items-center motion-safe:transition-all motion-safe:duration-200",style:{width:ot},children:[V&&jsxRuntime.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:V}),jsxRuntime.jsx(reactAriaComponents.Input,{type:nt,id:Qe,className:p(ce({size:o,state:dt}),ie,rt&&"shake"),style:{width:"100%",paddingLeft:`${Fe.left}px`,paddingRight:`${Fe.right}px`},autoComplete:Q,pattern:ee,onPaste:at,onFocus:et,onBlur:tt,onKeyDown:g?lt:void 0,"aria-required":b?"true":void 0,"aria-readonly":x?"true":void 0,"aria-errormessage":s&&u?he:void 0}),Se&&jsxRuntime.jsx("div",{"data-testid":"textfield-suffix",className:p("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",Ee?"":"pointer-events-none"),"aria-hidden":Ee?void 0:"true",children:Se})]}),P&&l&&!s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:p(xe()),children:l}),s&&u&&jsxRuntime.jsx(Ye,{id:he,children:u}),ye&&jsxRuntime.jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:ye})]})});be.displayName="TextField";var Ue=react.forwardRef(({label:t,description:o,errorMessage:r,successMessage:a,hasToggle:i=true,autoComplete:u="current-password","aria-label":l,"aria-labelledby":d,...b},x)=>{process.env.NODE_ENV!=="production"&&!t&&!l&&!d&&console.warn("[PasswordField] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)");let c=!!r;return jsxRuntime.jsx(be,{ref:x,type:"password",showPasswordToggle:i,autoComplete:u,label:t,description:c?void 0:o,errorMessage:r,successMessage:c?void 0:a,isInvalid:c,isValid:!!a&&!c,"aria-label":t?void 0:l,"aria-labelledby":d,...b})});Ue.displayName="PasswordField";var K=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var ve=zod.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"]),kt=[/\(\.\*\)\+/,/\(\.\+\)\+/,/\([^)]*\)\{.*,.*\}/,/\(\?!\)/,/\(\?<=\)/],zt=t=>{for(let r of kt)if(r.test(t))return false;return !((t.match(/[*+{}]/g)||[]).length>5)};K.extend({size:zod.z.enum(["sm","default","lg"]).optional().default("default"),label:zod.z.string().optional(),labelHint:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),successMessage:zod.z.string().optional(),type:zod.z.enum(["text","email","password","url","search"]).optional().default("text"),isRequired:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isInvalid:zod.z.boolean().optional(),isValid:zod.z.boolean().optional(),placeholder:zod.z.string().optional(),value:zod.z.string().optional(),defaultValue:zod.z.string().optional(),name:zod.z.string().optional(),autoFocus:zod.z.boolean().optional(),autoComplete:ve.optional(),maxLength:zod.z.number().optional(),minLength:zod.z.number().optional(),pattern:zod.z.string().optional(),patternDescription:zod.z.string().optional(),disableCopyPaste:zod.z.boolean().optional().default(false),prefix:zod.z.any().optional(),suffix:zod.z.any().optional(),prefixSize:zod.z.number().optional().default(16),suffixSize:zod.z.number().optional().default(16),expandOnFocus:zod.z.boolean().optional().default(false),collapsedWidth:zod.z.string().optional().default("200px"),showPasswordToggle:zod.z.boolean().optional(),isIconHidden:zod.z.boolean().optional().default(false),onSubmit:zod.z.custom().optional(),onClear:zod.z.custom().optional()}).refine(t=>!t.pattern||t.patternDescription,{message:"patternDescription is required when pattern is provided",path:["patternDescription"]}).refine(t=>!t.pattern||zt(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));zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional(),htmlFor:zod.z.string().optional(),state:zod.z.enum(["default","error","disabled"]).optional().default("default")});zod.z.object({className:zod.z.string().optional(),size:zod.z.enum(["sm","default","lg"]).optional().default("default"),state:zod.z.enum(["default","error","success","disabled","readonly"]).optional().default("default")});zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional()});zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional()});zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional()});var Bt=K.extend({size:zod.z.enum(["sm","default","lg"]).optional().default("default"),label:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),successMessage:zod.z.string().optional(),isRequired:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),placeholder:zod.z.string().optional(),value:zod.z.string().optional(),defaultValue:zod.z.string().optional(),name:zod.z.string().optional(),autoComplete:ve.optional(),hasToggle:zod.z.boolean().optional().default(true),onChange:zod.z.custom().optional()});var Rt=classVarianceAuthority.cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),Dt=classVarianceAuthority.cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),Mt=classVarianceAuthority.cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),_t=classVarianceAuthority.cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});exports.PasswordField=Ue;exports.PasswordFieldPropsSchema=Bt;exports.passwordFieldDescriptionVariants=Mt;exports.passwordFieldErrorVariants=_t;exports.passwordFieldLabelVariants=Dt;exports.passwordFieldVariants=Rt;//# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),lucideReact=require('lucide-react'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function c(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var se="data-[pressed]:scale-[0.97]";var ie="data-[hovered]:shadow-md";var Y="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",q="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground",de="disabled:pointer-events-none disabled:opacity-50";var Z={sm:"h-9",default:"h-10",lg:"h-11"},D={sm:`${Z.sm} px-2 text-xs`,default:`${Z.default} px-3 text-sm`,lg:`${Z.lg} px-4 text-base`},ce="min-h-[44px] flex items-center";var ue=classVarianceAuthority.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}}),pe=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium 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)] shadow-md 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)] shadow-md 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-8",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)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Le=react.createContext(null);Le.displayName="ButtonGroupContext";function Ve(){return react.useContext(Le)}var De=react.createContext(null);De.displayName="ButtonGroupItemContext";function Be(){return react.useContext(De)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Me=classVarianceAuthority.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"}});classVarianceAuthority.cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var M=react.memo(react.forwardRef(({className:t,buttonVisualClassName:o,variant:n,size:a,visualSize:i,fullWidth:p,loading:d=false,loadingText:u="Loading...",shortcut:b,children:x,isDisabled:f,paywall:s=false,paywallRedirect:I,paywallDescription:ee,onPress:te,...G},oe)=>{let y=react.useId(),N=Ve(),z=Be(),A=n??N?.variant??"default",S=a??N?.size,U=f??N?.isDisabled??false,C=N?.orientation==="vertical",h=p||C,$=z?Me({orientation:N?.orientation??"horizontal",position:z.position}):"",_=i??S??"default";return process.env.NODE_ENV!=="production"&&(_==="dot"||_==="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)'),jsxRuntime.jsx(reactAriaComponents.Button,{ref:oe,isDisabled:U||d||void 0,"aria-disabled":s?true:void 0,"aria-describedby":s?y:void 0,onPress:E=>{if(s){I&&window.open(I,"_blank","noopener,noreferrer");return}te?.(E);},className:c(ue({fullWidth:h,inVerticalGroup:C}),t),...G,children:E=>jsxRuntime.jsxs("span",{className:c(pe({variant:A,visualSize:_,paywall:s,fullWidth:h}),$,o,se,ie,Y,q),"data-pressed":E.isPressed||void 0,children:[d&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lucideReact.Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"sr-only","aria-live":"polite",children:u})]}),!d&&x,s&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),s&&jsxRuntime.jsxs("span",{id:y,className:"sr-only",children:["Premium feature: ",ee||"Upgrade required to access this feature"]}),E.isFocusVisible&&b&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:b})]})})}));M.displayName="Button";var He=()=>jsxRuntime.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:[jsxRuntime.jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"2"})]}),ke=()=>jsxRuntime.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:[jsxRuntime.jsx("path",{d:"M10.5 5.5l-5 5"}),jsxRuntime.jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsxRuntime.jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"2"})]});var xe=classVarianceAuthority.cva("flex w-full rounded-md border bg-[var(--content-background)] shadow-xs 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:`${D.sm} py-1`,default:`${D.default} py-2`,lg:`${D.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"}}),ge=classVarianceAuthority.cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",error:"text-[var(--destructive-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),be=classVarianceAuthority.cva("text-sm text-[var(--content-foreground)]"),ze=classVarianceAuthority.cva("text-sm text-[var(--destructive-foreground)] font-medium mt-1.5"),ve=classVarianceAuthority.cva("text-sm text-[var(--success-foreground)] font-medium mt-1.5");function $e({expandOnFocus:t,collapsedWidth:o,value:n,defaultValue:a,userOnFocus:i,userOnBlur:p}){let[d,u]=react.useState(false),b=react.useCallback(s=>{t&&u(true),i?.(s);},[t,i]),x=react.useCallback(s=>{t&&s.target.value===""&&u(false),p?.(s);},[t,p]),f=react.useMemo(()=>t?d||(n!==void 0?n!=="":a!==void 0&&a!=="")?"100%":o:void 0,[t,d,n,a,o]);return {handleFocus:b,handleBlur:x,inputWidth:f}}function We({disableCopyPaste:t}){let[o,n]=react.useState(false),[a,i]=react.useState("");react.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 p=react.useCallback(d=>{t&&(d.preventDefault(),n(true),i("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{n(false),i("");},400));},[t]);return {isShaking:o,screenReaderMessage:a,handlePaste:p}}function Ye({type:t,showPasswordToggle:o}){let[n,a]=react.useState(false),i=react.useCallback(()=>{a(d=>!d);},[]),p=react.useMemo(()=>t==="password"&&o&&n?"text":t,[t,o,n]);return {showPassword:n,actualType:p,handlePasswordToggle:i}}var Ot=react.forwardRef(({className:t,state:o="default",children:n,...a},i)=>jsxRuntime.jsx(reactAriaComponents.Label,{ref:i,className:c(ge({state:o}),t),...a,children:n}));Ot.displayName="TextFieldLabel";var Ct=react.forwardRef(({className:t,size:o="default",state:n="default",...a},i)=>jsxRuntime.jsx(reactAriaComponents.Input,{ref:i,className:c(xe({size:o,state:n}),de,t),...a}));Ct.displayName="TextFieldInput";var Rt=react.forwardRef(({className:t,children:o,...n},a)=>jsxRuntime.jsx(reactAriaComponents.Text,{ref:a,slot:"description",className:c(be(),t),...n,children:o}));Rt.displayName="TextFieldDescription";var Xe=react.forwardRef(({className:t,children:o,...n},a)=>jsxRuntime.jsx(reactAriaComponents.FieldError,{ref:a,...n,className:c(ze(),t),children:jsxRuntime.jsxs("span",{className:"flex items-center gap-2",role:"alert",children:[jsxRuntime.jsx(lucideReact.CircleAlert,{className:"h-4 w-4"}),o]})}));Xe.displayName="TextFieldError";var Lt=react.forwardRef(({className:t,children:o,...n},a)=>jsxRuntime.jsx(reactAriaComponents.Text,{ref:a,slot:"description",className:c(ve(),t),...n,children:o}));Lt.displayName="TextFieldSuccess";var Te=react.forwardRef(({className:t,size:o="default",label:n,labelHint:a,description:i,errorMessage:p,successMessage:d,type:u="text",isRequired:b=false,isReadOnly:x=false,isDisabled:f=false,isInvalid:s=false,isValid:I=false,id:ee,autoComplete:te,disableCopyPaste:G=false,pattern:oe,patternDescription:y,expandOnFocus:N=false,collapsedWidth:z="200px",prefix:A,suffix:S,prefixSize:U=16,suffixSize:C=16,showPasswordToggle:h,isIconHidden:$=false,onSubmit:_,onClear:ne,value:R,defaultValue:E,onFocus:Qe,onBlur:Je,...L},et)=>{let Ee=react.useId(),tt=react.useId(),ot=ee||tt,{handleFocus:nt,handleBlur:at,inputWidth:rt}=$e({expandOnFocus:N,collapsedWidth:z,value:R,defaultValue:E,userOnFocus:Qe,userOnBlur:Je}),{isShaking:st,screenReaderMessage:Ie,handlePaste:it}=We({disableCopyPaste:G}),{showPassword:ae,actualType:lt,handlePasswordToggle:ye}=Ye({type:u,showPasswordToggle:h}),g=u==="search",[dt,Ne]=react.useState(E??""),V=R!==void 0,T=V?R:dt,ct=react.useCallback(l=>{V||Ne(l),L.onChange?.(l);},[V,L]),W=react.useCallback(()=>{V||Ne(""),L.onChange?.(""),ne?.();},[V,L,ne]),ut=react.useCallback(l=>{l.key==="Enter"&&_&&_(T),l.key==="Escape"&&T&&(l.preventDefault(),W());},[T,_,W]),pt=react.useMemo(()=>f?"disabled":x?"readonly":s?"error":I?"success":"default",[f,x,s,I]),ft=react.useMemo(()=>f?"disabled":s?"error":"default",[f,s]),_e=react.useMemo(()=>i&&y?`${i} ${y}`:i||y,[i,y]),P=react.useMemo(()=>g&&!$&&!A?jsxRuntime.jsx(lucideReact.Search,{className:o==="sm"?"h-3.5 w-3.5":o==="lg"?"h-5 w-5":"h-4 w-4"}):A,[g,$,A,o]),Ae=react.useMemo(()=>{let l={left:12,right:12};if(P){let re=typeof P=="string"?P.length*8+16:U+16;l.left=re;}if(u==="password"&&h)l.right=32;else if(g&&T)l.right=44;else if(S){let re=typeof S=="string"?S.length*8+16:C+16;l.right=re;}return l},[P,A,S,U,C,u,h,g,T]),Pe=react.useMemo(()=>u==="password"&&h?jsxRuntime.jsx(M,{variant:"ghost",visualSize:"icon",onPress:ye,"aria-label":ae?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:ae?jsxRuntime.jsx(ke,{}):jsxRuntime.jsx(He,{})}):g&&T?jsxRuntime.jsx(M,{variant:"ghost",visualSize:"icon",onPress:W,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsxRuntime.jsx(lucideReact.X,{className:o==="sm"?"h-3 w-3":o==="lg"?"h-5 w-5":"h-4 w-4"})}):S,[u,h,ae,S,ye,g,T,o,W]),we=u==="password"&&h||g&&!!T;return jsxRuntime.jsxs(reactAriaComponents.TextField,{ref:et,className:c("flex flex-col gap-1.5",t),isRequired:b,isReadOnly:x,isDisabled:f,isInvalid:s,value:g?T:R,defaultValue:g?void 0:E,onChange:g?ct:void 0,...L,children:[n&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:c(ge({state:ft}),a&&"flex items-baseline justify-between"),children:[jsxRuntime.jsxs("span",{children:[n,b&&jsxRuntime.jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsxRuntime.jsx("strong",{children:"*"})})]}),a&&jsxRuntime.jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:a})]}),_e&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:c(be()),children:_e}),jsxRuntime.jsxs("div",{className:c(ce,"relative cursor-text motion-safe:transition-colors motion-safe:duration-200"),style:{width:rt},onClick:l=>{l.target===l.currentTarget&&l.currentTarget.querySelector("input")?.focus();},children:[P&&jsxRuntime.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:P}),jsxRuntime.jsx(reactAriaComponents.Input,{type:lt,id:ot,className:c(xe({size:o,state:pt}),de,st&&"shake"),style:{width:"100%",paddingLeft:`${Ae.left}px`,paddingRight:`${Ae.right}px`},autoComplete:te,pattern:oe,onPaste:it,onFocus:nt,onBlur:at,onKeyDown:g?ut:void 0,"aria-required":b?"true":void 0,"aria-readonly":x?"true":void 0,"aria-errormessage":s&&p?Ee:void 0}),Pe&&jsxRuntime.jsx("div",{"data-testid":"textfield-suffix",className:c("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",we?"":"pointer-events-none"),"aria-hidden":we?void 0:"true",children:Pe})]}),I&&d&&!s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:c(ve()),children:d}),s&&p&&jsxRuntime.jsx(Xe,{id:Ee,children:p}),Ie&&jsxRuntime.jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:Ie})]})});Te.displayName="TextField";var Ke=react.forwardRef(({label:t,description:o,errorMessage:n,successMessage:a,hasToggle:i=true,autoComplete:p="current-password","aria-label":d,"aria-labelledby":u,...b},x)=>{process.env.NODE_ENV!=="production"&&!t&&!d&&!u&&console.warn("[PasswordField] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)");let f=!!n;return jsxRuntime.jsx(Te,{ref:x,type:"password",showPasswordToggle:i,autoComplete:p,label:t,description:f?void 0:o,errorMessage:n,successMessage:f?void 0:a,isInvalid:f,isValid:!!a&&!f,"aria-label":t?void 0:d,"aria-labelledby":u,...b})});Ke.displayName="PasswordField";var Q=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var Se=zod.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"]),Bt=[/\(\.\*\)\+/,/\(\.\+\)\+/,/\([^)]*\)\{.*,.*\}/,/\(\?!\)/,/\(\?<=\)/],Mt=t=>{for(let n of Bt)if(n.test(t))return false;return !((t.match(/[*+{}]/g)||[]).length>5)};Q.extend({size:zod.z.enum(["sm","default","lg"]).optional().default("default"),label:zod.z.string().optional(),labelHint:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),successMessage:zod.z.string().optional(),type:zod.z.enum(["text","email","password","url","search"]).optional().default("text"),isRequired:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isInvalid:zod.z.boolean().optional(),isValid:zod.z.boolean().optional(),placeholder:zod.z.string().optional(),value:zod.z.string().optional(),defaultValue:zod.z.string().optional(),name:zod.z.string().optional(),autoFocus:zod.z.boolean().optional(),autoComplete:Se.optional(),maxLength:zod.z.number().optional(),minLength:zod.z.number().optional(),pattern:zod.z.string().optional(),patternDescription:zod.z.string().optional(),disableCopyPaste:zod.z.boolean().optional().default(false),prefix:zod.z.any().optional(),suffix:zod.z.any().optional(),prefixSize:zod.z.number().optional().default(16),suffixSize:zod.z.number().optional().default(16),expandOnFocus:zod.z.boolean().optional().default(false),collapsedWidth:zod.z.string().optional().default("200px"),showPasswordToggle:zod.z.boolean().optional(),isIconHidden:zod.z.boolean().optional().default(false),onSubmit:zod.z.custom().optional(),onClear:zod.z.custom().optional()}).refine(t=>!t.pattern||t.patternDescription,{message:"patternDescription is required when pattern is provided",path:["patternDescription"]}).refine(t=>!t.pattern||Mt(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));zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional(),htmlFor:zod.z.string().optional(),state:zod.z.enum(["default","error","disabled"]).optional().default("default")});zod.z.object({className:zod.z.string().optional(),size:zod.z.enum(["sm","default","lg"]).optional().default("default"),state:zod.z.enum(["default","error","success","disabled","readonly"]).optional().default("default")});zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional()});zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional()});zod.z.object({children:zod.z.any().optional(),className:zod.z.string().optional()});var Ht=Q.extend({size:zod.z.enum(["sm","default","lg"]).optional().default("default"),label:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),successMessage:zod.z.string().optional(),isRequired:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),placeholder:zod.z.string().optional(),value:zod.z.string().optional(),defaultValue:zod.z.string().optional(),name:zod.z.string().optional(),autoComplete:Se.optional(),hasToggle:zod.z.boolean().optional().default(true),onChange:zod.z.custom().optional()});var kt=classVarianceAuthority.cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),Gt=classVarianceAuthority.cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),zt=classVarianceAuthority.cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),Ut=classVarianceAuthority.cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});exports.PasswordField=Ke;exports.PasswordFieldPropsSchema=Ht;exports.passwordFieldDescriptionVariants=zt;exports.passwordFieldErrorVariants=Ut;exports.passwordFieldLabelVariants=Gt;exports.passwordFieldVariants=kt;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map