@arbidocs/blocks 0.3.184 → 0.4.0

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 (598) hide show
  1. package/README.md +100 -0
  2. package/dist/agents/approvals/AuthorizeAgentParts.d.ts +79 -0
  3. package/dist/agents/approvals/ConsentPage.d.ts +76 -0
  4. package/dist/agents/approvals/ConsentParts.d.ts +37 -0
  5. package/dist/agents/approvals/index.d.ts +3 -0
  6. package/dist/agents/config/ConfigField.d.ts +43 -0
  7. package/dist/agents/config/ConfigForm.d.ts +35 -0
  8. package/dist/agents/config/TupleArrayField.d.ts +32 -0
  9. package/dist/agents/config/index.d.ts +4 -0
  10. package/dist/agents/config/schema-utils.d.ts +28 -0
  11. package/dist/agents/definitions/AgentCard.d.ts +63 -0
  12. package/dist/agents/definitions/AgentCreator.d.ts +118 -0
  13. package/dist/agents/definitions/AgentEditorParts.d.ts +63 -0
  14. package/dist/agents/definitions/AgentGallery.d.ts +29 -0
  15. package/dist/agents/definitions/index.d.ts +4 -0
  16. package/dist/agents/index.cjs +595 -0
  17. package/dist/agents/index.cjs.map +1 -0
  18. package/dist/agents/index.d.ts +7 -0
  19. package/dist/agents/index.js +14 -0
  20. package/dist/agents/index.js.map +1 -0
  21. package/dist/agents/runs/AgentBar.d.ts +103 -0
  22. package/dist/agents/runs/AgentSteps.d.ts +157 -0
  23. package/dist/agents/runs/SubagentRoster.d.ts +37 -0
  24. package/dist/agents/runs/index.d.ts +3 -0
  25. package/dist/agents/skills/SkillBrowserParts.d.ts +70 -0
  26. package/dist/agents/skills/SkillCard.d.ts +48 -0
  27. package/dist/agents/skills/SkillForms.d.ts +64 -0
  28. package/dist/agents/skills/SkillParts.d.ts +31 -0
  29. package/dist/agents/skills/SkillRow.d.ts +34 -0
  30. package/dist/agents/skills/index.d.ts +5 -0
  31. package/dist/agents/tasks/LiveRunsBanner.d.ts +26 -0
  32. package/dist/agents/tasks/RecurrenceBuilder.d.ts +36 -0
  33. package/dist/agents/tasks/TaskComposer.d.ts +108 -0
  34. package/dist/agents/tasks/TaskPlan.d.ts +78 -0
  35. package/dist/agents/tasks/TaskRowActions.d.ts +43 -0
  36. package/dist/agents/tasks/TaskRunsDialog.d.ts +45 -0
  37. package/dist/agents/tasks/TasksChrome.d.ts +36 -0
  38. package/dist/agents/tasks/UploadTaskItem.d.ts +39 -0
  39. package/dist/agents/tasks/UploadTaskList.d.ts +35 -0
  40. package/dist/agents/tasks/elapsed.d.ts +2 -0
  41. package/dist/agents/tasks/index.d.ts +13 -0
  42. package/dist/agents/tasks/rrule.d.ts +36 -0
  43. package/dist/agents/tasks/taskColumns.d.ts +68 -0
  44. package/dist/agents/tasks/taskLabels.d.ts +26 -0
  45. package/dist/agents/workflows/AgentSelect.d.ts +33 -0
  46. package/dist/agents/workflows/SchemaForm.d.ts +37 -0
  47. package/dist/agents/workflows/WorkflowConfigDialog.d.ts +73 -0
  48. package/dist/agents/workflows/WorkflowLauncher.d.ts +38 -0
  49. package/dist/agents/workflows/index.d.ts +6 -0
  50. package/dist/agents/workflows/types.d.ts +125 -0
  51. package/dist/agents/workflows/workflow.d.ts +62 -0
  52. package/dist/auth/AuthFooter.d.ts +56 -0
  53. package/dist/auth/AuthForm.d.ts +105 -0
  54. package/dist/auth/AuthLayout.d.ts +46 -0
  55. package/dist/auth/PasswordStrengthInput.d.ts +44 -0
  56. package/dist/auth/RecoveryDialogs.d.ts +90 -0
  57. package/dist/auth/SsoLoginButton.d.ts +19 -0
  58. package/dist/auth/index.cjs +123 -0
  59. package/dist/auth/index.cjs.map +1 -0
  60. package/dist/auth/index.d.ts +6 -0
  61. package/dist/auth/index.js +6 -0
  62. package/dist/auth/index.js.map +1 -0
  63. package/dist/builder/AgentsPanel.d.ts +9 -0
  64. package/dist/builder/ModuleManager.d.ts +6 -0
  65. package/dist/builder/VerticalBuilder.d.ts +32 -0
  66. package/dist/builder/agents/store.d.ts +21 -0
  67. package/dist/builder/export.d.ts +30 -0
  68. package/dist/builder/modules/registry.d.ts +11 -0
  69. package/dist/builder/modules/store.d.ts +29 -0
  70. package/dist/builder/modules/types.d.ts +29 -0
  71. package/dist/builder/types.d.ts +28 -0
  72. package/dist/chat/BranchControls.d.ts +33 -0
  73. package/dist/chat/Composer.d.ts +156 -0
  74. package/dist/chat/ContextChip.d.ts +19 -0
  75. package/dist/chat/ContextPanel.d.ts +108 -0
  76. package/dist/chat/ConversationEmpty.d.ts +53 -0
  77. package/dist/chat/ConversationLayout.d.ts +40 -0
  78. package/dist/chat/ConversationParts.d.ts +62 -0
  79. package/dist/chat/ConversationSearchView.d.ts +57 -0
  80. package/dist/chat/LabelPinRow.d.ts +30 -0
  81. package/dist/chat/Message.d.ts +189 -0
  82. package/dist/chat/MessageAlert.d.ts +25 -0
  83. package/dist/chat/MessageList.d.ts +102 -0
  84. package/dist/chat/ModelPicker.d.ts +103 -0
  85. package/dist/chat/PendingAnswerBar.d.ts +36 -0
  86. package/dist/chat/PinnedDocChip.d.ts +22 -0
  87. package/dist/chat/SlashMenu.d.ts +57 -0
  88. package/dist/chat/ThreadMap.d.ts +45 -0
  89. package/dist/chat/index.cjs +423 -0
  90. package/dist/chat/index.cjs.map +1 -0
  91. package/dist/chat/index.d.ts +21 -0
  92. package/dist/chat/index.js +6 -0
  93. package/dist/chat/index.js.map +1 -0
  94. package/dist/chat/test-id.d.ts +16 -0
  95. package/dist/chat/useStreamAnnouncement.d.ts +19 -0
  96. package/dist/chunk-223D4727.cjs +50 -0
  97. package/dist/chunk-223D4727.cjs.map +1 -0
  98. package/dist/chunk-4EZVCGRL.js +803 -0
  99. package/dist/chunk-4EZVCGRL.js.map +1 -0
  100. package/dist/chunk-54Q3RNJU.cjs +516 -0
  101. package/dist/chunk-54Q3RNJU.cjs.map +1 -0
  102. package/dist/chunk-5B4PXAKI.cjs +287 -0
  103. package/dist/chunk-5B4PXAKI.cjs.map +1 -0
  104. package/dist/chunk-5TYEJOXY.js +1762 -0
  105. package/dist/chunk-5TYEJOXY.js.map +1 -0
  106. package/dist/chunk-6ALISABK.cjs +677 -0
  107. package/dist/chunk-6ALISABK.cjs.map +1 -0
  108. package/dist/chunk-6HIPFEID.cjs +574 -0
  109. package/dist/chunk-6HIPFEID.cjs.map +1 -0
  110. package/dist/chunk-76JDDMSP.js +31 -0
  111. package/dist/chunk-76JDDMSP.js.map +1 -0
  112. package/dist/chunk-7F6CBP3Z.js +12 -0
  113. package/dist/chunk-7F6CBP3Z.js.map +1 -0
  114. package/dist/chunk-7G2LJMUG.cjs +45 -0
  115. package/dist/chunk-7G2LJMUG.cjs.map +1 -0
  116. package/dist/chunk-7G3JNSJB.cjs +1809 -0
  117. package/dist/chunk-7G3JNSJB.cjs.map +1 -0
  118. package/dist/chunk-A2YAC22G.js +93 -0
  119. package/dist/chunk-A2YAC22G.js.map +1 -0
  120. package/dist/chunk-ADOKTJHV.cjs +262 -0
  121. package/dist/chunk-ADOKTJHV.cjs.map +1 -0
  122. package/dist/chunk-AXIZ2MDV.js +751 -0
  123. package/dist/chunk-AXIZ2MDV.js.map +1 -0
  124. package/dist/chunk-AZQDNYH4.js +2865 -0
  125. package/dist/chunk-AZQDNYH4.js.map +1 -0
  126. package/dist/chunk-C54XEN5T.cjs +34 -0
  127. package/dist/chunk-C54XEN5T.cjs.map +1 -0
  128. package/dist/chunk-CQCC7LE7.js +210 -0
  129. package/dist/chunk-CQCC7LE7.js.map +1 -0
  130. package/dist/chunk-CRIKTUEU.cjs +47 -0
  131. package/dist/chunk-CRIKTUEU.cjs.map +1 -0
  132. package/dist/chunk-CTZ5745I.js +564 -0
  133. package/dist/chunk-CTZ5745I.js.map +1 -0
  134. package/dist/chunk-DPLRHEJZ.js +78 -0
  135. package/dist/chunk-DPLRHEJZ.js.map +1 -0
  136. package/dist/chunk-DVLEQURC.js +672 -0
  137. package/dist/chunk-DVLEQURC.js.map +1 -0
  138. package/dist/chunk-ELR74ME6.cjs +68 -0
  139. package/dist/chunk-ELR74ME6.cjs.map +1 -0
  140. package/dist/{chunk-DBAUZD7A.cjs → chunk-FZQJ2S6P.cjs} +244 -1123
  141. package/dist/chunk-FZQJ2S6P.cjs.map +1 -0
  142. package/dist/chunk-G3G7LZPM.cjs +205 -0
  143. package/dist/chunk-G3G7LZPM.cjs.map +1 -0
  144. package/dist/chunk-GDFWJ73C.cjs +2973 -0
  145. package/dist/chunk-GDFWJ73C.cjs.map +1 -0
  146. package/dist/chunk-ITGHMJOM.js +5528 -0
  147. package/dist/chunk-ITGHMJOM.js.map +1 -0
  148. package/dist/chunk-K4BGOPGG.js +79 -0
  149. package/dist/chunk-K4BGOPGG.js.map +1 -0
  150. package/dist/chunk-KUA3BCT2.cjs +272 -0
  151. package/dist/chunk-KUA3BCT2.cjs.map +1 -0
  152. package/dist/chunk-LGBAZD37.js +341 -0
  153. package/dist/chunk-LGBAZD37.js.map +1 -0
  154. package/dist/chunk-MHVNT4J3.cjs +15 -0
  155. package/dist/chunk-MHVNT4J3.cjs.map +1 -0
  156. package/dist/chunk-MMYCZRKT.cjs +168 -0
  157. package/dist/chunk-MMYCZRKT.cjs.map +1 -0
  158. package/dist/chunk-NBV56SGU.js +42 -0
  159. package/dist/chunk-NBV56SGU.js.map +1 -0
  160. package/dist/chunk-NPLYHR2E.js +13 -0
  161. package/dist/chunk-NPLYHR2E.js.map +1 -0
  162. package/dist/chunk-NUNKSZKU.js +203 -0
  163. package/dist/chunk-NUNKSZKU.js.map +1 -0
  164. package/dist/chunk-OB5F4577.cjs +40 -0
  165. package/dist/chunk-OB5F4577.cjs.map +1 -0
  166. package/dist/chunk-OUW6G4O2.cjs +96 -0
  167. package/dist/chunk-OUW6G4O2.cjs.map +1 -0
  168. package/dist/chunk-OVEQERPO.js +66 -0
  169. package/dist/chunk-OVEQERPO.js.map +1 -0
  170. package/dist/chunk-P6GHJSLR.js +34 -0
  171. package/dist/chunk-P6GHJSLR.js.map +1 -0
  172. package/dist/chunk-PCB2BPN3.cjs +41 -0
  173. package/dist/chunk-PCB2BPN3.cjs.map +1 -0
  174. package/dist/chunk-PPCATBOY.cjs +15 -0
  175. package/dist/chunk-PPCATBOY.cjs.map +1 -0
  176. package/dist/chunk-QN42OA5J.js +887 -0
  177. package/dist/chunk-QN42OA5J.js.map +1 -0
  178. package/dist/{chunk-FZ2S6VAZ.js → chunk-RBXZYNVB.js} +223 -1102
  179. package/dist/chunk-RBXZYNVB.js.map +1 -0
  180. package/dist/chunk-RC6VTY2H.js +47 -0
  181. package/dist/chunk-RC6VTY2H.js.map +1 -0
  182. package/dist/chunk-RFIBUWLF.cjs +232 -0
  183. package/dist/chunk-RFIBUWLF.cjs.map +1 -0
  184. package/dist/chunk-S5T7ZTX2.js +266 -0
  185. package/dist/chunk-S5T7ZTX2.js.map +1 -0
  186. package/dist/chunk-S7PSMMRG.js +38 -0
  187. package/dist/chunk-S7PSMMRG.js.map +1 -0
  188. package/dist/chunk-SCFYPAG6.cjs +18 -0
  189. package/dist/chunk-SCFYPAG6.cjs.map +1 -0
  190. package/dist/chunk-SYDHKKRZ.cjs +818 -0
  191. package/dist/chunk-SYDHKKRZ.cjs.map +1 -0
  192. package/dist/chunk-TX2ZICS7.js +139 -0
  193. package/dist/chunk-TX2ZICS7.js.map +1 -0
  194. package/dist/chunk-TYZUCAT7.js +787 -0
  195. package/dist/chunk-TYZUCAT7.js.map +1 -0
  196. package/dist/chunk-U2E3WT3J.js +45 -0
  197. package/dist/chunk-U2E3WT3J.js.map +1 -0
  198. package/dist/chunk-UBNVIIBT.js +284 -0
  199. package/dist/chunk-UBNVIIBT.js.map +1 -0
  200. package/dist/chunk-UFHMLHIR.cjs +66 -0
  201. package/dist/chunk-UFHMLHIR.cjs.map +1 -0
  202. package/dist/chunk-UJE32SST.js +39 -0
  203. package/dist/chunk-UJE32SST.js.map +1 -0
  204. package/dist/chunk-ULWRNGGE.cjs +146 -0
  205. package/dist/chunk-ULWRNGGE.cjs.map +1 -0
  206. package/dist/chunk-UTWX2X2A.js +165 -0
  207. package/dist/chunk-UTWX2X2A.js.map +1 -0
  208. package/dist/chunk-UWGIB3VQ.js +64 -0
  209. package/dist/chunk-UWGIB3VQ.js.map +1 -0
  210. package/dist/chunk-V4ISCZJ7.cjs +207 -0
  211. package/dist/chunk-V4ISCZJ7.cjs.map +1 -0
  212. package/dist/chunk-VFUWWH52.cjs +83 -0
  213. package/dist/chunk-VFUWWH52.cjs.map +1 -0
  214. package/dist/chunk-VILAPTCB.js +259 -0
  215. package/dist/chunk-VILAPTCB.js.map +1 -0
  216. package/dist/chunk-VLCY46K6.cjs +82 -0
  217. package/dist/chunk-VLCY46K6.cjs.map +1 -0
  218. package/dist/chunk-VPPX5XUF.cjs +813 -0
  219. package/dist/chunk-VPPX5XUF.cjs.map +1 -0
  220. package/dist/chunk-WJMEXTVD.cjs +122 -0
  221. package/dist/chunk-WJMEXTVD.cjs.map +1 -0
  222. package/dist/chunk-WTNMWEBC.js +504 -0
  223. package/dist/chunk-WTNMWEBC.js.map +1 -0
  224. package/dist/chunk-WW6EOVZA.js +112 -0
  225. package/dist/chunk-WW6EOVZA.js.map +1 -0
  226. package/dist/chunk-XNBAXRY7.cjs +5673 -0
  227. package/dist/chunk-XNBAXRY7.cjs.map +1 -0
  228. package/dist/chunk-XQ7PKKDY.cjs +787 -0
  229. package/dist/chunk-XQ7PKKDY.cjs.map +1 -0
  230. package/dist/chunk-XZIYRKLW.cjs +347 -0
  231. package/dist/chunk-XZIYRKLW.cjs.map +1 -0
  232. package/dist/chunk-YBXCZEWS.js +187 -0
  233. package/dist/chunk-YBXCZEWS.js.map +1 -0
  234. package/dist/chunk-YDHO4AVL.js +16 -0
  235. package/dist/chunk-YDHO4AVL.js.map +1 -0
  236. package/dist/chunk-ZORQ5M3W.cjs +934 -0
  237. package/dist/chunk-ZORQ5M3W.cjs.map +1 -0
  238. package/dist/chunk-ZW6FPIFC.cjs +36 -0
  239. package/dist/chunk-ZW6FPIFC.cjs.map +1 -0
  240. package/dist/citations/CitationEditor.d.ts +58 -0
  241. package/dist/citations/PassagePill.d.ts +49 -0
  242. package/dist/citations/QuietMarks.d.ts +81 -0
  243. package/dist/citations/index.cjs +47 -0
  244. package/dist/citations/index.cjs.map +1 -0
  245. package/dist/citations/index.d.ts +3 -0
  246. package/dist/citations/index.js +6 -0
  247. package/dist/citations/index.js.map +1 -0
  248. package/dist/collaboration/contacts/AddContactsParts.d.ts +46 -0
  249. package/dist/collaboration/contacts/index.d.ts +1 -0
  250. package/dist/collaboration/direct-messages/DirectMessages.d.ts +33 -0
  251. package/dist/collaboration/direct-messages/DmParts.d.ts +139 -0
  252. package/dist/collaboration/direct-messages/index.d.ts +2 -0
  253. package/dist/collaboration/index.cjs +141 -0
  254. package/dist/collaboration/index.cjs.map +1 -0
  255. package/dist/collaboration/index.d.ts +5 -0
  256. package/dist/collaboration/index.js +8 -0
  257. package/dist/collaboration/index.js.map +1 -0
  258. package/dist/collaboration/mail/MailFolderTree.d.ts +34 -0
  259. package/dist/collaboration/mail/index.d.ts +2 -0
  260. package/dist/collaboration/mail/mailFolders.d.ts +25 -0
  261. package/dist/collaboration/members/WorkspaceMembers.d.ts +74 -0
  262. package/dist/collaboration/members/index.d.ts +1 -0
  263. package/dist/collaboration/sharing/ShareControl.d.ts +38 -0
  264. package/dist/collaboration/sharing/index.d.ts +1 -0
  265. package/dist/components/Accordion.d.ts +12 -0
  266. package/dist/components/ActionLink.d.ts +18 -0
  267. package/dist/components/AskBar.d.ts +48 -0
  268. package/dist/components/AvatarBlock.d.ts +9 -0
  269. package/dist/components/Banner.d.ts +12 -0
  270. package/dist/components/BlockImage.d.ts +18 -0
  271. package/dist/components/CTABanner.d.ts +17 -0
  272. package/dist/components/Callout.d.ts +9 -0
  273. package/dist/components/Chart.d.ts +27 -0
  274. package/dist/components/CollectionDetail.d.ts +23 -0
  275. package/dist/components/Columns.d.ts +11 -0
  276. package/dist/components/ContactForm.d.ts +42 -0
  277. package/dist/components/Container.d.ts +11 -0
  278. package/dist/components/DataTable.d.ts +47 -0
  279. package/dist/components/DataTableBlock.d.ts +26 -0
  280. package/dist/components/EmptyState.d.ts +11 -0
  281. package/dist/components/EntityChip.d.ts +24 -0
  282. package/dist/components/EntityIdentityBar.d.ts +90 -0
  283. package/dist/components/EntityTooltip.d.ts +43 -0
  284. package/dist/components/FAQ.d.ts +14 -0
  285. package/dist/components/FeatureGrid.d.ts +18 -0
  286. package/dist/components/Footer.d.ts +25 -0
  287. package/dist/components/Gallery.d.ts +15 -0
  288. package/dist/components/Hero.d.ts +35 -0
  289. package/dist/components/ListBlock.d.ts +10 -0
  290. package/dist/components/LogoCloud.d.ts +12 -0
  291. package/dist/components/MediaText.d.ts +15 -0
  292. package/dist/components/MemberAvatarStack.d.ts +36 -0
  293. package/dist/components/MetricCard.d.ts +28 -0
  294. package/dist/components/Navbar.d.ts +39 -0
  295. package/dist/components/PageHeader.d.ts +15 -0
  296. package/dist/components/PricingTable.d.ts +19 -0
  297. package/dist/components/RichTextBlock.d.ts +10 -0
  298. package/dist/components/SectionHeading.d.ts +11 -0
  299. package/dist/components/Spacer.d.ts +7 -0
  300. package/dist/components/StatGroup.d.ts +12 -0
  301. package/dist/components/Steps.d.ts +12 -0
  302. package/dist/components/Tabs.d.ts +15 -0
  303. package/dist/components/TeamGrid.d.ts +18 -0
  304. package/dist/components/Testimonial.d.ts +9 -0
  305. package/dist/components/TestimonialGrid.d.ts +13 -0
  306. package/dist/components/ToneBadge.d.ts +18 -0
  307. package/dist/components/Toolbar.d.ts +11 -0
  308. package/dist/components/UsageMeter.d.ts +21 -0
  309. package/dist/components/VideoEmbed.d.ts +16 -0
  310. package/dist/components/assetImage.d.ts +16 -0
  311. package/dist/components/assetResolver.d.ts +57 -0
  312. package/dist/components/blockLink.d.ts +26 -0
  313. package/dist/components/tones.d.ts +14 -0
  314. package/dist/connect/index.cjs +65 -0
  315. package/dist/connect/index.cjs.map +1 -0
  316. package/dist/connect/index.d.ts +8 -0
  317. package/dist/connect/index.js +28 -0
  318. package/dist/connect/index.js.map +1 -0
  319. package/dist/connection/ArbiAppProvider.d.ts +16 -0
  320. package/dist/connection/ConnectionProvider.d.ts +50 -0
  321. package/dist/connection/ai.d.ts +99 -0
  322. package/dist/connection/types.d.ts +54 -0
  323. package/dist/connection/useImageGen.d.ts +22 -0
  324. package/dist/facts/FactComposer.d.ts +75 -0
  325. package/dist/facts/FactDateInput.d.ts +34 -0
  326. package/dist/facts/FactLabelsCell.d.ts +35 -0
  327. package/dist/facts/FactPassages.d.ts +52 -0
  328. package/dist/facts/FactRowActions.d.ts +18 -0
  329. package/dist/facts/FactSearchParts.d.ts +80 -0
  330. package/dist/facts/FactSourceGroup.d.ts +26 -0
  331. package/dist/facts/FactTimelineViews.d.ts +37 -0
  332. package/dist/facts/FactsBulkBar.d.ts +53 -0
  333. package/dist/facts/FactsEmptyState.d.ts +38 -0
  334. package/dist/facts/FactsFieldsButton.d.ts +21 -0
  335. package/dist/facts/FactsFilterInput.d.ts +46 -0
  336. package/dist/facts/FactsTable.d.ts +28 -0
  337. package/dist/facts/FactsToolbar.d.ts +53 -0
  338. package/dist/facts/FactsViewToggle.d.ts +36 -0
  339. package/dist/facts/fact-date.d.ts +22 -0
  340. package/dist/facts/fact-text.d.ts +14 -0
  341. package/dist/facts/factColumns.d.ts +88 -0
  342. package/dist/facts/index.cjs +2372 -0
  343. package/dist/facts/index.cjs.map +1 -0
  344. package/dist/facts/index.d.ts +34 -0
  345. package/dist/facts/index.js +2316 -0
  346. package/dist/facts/index.js.map +1 -0
  347. package/dist/facts/timezone.d.ts +4 -0
  348. package/dist/files/AiReviewDialog.d.ts +77 -0
  349. package/dist/files/DocStatusIcon.d.ts +12 -0
  350. package/dist/files/DocumentGrid.d.ts +27 -0
  351. package/dist/files/Explorer.d.ts +10 -0
  352. package/dist/files/ExplorerSurface.d.ts +34 -0
  353. package/dist/files/ExplorerTile.d.ts +142 -0
  354. package/dist/files/ExportParts.d.ts +114 -0
  355. package/dist/files/FieldParts.d.ts +64 -0
  356. package/dist/files/FilesPage.d.ts +20 -0
  357. package/dist/files/FilesToolbar.d.ts +59 -0
  358. package/dist/files/FolderPicker.d.ts +82 -0
  359. package/dist/files/GridView.d.ts +59 -0
  360. package/dist/files/HtmlViewerParts.d.ts +183 -0
  361. package/dist/files/MoveToFolderDialog.d.ts +32 -0
  362. package/dist/files/RedlineParts.d.ts +72 -0
  363. package/dist/files/SelectionBar.d.ts +65 -0
  364. package/dist/files/StatusPill.d.ts +23 -0
  365. package/dist/files/TagPassagePanel.d.ts +60 -0
  366. package/dist/files/UploadDropzone.d.ts +33 -0
  367. package/dist/files/UploadFooter.d.ts +59 -0
  368. package/dist/files/UploadParts.d.ts +78 -0
  369. package/dist/files/UploadSources.d.ts +77 -0
  370. package/dist/files/VersionTimeline.d.ts +60 -0
  371. package/dist/files/ViewToggle.d.ts +49 -0
  372. package/dist/files/ViewerChrome.d.ts +155 -0
  373. package/dist/files/ViewerLayout.d.ts +32 -0
  374. package/dist/files/ViewerParts.d.ts +62 -0
  375. package/dist/files/bulk/BulkActionsBar.d.ts +76 -0
  376. package/dist/files/bulk/FolderFilterButton.d.ts +35 -0
  377. package/dist/files/bulk/index.d.ts +2 -0
  378. package/dist/files/cells/DocumentNameCell.d.ts +31 -0
  379. package/dist/files/cells/FolderCell.d.ts +25 -0
  380. package/dist/files/cells/HoverIconCell.d.ts +21 -0
  381. package/dist/files/cells/LabelMultiSelect.d.ts +50 -0
  382. package/dist/files/cells/RelatedDocsCell.d.ts +22 -0
  383. package/dist/files/cells/TagColumnParts.d.ts +29 -0
  384. package/dist/files/cells/index.d.ts +6 -0
  385. package/dist/files/documentGridLayout.d.ts +31 -0
  386. package/dist/files/grid-test-ids.d.ts +18 -0
  387. package/dist/files/import/CalendarImportRow.d.ts +26 -0
  388. package/dist/files/import/ImportParts.d.ts +114 -0
  389. package/dist/files/import/TaskSection.d.ts +51 -0
  390. package/dist/files/import/UrlInputDialogView.d.ts +63 -0
  391. package/dist/files/import/VendorLogo.d.ts +15 -0
  392. package/dist/files/import/index.d.ts +5 -0
  393. package/dist/files/index.cjs +7589 -0
  394. package/dist/files/index.cjs.map +1 -0
  395. package/dist/files/index.d.ts +34 -0
  396. package/dist/files/index.js +7374 -0
  397. package/dist/files/index.js.map +1 -0
  398. package/dist/files/page/FilesAddMenu.d.ts +30 -0
  399. package/dist/files/page/FilesPageParts.d.ts +24 -0
  400. package/dist/files/page/FilesPageTitle.d.ts +24 -0
  401. package/dist/files/page/index.d.ts +3 -0
  402. package/dist/files/tags/BulkTagEditor.d.ts +136 -0
  403. package/dist/files/tags/DocTagPopover.d.ts +113 -0
  404. package/dist/files/tags/TagManager.d.ts +54 -0
  405. package/dist/files/tags/index.d.ts +3 -0
  406. package/dist/files/views/FieldsEditorParts.d.ts +151 -0
  407. package/dist/files/views/FieldsManagerParts.d.ts +17 -0
  408. package/dist/files/views/TagFormParts.d.ts +109 -0
  409. package/dist/files/views/ViewSelectorMenu.d.ts +66 -0
  410. package/dist/files/views/fieldsEditorModel.d.ts +43 -0
  411. package/dist/files/views/index.d.ts +5 -0
  412. package/dist/home/ActionMenuDialog.d.ts +26 -0
  413. package/dist/home/AddFilesFirst.d.ts +22 -0
  414. package/dist/home/CardHeaderBar.d.ts +40 -0
  415. package/dist/home/CollapsibleSection.d.ts +43 -0
  416. package/dist/home/CreateTile.d.ts +17 -0
  417. package/dist/home/DashboardParts.d.ts +32 -0
  418. package/dist/home/FactsStrip.d.ts +41 -0
  419. package/dist/home/FoldSection.d.ts +19 -0
  420. package/dist/home/GettingStartedStrip.d.ts +49 -0
  421. package/dist/home/Greeting.d.ts +18 -0
  422. package/dist/home/HomeLayout.d.ts +28 -0
  423. package/dist/home/KeyValueRow.d.ts +43 -0
  424. package/dist/home/ProjectBandParts.d.ts +70 -0
  425. package/dist/home/QuickActionDialogHeader.d.ts +21 -0
  426. package/dist/home/RecentList.d.ts +48 -0
  427. package/dist/home/ScopePicker.d.ts +65 -0
  428. package/dist/home/StartTiles.d.ts +33 -0
  429. package/dist/home/index.cjs +854 -0
  430. package/dist/home/index.cjs.map +1 -0
  431. package/dist/home/index.d.ts +37 -0
  432. package/dist/home/index.js +763 -0
  433. package/dist/home/index.js.map +1 -0
  434. package/dist/home/sections.d.ts +33 -0
  435. package/dist/index.cjs +1932 -5547
  436. package/dist/index.cjs.map +1 -1
  437. package/dist/index.d.ts +71 -1716
  438. package/dist/index.js +142 -5316
  439. package/dist/index.js.map +1 -1
  440. package/dist/lib/balanced-columns.d.ts +8 -0
  441. package/dist/lib/format.d.ts +37 -0
  442. package/dist/lib/observe-resize.d.ts +6 -0
  443. package/dist/lib/password-strength.d.ts +24 -0
  444. package/dist/lib/sidebar-mode.d.ts +46 -0
  445. package/dist/lib/testid.d.ts +7 -0
  446. package/dist/lib/use-drawer.d.ts +11 -0
  447. package/dist/lib/useControllableState.d.ts +5 -0
  448. package/dist/lib/useDismissibleCard.d.ts +15 -0
  449. package/dist/lib/useListKeyNav.d.ts +42 -0
  450. package/dist/lib/useLongPaste.d.ts +15 -0
  451. package/dist/lib/useRestoreFocus.d.ts +11 -0
  452. package/dist/lib/useScopeSelection.d.ts +34 -0
  453. package/dist/nav/types.d.ts +19 -0
  454. package/dist/provider/BlocksProvider.d.ts +20 -0
  455. package/dist/provider/TooltipScope.d.ts +9 -0
  456. package/dist/record/index.cjs +2 -4
  457. package/dist/record/index.cjs.map +1 -1
  458. package/dist/record/index.d.ts +12 -16
  459. package/dist/record/index.js +2 -4
  460. package/dist/record/index.js.map +1 -1
  461. package/dist/retrieval/HighlightText.d.ts +21 -0
  462. package/dist/retrieval/SearchEmptyState.d.ts +39 -0
  463. package/dist/retrieval/SearchGroupHeader.d.ts +21 -0
  464. package/dist/retrieval/SearchHit.d.ts +36 -0
  465. package/dist/retrieval/SearchPage.d.ts +187 -0
  466. package/dist/retrieval/SearchPagination.d.ts +21 -0
  467. package/dist/retrieval/highlight.d.ts +21 -0
  468. package/dist/retrieval/index.cjs +160 -0
  469. package/dist/retrieval/index.cjs.map +1 -0
  470. package/dist/retrieval/index.d.ts +7 -0
  471. package/dist/retrieval/index.js +7 -0
  472. package/dist/retrieval/index.js.map +1 -0
  473. package/dist/settings/AccountDialogs.d.ts +89 -0
  474. package/dist/settings/AvatarPicker.d.ts +25 -0
  475. package/dist/settings/Billing.d.ts +113 -0
  476. package/dist/settings/ConfigSwitcherBar.d.ts +46 -0
  477. package/dist/settings/ConfirmDialog.d.ts +28 -0
  478. package/dist/settings/ConnectionCard.d.ts +58 -0
  479. package/dist/settings/ConversationSettingsParts.d.ts +53 -0
  480. package/dist/settings/DocumentPicker.d.ts +57 -0
  481. package/dist/settings/EmailWorkspaceDialogView.d.ts +60 -0
  482. package/dist/settings/ErrorDialog.d.ts +36 -0
  483. package/dist/settings/FloatingPanel.d.ts +32 -0
  484. package/dist/settings/JsonTree.d.ts +24 -0
  485. package/dist/settings/LogoutDialog.d.ts +51 -0
  486. package/dist/settings/ModalBreadcrumbHeader.d.ts +32 -0
  487. package/dist/settings/ModalScaffold.d.ts +60 -0
  488. package/dist/settings/MultiSelect.d.ts +111 -0
  489. package/dist/settings/NotificationCategoryList.d.ts +26 -0
  490. package/dist/settings/PanelFrame.d.ts +47 -0
  491. package/dist/settings/PasswordChangeDialog.d.ts +64 -0
  492. package/dist/settings/PlanBadge.d.ts +14 -0
  493. package/dist/settings/PlanCard.d.ts +97 -0
  494. package/dist/settings/PremiumModelsFrame.d.ts +17 -0
  495. package/dist/settings/ProfileCard.d.ts +67 -0
  496. package/dist/settings/Projects.d.ts +108 -0
  497. package/dist/settings/QuotaMeter.d.ts +31 -0
  498. package/dist/settings/ReferralCredit.d.ts +46 -0
  499. package/dist/settings/SegmentedControl.d.ts +20 -0
  500. package/dist/settings/ServerConnectionControls.d.ts +31 -0
  501. package/dist/settings/SettingsPanel.d.ts +61 -0
  502. package/dist/settings/SettingsSwitchRow.d.ts +21 -0
  503. package/dist/settings/SubscriptionParts.d.ts +215 -0
  504. package/dist/settings/SupportPanel.d.ts +32 -0
  505. package/dist/settings/SyncDialogParts.d.ts +155 -0
  506. package/dist/settings/ThreadPreviewDialog.d.ts +18 -0
  507. package/dist/settings/TipsEditorDialog.d.ts +94 -0
  508. package/dist/settings/TriStateFilterMenu.d.ts +66 -0
  509. package/dist/settings/Usage.d.ts +102 -0
  510. package/dist/settings/WelcomeDialog.d.ts +79 -0
  511. package/dist/settings/index.cjs +5131 -0
  512. package/dist/settings/index.cjs.map +1 -0
  513. package/dist/settings/index.d.ts +38 -0
  514. package/dist/settings/index.js +4922 -0
  515. package/dist/settings/index.js.map +1 -0
  516. package/dist/shell/ActionCluster.d.ts +28 -0
  517. package/dist/shell/AskField.d.ts +71 -0
  518. package/dist/shell/InfoBar.d.ts +20 -0
  519. package/dist/shell/MobileBars.d.ts +47 -0
  520. package/dist/shell/OfflinePill.d.ts +28 -0
  521. package/dist/shell/RemoteControlPill.d.ts +23 -0
  522. package/dist/shell/Shell.d.ts +123 -0
  523. package/dist/shell/Sidebar.d.ts +104 -0
  524. package/dist/shell/SidebarBadgeRow.d.ts +29 -0
  525. package/dist/shell/SidebarRowAction.d.ts +24 -0
  526. package/dist/shell/StatusRow.d.ts +20 -0
  527. package/dist/shell/TabHeader.d.ts +70 -0
  528. package/dist/shell/TipCard.d.ts +46 -0
  529. package/dist/shell/ToolButton.d.ts +12 -0
  530. package/dist/shell/Workspace.d.ts +90 -0
  531. package/dist/shell/index.cjs +187 -0
  532. package/dist/shell/index.cjs.map +1 -0
  533. package/dist/shell/index.d.ts +20 -0
  534. package/dist/shell/index.js +10 -0
  535. package/dist/shell/index.js.map +1 -0
  536. package/dist/shell/sidebar-context.d.ts +19 -0
  537. package/dist/shell/types.d.ts +48 -0
  538. package/dist/site/index.cjs +113 -90
  539. package/dist/site/index.d.ts +59 -4
  540. package/dist/site/index.js +8 -1
  541. package/dist/studio/PageRenderer.d.ts +35 -0
  542. package/dist/studio/Section.d.ts +24 -0
  543. package/dist/studio/StudioEditor.d.ts +32 -0
  544. package/dist/studio/aiFields.d.ts +17 -0
  545. package/dist/studio/blockKit.d.ts +36 -0
  546. package/dist/studio/blocksConfig.d.ts +42 -0
  547. package/dist/studio/imageFields.d.ts +14 -0
  548. package/dist/studio/index.cjs +3353 -0
  549. package/dist/studio/index.cjs.map +1 -0
  550. package/dist/studio/index.d.ts +32 -0
  551. package/dist/studio/index.js +3297 -0
  552. package/dist/studio/index.js.map +1 -0
  553. package/dist/studio/liveData.d.ts +4 -0
  554. package/dist/studio/liveWidgetRuntime.d.ts +41 -0
  555. package/dist/studio/persistence.d.ts +38 -0
  556. package/dist/studio/publish.d.ts +39 -0
  557. package/dist/studio/siteBlocks.d.ts +14 -0
  558. package/dist/studio/types.d.ts +46 -0
  559. package/dist/studio/websiteBlocks.d.ts +4 -0
  560. package/dist/studio/widgets.d.ts +20 -0
  561. package/dist/theme/ThemeEditor.d.ts +16 -0
  562. package/dist/theme/fontPairings.d.ts +48 -0
  563. package/dist/theme/store.d.ts +53 -0
  564. package/dist/theme/tokens.d.ts +105 -0
  565. package/dist/timeline/Timeline.d.ts +27 -0
  566. package/dist/timeline/TimelineCalendar.d.ts +54 -0
  567. package/dist/timeline/TimelineGantt.d.ts +71 -0
  568. package/dist/timeline/TimelineZoomControl.d.ts +17 -0
  569. package/dist/timeline/index.cjs +50 -0
  570. package/dist/timeline/index.cjs.map +1 -0
  571. package/dist/timeline/index.d.ts +13 -0
  572. package/dist/timeline/index.js +5 -0
  573. package/dist/timeline/index.js.map +1 -0
  574. package/dist/timeline/span.d.ts +29 -0
  575. package/dist/timeline/types.d.ts +30 -0
  576. package/dist/workspaces/WorkspaceBadges.d.ts +27 -0
  577. package/dist/workspaces/WorkspaceCard.d.ts +142 -0
  578. package/dist/workspaces/WorkspaceFormParts.d.ts +98 -0
  579. package/dist/workspaces/WorkspaceGroup.d.ts +31 -0
  580. package/dist/workspaces/WorkspaceSettingsParts.d.ts +70 -0
  581. package/dist/workspaces/index.cjs +690 -0
  582. package/dist/workspaces/index.cjs.map +1 -0
  583. package/dist/workspaces/index.d.ts +9 -0
  584. package/dist/workspaces/index.js +661 -0
  585. package/dist/workspaces/index.js.map +1 -0
  586. package/package.json +164 -9
  587. package/src/blocks.css +348 -0
  588. package/src/components/grid.css +60 -107
  589. package/src/source.css +20 -0
  590. package/src/studio/studio.css +3 -3
  591. package/src/tokens.css +226 -0
  592. package/dist/chunk-DBAUZD7A.cjs.map +0 -1
  593. package/dist/chunk-FZ2S6VAZ.js.map +0 -1
  594. package/dist/index-DduoEosi.d.cts +0 -846
  595. package/dist/index-DduoEosi.d.ts +0 -846
  596. package/dist/index.d.cts +0 -1717
  597. package/dist/record/index.d.cts +0 -96
  598. package/dist/site/index.d.cts +0 -4
