@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.
- package/README.md +100 -0
- package/dist/agents/approvals/AuthorizeAgentParts.d.ts +79 -0
- package/dist/agents/approvals/ConsentPage.d.ts +76 -0
- package/dist/agents/approvals/ConsentParts.d.ts +37 -0
- package/dist/agents/approvals/index.d.ts +3 -0
- package/dist/agents/config/ConfigField.d.ts +43 -0
- package/dist/agents/config/ConfigForm.d.ts +35 -0
- package/dist/agents/config/TupleArrayField.d.ts +32 -0
- package/dist/agents/config/index.d.ts +4 -0
- package/dist/agents/config/schema-utils.d.ts +28 -0
- package/dist/agents/definitions/AgentCard.d.ts +63 -0
- package/dist/agents/definitions/AgentCreator.d.ts +118 -0
- package/dist/agents/definitions/AgentEditorParts.d.ts +63 -0
- package/dist/agents/definitions/AgentGallery.d.ts +29 -0
- package/dist/agents/definitions/index.d.ts +4 -0
- package/dist/agents/index.cjs +595 -0
- package/dist/agents/index.cjs.map +1 -0
- package/dist/agents/index.d.ts +7 -0
- package/dist/agents/index.js +14 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/runs/AgentBar.d.ts +103 -0
- package/dist/agents/runs/AgentSteps.d.ts +157 -0
- package/dist/agents/runs/SubagentRoster.d.ts +37 -0
- package/dist/agents/runs/index.d.ts +3 -0
- package/dist/agents/skills/SkillBrowserParts.d.ts +70 -0
- package/dist/agents/skills/SkillCard.d.ts +48 -0
- package/dist/agents/skills/SkillForms.d.ts +64 -0
- package/dist/agents/skills/SkillParts.d.ts +31 -0
- package/dist/agents/skills/SkillRow.d.ts +34 -0
- package/dist/agents/skills/index.d.ts +5 -0
- package/dist/agents/tasks/LiveRunsBanner.d.ts +26 -0
- package/dist/agents/tasks/RecurrenceBuilder.d.ts +36 -0
- package/dist/agents/tasks/TaskComposer.d.ts +108 -0
- package/dist/agents/tasks/TaskPlan.d.ts +78 -0
- package/dist/agents/tasks/TaskRowActions.d.ts +43 -0
- package/dist/agents/tasks/TaskRunsDialog.d.ts +45 -0
- package/dist/agents/tasks/TasksChrome.d.ts +36 -0
- package/dist/agents/tasks/UploadTaskItem.d.ts +39 -0
- package/dist/agents/tasks/UploadTaskList.d.ts +35 -0
- package/dist/agents/tasks/elapsed.d.ts +2 -0
- package/dist/agents/tasks/index.d.ts +13 -0
- package/dist/agents/tasks/rrule.d.ts +36 -0
- package/dist/agents/tasks/taskColumns.d.ts +68 -0
- package/dist/agents/tasks/taskLabels.d.ts +26 -0
- package/dist/agents/workflows/AgentSelect.d.ts +33 -0
- package/dist/agents/workflows/SchemaForm.d.ts +37 -0
- package/dist/agents/workflows/WorkflowConfigDialog.d.ts +73 -0
- package/dist/agents/workflows/WorkflowLauncher.d.ts +38 -0
- package/dist/agents/workflows/index.d.ts +6 -0
- package/dist/agents/workflows/types.d.ts +125 -0
- package/dist/agents/workflows/workflow.d.ts +62 -0
- package/dist/auth/AuthFooter.d.ts +56 -0
- package/dist/auth/AuthForm.d.ts +105 -0
- package/dist/auth/AuthLayout.d.ts +46 -0
- package/dist/auth/PasswordStrengthInput.d.ts +44 -0
- package/dist/auth/RecoveryDialogs.d.ts +90 -0
- package/dist/auth/SsoLoginButton.d.ts +19 -0
- package/dist/auth/index.cjs +123 -0
- package/dist/auth/index.cjs.map +1 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.js +6 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/builder/AgentsPanel.d.ts +9 -0
- package/dist/builder/ModuleManager.d.ts +6 -0
- package/dist/builder/VerticalBuilder.d.ts +32 -0
- package/dist/builder/agents/store.d.ts +21 -0
- package/dist/builder/export.d.ts +30 -0
- package/dist/builder/modules/registry.d.ts +11 -0
- package/dist/builder/modules/store.d.ts +29 -0
- package/dist/builder/modules/types.d.ts +29 -0
- package/dist/builder/types.d.ts +28 -0
- package/dist/chat/BranchControls.d.ts +33 -0
- package/dist/chat/Composer.d.ts +156 -0
- package/dist/chat/ContextChip.d.ts +19 -0
- package/dist/chat/ContextPanel.d.ts +108 -0
- package/dist/chat/ConversationEmpty.d.ts +53 -0
- package/dist/chat/ConversationLayout.d.ts +40 -0
- package/dist/chat/ConversationParts.d.ts +62 -0
- package/dist/chat/ConversationSearchView.d.ts +57 -0
- package/dist/chat/LabelPinRow.d.ts +30 -0
- package/dist/chat/Message.d.ts +189 -0
- package/dist/chat/MessageAlert.d.ts +25 -0
- package/dist/chat/MessageList.d.ts +102 -0
- package/dist/chat/ModelPicker.d.ts +103 -0
- package/dist/chat/PendingAnswerBar.d.ts +36 -0
- package/dist/chat/PinnedDocChip.d.ts +22 -0
- package/dist/chat/SlashMenu.d.ts +57 -0
- package/dist/chat/ThreadMap.d.ts +45 -0
- package/dist/chat/index.cjs +423 -0
- package/dist/chat/index.cjs.map +1 -0
- package/dist/chat/index.d.ts +21 -0
- package/dist/chat/index.js +6 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/test-id.d.ts +16 -0
- package/dist/chat/useStreamAnnouncement.d.ts +19 -0
- package/dist/chunk-223D4727.cjs +50 -0
- package/dist/chunk-223D4727.cjs.map +1 -0
- package/dist/chunk-4EZVCGRL.js +803 -0
- package/dist/chunk-4EZVCGRL.js.map +1 -0
- package/dist/chunk-54Q3RNJU.cjs +516 -0
- package/dist/chunk-54Q3RNJU.cjs.map +1 -0
- package/dist/chunk-5B4PXAKI.cjs +287 -0
- package/dist/chunk-5B4PXAKI.cjs.map +1 -0
- package/dist/chunk-5TYEJOXY.js +1762 -0
- package/dist/chunk-5TYEJOXY.js.map +1 -0
- package/dist/chunk-6ALISABK.cjs +677 -0
- package/dist/chunk-6ALISABK.cjs.map +1 -0
- package/dist/chunk-6HIPFEID.cjs +574 -0
- package/dist/chunk-6HIPFEID.cjs.map +1 -0
- package/dist/chunk-76JDDMSP.js +31 -0
- package/dist/chunk-76JDDMSP.js.map +1 -0
- package/dist/chunk-7F6CBP3Z.js +12 -0
- package/dist/chunk-7F6CBP3Z.js.map +1 -0
- package/dist/chunk-7G2LJMUG.cjs +45 -0
- package/dist/chunk-7G2LJMUG.cjs.map +1 -0
- package/dist/chunk-7G3JNSJB.cjs +1809 -0
- package/dist/chunk-7G3JNSJB.cjs.map +1 -0
- package/dist/chunk-A2YAC22G.js +93 -0
- package/dist/chunk-A2YAC22G.js.map +1 -0
- package/dist/chunk-ADOKTJHV.cjs +262 -0
- package/dist/chunk-ADOKTJHV.cjs.map +1 -0
- package/dist/chunk-AXIZ2MDV.js +751 -0
- package/dist/chunk-AXIZ2MDV.js.map +1 -0
- package/dist/chunk-AZQDNYH4.js +2865 -0
- package/dist/chunk-AZQDNYH4.js.map +1 -0
- package/dist/chunk-C54XEN5T.cjs +34 -0
- package/dist/chunk-C54XEN5T.cjs.map +1 -0
- package/dist/chunk-CQCC7LE7.js +210 -0
- package/dist/chunk-CQCC7LE7.js.map +1 -0
- package/dist/chunk-CRIKTUEU.cjs +47 -0
- package/dist/chunk-CRIKTUEU.cjs.map +1 -0
- package/dist/chunk-CTZ5745I.js +564 -0
- package/dist/chunk-CTZ5745I.js.map +1 -0
- package/dist/chunk-DPLRHEJZ.js +78 -0
- package/dist/chunk-DPLRHEJZ.js.map +1 -0
- package/dist/chunk-DVLEQURC.js +672 -0
- package/dist/chunk-DVLEQURC.js.map +1 -0
- package/dist/chunk-ELR74ME6.cjs +68 -0
- package/dist/chunk-ELR74ME6.cjs.map +1 -0
- package/dist/{chunk-DBAUZD7A.cjs → chunk-FZQJ2S6P.cjs} +244 -1123
- package/dist/chunk-FZQJ2S6P.cjs.map +1 -0
- package/dist/chunk-G3G7LZPM.cjs +205 -0
- package/dist/chunk-G3G7LZPM.cjs.map +1 -0
- package/dist/chunk-GDFWJ73C.cjs +2973 -0
- package/dist/chunk-GDFWJ73C.cjs.map +1 -0
- package/dist/chunk-ITGHMJOM.js +5528 -0
- package/dist/chunk-ITGHMJOM.js.map +1 -0
- package/dist/chunk-K4BGOPGG.js +79 -0
- package/dist/chunk-K4BGOPGG.js.map +1 -0
- package/dist/chunk-KUA3BCT2.cjs +272 -0
- package/dist/chunk-KUA3BCT2.cjs.map +1 -0
- package/dist/chunk-LGBAZD37.js +341 -0
- package/dist/chunk-LGBAZD37.js.map +1 -0
- package/dist/chunk-MHVNT4J3.cjs +15 -0
- package/dist/chunk-MHVNT4J3.cjs.map +1 -0
- package/dist/chunk-MMYCZRKT.cjs +168 -0
- package/dist/chunk-MMYCZRKT.cjs.map +1 -0
- package/dist/chunk-NBV56SGU.js +42 -0
- package/dist/chunk-NBV56SGU.js.map +1 -0
- package/dist/chunk-NPLYHR2E.js +13 -0
- package/dist/chunk-NPLYHR2E.js.map +1 -0
- package/dist/chunk-NUNKSZKU.js +203 -0
- package/dist/chunk-NUNKSZKU.js.map +1 -0
- package/dist/chunk-OB5F4577.cjs +40 -0
- package/dist/chunk-OB5F4577.cjs.map +1 -0
- package/dist/chunk-OUW6G4O2.cjs +96 -0
- package/dist/chunk-OUW6G4O2.cjs.map +1 -0
- package/dist/chunk-OVEQERPO.js +66 -0
- package/dist/chunk-OVEQERPO.js.map +1 -0
- package/dist/chunk-P6GHJSLR.js +34 -0
- package/dist/chunk-P6GHJSLR.js.map +1 -0
- package/dist/chunk-PCB2BPN3.cjs +41 -0
- package/dist/chunk-PCB2BPN3.cjs.map +1 -0
- package/dist/chunk-PPCATBOY.cjs +15 -0
- package/dist/chunk-PPCATBOY.cjs.map +1 -0
- package/dist/chunk-QN42OA5J.js +887 -0
- package/dist/chunk-QN42OA5J.js.map +1 -0
- package/dist/{chunk-FZ2S6VAZ.js → chunk-RBXZYNVB.js} +223 -1102
- package/dist/chunk-RBXZYNVB.js.map +1 -0
- package/dist/chunk-RC6VTY2H.js +47 -0
- package/dist/chunk-RC6VTY2H.js.map +1 -0
- package/dist/chunk-RFIBUWLF.cjs +232 -0
- package/dist/chunk-RFIBUWLF.cjs.map +1 -0
- package/dist/chunk-S5T7ZTX2.js +266 -0
- package/dist/chunk-S5T7ZTX2.js.map +1 -0
- package/dist/chunk-S7PSMMRG.js +38 -0
- package/dist/chunk-S7PSMMRG.js.map +1 -0
- package/dist/chunk-SCFYPAG6.cjs +18 -0
- package/dist/chunk-SCFYPAG6.cjs.map +1 -0
- package/dist/chunk-SYDHKKRZ.cjs +818 -0
- package/dist/chunk-SYDHKKRZ.cjs.map +1 -0
- package/dist/chunk-TX2ZICS7.js +139 -0
- package/dist/chunk-TX2ZICS7.js.map +1 -0
- package/dist/chunk-TYZUCAT7.js +787 -0
- package/dist/chunk-TYZUCAT7.js.map +1 -0
- package/dist/chunk-U2E3WT3J.js +45 -0
- package/dist/chunk-U2E3WT3J.js.map +1 -0
- package/dist/chunk-UBNVIIBT.js +284 -0
- package/dist/chunk-UBNVIIBT.js.map +1 -0
- package/dist/chunk-UFHMLHIR.cjs +66 -0
- package/dist/chunk-UFHMLHIR.cjs.map +1 -0
- package/dist/chunk-UJE32SST.js +39 -0
- package/dist/chunk-UJE32SST.js.map +1 -0
- package/dist/chunk-ULWRNGGE.cjs +146 -0
- package/dist/chunk-ULWRNGGE.cjs.map +1 -0
- package/dist/chunk-UTWX2X2A.js +165 -0
- package/dist/chunk-UTWX2X2A.js.map +1 -0
- package/dist/chunk-UWGIB3VQ.js +64 -0
- package/dist/chunk-UWGIB3VQ.js.map +1 -0
- package/dist/chunk-V4ISCZJ7.cjs +207 -0
- package/dist/chunk-V4ISCZJ7.cjs.map +1 -0
- package/dist/chunk-VFUWWH52.cjs +83 -0
- package/dist/chunk-VFUWWH52.cjs.map +1 -0
- package/dist/chunk-VILAPTCB.js +259 -0
- package/dist/chunk-VILAPTCB.js.map +1 -0
- package/dist/chunk-VLCY46K6.cjs +82 -0
- package/dist/chunk-VLCY46K6.cjs.map +1 -0
- package/dist/chunk-VPPX5XUF.cjs +813 -0
- package/dist/chunk-VPPX5XUF.cjs.map +1 -0
- package/dist/chunk-WJMEXTVD.cjs +122 -0
- package/dist/chunk-WJMEXTVD.cjs.map +1 -0
- package/dist/chunk-WTNMWEBC.js +504 -0
- package/dist/chunk-WTNMWEBC.js.map +1 -0
- package/dist/chunk-WW6EOVZA.js +112 -0
- package/dist/chunk-WW6EOVZA.js.map +1 -0
- package/dist/chunk-XNBAXRY7.cjs +5673 -0
- package/dist/chunk-XNBAXRY7.cjs.map +1 -0
- package/dist/chunk-XQ7PKKDY.cjs +787 -0
- package/dist/chunk-XQ7PKKDY.cjs.map +1 -0
- package/dist/chunk-XZIYRKLW.cjs +347 -0
- package/dist/chunk-XZIYRKLW.cjs.map +1 -0
- package/dist/chunk-YBXCZEWS.js +187 -0
- package/dist/chunk-YBXCZEWS.js.map +1 -0
- package/dist/chunk-YDHO4AVL.js +16 -0
- package/dist/chunk-YDHO4AVL.js.map +1 -0
- package/dist/chunk-ZORQ5M3W.cjs +934 -0
- package/dist/chunk-ZORQ5M3W.cjs.map +1 -0
- package/dist/chunk-ZW6FPIFC.cjs +36 -0
- package/dist/chunk-ZW6FPIFC.cjs.map +1 -0
- package/dist/citations/CitationEditor.d.ts +58 -0
- package/dist/citations/PassagePill.d.ts +49 -0
- package/dist/citations/QuietMarks.d.ts +81 -0
- package/dist/citations/index.cjs +47 -0
- package/dist/citations/index.cjs.map +1 -0
- package/dist/citations/index.d.ts +3 -0
- package/dist/citations/index.js +6 -0
- package/dist/citations/index.js.map +1 -0
- package/dist/collaboration/contacts/AddContactsParts.d.ts +46 -0
- package/dist/collaboration/contacts/index.d.ts +1 -0
- package/dist/collaboration/direct-messages/DirectMessages.d.ts +33 -0
- package/dist/collaboration/direct-messages/DmParts.d.ts +139 -0
- package/dist/collaboration/direct-messages/index.d.ts +2 -0
- package/dist/collaboration/index.cjs +141 -0
- package/dist/collaboration/index.cjs.map +1 -0
- package/dist/collaboration/index.d.ts +5 -0
- package/dist/collaboration/index.js +8 -0
- package/dist/collaboration/index.js.map +1 -0
- package/dist/collaboration/mail/MailFolderTree.d.ts +34 -0
- package/dist/collaboration/mail/index.d.ts +2 -0
- package/dist/collaboration/mail/mailFolders.d.ts +25 -0
- package/dist/collaboration/members/WorkspaceMembers.d.ts +74 -0
- package/dist/collaboration/members/index.d.ts +1 -0
- package/dist/collaboration/sharing/ShareControl.d.ts +38 -0
- package/dist/collaboration/sharing/index.d.ts +1 -0
- package/dist/components/Accordion.d.ts +12 -0
- package/dist/components/ActionLink.d.ts +18 -0
- package/dist/components/AskBar.d.ts +48 -0
- package/dist/components/AvatarBlock.d.ts +9 -0
- package/dist/components/Banner.d.ts +12 -0
- package/dist/components/BlockImage.d.ts +18 -0
- package/dist/components/CTABanner.d.ts +17 -0
- package/dist/components/Callout.d.ts +9 -0
- package/dist/components/Chart.d.ts +27 -0
- package/dist/components/CollectionDetail.d.ts +23 -0
- package/dist/components/Columns.d.ts +11 -0
- package/dist/components/ContactForm.d.ts +42 -0
- package/dist/components/Container.d.ts +11 -0
- package/dist/components/DataTable.d.ts +47 -0
- package/dist/components/DataTableBlock.d.ts +26 -0
- package/dist/components/EmptyState.d.ts +11 -0
- package/dist/components/EntityChip.d.ts +24 -0
- package/dist/components/EntityIdentityBar.d.ts +90 -0
- package/dist/components/EntityTooltip.d.ts +43 -0
- package/dist/components/FAQ.d.ts +14 -0
- package/dist/components/FeatureGrid.d.ts +18 -0
- package/dist/components/Footer.d.ts +25 -0
- package/dist/components/Gallery.d.ts +15 -0
- package/dist/components/Hero.d.ts +35 -0
- package/dist/components/ListBlock.d.ts +10 -0
- package/dist/components/LogoCloud.d.ts +12 -0
- package/dist/components/MediaText.d.ts +15 -0
- package/dist/components/MemberAvatarStack.d.ts +36 -0
- package/dist/components/MetricCard.d.ts +28 -0
- package/dist/components/Navbar.d.ts +39 -0
- package/dist/components/PageHeader.d.ts +15 -0
- package/dist/components/PricingTable.d.ts +19 -0
- package/dist/components/RichTextBlock.d.ts +10 -0
- package/dist/components/SectionHeading.d.ts +11 -0
- package/dist/components/Spacer.d.ts +7 -0
- package/dist/components/StatGroup.d.ts +12 -0
- package/dist/components/Steps.d.ts +12 -0
- package/dist/components/Tabs.d.ts +15 -0
- package/dist/components/TeamGrid.d.ts +18 -0
- package/dist/components/Testimonial.d.ts +9 -0
- package/dist/components/TestimonialGrid.d.ts +13 -0
- package/dist/components/ToneBadge.d.ts +18 -0
- package/dist/components/Toolbar.d.ts +11 -0
- package/dist/components/UsageMeter.d.ts +21 -0
- package/dist/components/VideoEmbed.d.ts +16 -0
- package/dist/components/assetImage.d.ts +16 -0
- package/dist/components/assetResolver.d.ts +57 -0
- package/dist/components/blockLink.d.ts +26 -0
- package/dist/components/tones.d.ts +14 -0
- package/dist/connect/index.cjs +65 -0
- package/dist/connect/index.cjs.map +1 -0
- package/dist/connect/index.d.ts +8 -0
- package/dist/connect/index.js +28 -0
- package/dist/connect/index.js.map +1 -0
- package/dist/connection/ArbiAppProvider.d.ts +16 -0
- package/dist/connection/ConnectionProvider.d.ts +50 -0
- package/dist/connection/ai.d.ts +99 -0
- package/dist/connection/types.d.ts +54 -0
- package/dist/connection/useImageGen.d.ts +22 -0
- package/dist/facts/FactComposer.d.ts +75 -0
- package/dist/facts/FactDateInput.d.ts +34 -0
- package/dist/facts/FactLabelsCell.d.ts +35 -0
- package/dist/facts/FactPassages.d.ts +52 -0
- package/dist/facts/FactRowActions.d.ts +18 -0
- package/dist/facts/FactSearchParts.d.ts +80 -0
- package/dist/facts/FactSourceGroup.d.ts +26 -0
- package/dist/facts/FactTimelineViews.d.ts +37 -0
- package/dist/facts/FactsBulkBar.d.ts +53 -0
- package/dist/facts/FactsEmptyState.d.ts +38 -0
- package/dist/facts/FactsFieldsButton.d.ts +21 -0
- package/dist/facts/FactsFilterInput.d.ts +46 -0
- package/dist/facts/FactsTable.d.ts +28 -0
- package/dist/facts/FactsToolbar.d.ts +53 -0
- package/dist/facts/FactsViewToggle.d.ts +36 -0
- package/dist/facts/fact-date.d.ts +22 -0
- package/dist/facts/fact-text.d.ts +14 -0
- package/dist/facts/factColumns.d.ts +88 -0
- package/dist/facts/index.cjs +2372 -0
- package/dist/facts/index.cjs.map +1 -0
- package/dist/facts/index.d.ts +34 -0
- package/dist/facts/index.js +2316 -0
- package/dist/facts/index.js.map +1 -0
- package/dist/facts/timezone.d.ts +4 -0
- package/dist/files/AiReviewDialog.d.ts +77 -0
- package/dist/files/DocStatusIcon.d.ts +12 -0
- package/dist/files/DocumentGrid.d.ts +27 -0
- package/dist/files/Explorer.d.ts +10 -0
- package/dist/files/ExplorerSurface.d.ts +34 -0
- package/dist/files/ExplorerTile.d.ts +142 -0
- package/dist/files/ExportParts.d.ts +114 -0
- package/dist/files/FieldParts.d.ts +64 -0
- package/dist/files/FilesPage.d.ts +20 -0
- package/dist/files/FilesToolbar.d.ts +59 -0
- package/dist/files/FolderPicker.d.ts +82 -0
- package/dist/files/GridView.d.ts +59 -0
- package/dist/files/HtmlViewerParts.d.ts +183 -0
- package/dist/files/MoveToFolderDialog.d.ts +32 -0
- package/dist/files/RedlineParts.d.ts +72 -0
- package/dist/files/SelectionBar.d.ts +65 -0
- package/dist/files/StatusPill.d.ts +23 -0
- package/dist/files/TagPassagePanel.d.ts +60 -0
- package/dist/files/UploadDropzone.d.ts +33 -0
- package/dist/files/UploadFooter.d.ts +59 -0
- package/dist/files/UploadParts.d.ts +78 -0
- package/dist/files/UploadSources.d.ts +77 -0
- package/dist/files/VersionTimeline.d.ts +60 -0
- package/dist/files/ViewToggle.d.ts +49 -0
- package/dist/files/ViewerChrome.d.ts +155 -0
- package/dist/files/ViewerLayout.d.ts +32 -0
- package/dist/files/ViewerParts.d.ts +62 -0
- package/dist/files/bulk/BulkActionsBar.d.ts +76 -0
- package/dist/files/bulk/FolderFilterButton.d.ts +35 -0
- package/dist/files/bulk/index.d.ts +2 -0
- package/dist/files/cells/DocumentNameCell.d.ts +31 -0
- package/dist/files/cells/FolderCell.d.ts +25 -0
- package/dist/files/cells/HoverIconCell.d.ts +21 -0
- package/dist/files/cells/LabelMultiSelect.d.ts +50 -0
- package/dist/files/cells/RelatedDocsCell.d.ts +22 -0
- package/dist/files/cells/TagColumnParts.d.ts +29 -0
- package/dist/files/cells/index.d.ts +6 -0
- package/dist/files/documentGridLayout.d.ts +31 -0
- package/dist/files/grid-test-ids.d.ts +18 -0
- package/dist/files/import/CalendarImportRow.d.ts +26 -0
- package/dist/files/import/ImportParts.d.ts +114 -0
- package/dist/files/import/TaskSection.d.ts +51 -0
- package/dist/files/import/UrlInputDialogView.d.ts +63 -0
- package/dist/files/import/VendorLogo.d.ts +15 -0
- package/dist/files/import/index.d.ts +5 -0
- package/dist/files/index.cjs +7589 -0
- package/dist/files/index.cjs.map +1 -0
- package/dist/files/index.d.ts +34 -0
- package/dist/files/index.js +7374 -0
- package/dist/files/index.js.map +1 -0
- package/dist/files/page/FilesAddMenu.d.ts +30 -0
- package/dist/files/page/FilesPageParts.d.ts +24 -0
- package/dist/files/page/FilesPageTitle.d.ts +24 -0
- package/dist/files/page/index.d.ts +3 -0
- package/dist/files/tags/BulkTagEditor.d.ts +136 -0
- package/dist/files/tags/DocTagPopover.d.ts +113 -0
- package/dist/files/tags/TagManager.d.ts +54 -0
- package/dist/files/tags/index.d.ts +3 -0
- package/dist/files/views/FieldsEditorParts.d.ts +151 -0
- package/dist/files/views/FieldsManagerParts.d.ts +17 -0
- package/dist/files/views/TagFormParts.d.ts +109 -0
- package/dist/files/views/ViewSelectorMenu.d.ts +66 -0
- package/dist/files/views/fieldsEditorModel.d.ts +43 -0
- package/dist/files/views/index.d.ts +5 -0
- package/dist/home/ActionMenuDialog.d.ts +26 -0
- package/dist/home/AddFilesFirst.d.ts +22 -0
- package/dist/home/CardHeaderBar.d.ts +40 -0
- package/dist/home/CollapsibleSection.d.ts +43 -0
- package/dist/home/CreateTile.d.ts +17 -0
- package/dist/home/DashboardParts.d.ts +32 -0
- package/dist/home/FactsStrip.d.ts +41 -0
- package/dist/home/FoldSection.d.ts +19 -0
- package/dist/home/GettingStartedStrip.d.ts +49 -0
- package/dist/home/Greeting.d.ts +18 -0
- package/dist/home/HomeLayout.d.ts +28 -0
- package/dist/home/KeyValueRow.d.ts +43 -0
- package/dist/home/ProjectBandParts.d.ts +70 -0
- package/dist/home/QuickActionDialogHeader.d.ts +21 -0
- package/dist/home/RecentList.d.ts +48 -0
- package/dist/home/ScopePicker.d.ts +65 -0
- package/dist/home/StartTiles.d.ts +33 -0
- package/dist/home/index.cjs +854 -0
- package/dist/home/index.cjs.map +1 -0
- package/dist/home/index.d.ts +37 -0
- package/dist/home/index.js +763 -0
- package/dist/home/index.js.map +1 -0
- package/dist/home/sections.d.ts +33 -0
- package/dist/index.cjs +1932 -5547
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +71 -1716
- package/dist/index.js +142 -5316
- package/dist/index.js.map +1 -1
- package/dist/lib/balanced-columns.d.ts +8 -0
- package/dist/lib/format.d.ts +37 -0
- package/dist/lib/observe-resize.d.ts +6 -0
- package/dist/lib/password-strength.d.ts +24 -0
- package/dist/lib/sidebar-mode.d.ts +46 -0
- package/dist/lib/testid.d.ts +7 -0
- package/dist/lib/use-drawer.d.ts +11 -0
- package/dist/lib/useControllableState.d.ts +5 -0
- package/dist/lib/useDismissibleCard.d.ts +15 -0
- package/dist/lib/useListKeyNav.d.ts +42 -0
- package/dist/lib/useLongPaste.d.ts +15 -0
- package/dist/lib/useRestoreFocus.d.ts +11 -0
- package/dist/lib/useScopeSelection.d.ts +34 -0
- package/dist/nav/types.d.ts +19 -0
- package/dist/provider/BlocksProvider.d.ts +20 -0
- package/dist/provider/TooltipScope.d.ts +9 -0
- package/dist/record/index.cjs +2 -4
- package/dist/record/index.cjs.map +1 -1
- package/dist/record/index.d.ts +12 -16
- package/dist/record/index.js +2 -4
- package/dist/record/index.js.map +1 -1
- package/dist/retrieval/HighlightText.d.ts +21 -0
- package/dist/retrieval/SearchEmptyState.d.ts +39 -0
- package/dist/retrieval/SearchGroupHeader.d.ts +21 -0
- package/dist/retrieval/SearchHit.d.ts +36 -0
- package/dist/retrieval/SearchPage.d.ts +187 -0
- package/dist/retrieval/SearchPagination.d.ts +21 -0
- package/dist/retrieval/highlight.d.ts +21 -0
- package/dist/retrieval/index.cjs +160 -0
- package/dist/retrieval/index.cjs.map +1 -0
- package/dist/retrieval/index.d.ts +7 -0
- package/dist/retrieval/index.js +7 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/settings/AccountDialogs.d.ts +89 -0
- package/dist/settings/AvatarPicker.d.ts +25 -0
- package/dist/settings/Billing.d.ts +113 -0
- package/dist/settings/ConfigSwitcherBar.d.ts +46 -0
- package/dist/settings/ConfirmDialog.d.ts +28 -0
- package/dist/settings/ConnectionCard.d.ts +58 -0
- package/dist/settings/ConversationSettingsParts.d.ts +53 -0
- package/dist/settings/DocumentPicker.d.ts +57 -0
- package/dist/settings/EmailWorkspaceDialogView.d.ts +60 -0
- package/dist/settings/ErrorDialog.d.ts +36 -0
- package/dist/settings/FloatingPanel.d.ts +32 -0
- package/dist/settings/JsonTree.d.ts +24 -0
- package/dist/settings/LogoutDialog.d.ts +51 -0
- package/dist/settings/ModalBreadcrumbHeader.d.ts +32 -0
- package/dist/settings/ModalScaffold.d.ts +60 -0
- package/dist/settings/MultiSelect.d.ts +111 -0
- package/dist/settings/NotificationCategoryList.d.ts +26 -0
- package/dist/settings/PanelFrame.d.ts +47 -0
- package/dist/settings/PasswordChangeDialog.d.ts +64 -0
- package/dist/settings/PlanBadge.d.ts +14 -0
- package/dist/settings/PlanCard.d.ts +97 -0
- package/dist/settings/PremiumModelsFrame.d.ts +17 -0
- package/dist/settings/ProfileCard.d.ts +67 -0
- package/dist/settings/Projects.d.ts +108 -0
- package/dist/settings/QuotaMeter.d.ts +31 -0
- package/dist/settings/ReferralCredit.d.ts +46 -0
- package/dist/settings/SegmentedControl.d.ts +20 -0
- package/dist/settings/ServerConnectionControls.d.ts +31 -0
- package/dist/settings/SettingsPanel.d.ts +61 -0
- package/dist/settings/SettingsSwitchRow.d.ts +21 -0
- package/dist/settings/SubscriptionParts.d.ts +215 -0
- package/dist/settings/SupportPanel.d.ts +32 -0
- package/dist/settings/SyncDialogParts.d.ts +155 -0
- package/dist/settings/ThreadPreviewDialog.d.ts +18 -0
- package/dist/settings/TipsEditorDialog.d.ts +94 -0
- package/dist/settings/TriStateFilterMenu.d.ts +66 -0
- package/dist/settings/Usage.d.ts +102 -0
- package/dist/settings/WelcomeDialog.d.ts +79 -0
- package/dist/settings/index.cjs +5131 -0
- package/dist/settings/index.cjs.map +1 -0
- package/dist/settings/index.d.ts +38 -0
- package/dist/settings/index.js +4922 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/shell/ActionCluster.d.ts +28 -0
- package/dist/shell/AskField.d.ts +71 -0
- package/dist/shell/InfoBar.d.ts +20 -0
- package/dist/shell/MobileBars.d.ts +47 -0
- package/dist/shell/OfflinePill.d.ts +28 -0
- package/dist/shell/RemoteControlPill.d.ts +23 -0
- package/dist/shell/Shell.d.ts +123 -0
- package/dist/shell/Sidebar.d.ts +104 -0
- package/dist/shell/SidebarBadgeRow.d.ts +29 -0
- package/dist/shell/SidebarRowAction.d.ts +24 -0
- package/dist/shell/StatusRow.d.ts +20 -0
- package/dist/shell/TabHeader.d.ts +70 -0
- package/dist/shell/TipCard.d.ts +46 -0
- package/dist/shell/ToolButton.d.ts +12 -0
- package/dist/shell/Workspace.d.ts +90 -0
- package/dist/shell/index.cjs +187 -0
- package/dist/shell/index.cjs.map +1 -0
- package/dist/shell/index.d.ts +20 -0
- package/dist/shell/index.js +10 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/shell/sidebar-context.d.ts +19 -0
- package/dist/shell/types.d.ts +48 -0
- package/dist/site/index.cjs +113 -90
- package/dist/site/index.d.ts +59 -4
- package/dist/site/index.js +8 -1
- package/dist/studio/PageRenderer.d.ts +35 -0
- package/dist/studio/Section.d.ts +24 -0
- package/dist/studio/StudioEditor.d.ts +32 -0
- package/dist/studio/aiFields.d.ts +17 -0
- package/dist/studio/blockKit.d.ts +36 -0
- package/dist/studio/blocksConfig.d.ts +42 -0
- package/dist/studio/imageFields.d.ts +14 -0
- package/dist/studio/index.cjs +3353 -0
- package/dist/studio/index.cjs.map +1 -0
- package/dist/studio/index.d.ts +32 -0
- package/dist/studio/index.js +3297 -0
- package/dist/studio/index.js.map +1 -0
- package/dist/studio/liveData.d.ts +4 -0
- package/dist/studio/liveWidgetRuntime.d.ts +41 -0
- package/dist/studio/persistence.d.ts +38 -0
- package/dist/studio/publish.d.ts +39 -0
- package/dist/studio/siteBlocks.d.ts +14 -0
- package/dist/studio/types.d.ts +46 -0
- package/dist/studio/websiteBlocks.d.ts +4 -0
- package/dist/studio/widgets.d.ts +20 -0
- package/dist/theme/ThemeEditor.d.ts +16 -0
- package/dist/theme/fontPairings.d.ts +48 -0
- package/dist/theme/store.d.ts +53 -0
- package/dist/theme/tokens.d.ts +105 -0
- package/dist/timeline/Timeline.d.ts +27 -0
- package/dist/timeline/TimelineCalendar.d.ts +54 -0
- package/dist/timeline/TimelineGantt.d.ts +71 -0
- package/dist/timeline/TimelineZoomControl.d.ts +17 -0
- package/dist/timeline/index.cjs +50 -0
- package/dist/timeline/index.cjs.map +1 -0
- package/dist/timeline/index.d.ts +13 -0
- package/dist/timeline/index.js +5 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/timeline/span.d.ts +29 -0
- package/dist/timeline/types.d.ts +30 -0
- package/dist/workspaces/WorkspaceBadges.d.ts +27 -0
- package/dist/workspaces/WorkspaceCard.d.ts +142 -0
- package/dist/workspaces/WorkspaceFormParts.d.ts +98 -0
- package/dist/workspaces/WorkspaceGroup.d.ts +31 -0
- package/dist/workspaces/WorkspaceSettingsParts.d.ts +70 -0
- package/dist/workspaces/index.cjs +690 -0
- package/dist/workspaces/index.cjs.map +1 -0
- package/dist/workspaces/index.d.ts +9 -0
- package/dist/workspaces/index.js +661 -0
- package/dist/workspaces/index.js.map +1 -0
- package/package.json +164 -9
- package/src/blocks.css +348 -0
- package/src/components/grid.css +60 -107
- package/src/source.css +20 -0
- package/src/studio/studio.css +3 -3
- package/src/tokens.css +226 -0
- package/dist/chunk-DBAUZD7A.cjs.map +0 -1
- package/dist/chunk-FZ2S6VAZ.js.map +0 -1
- package/dist/index-DduoEosi.d.cts +0 -846
- package/dist/index-DduoEosi.d.ts +0 -846
- package/dist/index.d.cts +0 -1717
- package/dist/record/index.d.cts +0 -96
- 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":"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","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"]}
|