@@ -0,0 +1,262 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
5
+ var react = require('react');
6
+ var lucideReact = require('lucide-react');
7
+ var ui = require('@arbidocs/react/ui');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // src/lib/password-strength.ts
11
+ var STRONG_BITS = 75;
12
+ function alphabetSize(password) {
13
+ return (/[a-z]/.test(password) ? 26 : 0) + (/[A-Z]/.test(password) ? 26 : 0) + (/\d/.test(password) ? 10 : 0) + (/[^a-zA-Z0-9]/.test(password) ? 33 : 0);
14
+ }
15
+ function estimateEntropyBits(password) {
16
+ return password.length * Math.log2(Math.max(alphabetSize(password), 2));
17
+ }
18
+ function getPasswordStrength(password, meetsRequirements) {
19
+ if (!password || !meetsRequirements) return { score: 0, label: "" };
20
+ if (estimateEntropyBits(password) >= STRONG_BITS) {
21
+ return { score: 2, label: "Password meets all criteria" };
22
+ }
23
+ return { score: 1, label: "Password meets minimal criteria" };
24
+ }
25
+ function getStrengthHint(password) {
26
+ if (!password) return "";
27
+ const hasSymbol = /[^a-zA-Z0-9]/.test(password);
28
+ const hasUpper = /[A-Z]/.test(password);
29
+ const perChar = Math.log2(Math.max(alphabetSize(password), 2));
30
+ const missing = Math.max(0, STRONG_BITS - password.length * perChar);
31
+ if (missing === 0) return "Long enough to resist guessing.";
32
+ const moreChars = Math.ceil(missing / perChar);
33
+ const goal = `Add ${moreChars} more character${moreChars === 1 ? "" : "s"} to make a strong password`;
34
+ const unused = !hasSymbol ? "a symbol" : !hasUpper ? "a capital" : null;
35
+ return unused ? `${goal} \u2014 or ${unused}, which counts for more.` : `${goal}.`;
36
+ }
37
+ var DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS = {
38
+ password: "Password",
39
+ confirmPassword: "Confirm Password",
40
+ passwordsMatch: "Passwords match",
41
+ passwordsDoNotMatch: "Passwords do not match",
42
+ strengthInfo: (strength) => `${strength}. How to strengthen it`,
43
+ strengthFallbackHint: "Long enough to resist guessing."
44
+ };
45
+ var STRENGTH_STYLE = {
46
+ 0: { bar: "bg-red-text", text: "text-red-text", width: "33%" },
47
+ 1: { bar: "bg-primary", text: "text-primary", width: "66%" },
48
+ 2: { bar: "bg-green-text", text: "text-green-text", width: "100%" }
49
+ };
50
+ function Label({ htmlFor, children }) {
51
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor, className: "mb-1 block text-sm font-medium text-foreground", children: [
52
+ children,
53
+ " ",
54
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-text", children: "*" })
55
+ ] });
56
+ }
57
+ function PasswordStrengthInput({
58
+ password,
59
+ confirmPassword = "",
60
+ onPasswordChange,
61
+ onConfirmPasswordChange,
62
+ showConfirmation = false,
63
+ disabled = false,
64
+ passwordLabel,
65
+ confirmLabel,
66
+ layout = "stacked",
67
+ autoFocus = false,
68
+ showStrengthIndicator = true,
69
+ emptyStateMessage,
70
+ getUnmetRequirement,
71
+ labels,
72
+ testIds
73
+ }) {
74
+ const confirmPasswordId = react.useId();
75
+ const mismatchId = `${confirmPasswordId}-mismatch`;
76
+ const passwordId = react.useId();
77
+ const l = react.useMemo(() => ({ ...DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS, ...labels }), [labels]);
78
+ const firstUnmetRequirement = react.useMemo(
79
+ () => getUnmetRequirement(password),
80
+ [getUnmetRequirement, password]
81
+ );
82
+ const hint = react.useMemo(() => getStrengthHint(password), [password]);
83
+ const strength = react.useMemo(
84
+ () => getPasswordStrength(password, firstUnmetRequirement === null),
85
+ [password, firstUnmetRequirement]
86
+ );
87
+ const strengthStyle = STRENGTH_STYLE[strength.score];
88
+ const [confirmBlurred, setConfirmBlurred] = react.useState(false);
89
+ const passwordsMatch = !!confirmPassword && password === confirmPassword;
90
+ const showConfirmFeedback = showConfirmation && confirmBlurred && !!confirmPassword;
91
+ const passwordMismatch = showConfirmFeedback && !passwordsMatch;
92
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", "data-slot": "password-strength-input", children: [
93
+ /* @__PURE__ */ jsxRuntime.jsxs(
94
+ "div",
95
+ {
96
+ className: ui.cn(
97
+ layout === "side-by-side" ? "grid grid-cols-1 gap-4 sm:grid-cols-2" : "space-y-3"
98
+ ),
99
+ children: [
100
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
101
+ /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: passwordId, children: passwordLabel ?? l.password }),
102
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
103
+ /* @__PURE__ */ jsxRuntime.jsx(
104
+ ui.Input,
105
+ {
106
+ type: "password",
107
+ id: passwordId,
108
+ name: "password",
109
+ placeholder: "",
110
+ value: password,
111
+ onChange: (e) => onPasswordChange(e.target.value),
112
+ disabled,
113
+ autoFocus,
114
+ autoComplete: showConfirmation ? "new-password" : "current-password",
115
+ required: true,
116
+ className: ui.cn(
117
+ "placeholder:text-muted-foreground",
118
+ showStrengthIndicator && "rounded-b-none border-b-0"
119
+ ),
120
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.input, { testId: "password-input" })
121
+ }
122
+ ),
123
+ showStrengthIndicator && /* @__PURE__ */ jsxRuntime.jsx(
124
+ "div",
125
+ {
126
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.strengthIndicator, {
127
+ testId: "password-strength-indicator"
128
+ }),
129
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1 w-full rounded-b bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(
130
+ "div",
131
+ {
132
+ className: ui.cn(
133
+ "h-full rounded-b transition-all duration-300",
134
+ password ? strengthStyle.bar : "bg-border"
135
+ ),
136
+ style: { width: password ? strengthStyle.width : "0%" },
137
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.strengthBar, { testId: "strength-bar" })
138
+ }
139
+ ) })
140
+ }
141
+ )
142
+ ] })
143
+ ] }),
144
+ showConfirmation && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
145
+ /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: confirmPasswordId, children: confirmLabel ?? l.confirmPassword }),
146
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
147
+ /* @__PURE__ */ jsxRuntime.jsx(
148
+ ui.Input,
149
+ {
150
+ type: "password",
151
+ id: confirmPasswordId,
152
+ name: "confirm-password",
153
+ placeholder: "",
154
+ value: confirmPassword,
155
+ onChange: (e) => {
156
+ onConfirmPasswordChange?.(e.target.value);
157
+ setConfirmBlurred(false);
158
+ },
159
+ onBlur: () => setConfirmBlurred(true),
160
+ disabled,
161
+ autoComplete: "new-password",
162
+ "aria-invalid": passwordMismatch || void 0,
163
+ "aria-describedby": showStrengthIndicator ? mismatchId : void 0,
164
+ required: true,
165
+ className: ui.cn(
166
+ "placeholder:text-muted-foreground",
167
+ showStrengthIndicator && "rounded-b-none border-b-0",
168
+ passwordMismatch && "border-red-border"
169
+ ),
170
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.confirmInput, { testId: "confirm-password-input" })
171
+ }
172
+ ),
173
+ showStrengthIndicator && /* @__PURE__ */ jsxRuntime.jsxs(
174
+ "div",
175
+ {
176
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.confirmIndicator, {
177
+ testId: "confirm-password-indicator"
178
+ }),
179
+ children: [
180
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1 w-full rounded-b bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(
181
+ "div",
182
+ {
183
+ className: ui.cn(
184
+ "h-full rounded-b transition-all duration-300",
185
+ showConfirmFeedback ? passwordsMatch ? "bg-green-text" : "bg-red-text" : "bg-border"
186
+ ),
187
+ style: { width: showConfirmFeedback ? "100%" : "0%" },
188
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.confirmStrengthBar, {
189
+ testId: "confirm-strength-bar"
190
+ })
191
+ }
192
+ ) }),
193
+ /* @__PURE__ */ jsxRuntime.jsx(
194
+ "p",
195
+ {
196
+ id: mismatchId,
197
+ "aria-live": "polite",
198
+ className: ui.cn(
199
+ "mt-0.5 h-4 text-sm font-medium",
200
+ showConfirmFeedback ? passwordsMatch ? "text-green-text" : "text-red-text" : "text-transparent"
201
+ ),
202
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.mismatchError, {
203
+ testId: "password-mismatch-error"
204
+ }),
205
+ children: showConfirmFeedback ? passwordsMatch ? l.passwordsMatch : l.passwordsDoNotMatch : " "
206
+ }
207
+ )
208
+ ]
209
+ }
210
+ )
211
+ ] })
212
+ ] })
213
+ ]
214
+ }
215
+ ),
216
+ showConfirmation && /* @__PURE__ */ jsxRuntime.jsx(
217
+ "div",
218
+ {
219
+ className: "h-5 text-sm leading-5",
220
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.requirements, { testId: "password-requirements" }),
221
+ children: password ? firstUnmetRequirement ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-red-text", children: [
222
+ "\u2717 ",
223
+ firstUnmetRequirement
224
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { delayDuration: 0, children: [
225
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
226
+ "button",
227
+ {
228
+ type: "button",
229
+ "aria-label": l.strengthInfo(strength.label),
230
+ className: ui.cn(
231
+ "inline-flex items-center gap-1 truncate rounded font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
232
+ strengthStyle.text
233
+ ),
234
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.strengthInfoButton, {
235
+ testId: "strength-info-button"
236
+ }),
237
+ children: [
238
+ /* @__PURE__ */ jsxRuntime.jsxs(
239
+ "span",
240
+ {
241
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.strengthLabel, { testId: "strength-label" }),
242
+ children: [
243
+ "\u2713 ",
244
+ strength.label
245
+ ]
246
+ }
247
+ ),
248
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, { className: "h-3.5 w-3.5 opacity-80" })
249
+ ]
250
+ }
251
+ ) }),
252
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "bottom", className: "max-w-[260px] text-center", children: hint || l.strengthFallbackHint })
253
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-muted-foreground", children: emptyStateMessage || "\xA0" })
254
+ }
255
+ )
256
+ ] });
257
+ }
258
+
259
+ exports.DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS = DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS;
260
+ exports.PasswordStrengthInput = PasswordStrengthInput;
261
+ //# sourceMappingURL=chunk-ADOKTJHV.cjs.map
262
+ //# sourceMappingURL=chunk-ADOKTJHV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/password-strength.ts","../src/auth/PasswordStrengthInput.tsx"],"names":["jsxs","jsx","useId","useMemo","useState","cn","Input","testIdOr","Tooltip","TooltipTrigger","Info","TooltipContent"],"mappings":";;;;;;;;;AACO,IAAM,WAAA,GAAc,EAAA;AAW3B,SAAS,aAAa,QAAA,EAA0B;AAC9C,EAAA,OAAA,CACG,OAAA,CAAQ,KAAK,QAAQ,CAAA,GAAI,KAAK,CAAA,KAC9B,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,GAAI,EAAA,GAAK,MAC9B,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,GAAI,EAAA,GAAK,MAC3B,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAA,GAAI,EAAA,GAAK,CAAA,CAAA;AAE1C;AAOO,SAAS,oBAAoB,QAAA,EAA0B;AAC5D,EAAA,OAAO,QAAA,CAAS,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,YAAA,CAAa,QAAQ,CAAA,EAAG,CAAC,CAAC,CAAA;AACxE;AAMO,SAAS,mBAAA,CACd,UACA,iBAAA,EACkB;AAElB,EAAA,IAAI,CAAC,YAAY,CAAC,iBAAA,SAA0B,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,EAAA,EAAG;AAClE,EAAA,IAAI,mBAAA,CAAoB,QAAQ,CAAA,IAAK,WAAA,EAAa;AAChD,IAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,6BAAA,EAA8B;AAAA,EAC1D;AACA,EAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,iCAAA,EAAkC;AAC9D;AAMO,SAAS,gBAAgB,QAAA,EAA0B;AACxD,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AACtB,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,CAAK,IAAA,CAAK,IAAI,YAAA,CAAa,QAAQ,CAAA,EAAG,CAAC,CAAC,CAAA;AAC7D,EAAA,MAAM,UAAU,IAAA,CAAK,GAAA,CAAI,GAAG,WAAA,GAAc,QAAA,CAAS,SAAS,OAAO,CAAA;AACnE,EAAA,IAAI,OAAA,KAAY,GAAG,OAAO,iCAAA;AAE1B,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,OAAO,CAAA;AAC7C,EAAA,MAAM,OAAO,CAAA,IAAA,EAAO,SAAS,kBAAkB,SAAA,KAAc,CAAA,GAAI,KAAK,GAAG,CAAA,0BAAA,CAAA;AACzE,EAAA,MAAM,SAAS,CAAC,SAAA,GAAY,UAAA,GAAa,CAAC,WAAW,WAAA,GAAc,IAAA;AACnE,EAAA,OAAO,SAAS,CAAA,EAAG,IAAI,cAAS,MAAM,CAAA,wBAAA,CAAA,GAA6B,GAAG,IAAI,CAAA,CAAA,CAAA;AAC5E;AC3BO,IAAM,sCAAA,GAAsE;AAAA,EACjF,QAAA,EAAU,UAAA;AAAA,EACV,eAAA,EAAiB,kBAAA;AAAA,EACjB,cAAA,EAAgB,iBAAA;AAAA,EAChB,mBAAA,EAAqB,wBAAA;AAAA,EACrB,YAAA,EAAc,CAAC,QAAA,KAAa,CAAA,EAAG,QAAQ,CAAA,sBAAA,CAAA;AAAA,EACvC,oBAAA,EAAsB;AACxB;AA2BA,IAAM,cAAA,GAAiB;AAAA,EACrB,GAAG,EAAE,GAAA,EAAK,eAAe,IAAA,EAAM,eAAA,EAAiB,OAAO,KAAA,EAAM;AAAA,EAC7D,GAAG,EAAE,GAAA,EAAK,cAAc,IAAA,EAAM,cAAA,EAAgB,OAAO,KAAA,EAAM;AAAA,EAC3D,GAAG,EAAE,GAAA,EAAK,iBAAiB,IAAA,EAAM,iBAAA,EAAmB,OAAO,MAAA;AAC7D,CAAA;AAEA,SAAS,KAAA,CAAM,EAAE,OAAA,EAAS,QAAA,EAAS,EAA0C;AAC3E,EAAA,uBACEA,eAAA,CAAC,OAAA,EAAA,EAAM,OAAA,EAAkB,SAAA,EAAU,gDAAA,EAChC,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IAAS,GAAA;AAAA,oBAACC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAgB,QAAA,EAAA,GAAA,EAAC;AAAA,GAAA,EAC9C,CAAA;AAEJ;AAOO,SAAS,qBAAA,CAAsB;AAAA,EACpC,QAAA;AAAA,EACA,eAAA,GAAkB,EAAA;AAAA,EAClB,gBAAA;AAAA,EACA,uBAAA;AAAA,EACA,gBAAA,GAAmB,KAAA;AAAA,EACnB,QAAA,GAAW,KAAA;AAAA,EACX,aAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,GAAS,SAAA;AAAA,EACT,SAAA,GAAY,KAAA;AAAA,EACZ,qBAAA,GAAwB,IAAA;AAAA,EACxB,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,oBAAoBC,WAAA,EAAM;AAChC,EAAA,MAAM,UAAA,GAAa,GAAG,iBAAiB,CAAA,SAAA,CAAA;AACvC,EAAA,MAAM,aAAaA,WAAA,EAAM;AACzB,EAAA,MAAM,CAAA,GAAIC,aAAA,CAAQ,OAAO,EAAE,GAAG,sCAAA,EAAwC,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAC5F,EAAA,MAAM,qBAAA,GAAwBA,aAAA;AAAA,IAC5B,MAAM,oBAAoB,QAAQ,CAAA;AAAA,IAClC,CAAC,qBAAqB,QAAQ;AAAA,GAChC;AACA,EAAA,MAAM,IAAA,GAAOA,cAAQ,MAAM,eAAA,CAAgB,QAAQ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAChE,EAAA,MAAM,QAAA,GAAWA,aAAA;AAAA,IACf,MAAM,mBAAA,CAAoB,QAAA,EAAU,qBAAA,KAA0B,IAAI,CAAA;AAAA,IAClE,CAAC,UAAU,qBAAqB;AAAA,GAClC;AACA,EAAA,MAAM,aAAA,GAAgB,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAEnD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC1D,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAC,eAAA,IAAmB,QAAA,KAAa,eAAA;AACzD,EAAA,MAAM,mBAAA,GAAsB,gBAAA,IAAoB,cAAA,IAAkB,CAAC,CAAC,eAAA;AACpE,EAAA,MAAM,gBAAA,GAAmB,uBAAuB,CAAC,cAAA;AAEjD,EAAA,uBACEJ,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EAAY,aAAU,yBAAA,EACnC,QAAA,EAAA;AAAA,oBAAAA,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWK,KAAA;AAAA,UACT,MAAA,KAAW,iBAAiB,uCAAA,GAA0C;AAAA,SACxE;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAL,eAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,UAAA,EAAa,QAAA,EAAA,aAAA,IAAiB,EAAE,QAAA,EAAS,CAAA;AAAA,4BACzDD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,8BAAAC,cAAA;AAAA,gBAACK,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,UAAA;AAAA,kBACL,EAAA,EAAI,UAAA;AAAA,kBACJ,IAAA,EAAK,UAAA;AAAA,kBACL,WAAA,EAAY,EAAA;AAAA,kBACZ,KAAA,EAAO,QAAA;AAAA,kBACP,UAAU,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAChD,QAAA;AAAA,kBACA,SAAA;AAAA,kBACA,YAAA,EAAc,mBAAmB,cAAA,GAAiB,kBAAA;AAAA,kBAClD,QAAA,EAAQ,IAAA;AAAA,kBACR,SAAA,EAAWD,KAAA;AAAA,oBACT,mCAAA;AAAA,oBACA,qBAAA,IAAyB;AAAA,mBAC3B;AAAA,kBACA,eAAaE,0BAAA,CAAS,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,kBAAkB;AAAA;AAAA,eACpE;AAAA,cACC,qBAAA,oBACCN,cAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAaM,0BAAA,CAAS,OAAA,EAAS,iBAAA,EAAmB;AAAA,oBAChD,MAAA,EAAQ;AAAA,mBACT,CAAA;AAAA,kBAED,QAAA,kBAAAN,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAWI,KAAA;AAAA,wBACT,8CAAA;AAAA,wBACA,QAAA,GAAW,cAAc,GAAA,GAAM;AAAA,uBACjC;AAAA,sBACA,OAAO,EAAE,KAAA,EAAO,QAAA,GAAW,aAAA,CAAc,QAAQ,IAAA,EAAK;AAAA,sBACtD,eAAaE,0BAAA,CAAS,OAAA,EAAS,aAAa,EAAE,MAAA,EAAQ,gBAAgB;AAAA;AAAA,mBACxE,EACF;AAAA;AAAA;AACF,aAAA,EAEJ;AAAA,WAAA,EACF,CAAA;AAAA,UAEC,gBAAA,oCACE,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAN,cAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,iBAAA,EAAoB,QAAA,EAAA,YAAA,IAAgB,EAAE,eAAA,EAAgB,CAAA;AAAA,4BACtED,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,8BAAAC,cAAA;AAAA,gBAACK,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,UAAA;AAAA,kBACL,EAAA,EAAI,iBAAA;AAAA,kBACJ,IAAA,EAAK,kBAAA;AAAA,kBACL,WAAA,EAAY,EAAA;AAAA,kBACZ,KAAA,EAAO,eAAA;AAAA,kBACP,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,oBAAA,uBAAA,GAA0B,CAAA,CAAE,OAAO,KAAK,CAAA;AAExC,oBAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,kBACzB,CAAA;AAAA,kBACA,MAAA,EAAQ,MAAM,iBAAA,CAAkB,IAAI,CAAA;AAAA,kBACpC,QAAA;AAAA,kBACA,YAAA,EAAa,cAAA;AAAA,kBACb,gBAAc,gBAAA,IAAoB,MAAA;AAAA,kBAClC,kBAAA,EAAkB,wBAAwB,UAAA,GAAa,MAAA;AAAA,kBACvD,QAAA,EAAQ,IAAA;AAAA,kBACR,SAAA,EAAWD,KAAA;AAAA,oBACT,mCAAA;AAAA,oBACA,qBAAA,IAAyB,2BAAA;AAAA,oBACzB,gBAAA,IAAoB;AAAA,mBACtB;AAAA,kBACA,eAAaE,0BAAA,CAAS,OAAA,EAAS,cAAc,EAAE,MAAA,EAAQ,0BAA0B;AAAA;AAAA,eACnF;AAAA,cACC,qBAAA,oBACCP,eAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAaO,0BAAA,CAAS,OAAA,EAAS,gBAAA,EAAkB;AAAA,oBAC/C,MAAA,EAAQ;AAAA,mBACT,CAAA;AAAA,kBAED,QAAA,EAAA;AAAA,oCAAAN,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gCAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAWI,KAAA;AAAA,0BACT,8CAAA;AAAA,0BACA,mBAAA,GACI,cAAA,GACE,eAAA,GACA,aAAA,GACF;AAAA,yBACN;AAAA,wBACA,KAAA,EAAO,EAAE,KAAA,EAAO,mBAAA,GAAsB,SAAS,IAAA,EAAK;AAAA,wBACpD,aAAA,EAAaE,0BAAA,CAAS,OAAA,EAAS,kBAAA,EAAoB;AAAA,0BACjD,MAAA,EAAQ;AAAA,yBACT;AAAA;AAAA,qBACH,EACF,CAAA;AAAA,oCACAN,cAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,EAAA,EAAI,UAAA;AAAA,wBACJ,WAAA,EAAU,QAAA;AAAA,wBACV,SAAA,EAAWI,KAAA;AAAA,0BACT,gCAAA;AAAA,0BACA,mBAAA,GACI,cAAA,GACE,iBAAA,GACA,eAAA,GACF;AAAA,yBACN;AAAA,wBACA,aAAA,EAAaE,0BAAA,CAAS,OAAA,EAAS,aAAA,EAAe;AAAA,0BAC5C,MAAA,EAAQ;AAAA,yBACT,CAAA;AAAA,wBAEA,QAAA,EAAA,mBAAA,GACG,cAAA,GACE,CAAA,CAAE,cAAA,GACF,EAAE,mBAAA,GACJ;AAAA;AAAA;AACN;AAAA;AAAA;AACF,aAAA,EAEJ;AAAA,WAAA,EACF;AAAA;AAAA;AAAA,KAEJ;AAAA,IAEC,gBAAA,oBACCN,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,uBAAA;AAAA,QACV,eAAaM,0BAAA,CAAS,OAAA,EAAS,cAAc,EAAE,MAAA,EAAQ,yBAAyB,CAAA;AAAA,QAE/E,QAAA,EAAA,QAAA,GACC,qBAAA,mBACEP,eAAA,CAAC,GAAA,EAAA,EAAE,WAAU,wBAAA,EAAyB,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,UAAG;AAAA,SAAA,EAAsB,CAAA,mBAE/DA,eAAA,CAACQ,UAAA,EAAA,EAAQ,aAAA,EAAe,CAAA,EACtB,QAAA,EAAA;AAAA,0BAAAP,cAAA,CAACQ,iBAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAAT,eAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,YAAA,EAAY,CAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA;AAAA,cACzC,SAAA,EAAWK,KAAA;AAAA,gBACT,uJAAA;AAAA,gBACA,aAAA,CAAc;AAAA,eAChB;AAAA,cACA,aAAA,EAAaE,0BAAA,CAAS,OAAA,EAAS,kBAAA,EAAoB;AAAA,gBACjD,MAAA,EAAQ;AAAA,eACT,CAAA;AAAA,cAED,QAAA,EAAA;AAAA,gCAAAP,eAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,eAAaO,0BAAA,CAAS,OAAA,EAAS,eAAe,EAAE,MAAA,EAAQ,kBAAkB,CAAA;AAAA,oBAC3E,QAAA,EAAA;AAAA,sBAAA,SAAA;AAAA,sBACI,QAAA,CAAS;AAAA;AAAA;AAAA,iBACd;AAAA,gCACAN,cAAA,CAACS,gBAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAAyB;AAAA;AAAA;AAAA,WAC3C,EACF,CAAA;AAAA,0BACAT,cAAA,CAACU,qBAAe,IAAA,EAAK,QAAA,EAAS,WAAU,2BAAA,EACrC,QAAA,EAAA,IAAA,IAAQ,EAAE,oBAAA,EACb;AAAA,SAAA,EACF,oBAGFV,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gCAAA,EAAkC,+BAAqB,MAAA,EAAI;AAAA;AAAA;AAE5E,GAAA,EAEJ,CAAA;AAEJ","file":"chunk-ADOKTJHV.cjs","sourcesContent":["/** Bits of estimated entropy at which the meter reads \"Strong\". */\nexport const STRONG_BITS = 75\n\nexport type StrengthScore = 0 | 1 | 2\n\nexport interface PasswordStrength {\n /** 0 = rejected, 1 = accepted (minimal), 2 = strong. */\n score: StrengthScore\n label: string\n}\n\n/** Size of the character alphabet a password draws from (lower, upper, digit, symbol). */\nfunction alphabetSize(password: string): number {\n return (\n (/[a-z]/.test(password) ? 26 : 0) +\n (/[A-Z]/.test(password) ? 26 : 0) +\n (/\\d/.test(password) ? 10 : 0) +\n (/[^a-zA-Z0-9]/.test(password) ? 33 : 0)\n )\n}\n\n/**\n * Estimated entropy in bits (length x log2(alphabet)). Length is the dominant term, which is also\n * what NIST SP 800-63B recommends over composition rules: a 25-character passphrase of plain words\n * outranks \"Password123!\".\n */\nexport function estimateEntropyBits(password: string): number {\n return password.length * Math.log2(Math.max(alphabetSize(password), 2))\n}\n\n/**\n * Three states matching the three colours the form uses: rejected (does not meet the host's\n * requirements), accepted (\"could be better\") and strong.\n */\nexport function getPasswordStrength(\n password: string,\n meetsRequirements: boolean\n): PasswordStrength {\n // No label for rejected: the requirement line already says what is missing.\n if (!password || !meetsRequirements) return { score: 0, label: '' }\n if (estimateEntropyBits(password) >= STRONG_BITS) {\n return { score: 2, label: 'Password meets all criteria' }\n }\n return { score: 1, label: 'Password meets minimal criteria' }\n}\n\n/**\n * Advice computed from the same entropy estimate as the meter, so the hint can never tell you to\n * do something that would not actually move it.\n */\nexport function getStrengthHint(password: string): string {\n if (!password) return ''\n const hasSymbol = /[^a-zA-Z0-9]/.test(password)\n const hasUpper = /[A-Z]/.test(password)\n const perChar = Math.log2(Math.max(alphabetSize(password), 2))\n const missing = Math.max(0, STRONG_BITS - password.length * perChar)\n if (missing === 0) return 'Long enough to resist guessing.'\n\n const moreChars = Math.ceil(missing / perChar)\n const goal = `Add ${moreChars} more character${moreChars === 1 ? '' : 's'} to make a strong password`\n const unused = !hasSymbol ? 'a symbol' : !hasUpper ? 'a capital' : null\n return unused ? `${goal} — or ${unused}, which counts for more.` : `${goal}.`\n}\n","import { useMemo, useState, useId } from 'react'\nimport { Info } from 'lucide-react'\nimport { cn, Input, Tooltip, TooltipContent, TooltipTrigger } from '@arbidocs/react/ui'\nimport { getPasswordStrength, getStrengthHint } from '../lib/password-strength'\nimport { testIdOr } from '../chat/test-id'\n\n/** Overridable ids of the password input; defaults are the current ids. */\nexport type PasswordStrengthInputTestIds = Partial<\n Record<\n | 'input'\n | 'strengthIndicator'\n | 'strengthBar'\n | 'confirmInput'\n | 'confirmIndicator'\n | 'confirmStrengthBar'\n | 'mismatchError'\n | 'requirements'\n | 'strengthInfoButton'\n | 'strengthLabel',\n string\n >\n>\n\n/** Every fixed string of the password input. `passwordLabel` / `confirmLabel` props win. */\nexport interface PasswordStrengthInputLabels {\n password: string\n confirmPassword: string\n passwordsMatch: string\n passwordsDoNotMatch: string\n /** Accessible name of the strength button; `strength` is the meter's label. */\n strengthInfo: (strength: string) => string\n /** Tooltip when the password is acceptable and there is no specific hint. */\n strengthFallbackHint: string\n}\n\nexport const DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS: PasswordStrengthInputLabels = {\n password: 'Password',\n confirmPassword: 'Confirm Password',\n passwordsMatch: 'Passwords match',\n passwordsDoNotMatch: 'Passwords do not match',\n strengthInfo: (strength) => `${strength}. How to strengthen it`,\n strengthFallbackHint: 'Long enough to resist guessing.',\n}\n\nexport interface PasswordStrengthInputProps {\n labels?: Partial<PasswordStrengthInputLabels>\n password: string\n confirmPassword?: string\n onPasswordChange: (value: string) => void\n onConfirmPasswordChange?: (value: string) => void\n /** Show the confirmation field, the match indicator and the requirement line. */\n showConfirmation?: boolean\n disabled?: boolean\n passwordLabel?: string\n confirmLabel?: string\n layout?: 'stacked' | 'side-by-side'\n autoFocus?: boolean\n showStrengthIndicator?: boolean\n /** Shown in the requirements line while no password is entered. */\n emptyStateMessage?: string\n /**\n * The host's password policy: returns the first unmet requirement (as a message), or `null` when\n * the password is acceptable. Kept in the host so the policy has one source of truth.\n */\n getUnmetRequirement: (password: string) => string | null\n /** Part ids; defaults are the current ids. */\n testIds?: PasswordStrengthInputTestIds\n}\n\nconst STRENGTH_STYLE = {\n 0: { bar: 'bg-red-text', text: 'text-red-text', width: '33%' },\n 1: { bar: 'bg-primary', text: 'text-primary', width: '66%' },\n 2: { bar: 'bg-green-text', text: 'text-green-text', width: '100%' },\n} as const\n\nfunction Label({ htmlFor, children }: { htmlFor: string; children: string }) {\n return (\n <label htmlFor={htmlFor} className=\"mb-1 block text-sm font-medium text-foreground\">\n {children} <span className=\"text-red-text\">*</span>\n </label>\n )\n}\n\n/**\n * Password input with a strength meter and optional confirmation field. The match verdict only\n * appears once the confirmation field loses focus, so the user is never nagged mid-keystroke, and\n * the requirement line has a fixed height so typing never shifts the form.\n */\nexport function PasswordStrengthInput({\n password,\n confirmPassword = '',\n onPasswordChange,\n onConfirmPasswordChange,\n showConfirmation = false,\n disabled = false,\n passwordLabel,\n confirmLabel,\n layout = 'stacked',\n autoFocus = false,\n showStrengthIndicator = true,\n emptyStateMessage,\n getUnmetRequirement,\n labels,\n testIds,\n}: PasswordStrengthInputProps) {\n const confirmPasswordId = useId()\n const mismatchId = `${confirmPasswordId}-mismatch`\n const passwordId = useId()\n const l = useMemo(() => ({ ...DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS, ...labels }), [labels])\n const firstUnmetRequirement = useMemo(\n () => getUnmetRequirement(password),\n [getUnmetRequirement, password]\n )\n const hint = useMemo(() => getStrengthHint(password), [password])\n const strength = useMemo(\n () => getPasswordStrength(password, firstUnmetRequirement === null),\n [password, firstUnmetRequirement]\n )\n const strengthStyle = STRENGTH_STYLE[strength.score]\n\n const [confirmBlurred, setConfirmBlurred] = useState(false)\n const passwordsMatch = !!confirmPassword && password === confirmPassword\n const showConfirmFeedback = showConfirmation && confirmBlurred && !!confirmPassword\n const passwordMismatch = showConfirmFeedback && !passwordsMatch\n\n return (\n <div className=\"space-y-2\" data-slot=\"password-strength-input\">\n <div\n className={cn(\n layout === 'side-by-side' ? 'grid grid-cols-1 gap-4 sm:grid-cols-2' : 'space-y-3'\n )}\n >\n <div>\n <Label htmlFor={passwordId}>{passwordLabel ?? l.password}</Label>\n <div className=\"relative\">\n <Input\n type=\"password\"\n id={passwordId}\n name=\"password\"\n placeholder=\"\"\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n disabled={disabled}\n autoFocus={autoFocus}\n autoComplete={showConfirmation ? 'new-password' : 'current-password'}\n required\n className={cn(\n 'placeholder:text-muted-foreground',\n showStrengthIndicator && 'rounded-b-none border-b-0'\n )}\n data-testid={testIdOr(testIds?.input, { testId: 'password-input' })}\n />\n {showStrengthIndicator && (\n <div\n data-testid={testIdOr(testIds?.strengthIndicator, {\n testId: 'password-strength-indicator',\n })}\n >\n <div className=\"h-1 w-full rounded-b bg-border\">\n <div\n className={cn(\n 'h-full rounded-b transition-all duration-300',\n password ? strengthStyle.bar : 'bg-border'\n )}\n style={{ width: password ? strengthStyle.width : '0%' }}\n data-testid={testIdOr(testIds?.strengthBar, { testId: 'strength-bar' })}\n />\n </div>\n </div>\n )}\n </div>\n </div>\n\n {showConfirmation && (\n <div>\n <Label htmlFor={confirmPasswordId}>{confirmLabel ?? l.confirmPassword}</Label>\n <div className=\"relative\">\n <Input\n type=\"password\"\n id={confirmPasswordId}\n name=\"confirm-password\"\n placeholder=\"\"\n value={confirmPassword}\n onChange={(e) => {\n onConfirmPasswordChange?.(e.target.value)\n // Hide the verdict while the user is editing again.\n setConfirmBlurred(false)\n }}\n onBlur={() => setConfirmBlurred(true)}\n disabled={disabled}\n autoComplete=\"new-password\"\n aria-invalid={passwordMismatch || undefined}\n aria-describedby={showStrengthIndicator ? mismatchId : undefined}\n required\n className={cn(\n 'placeholder:text-muted-foreground',\n showStrengthIndicator && 'rounded-b-none border-b-0',\n passwordMismatch && 'border-red-border'\n )}\n data-testid={testIdOr(testIds?.confirmInput, { testId: 'confirm-password-input' })}\n />\n {showStrengthIndicator && (\n <div\n data-testid={testIdOr(testIds?.confirmIndicator, {\n testId: 'confirm-password-indicator',\n })}\n >\n <div className=\"h-1 w-full rounded-b bg-border\">\n <div\n className={cn(\n 'h-full rounded-b transition-all duration-300',\n showConfirmFeedback\n ? passwordsMatch\n ? 'bg-green-text'\n : 'bg-red-text'\n : 'bg-border'\n )}\n style={{ width: showConfirmFeedback ? '100%' : '0%' }}\n data-testid={testIdOr(testIds?.confirmStrengthBar, {\n testId: 'confirm-strength-bar',\n })}\n />\n </div>\n <p\n id={mismatchId}\n aria-live=\"polite\"\n className={cn(\n 'mt-0.5 h-4 text-sm font-medium',\n showConfirmFeedback\n ? passwordsMatch\n ? 'text-green-text'\n : 'text-red-text'\n : 'text-transparent'\n )}\n data-testid={testIdOr(testIds?.mismatchError, {\n testId: 'password-mismatch-error',\n })}\n >\n {showConfirmFeedback\n ? passwordsMatch\n ? l.passwordsMatch\n : l.passwordsDoNotMatch\n : ' '}\n </p>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n\n {showConfirmation && (\n <div\n className=\"h-5 text-sm leading-5\"\n data-testid={testIdOr(testIds?.requirements, { testId: 'password-requirements' })}\n >\n {password ? (\n firstUnmetRequirement ? (\n <p className=\"truncate text-red-text\">✗ {firstUnmetRequirement}</p>\n ) : (\n <Tooltip delayDuration={0}>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n aria-label={l.strengthInfo(strength.label)}\n className={cn(\n 'inline-flex items-center gap-1 truncate rounded font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n strengthStyle.text\n )}\n data-testid={testIdOr(testIds?.strengthInfoButton, {\n testId: 'strength-info-button',\n })}\n >\n <span\n data-testid={testIdOr(testIds?.strengthLabel, { testId: 'strength-label' })}\n >\n ✓ {strength.label}\n </span>\n <Info className=\"h-3.5 w-3.5 opacity-80\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"max-w-[260px] text-center\">\n {hint || l.strengthFallbackHint}\n </TooltipContent>\n </Tooltip>\n )\n ) : (\n <p className=\"truncate text-muted-foreground\">{emptyStateMessage || ' '}</p>\n )}\n </div>\n )}\n </div>\n )\n}\n"]}