@arbidocs/react 0.5.110 → 0.5.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PdfViewerImpl-QUSDLNNM.cjs +380 -0
- package/dist/PdfViewerImpl-QUSDLNNM.cjs.map +1 -0
- package/dist/{PdfViewer.d-bQH9yxFg.d.cts → PdfViewerImpl.d-B28hLEuj.d.ts} +8 -1
- package/dist/account/client.js +96 -0
- package/dist/account/client.js.map +7 -0
- package/dist/account/delete.js +70 -0
- package/dist/account/delete.js.map +7 -0
- package/dist/account/didit.js +34 -0
- package/dist/account/didit.js.map +7 -0
- package/dist/account/dismissed-tips.js +33 -0
- package/dist/account/dismissed-tips.js.map +7 -0
- package/dist/account/email.js +84 -0
- package/dist/account/email.js.map +7 -0
- package/dist/account/entitlements.js +47 -0
- package/dist/account/entitlements.js.map +7 -0
- package/dist/account/identity.js +270 -0
- package/dist/account/identity.js.map +7 -0
- package/dist/account/index.js +93 -0
- package/dist/account/index.js.map +7 -0
- package/dist/account/notifications.js +59 -0
- package/dist/account/notifications.js.map +7 -0
- package/dist/account/password.js +103 -0
- package/dist/account/password.js.map +7 -0
- package/dist/account/profile.js +116 -0
- package/dist/account/profile.js.map +7 -0
- package/dist/account/recovery.js +13 -0
- package/dist/account/recovery.js.map +7 -0
- package/dist/account/relevance.js +82 -0
- package/dist/account/relevance.js.map +7 -0
- package/dist/account/sessions.js +37 -0
- package/dist/account/sessions.js.map +7 -0
- package/dist/account/settings.js +39 -0
- package/dist/account/settings.js.map +7 -0
- package/dist/account/table-views.js +16 -0
- package/dist/account/table-views.js.map +7 -0
- package/dist/ai/AiAnswer.js +83 -0
- package/dist/ai/AiAnswer.js.map +7 -0
- package/dist/ai/AiMarkdown.js +40 -0
- package/dist/ai/AiMarkdown.js.map +7 -0
- package/dist/ai/ArtifactCanvas.js +193 -0
- package/dist/ai/ArtifactCanvas.js.map +7 -0
- package/dist/ai/CitationRenderer.js +413 -0
- package/dist/ai/CitationRenderer.js.map +7 -0
- package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
- package/dist/ai/MarkdownRenderer.js.map +7 -0
- package/dist/ai/MessageArtifactCard.js +75 -0
- package/dist/ai/MessageArtifactCard.js.map +7 -0
- package/dist/ai/PassageCard.js +79 -0
- package/dist/ai/PassageCard.js.map +7 -0
- package/dist/ai/engine.js +110 -0
- package/dist/ai/engine.js.map +7 -0
- package/dist/ai/index.js +63 -0
- package/dist/ai/index.js.map +7 -0
- package/dist/ai/markdown-base-components.js +37 -0
- package/dist/ai/markdown-base-components.js.map +7 -0
- package/dist/ai/markdown-streaming-context.js +6 -0
- package/dist/ai/markdown-streaming-context.js.map +7 -0
- package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
- package/dist/ai/normalize-citations.js.map +7 -0
- package/dist/ai/redline.js +41 -0
- package/dist/ai/redline.js.map +7 -0
- package/dist/ai/split-markdown-blocks.js +40 -0
- package/dist/ai/split-markdown-blocks.js.map +7 -0
- package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
- package/dist/ai/stored-markdown.js.map +7 -0
- package/dist/annotations/AnnotationPageOverlay.js +807 -0
- package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
- package/dist/annotations/AnnotationToolbar.js +398 -0
- package/dist/annotations/AnnotationToolbar.js.map +7 -0
- package/dist/annotations/FreezeDialog.js +170 -0
- package/dist/annotations/FreezeDialog.js.map +7 -0
- package/dist/annotations/ProductionDialog.js +354 -0
- package/dist/annotations/ProductionDialog.js.map +7 -0
- package/dist/annotations/controller.js +49 -0
- package/dist/annotations/controller.js.map +7 -0
- package/dist/annotations/freeze/browser.js +21 -0
- package/dist/annotations/freeze/browser.js.map +7 -0
- package/dist/annotations/freeze/bundle.js +201 -0
- package/dist/annotations/freeze/bundle.js.map +7 -0
- package/dist/annotations/freeze/coords.js +37 -0
- package/dist/annotations/freeze/coords.js.map +7 -0
- package/dist/annotations/freeze/freeze.js +261 -0
- package/dist/annotations/freeze/freeze.js.map +7 -0
- package/dist/annotations/freeze/hash.js +28 -0
- package/dist/annotations/freeze/hash.js.map +7 -0
- package/dist/annotations/freeze/index-page.js +78 -0
- package/dist/annotations/freeze/index-page.js.map +7 -0
- package/dist/annotations/freeze/index.d.ts +1 -1
- package/dist/annotations/freeze/index.js +28 -22
- package/dist/annotations/freeze/index.js.map +7 -1
- package/dist/annotations/freeze/raster.js +208 -0
- package/dist/annotations/freeze/raster.js.map +7 -0
- package/dist/annotations/freeze/stamp.js +117 -0
- package/dist/annotations/freeze/stamp.js.map +7 -0
- package/dist/annotations/freeze/types.js +14 -0
- package/dist/annotations/freeze/types.js.map +7 -0
- package/dist/annotations/freeze/vector.js +283 -0
- package/dist/annotations/freeze/vector.js.map +7 -0
- package/dist/annotations/geometry.js +81 -0
- package/dist/annotations/geometry.js.map +7 -0
- package/dist/annotations/index.js +125 -6
- package/dist/annotations/index.js.map +7 -1
- package/dist/annotations/merge.js +53 -0
- package/dist/annotations/merge.js.map +7 -0
- package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
- package/dist/annotations/model.js.map +7 -0
- package/dist/annotations/overlay-geometry.js +41 -0
- package/dist/annotations/overlay-geometry.js.map +7 -0
- package/dist/annotations/redaction-log.js +33 -0
- package/dist/annotations/redaction-log.js.map +7 -0
- package/dist/annotations/selection-marks.js +122 -0
- package/dist/annotations/selection-marks.js.map +7 -0
- package/dist/annotations/state.js +140 -0
- package/dist/annotations/state.js.map +7 -0
- package/dist/annotations/store.js +49 -0
- package/dist/annotations/store.js.map +7 -0
- package/dist/annotations/useAnnotationLayer.js +306 -0
- package/dist/annotations/useAnnotationLayer.js.map +7 -0
- package/dist/annotations/useAnnotationShortcuts.js +31 -0
- package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
- package/dist/annotations/useTextSelectionMarks.js +100 -0
- package/dist/annotations/useTextSelectionMarks.js.map +7 -0
- package/dist/artifacts/artifact-kind.js +19 -0
- package/dist/artifacts/artifact-kind.js.map +7 -0
- package/dist/artifacts/index.cjs +13 -13
- package/dist/artifacts/index.js +89 -571
- package/dist/artifacts/index.js.map +7 -1
- package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
- package/dist/artifacts/normalize-markdown.js.map +7 -0
- package/dist/artifacts/redline-core.js +12 -3
- package/dist/artifacts/redline-core.js.map +7 -1
- package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
- package/dist/artifacts/redline-diff.js.map +7 -0
- package/dist/artifacts/redline-engine.js +14 -0
- package/dist/artifacts/redline-engine.js.map +7 -0
- package/dist/artifacts/renderArtifactMarkdown.js +9 -0
- package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
- package/dist/artifacts/useArtifactEditSession.js +183 -0
- package/dist/artifacts/useArtifactEditSession.js.map +7 -0
- package/dist/artifacts/useArtifactSession.js +173 -0
- package/dist/artifacts/useArtifactSession.js.map +7 -0
- package/dist/artifacts/useArtifactSource.js +16 -0
- package/dist/artifacts/useArtifactSource.js.map +7 -0
- package/dist/artifacts/useArtifactText.js +78 -0
- package/dist/artifacts/useArtifactText.js.map +7 -0
- package/dist/artifacts/useRedline.js +65 -0
- package/dist/artifacts/useRedline.js.map +7 -0
- package/dist/artifacts/useStreamedArtifact.js +74 -0
- package/dist/artifacts/useStreamedArtifact.js.map +7 -0
- package/dist/artifacts/versions.js +68 -0
- package/dist/artifacts/versions.js.map +7 -0
- package/dist/billing.js +200 -0
- package/dist/billing.js.map +7 -0
- package/dist/boot-timeout.js +19 -0
- package/dist/boot-timeout.js.map +7 -0
- package/dist/calendar/accounts.js +213 -0
- package/dist/calendar/accounts.js.map +7 -0
- package/dist/calendar/hooks.js +409 -0
- package/dist/calendar/hooks.js.map +7 -0
- package/dist/calendar/index.js +31 -0
- package/dist/calendar/index.js.map +7 -0
- package/dist/calendar/keys.js +5 -0
- package/dist/calendar/keys.js.map +7 -0
- package/dist/calendar/offline/outbox.js +231 -0
- package/dist/calendar/offline/outbox.js.map +7 -0
- package/dist/calendar/offline/runtime.js +109 -0
- package/dist/calendar/offline/runtime.js.map +7 -0
- package/dist/calendar/offline/support.js +41 -0
- package/dist/calendar/offline/support.js.map +7 -0
- package/dist/calendar/support.js +34 -0
- package/dist/calendar/support.js.map +7 -0
- package/dist/calls/actions.js +226 -0
- package/dist/calls/actions.js.map +7 -0
- package/dist/calls/events.js +138 -0
- package/dist/calls/events.js.map +7 -0
- package/dist/calls/gate.js +19 -0
- package/dist/calls/gate.js.map +7 -0
- package/dist/calls/hooks.js +115 -0
- package/dist/calls/hooks.js.map +7 -0
- package/dist/calls/in-call-chat.js +132 -0
- package/dist/calls/in-call-chat.js.map +7 -0
- package/dist/calls/index.js +24 -0
- package/dist/calls/index.js.map +7 -0
- package/dist/calls/keys.js +17 -0
- package/dist/calls/keys.js.map +7 -0
- package/dist/calls/livekit/index.cjs +48 -48
- package/dist/calls/livekit/index.js +6 -958
- package/dist/calls/livekit/index.js.map +7 -1
- package/dist/calls/livekit/room.js +98 -0
- package/dist/calls/livekit/room.js.map +7 -0
- package/dist/calls/livekit/useCallRecorder.js +219 -0
- package/dist/calls/livekit/useCallRecorder.js.map +7 -0
- package/dist/calls/livekit/useCallTranscriber.js +309 -0
- package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
- package/dist/calls/livekit/useHostMuteNotice.js +29 -0
- package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
- package/dist/calls/livekit/useInCallChat.js +161 -0
- package/dist/calls/livekit/useInCallChat.js.map +7 -0
- package/dist/calls/livekit/useWebinar.js +239 -0
- package/dist/calls/livekit/useWebinar.js.map +7 -0
- package/dist/calls/meeting-chat.js +149 -0
- package/dist/calls/meeting-chat.js.map +7 -0
- package/dist/calls/moderation.js +50 -0
- package/dist/calls/moderation.js.map +7 -0
- package/dist/calls/open-meeting-chat.js +29 -0
- package/dist/calls/open-meeting-chat.js.map +7 -0
- package/dist/calls/read-only.js +24 -0
- package/dist/calls/read-only.js.map +7 -0
- package/dist/calls/recording-media.js +218 -0
- package/dist/calls/recording-media.js.map +7 -0
- package/dist/calls/recording-playback.js +260 -0
- package/dist/calls/recording-playback.js.map +7 -0
- package/dist/calls/recording.js +268 -0
- package/dist/calls/recording.js.map +7 -0
- package/dist/calls/save-to-thread.js +80 -0
- package/dist/calls/save-to-thread.js.map +7 -0
- package/dist/calls/session.js +134 -0
- package/dist/calls/session.js.map +7 -0
- package/dist/calls/transcript-format.js +147 -0
- package/dist/calls/transcript-format.js.map +7 -0
- package/dist/calls/transcription.js +101 -0
- package/dist/calls/transcription.js.map +7 -0
- package/dist/calls/webinar.js +71 -0
- package/dist/calls/webinar.js.map +7 -0
- package/dist/charge-watch.js +71 -0
- package/dist/charge-watch.js.map +7 -0
- package/dist/chat/ChatBubble.js +146 -0
- package/dist/chat/ChatBubble.js.map +7 -0
- package/dist/chat/ConversationScope.js +30 -0
- package/dist/chat/ConversationScope.js.map +7 -0
- package/dist/chat/active-config.js +20 -0
- package/dist/chat/active-config.js.map +7 -0
- package/dist/chat/agent-chat-owner.js +25 -0
- package/dist/chat/agent-chat-owner.js.map +7 -0
- package/dist/chat/chat-artifacts.js +64 -0
- package/dist/chat/chat-artifacts.js.map +7 -0
- package/dist/chat/citations.js +32 -0
- package/dist/chat/citations.js.map +7 -0
- package/dist/chat/config-model.js +10 -0
- package/dist/chat/config-model.js.map +7 -0
- package/dist/chat/conversation-cache.js +676 -0
- package/dist/chat/conversation-cache.js.map +7 -0
- package/dist/chat/conversation-events.js +57 -0
- package/dist/chat/conversation-events.js.map +7 -0
- package/dist/chat/conversation-mentions.js +58 -0
- package/dist/chat/conversation-mentions.js.map +7 -0
- package/dist/chat/conversation-workspace.js +58 -0
- package/dist/chat/conversation-workspace.js.map +7 -0
- package/dist/chat/mentions.js +116 -0
- package/dist/chat/mentions.js.map +7 -0
- package/dist/chat/open-document.js +106 -0
- package/dist/chat/open-document.js.map +7 -0
- package/dist/chat/orphaned.js +44 -0
- package/dist/chat/orphaned.js.map +7 -0
- package/dist/chat/pendingFirstTurn.js +30 -0
- package/dist/chat/pendingFirstTurn.js.map +7 -0
- package/dist/chat/reply-target.js +12 -0
- package/dist/chat/reply-target.js.map +7 -0
- package/dist/chat/run-finished.js +28 -0
- package/dist/chat/run-finished.js.map +7 -0
- package/dist/chat/run-state.js +91 -0
- package/dist/chat/run-state.js.map +7 -0
- package/dist/chat/stream-handlers.js +419 -0
- package/dist/chat/stream-handlers.js.map +7 -0
- package/dist/chat/thread-binding.js +76 -0
- package/dist/chat/thread-binding.js.map +7 -0
- package/dist/chat/thread-document.js +53 -0
- package/dist/chat/thread-document.js.map +7 -0
- package/dist/chat/turn-control.js +79 -0
- package/dist/chat/turn-control.js.map +7 -0
- package/dist/chat/useAgentRunControl.js +36 -0
- package/dist/chat/useAgentRunControl.js.map +7 -0
- package/dist/chat/useAnswerAgentQuestion.js +19 -0
- package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
- package/dist/chat/useAskAgain.js +32 -0
- package/dist/chat/useAskAgain.js.map +7 -0
- package/dist/chat/useAutoSendDraft.js +17 -0
- package/dist/chat/useAutoSendDraft.js.map +7 -0
- package/dist/chat/useBranchNavigation.js +97 -0
- package/dist/chat/useBranchNavigation.js.map +7 -0
- package/dist/chat/useConnectRunStream.js +169 -0
- package/dist/chat/useConnectRunStream.js.map +7 -0
- package/dist/chat/useConversation.js +431 -0
- package/dist/chat/useConversation.js.map +7 -0
- package/dist/chat/useConversationActions.js +662 -0
- package/dist/chat/useConversationActions.js.map +7 -0
- package/dist/chat/useConversationData.js +143 -0
- package/dist/chat/useConversationData.js.map +7 -0
- package/dist/chat/useConversationDocuments.js +41 -0
- package/dist/chat/useConversationDocuments.js.map +7 -0
- package/dist/chat/useConversationSettings.js +78 -0
- package/dist/chat/useConversationSettings.js.map +7 -0
- package/dist/chat/useConversationTurn.js +31 -0
- package/dist/chat/useConversationTurn.js.map +7 -0
- package/dist/chat/useConversationWorkspace.js +12 -0
- package/dist/chat/useConversationWorkspace.js.map +7 -0
- package/dist/chat/useDeleteMessage.js +15 -0
- package/dist/chat/useDeleteMessage.js.map +7 -0
- package/dist/chat/useDocumentAutoAdd.js +73 -0
- package/dist/chat/useDocumentAutoAdd.js.map +7 -0
- package/dist/chat/useMessageTimer.js +39 -0
- package/dist/chat/useMessageTimer.js.map +7 -0
- package/dist/chat/useThinkingContent.js +67 -0
- package/dist/chat/useThinkingContent.js.map +7 -0
- package/dist/chat/useThreadDocument.js +61 -0
- package/dist/chat/useThreadDocument.js.map +7 -0
- package/dist/chat/workflow-run-titles.js +50 -0
- package/dist/chat/workflow-run-titles.js.map +7 -0
- package/dist/{chunk-W2FATOTX.cjs → chunk-3JAEX57E.cjs} +4 -4
- package/dist/{chunk-W2FATOTX.cjs.map → chunk-3JAEX57E.cjs.map} +1 -1
- package/dist/{chunk-HD5H2PPP.cjs → chunk-5TRUFWKT.cjs} +66 -66
- package/dist/{chunk-HD5H2PPP.cjs.map → chunk-5TRUFWKT.cjs.map} +1 -1
- package/dist/{chunk-Z3W4XFWB.cjs → chunk-C72FSQUE.cjs} +3 -3
- package/dist/{chunk-Z3W4XFWB.cjs.map → chunk-C72FSQUE.cjs.map} +1 -1
- package/dist/{chunk-LBAG7KL7.cjs → chunk-FQVNZCTD.cjs} +3 -3
- package/dist/{chunk-LBAG7KL7.cjs.map → chunk-FQVNZCTD.cjs.map} +1 -1
- package/dist/{chunk-RVUGSM65.cjs → chunk-GKGAPU6T.cjs} +44 -44
- package/dist/{chunk-RVUGSM65.cjs.map → chunk-GKGAPU6T.cjs.map} +1 -1
- package/dist/{chunk-7LIMHY56.cjs → chunk-O32T7XRD.cjs} +3 -3
- package/dist/{chunk-7LIMHY56.cjs.map → chunk-O32T7XRD.cjs.map} +1 -1
- package/dist/chunk-PWGSIM3F.cjs +291 -0
- package/dist/chunk-PWGSIM3F.cjs.map +1 -0
- package/dist/chunk-QP3WQSAA.cjs +23 -0
- package/dist/chunk-QP3WQSAA.cjs.map +1 -0
- package/dist/chunk-T5FZICXN.cjs +50 -0
- package/dist/chunk-T5FZICXN.cjs.map +1 -0
- package/dist/{chunk-QF2BW6HZ.cjs → chunk-UDDJIUHJ.cjs} +38 -38
- package/dist/{chunk-QF2BW6HZ.cjs.map → chunk-UDDJIUHJ.cjs.map} +1 -1
- package/dist/{chunk-5HDKL6XB.cjs → chunk-YMB6XUR2.cjs} +57 -57
- package/dist/{chunk-5HDKL6XB.cjs.map → chunk-YMB6XUR2.cjs.map} +1 -1
- package/dist/config/config-hooks.js +209 -0
- package/dist/config/config-hooks.js.map +7 -0
- package/dist/connectivity.js +72 -0
- package/dist/connectivity.js.map +7 -0
- package/dist/connectors/hooks.js +263 -0
- package/dist/connectors/hooks.js.map +7 -0
- package/dist/connectors/index.js +28 -0
- package/dist/connectors/index.js.map +7 -0
- package/dist/contacts.js +100 -0
- package/dist/contacts.js.map +7 -0
- package/dist/conversation-list.js +65 -0
- package/dist/conversation-list.js.map +7 -0
- package/dist/databases.js +195 -0
- package/dist/databases.js.map +7 -0
- package/dist/datasets/aggregate.js +281 -0
- package/dist/datasets/aggregate.js.map +7 -0
- package/dist/datasets/index.js +122 -0
- package/dist/datasets/index.js.map +7 -0
- package/dist/datasets/members.js +27 -0
- package/dist/datasets/members.js.map +7 -0
- package/dist/datasets/panel.js +44 -0
- package/dist/datasets/panel.js.map +7 -0
- package/dist/datasets/registry.js +47 -0
- package/dist/datasets/registry.js.map +7 -0
- package/dist/datasets/rows-source.js +44 -0
- package/dist/datasets/rows-source.js.map +7 -0
- package/dist/datasets/sources/activity.js +83 -0
- package/dist/datasets/sources/activity.js.map +7 -0
- package/dist/datasets/sources/conversations.js +74 -0
- package/dist/datasets/sources/conversations.js.map +7 -0
- package/dist/datasets/sources/database.js +209 -0
- package/dist/datasets/sources/database.js.map +7 -0
- package/dist/datasets/sources/documents.js +93 -0
- package/dist/datasets/sources/documents.js.map +7 -0
- package/dist/datasets/sources/facts.js +56 -0
- package/dist/datasets/sources/facts.js.map +7 -0
- package/dist/datasets/sources/projects.js +117 -0
- package/dist/datasets/sources/projects.js.map +7 -0
- package/dist/datasets/sources/tags.js +67 -0
- package/dist/datasets/sources/tags.js.map +7 -0
- package/dist/datasets/sources/usage.js +268 -0
- package/dist/datasets/sources/usage.js.map +7 -0
- package/dist/datasets/sources/workflows.js +91 -0
- package/dist/datasets/sources/workflows.js.map +7 -0
- package/dist/datasets/sources/workspaces.js +67 -0
- package/dist/datasets/sources/workspaces.js.map +7 -0
- package/dist/datasets/store.js +194 -0
- package/dist/datasets/store.js.map +7 -0
- package/dist/datasets/types.js +14 -0
- package/dist/datasets/types.js.map +7 -0
- package/dist/directmessages/ConversationList.js +148 -0
- package/dist/directmessages/ConversationList.js.map +7 -0
- package/dist/directmessages/DateSeparator.js +8 -0
- package/dist/directmessages/DateSeparator.js.map +7 -0
- package/dist/directmessages/DmAvatar.js +29 -0
- package/dist/directmessages/DmAvatar.js.map +7 -0
- package/dist/directmessages/DmComposer.js +201 -0
- package/dist/directmessages/DmComposer.js.map +7 -0
- package/dist/directmessages/arrivals.js +29 -0
- package/dist/directmessages/arrivals.js.map +7 -0
- package/dist/directmessages/chat-cache.js +192 -0
- package/dist/directmessages/chat-cache.js.map +7 -0
- package/dist/directmessages/grouping.js +26 -0
- package/dist/directmessages/grouping.js.map +7 -0
- package/dist/directmessages/index.js +81 -0
- package/dist/directmessages/index.js.map +7 -0
- package/dist/directmessages/useChats.js +266 -0
- package/dist/directmessages/useChats.js.map +7 -0
- package/dist/directmessages/utils.js +23 -0
- package/dist/directmessages/utils.js.map +7 -0
- package/dist/document-tools/can-annotate.js +7 -0
- package/dist/document-tools/can-annotate.js.map +7 -0
- package/dist/document-tools/core.cjs +99 -99
- package/dist/document-tools/core.d.ts +2 -2
- package/dist/document-tools/core.js +218 -12
- package/dist/document-tools/core.js.map +7 -1
- package/dist/document-tools/document-pdf.js +76 -0
- package/dist/document-tools/document-pdf.js.map +7 -0
- package/dist/document-tools/environment.js +136 -0
- package/dist/document-tools/environment.js.map +7 -0
- package/dist/document-tools/file-shares.js +112 -0
- package/dist/document-tools/file-shares.js.map +7 -0
- package/dist/document-tools/frozen-copy.js +27 -0
- package/dist/document-tools/frozen-copy.js.map +7 -0
- package/dist/document-tools/index.cjs +101 -101
- package/dist/document-tools/index.d.ts +1 -1
- package/dist/document-tools/index.js +26 -148
- package/dist/document-tools/index.js.map +7 -1
- package/dist/document-tools/markup-download.js +51 -0
- package/dist/document-tools/markup-download.js.map +7 -0
- package/dist/document-tools/markup-store.js +138 -0
- package/dist/document-tools/markup-store.js.map +7 -0
- package/dist/document-tools/markup-transfer.js +88 -0
- package/dist/document-tools/markup-transfer.js.map +7 -0
- package/dist/document-tools/production.js +147 -0
- package/dist/document-tools/production.js.map +7 -0
- package/dist/document-tools/saved-signature.js +90 -0
- package/dist/document-tools/saved-signature.js.map +7 -0
- package/dist/document-tools/signature-requests.js +310 -0
- package/dist/document-tools/signature-requests.js.map +7 -0
- package/dist/document-tools/signing.js +127 -0
- package/dist/document-tools/signing.js.map +7 -0
- package/dist/document-tools/useDocumentBytes.js +38 -0
- package/dist/document-tools/useDocumentBytes.js.map +7 -0
- package/dist/document-tools/useDocumentMarkup.js +154 -0
- package/dist/document-tools/useDocumentMarkup.js.map +7 -0
- package/dist/document-tools/useIsOnline.js +13 -0
- package/dist/document-tools/useIsOnline.js.map +7 -0
- package/dist/document-tools/verification.js +60 -0
- package/dist/document-tools/verification.js.map +7 -0
- package/dist/documents/DocumentReview.js +220 -0
- package/dist/documents/DocumentReview.js.map +7 -0
- package/dist/documents/DraftTitleControls.js +41 -0
- package/dist/documents/DraftTitleControls.js.map +7 -0
- package/dist/documents/InlineMicButton.js +90 -0
- package/dist/documents/InlineMicButton.js.map +7 -0
- package/dist/documents/MicRecordingOverlay.js +29 -0
- package/dist/documents/MicRecordingOverlay.js.map +7 -0
- package/dist/documents/MicWaveformIndicator.js +68 -0
- package/dist/documents/MicWaveformIndicator.js.map +7 -0
- package/dist/documents/PhotoCapture.js +120 -0
- package/dist/documents/PhotoCapture.js.map +7 -0
- package/dist/documents/VideoCapture.js +129 -0
- package/dist/documents/VideoCapture.js.map +7 -0
- package/dist/documents/VoiceNoteRecorder.js +166 -0
- package/dist/documents/VoiceNoteRecorder.js.map +7 -0
- package/dist/documents/audio-segmenter.js +63 -0
- package/dist/documents/audio-segmenter.js.map +7 -0
- package/dist/documents/capture-frame.js +21 -0
- package/dist/documents/capture-frame.js.map +7 -0
- package/dist/documents/chunked-recorder.js +190 -0
- package/dist/documents/chunked-recorder.js.map +7 -0
- package/dist/documents/document-download.js +53 -0
- package/dist/documents/document-download.js.map +7 -0
- package/dist/documents/document-fields.js +109 -0
- package/dist/documents/document-fields.js.map +7 -0
- package/dist/documents/documents-cache.js +110 -0
- package/dist/documents/documents-cache.js.map +7 -0
- package/dist/documents/documents-data.js +128 -0
- package/dist/documents/documents-data.js.map +7 -0
- package/dist/documents/documents-loader.js +113 -0
- package/dist/documents/documents-loader.js.map +7 -0
- package/dist/documents/documents-writes.js +448 -0
- package/dist/documents/documents-writes.js.map +7 -0
- package/dist/documents/format-elapsed.js +10 -0
- package/dist/documents/format-elapsed.js.map +7 -0
- package/dist/documents/has-video-track.js +26 -0
- package/dist/documents/has-video-track.js.map +7 -0
- package/dist/documents/index.js +266 -0
- package/dist/documents/index.js.map +7 -0
- package/dist/documents/media-error.js +18 -0
- package/dist/documents/media-error.js.map +7 -0
- package/dist/documents/offline-documents.js +160 -0
- package/dist/documents/offline-documents.js.map +7 -0
- package/dist/documents/pending-sync.js +210 -0
- package/dist/documents/pending-sync.js.map +7 -0
- package/dist/documents/processing-live.js +122 -0
- package/dist/documents/processing-live.js.map +7 -0
- package/dist/documents/processing-order.js +59 -0
- package/dist/documents/processing-order.js.map +7 -0
- package/dist/documents/processing-settle.js +21 -0
- package/dist/documents/processing-settle.js.map +7 -0
- package/dist/documents/related-documents.js +133 -0
- package/dist/documents/related-documents.js.map +7 -0
- package/dist/documents/support.js +29 -0
- package/dist/documents/support.js.map +7 -0
- package/dist/documents/upload-files.js +169 -0
- package/dist/documents/upload-files.js.map +7 -0
- package/dist/documents/useAudioRecorder.js +315 -0
- package/dist/documents/useAudioRecorder.js.map +7 -0
- package/dist/documents/useCameraStream.js +35 -0
- package/dist/documents/useCameraStream.js.map +7 -0
- package/dist/documents/useDocumentThumbnails.js +71 -0
- package/dist/documents/useDocumentThumbnails.js.map +7 -0
- package/dist/documents/useDownloadDocuments.js +90 -0
- package/dist/documents/useDownloadDocuments.js.map +7 -0
- package/dist/documents/usePassageQuotes.js +37 -0
- package/dist/documents/usePassageQuotes.js.map +7 -0
- package/dist/documents/useUploadFiles.js +165 -0
- package/dist/documents/useUploadFiles.js.map +7 -0
- package/dist/documents/useUploadFromUrls.js +63 -0
- package/dist/documents/useUploadFromUrls.js.map +7 -0
- package/dist/documents/useVideoRecorder.js +62 -0
- package/dist/documents/useVideoRecorder.js.map +7 -0
- package/dist/entities/AgentMarkers.js +61 -0
- package/dist/entities/AgentMarkers.js.map +7 -0
- package/dist/entities/DocumentEntity.js +125 -0
- package/dist/entities/DocumentEntity.js.map +7 -0
- package/dist/entities/EntityPill.js +250 -0
- package/dist/entities/EntityPill.js.map +7 -0
- package/dist/entities/ProjectEntity.js +61 -0
- package/dist/entities/ProjectEntity.js.map +7 -0
- package/dist/entities/ShieldIcon.js +49 -0
- package/dist/entities/ShieldIcon.js.map +7 -0
- package/dist/entities/TagEntity.js +79 -0
- package/dist/entities/TagEntity.js.map +7 -0
- package/dist/entities/ThreadVisibilityIcon.js +15 -0
- package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
- package/dist/entities/UserEntity.js +211 -0
- package/dist/entities/UserEntity.js.map +7 -0
- package/dist/entities/VerifiedBadge.js +19 -0
- package/dist/entities/VerifiedBadge.js.map +7 -0
- package/dist/entities/agent-avatar-colors.js +26 -0
- package/dist/entities/agent-avatar-colors.js.map +7 -0
- package/dist/entities/colors.js +64 -0
- package/dist/entities/colors.js.map +7 -0
- package/dist/entities/file-type.js +151 -0
- package/dist/entities/file-type.js.map +7 -0
- package/dist/entities/index.js +100 -0
- package/dist/entities/index.js.map +7 -0
- package/dist/entities/media-type.js +61 -0
- package/dist/entities/media-type.js.map +7 -0
- package/dist/entities/registry.js +385 -0
- package/dist/entities/registry.js.map +7 -0
- package/dist/entities/status.js +43 -0
- package/dist/entities/status.js.map +7 -0
- package/dist/entities/tag-kinds.js +23 -0
- package/dist/entities/tag-kinds.js.map +7 -0
- package/dist/entities/tag-types.js +44 -0
- package/dist/entities/tag-types.js.map +7 -0
- package/dist/entities/vocabulary.js +12 -0
- package/dist/entities/vocabulary.js.map +7 -0
- package/dist/entity-extraction.js +25 -0
- package/dist/entity-extraction.js.map +7 -0
- package/dist/facts-search.js +57 -0
- package/dist/facts-search.js.map +7 -0
- package/dist/facts.js +69 -0
- package/dist/facts.js.map +7 -0
- package/dist/hooks.js +320 -0
- package/dist/hooks.js.map +7 -0
- package/dist/host/ArbiHost.js +24 -0
- package/dist/host/ArbiHost.js.map +7 -0
- package/dist/host/assistant-copy.js +54 -0
- package/dist/host/assistant-copy.js.map +7 -0
- package/dist/host/config.js +9 -0
- package/dist/host/config.js.map +7 -0
- package/dist/host/context.js +10 -0
- package/dist/host/context.js.map +7 -0
- package/dist/host/features.js +144 -0
- package/dist/host/features.js.map +7 -0
- package/dist/host/index.js +12 -0
- package/dist/host/index.js.map +7 -0
- package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
- package/dist/host/merge.js.map +7 -0
- package/dist/house-template.js +40 -0
- package/dist/house-template.js.map +7 -0
- package/dist/icons/AppleIcon.js +25 -0
- package/dist/icons/AppleIcon.js.map +7 -0
- package/dist/icons/ArbiBotHeadIcon.js +46 -0
- package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
- package/dist/icons/ArbiIcon.js +24 -0
- package/dist/icons/ArbiIcon.js.map +7 -0
- package/dist/icons/AudIcon.js +56 -0
- package/dist/icons/AudIcon.js.map +7 -0
- package/dist/icons/ClaudeIcon.js +28 -0
- package/dist/icons/ClaudeIcon.js.map +7 -0
- package/dist/icons/DocIcon.js +56 -0
- package/dist/icons/DocIcon.js.map +7 -0
- package/dist/icons/EmlIcon.js +57 -0
- package/dist/icons/EmlIcon.js.map +7 -0
- package/dist/icons/FireworksIcon.js +47 -0
- package/dist/icons/FireworksIcon.js.map +7 -0
- package/dist/icons/GeminiIcon.js +37 -0
- package/dist/icons/GeminiIcon.js.map +7 -0
- package/dist/icons/GitHubIcon.js +32 -0
- package/dist/icons/GitHubIcon.js.map +7 -0
- package/dist/icons/GoogleIcon.js +53 -0
- package/dist/icons/GoogleIcon.js.map +7 -0
- package/dist/icons/HtmlIcon.js +56 -0
- package/dist/icons/HtmlIcon.js.map +7 -0
- package/dist/icons/ImgIcon.js +56 -0
- package/dist/icons/ImgIcon.js.map +7 -0
- package/dist/icons/LinkedInIcon.js +25 -0
- package/dist/icons/LinkedInIcon.js.map +7 -0
- package/dist/icons/OpenAIIcon.js +28 -0
- package/dist/icons/OpenAIIcon.js.map +7 -0
- package/dist/icons/PdfIcon.js +56 -0
- package/dist/icons/PdfIcon.js.map +7 -0
- package/dist/icons/ProviderIcon.js +42 -0
- package/dist/icons/ProviderIcon.js.map +7 -0
- package/dist/icons/TxtIcon.js +56 -0
- package/dist/icons/TxtIcon.js.map +7 -0
- package/dist/icons/VidIcon.js +56 -0
- package/dist/icons/VidIcon.js.map +7 -0
- package/dist/icons/XlsIcon.js +56 -0
- package/dist/icons/XlsIcon.js.map +7 -0
- package/dist/icons/arbi-mark.js +5 -0
- package/dist/icons/arbi-mark.js.map +7 -0
- package/dist/icons/colors.js +31 -0
- package/dist/icons/colors.js.map +7 -0
- package/dist/icons/file-type.js +105 -0
- package/dist/icons/file-type.js.map +7 -0
- package/dist/icons/index.js +55 -0
- package/dist/icons/index.js.map +7 -0
- package/dist/imagecrop/ImageCropModal.js +56 -0
- package/dist/imagecrop/ImageCropModal.js.map +7 -0
- package/dist/imagecrop/ImageCropper.js +100 -0
- package/dist/imagecrop/ImageCropper.js.map +7 -0
- package/dist/imagecrop/cropImage.js +43 -0
- package/dist/imagecrop/cropImage.js.map +7 -0
- package/dist/imagecrop/index.js +13 -0
- package/dist/imagecrop/index.js.map +7 -0
- package/dist/index.cjs +1689 -1619
- package/dist/index.cjs.map +1 -1
- package/dist/{index.d-BMhTH98a.d.ts → index.d-CYXcTKYt.d.ts} +1 -0
- package/dist/index.d.ts +38 -8
- package/dist/index.js +702 -17060
- package/dist/index.js.map +7 -1
- package/dist/lazy-chunk.d-B6YDLMKI.d.ts +31 -0
- package/dist/lazy-chunk.js +46 -0
- package/dist/lazy-chunk.js.map +7 -0
- package/dist/lib/collision-padding.js +13 -0
- package/dist/lib/collision-padding.js.map +7 -0
- package/dist/lib/format-friendly-date.js +55 -0
- package/dist/lib/format-friendly-date.js.map +7 -0
- package/dist/lib/format-relative-time.js +52 -0
- package/dist/lib/format-relative-time.js.map +7 -0
- package/dist/lib/markdown-to-text.js +35 -0
- package/dist/lib/markdown-to-text.js.map +7 -0
- package/dist/lib/toast-interaction.js +9 -0
- package/dist/lib/toast-interaction.js.map +7 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +7 -0
- package/dist/mail/client.js +103 -0
- package/dist/mail/client.js.map +7 -0
- package/dist/mail/document-attachment.js +38 -0
- package/dist/mail/document-attachment.js.map +7 -0
- package/dist/mail/filing.js +132 -0
- package/dist/mail/filing.js.map +7 -0
- package/dist/mail/hooks.js +393 -0
- package/dist/mail/hooks.js.map +7 -0
- package/dist/mail/index.js +120 -0
- package/dist/mail/index.js.map +7 -0
- package/dist/mail/offline/changes.js +258 -0
- package/dist/mail/offline/changes.js.map +7 -0
- package/dist/mail/offline/confirm-sign-out.js +37 -0
- package/dist/mail/offline/confirm-sign-out.js.map +7 -0
- package/dist/mail/offline/crypto.js +26 -0
- package/dist/mail/offline/crypto.js.map +7 -0
- package/dist/mail/offline/drafts.js +69 -0
- package/dist/mail/offline/drafts.js.map +7 -0
- package/dist/mail/offline/hooks.js +104 -0
- package/dist/mail/offline/hooks.js.map +7 -0
- package/dist/mail/offline/index.js +48 -0
- package/dist/mail/offline/index.js.map +7 -0
- package/dist/mail/offline/live.js +233 -0
- package/dist/mail/offline/live.js.map +7 -0
- package/dist/mail/offline/mailbox.js +191 -0
- package/dist/mail/offline/mailbox.js.map +7 -0
- package/dist/mail/offline/outbox.js +167 -0
- package/dist/mail/offline/outbox.js.map +7 -0
- package/dist/mail/offline/reads.js +159 -0
- package/dist/mail/offline/reads.js.map +7 -0
- package/dist/mail/offline/runtime.js +100 -0
- package/dist/mail/offline/runtime.js.map +7 -0
- package/dist/mail/offline/settings.js +84 -0
- package/dist/mail/offline/settings.js.map +7 -0
- package/dist/mail/offline/store.js +29 -0
- package/dist/mail/offline/store.js.map +7 -0
- package/dist/mail/offline/sync.js +251 -0
- package/dist/mail/offline/sync.js.map +7 -0
- package/dist/mail/offline/wipe.js +19 -0
- package/dist/mail/offline/wipe.js.map +7 -0
- package/dist/mail/thread-keys.js +53 -0
- package/dist/mail/thread-keys.js.map +7 -0
- package/dist/mail/threads.js +71 -0
- package/dist/mail/threads.js.map +7 -0
- package/dist/mail/useMailClient.js +42 -0
- package/dist/mail/useMailClient.js.map +7 -0
- package/dist/model-connections.js +58 -0
- package/dist/model-connections.js.map +7 -0
- package/dist/notifications/ActivityFeed.js +70 -0
- package/dist/notifications/ActivityFeed.js.map +7 -0
- package/dist/notifications/NotificationBell.js +200 -0
- package/dist/notifications/NotificationBell.js.map +7 -0
- package/dist/notifications/Toaster.js +24 -0
- package/dist/notifications/Toaster.js.map +7 -0
- package/dist/notifications/activity-types.js +65 -0
- package/dist/notifications/activity-types.js.map +7 -0
- package/dist/notifications/bell.js +24 -0
- package/dist/notifications/bell.js.map +7 -0
- package/dist/notifications/calendar-notifications.js +79 -0
- package/dist/notifications/calendar-notifications.js.map +7 -0
- package/dist/notifications/index.js +108 -0
- package/dist/notifications/index.js.map +7 -0
- package/dist/notifications/live.js +28 -0
- package/dist/notifications/live.js.map +7 -0
- package/dist/notifications/notification-types.js +127 -0
- package/dist/notifications/notification-types.js.map +7 -0
- package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
- package/dist/notifications/notify-store.js.map +7 -0
- package/dist/notifications/server-notifications.js +452 -0
- package/dist/notifications/server-notifications.js.map +7 -0
- package/dist/notifications/useNotifications.js +34 -0
- package/dist/notifications/useNotifications.js.map +7 -0
- package/dist/offline-store/network.js +11 -0
- package/dist/offline-store/network.js.map +7 -0
- package/dist/offline-store/store.js +136 -0
- package/dist/offline-store/store.js.map +7 -0
- package/dist/offline-store/wipe.js +8 -0
- package/dist/offline-store/wipe.js.map +7 -0
- package/dist/offline.js +58 -0
- package/dist/offline.js.map +7 -0
- package/dist/people.js +122 -0
- package/dist/people.js.map +7 -0
- package/dist/projects.js +30 -0
- package/dist/projects.js.map +7 -0
- package/dist/query-client.js +63 -0
- package/dist/query-client.js.map +7 -0
- package/dist/{query-keys.d-ChgpJLPF.d.ts → query-keys.d-B1Am9tIF.d.ts} +1 -1
- package/dist/{chunk-6H3O63TQ.js → query-keys.js} +19 -32
- package/dist/query-keys.js.map +7 -0
- package/dist/query-persist.js +66 -0
- package/dist/query-persist.js.map +7 -0
- package/dist/queued-writes.js +59 -0
- package/dist/queued-writes.js.map +7 -0
- package/dist/remote-control.js +67 -0
- package/dist/remote-control.js.map +7 -0
- package/dist/search/index.js +23 -0
- package/dist/search/index.js.map +7 -0
- package/dist/search/session.js +58 -0
- package/dist/search/session.js.map +7 -0
- package/dist/search/useSemanticSearch.js +82 -0
- package/dist/search/useSemanticSearch.js.map +7 -0
- package/dist/session/chat.js +512 -0
- package/dist/session/chat.js.map +7 -0
- package/dist/session/documents.js +196 -0
- package/dist/session/documents.js.map +7 -0
- package/dist/session/drafts.js +103 -0
- package/dist/session/drafts.js.map +7 -0
- package/dist/session/index.js +123 -0
- package/dist/session/index.js.map +7 -0
- package/dist/session/layout.js +339 -0
- package/dist/session/layout.js.map +7 -0
- package/dist/session/persist.js +106 -0
- package/dist/session/persist.js.map +7 -0
- package/dist/session/session-hooks.js +53 -0
- package/dist/session/session-hooks.js.map +7 -0
- package/dist/session/signed-in.js +36 -0
- package/dist/session/signed-in.js.map +7 -0
- package/dist/session/store.js +166 -0
- package/dist/session/store.js.map +7 -0
- package/dist/session/thread-tabs.js +121 -0
- package/dist/session/thread-tabs.js.map +7 -0
- package/dist/session/ui-state-storage.js +76 -0
- package/dist/session/ui-state-storage.js.map +7 -0
- package/dist/session/workspace.js +77 -0
- package/dist/session/workspace.js.map +7 -0
- package/dist/shell/index.cjs +37 -37
- package/dist/shell/index.js +43 -10
- package/dist/shell/index.js.map +7 -1
- package/dist/skill-pack.js +111 -0
- package/dist/skill-pack.js.map +7 -0
- package/dist/storage.js +186 -0
- package/dist/storage.js.map +7 -0
- package/dist/support/index.js +35 -0
- package/dist/support/index.js.map +7 -0
- package/dist/tags.js +204 -0
- package/dist/tags.js.map +7 -0
- package/dist/ui/DebouncedInput.js +109 -0
- package/dist/ui/DebouncedInput.js.map +7 -0
- package/dist/ui/DictateContext.js +8 -0
- package/dist/ui/DictateContext.js.map +7 -0
- package/dist/ui/IconToggle.js +79 -0
- package/dist/ui/IconToggle.js.map +7 -0
- package/dist/ui/VerifiedToggle.js +38 -0
- package/dist/ui/VerifiedToggle.js.map +7 -0
- package/dist/ui/VisibilityToggle.js +103 -0
- package/dist/ui/VisibilityToggle.js.map +7 -0
- package/dist/ui/avatar.js +40 -0
- package/dist/ui/avatar.js.map +7 -0
- package/dist/ui/badge.js +28 -0
- package/dist/ui/badge.js.map +7 -0
- package/dist/ui/button.js +48 -0
- package/dist/ui/button.js.map +7 -0
- package/dist/ui/card.js +90 -0
- package/dist/ui/card.js.map +7 -0
- package/dist/ui/checkbox.js +22 -0
- package/dist/ui/checkbox.js.map +7 -0
- package/dist/ui/collapsible.js +10 -0
- package/dist/ui/collapsible.js.map +7 -0
- package/dist/ui/command.js +103 -0
- package/dist/ui/command.js.map +7 -0
- package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
- package/dist/ui/dialog.js.map +7 -0
- package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
- package/dist/ui/dropdown-menu.js.map +7 -0
- package/dist/ui/hover-card.js +36 -0
- package/dist/ui/hover-card.js.map +7 -0
- package/dist/ui/index.cjs +167 -154
- package/dist/ui/index.d.ts +2 -1
- package/dist/ui/index.js +290 -9
- package/dist/ui/index.js.map +7 -1
- package/dist/ui/input.js +65 -0
- package/dist/ui/input.js.map +7 -0
- package/dist/ui/label.js +16 -0
- package/dist/ui/label.js.map +7 -0
- package/dist/ui/mark-menu.js +300 -0
- package/dist/ui/mark-menu.js.map +7 -0
- package/dist/ui/popover.js +40 -0
- package/dist/ui/popover.js.map +7 -0
- package/dist/ui/portal-container.js +17 -0
- package/dist/ui/portal-container.js.map +7 -0
- package/dist/ui/progress.js +24 -0
- package/dist/ui/progress.js.map +7 -0
- package/dist/ui/radio-group.js +29 -0
- package/dist/ui/radio-group.js.map +7 -0
- package/dist/ui/scroll-area.js +39 -0
- package/dist/ui/scroll-area.js.map +7 -0
- package/dist/ui/select.js +130 -0
- package/dist/ui/select.js.map +7 -0
- package/dist/ui/separator.js +23 -0
- package/dist/ui/separator.js.map +7 -0
- package/dist/ui/slider.js +23 -0
- package/dist/ui/slider.js.map +7 -0
- package/dist/ui/switch.js +28 -0
- package/dist/ui/switch.js.map +7 -0
- package/dist/ui/table.js +75 -0
- package/dist/ui/table.js.map +7 -0
- package/dist/ui/tabs.js +48 -0
- package/dist/ui/tabs.js.map +7 -0
- package/dist/ui/textarea.js +63 -0
- package/dist/ui/textarea.js.map +7 -0
- package/dist/ui/toggle-group.js +43 -0
- package/dist/ui/toggle-group.js.map +7 -0
- package/dist/ui/toggle.js +40 -0
- package/dist/ui/toggle.js.map +7 -0
- package/dist/ui/tooltip.js +215 -0
- package/dist/ui/tooltip.js.map +7 -0
- package/dist/usage-metered.js +8 -0
- package/dist/usage-metered.js.map +7 -0
- package/dist/useArbi.js +16 -0
- package/dist/useArbi.js.map +7 -0
- package/dist/useInstallSkillPack.js +81 -0
- package/dist/useInstallSkillPack.js.map +7 -0
- package/dist/usermenu/UserMenu.js +188 -0
- package/dist/usermenu/UserMenu.js.map +7 -0
- package/dist/usermenu/index.js +5 -0
- package/dist/usermenu/index.js.map +7 -0
- package/dist/users/index.js +15 -0
- package/dist/users/index.js.map +7 -0
- package/dist/users/user-display.js +60 -0
- package/dist/users/user-display.js.map +7 -0
- package/dist/viewers/AudioViewer.js +23 -0
- package/dist/viewers/AudioViewer.js.map +7 -0
- package/dist/viewers/DocxViewer.js +81 -0
- package/dist/viewers/DocxViewer.js.map +7 -0
- package/dist/viewers/ImageViewer.js +31 -0
- package/dist/viewers/ImageViewer.js.map +7 -0
- package/dist/viewers/PdfViewer.cjs +17 -0
- package/dist/viewers/PdfViewer.cjs.map +1 -0
- package/dist/viewers/PdfViewer.d.ts +9 -0
- package/dist/viewers/PdfViewer.js +20 -0
- package/dist/viewers/PdfViewer.js.map +7 -0
- package/dist/viewers/PdfViewerImpl.js +384 -0
- package/dist/viewers/PdfViewerImpl.js.map +7 -0
- package/dist/viewers/VideoViewer.js +31 -0
- package/dist/viewers/VideoViewer.js.map +7 -0
- package/dist/viewers/XlsxViewer.js +102 -0
- package/dist/viewers/XlsxViewer.js.map +7 -0
- package/dist/viewers/index.cjs +79 -653
- package/dist/viewers/index.cjs.map +1 -1
- package/dist/viewers/index.d.ts +3 -1
- package/dist/viewers/index.js +60 -903
- package/dist/viewers/index.js.map +7 -1
- package/dist/viewers/page-scroll.js +59 -0
- package/dist/viewers/page-scroll.js.map +7 -0
- package/dist/viewers/pdf-viewer-constants.js +9 -0
- package/dist/viewers/pdf-viewer-constants.js.map +7 -0
- package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
- package/dist/viewers/pdfjs-polyfills.js.map +7 -0
- package/dist/viewers/selection-runs.js +38 -0
- package/dist/viewers/selection-runs.js.map +7 -0
- package/dist/viewers/usePageIntersectionObserver.js +68 -0
- package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
- package/dist/viewers/useProcessedChunks.js +58 -0
- package/dist/viewers/useProcessedChunks.js.map +7 -0
- package/dist/viewers/viewer-zoom.js +163 -0
- package/dist/viewers/viewer-zoom.js.map +7 -0
- package/dist/websocket/ArbiWebSocketProvider.js +207 -0
- package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
- package/dist/websocket/context.js +14 -0
- package/dist/websocket/context.js.map +7 -0
- package/dist/websocket/hooks.js +30 -0
- package/dist/websocket/hooks.js.map +7 -0
- package/dist/websocket/index.js +22 -0
- package/dist/websocket/index.js.map +7 -0
- package/dist/websocket/live-updates.js +38 -0
- package/dist/websocket/live-updates.js.map +7 -0
- package/dist/websocket/reconnect.js +13 -0
- package/dist/websocket/reconnect.js.map +7 -0
- package/dist/websocket/store.js +58 -0
- package/dist/websocket/store.js.map +7 -0
- package/dist/workforce.js +607 -0
- package/dist/workforce.js.map +7 -0
- package/dist/workspaces/access-request.js +35 -0
- package/dist/workspaces/access-request.js.map +7 -0
- package/dist/workspaces/archive.js +59 -0
- package/dist/workspaces/archive.js.map +7 -0
- package/dist/workspaces/current.js +20 -0
- package/dist/workspaces/current.js.map +7 -0
- package/dist/workspaces/delete-workspaces.js +15 -0
- package/dist/workspaces/delete-workspaces.js.map +7 -0
- package/dist/workspaces/export-archive.js +40 -0
- package/dist/workspaces/export-archive.js.map +7 -0
- package/dist/workspaces/index.js +99 -0
- package/dist/workspaces/index.js.map +7 -0
- package/dist/workspaces/settings.js +45 -0
- package/dist/workspaces/settings.js.map +7 -0
- package/dist/workspaces/shell-workspaces.js +49 -0
- package/dist/workspaces/shell-workspaces.js.map +7 -0
- package/dist/workspaces/switch.js +234 -0
- package/dist/workspaces/switch.js.map +7 -0
- package/dist/workspaces/transfer.js +170 -0
- package/dist/workspaces/transfer.js.map +7 -0
- package/dist/workspaces/useShellWorkspaces.js +86 -0
- package/dist/workspaces/useShellWorkspaces.js.map +7 -0
- package/dist/workspaces/workspace-users.js +65 -0
- package/dist/workspaces/workspace-users.js.map +7 -0
- package/package.json +12 -4
- package/dist/PdfViewer.d-bQH9yxFg.d.ts +0 -55
- package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
- package/dist/annotations/freeze/index.d.cts +0 -205
- package/dist/annotations/index.d.cts +0 -360
- package/dist/artifacts/index.d.cts +0 -476
- package/dist/artifacts/redline-core.d.cts +0 -39
- package/dist/bundle-YNOX7VIL.js +0 -5
- package/dist/bundle-YNOX7VIL.js.map +0 -1
- package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
- package/dist/calls/livekit/index.d.cts +0 -280
- package/dist/chunk-47CCGUWR.js.map +0 -1
- package/dist/chunk-6H3O63TQ.js.map +0 -1
- package/dist/chunk-74N436VK.js.map +0 -1
- package/dist/chunk-APZZQZ6P.js +0 -147
- package/dist/chunk-APZZQZ6P.js.map +0 -1
- package/dist/chunk-BF5KW5ZI.js.map +0 -1
- package/dist/chunk-CPQ3CU4B.js +0 -246
- package/dist/chunk-CPQ3CU4B.js.map +0 -1
- package/dist/chunk-DPYBZDJB.js.map +0 -1
- package/dist/chunk-DQALOQPI.js +0 -2766
- package/dist/chunk-DQALOQPI.js.map +0 -1
- package/dist/chunk-FZJMA32S.js +0 -1011
- package/dist/chunk-FZJMA32S.js.map +0 -1
- package/dist/chunk-H5M7FXLB.js +0 -2057
- package/dist/chunk-H5M7FXLB.js.map +0 -1
- package/dist/chunk-HDCRPPBW.js +0 -75
- package/dist/chunk-HDCRPPBW.js.map +0 -1
- package/dist/chunk-NIKPG4PW.js +0 -1128
- package/dist/chunk-NIKPG4PW.js.map +0 -1
- package/dist/chunk-NNAJLY6B.js +0 -4974
- package/dist/chunk-NNAJLY6B.js.map +0 -1
- package/dist/chunk-OYPKKHXY.js +0 -559
- package/dist/chunk-OYPKKHXY.js.map +0 -1
- package/dist/chunk-P6WLV5UY.js +0 -644
- package/dist/chunk-P6WLV5UY.js.map +0 -1
- package/dist/chunk-PTOP7OHG.js.map +0 -1
- package/dist/chunk-SN5YV6FF.js +0 -11
- package/dist/chunk-SN5YV6FF.js.map +0 -1
- package/dist/chunk-T3USOSVN.js.map +0 -1
- package/dist/chunk-T4CLW3DN.js +0 -2560
- package/dist/chunk-T4CLW3DN.js.map +0 -1
- package/dist/chunk-UW2SGTI5.js.map +0 -1
- package/dist/chunk-VSCU7K4V.js.map +0 -1
- package/dist/chunk-WL2Y2T47.js.map +0 -1
- package/dist/chunk-WUTL62MC.js.map +0 -1
- package/dist/chunk-Y3MTRA7D.js +0 -97
- package/dist/chunk-Y3MTRA7D.js.map +0 -1
- package/dist/chunk-YNNAJJ5Z.js.map +0 -1
- package/dist/document-tools/core.d.cts +0 -883
- package/dist/document-tools/index.d.cts +0 -90
- package/dist/index.d-BMhTH98a.d.cts +0 -2035
- package/dist/index.d-oR5FKZpJ.d.cts +0 -579
- package/dist/index.d.cts +0 -15893
- package/dist/model.d-CNtRWKVK.d.cts +0 -110
- package/dist/query-keys.d-ChgpJLPF.d.cts +0 -337
- package/dist/shell/index.d.cts +0 -6
- package/dist/store.d-GADDvC7w.d.cts +0 -35
- package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
- package/dist/ui/index.d.cts +0 -25
- package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
- package/dist/viewers/index.d.cts +0 -260
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/EntityPill.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * EntityPill Component\n *\n * Base component for pill-style entity displays. Provides consistent styling and\n * interaction patterns. At rest it is plain icon + text (no fill, no border); the\n * fill appears on hover, so a row of entities does not read as a row of buttons. Promoted verbatim from the ARBI app (import paths only\n * changed to resolve within the SDK).\n *\n * Pattern: [Icon] [Label] [Optional: secondary text] [MoreVertical when interactive]\n */\n\nimport React, { forwardRef } from 'react'\nimport { MoreVertical } from 'lucide-react'\nimport { cn } from '../lib/utils'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip'\n\n/**\n * The one size scale of the entity pills and avatars (`UserEntity`, `TagEntity`, `EntityPill`,\n * `DocumentEntity`, the call tiles...). Each takes the steps it draws: the pill itself has two,\n * `sm` for compact rows and `md` for a primary column or a tab header.\n */\nexport type EntitySize = 'xs' | 'sm' | 'md' | 'lg'\n\ninterface EntityPillProps {\n /** The icon element (Avatar, ShieldIcon, FileIcon, etc.) */\n icon: React.ReactNode\n /** Primary label text */\n label: string\n /** Optional secondary text (e.g., page notation \"p.1\") */\n secondaryText?: React.ReactNode\n\n // Styling\n /** `sm` (default) for compact rows, `md` for a primary column or a tab header. */\n size?: Extract<EntitySize, 'sm' | 'md'>\n /** Shape variant: 'pill' for rounded-full, 'rounded' for rounded-md */\n shape?: 'pill' | 'rounded'\n /** Additional CSS classes */\n className?: string\n style?: React.CSSProperties\n /** Max width for label truncation */\n labelMaxWidth?: string\n /** Extra classes on the label text (e.g. a heavier weight on a card face). */\n labelClassName?: string\n /** When true, the pill fills its container width (`flex w-full`) and the main\n * area flexes + truncates so the trailing control (\u22EF menu) pins to the right\n * edge \u2014 used by the documents table's Document column. Default: shrink-to-fit. */\n fullWidth?: boolean\n /** When true, render the pill with the active/\"viewing\" highlight \u2014 a solid\n * dark-navy background with light text, applied LAST so it wins over both the\n * default background and the interactive hover. */\n highlight?: boolean\n\n // Behavior\n /** Click handler for main area (icon + label) - primary action */\n onClick?: (e: React.MouseEvent) => void\n /** Click handler for icon only \u2014 when set, only the icon is clickable (not the label) */\n onIconClick?: (e: React.MouseEvent) => void\n /** Click handler for MoreVertical - opens popover/menu. When provided, shows MoreVertical icon */\n onMoreClick?: (e: React.MouseEvent) => void\n /** Custom trailing element (e.g. a \u22EF dropdown menu). Rendered in the same\n * trailing zone as MoreVertical, but as-is \u2014 so it stays outside the pill's\n * primary click area. Takes precedence over `onMoreClick`. */\n moreContent?: React.ReactNode\n /** Link URL - makes the main area an anchor tag */\n href?: string\n /** Whether the pill is disabled */\n disabled?: boolean\n\n // Tooltip\n /** Tooltip for main area (describes primary action, e.g., \"View document\") */\n tooltipContent?: React.ReactNode\n\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nexport const EntityPill = forwardRef<HTMLElement, EntityPillProps>(function EntityPill(\n {\n icon,\n label,\n secondaryText,\n size = 'sm',\n shape = 'rounded',\n className,\n style,\n labelMaxWidth = 'max-w-[320px]',\n labelClassName,\n fullWidth = false,\n highlight = false,\n onClick,\n onIconClick,\n onMoreClick,\n moreContent,\n href,\n disabled = false,\n tooltipContent,\n 'data-testid': testId,\n },\n ref\n) {\n const shapeClass = shape === 'pill' ? 'rounded-full' : 'rounded-md'\n\n // Size-based classes\n const sizeClasses = size === 'md' ? 'gap-1.5 px-1.5 py-0.5' : 'gap-1 px-1'\n const textSizeClass = size === 'md' ? 'text-base' : 'text-sm'\n\n const baseClasses = cn(\n 'group/pill items-center',\n fullWidth ? 'flex w-full' : 'inline-flex',\n sizeClasses,\n shapeClass,\n 'border border-transparent',\n 'transition-colors',\n className\n )\n\n // Coarse pointers: an invisible 44px-tall hit area (the pill itself stays compact).\n const interactiveClasses =\n \"relative cursor-pointer hover:bg-muted pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:-inset-y-3 pointer-coarse:after:content-['']\"\n const disabledClasses = 'cursor-default opacity-60'\n const highlightClasses =\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n\n // Main content (icon + label + secondary text)\n const mainContent = (\n <>\n {onIconClick ? (\n <span\n role=\"button\"\n tabIndex={0}\n className=\"flex-shrink-0 cursor-pointer hover:opacity-70 transition-opacity\"\n onClick={(e) => {\n e.stopPropagation()\n onIconClick(e)\n }}\n >\n {icon}\n </span>\n ) : (\n icon\n )}\n <span\n className={cn(\n textSizeClass,\n 'font-medium truncate leading-tight min-w-0',\n labelMaxWidth,\n labelClassName\n )}\n >\n {label}\n </span>\n {secondaryText && (\n <span className=\"text-xs text-muted-foreground flex-shrink-0 leading-none\">\n {secondaryText}\n </span>\n )}\n </>\n )\n\n // Helper: wrap any content in a Tooltip (no asChild \u2014 TooltipTrigger renders its own button)\n const tooltipWrap = (\n content: React.ReactNode,\n tip: React.ReactNode,\n side: 'top' | 'bottom' | 'left' | 'right' = 'bottom',\n triggerClassName?: string,\n triggerProps?: Record<string, unknown>\n ) => (\n <Tooltip>\n <TooltipTrigger\n onFocusCapture={(e) => e.stopPropagation()}\n className={triggerClassName}\n {...triggerProps}\n >\n {content}\n </TooltipTrigger>\n <TooltipContent side={side} className=\"p-2\">\n {tip}\n </TooltipContent>\n </Tooltip>\n )\n\n // With a separate \"more\" control the touch hit area must grow on the MAIN area only: an overlay on\n // the whole pill would sit above both inner buttons and swallow their taps.\n const mainAreaClass = cn('inline-flex items-center gap-1', fullWidth && 'min-w-0 flex-1')\n const mainAreaTouchClass = cn(\n mainAreaClass,\n (onClick || href) &&\n !disabled &&\n \"relative pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:-inset-y-3 pointer-coarse:after:content-['']\"\n )\n\n if (onMoreClick || moreContent) {\n let mainArea: React.ReactNode\n if (tooltipContent) {\n mainArea = tooltipWrap(\n mainContent,\n tooltipContent,\n 'bottom',\n cn(mainAreaTouchClass, disabled && 'opacity-60'),\n {\n type: 'button',\n onClick: href ? onClick : disabled ? undefined : onClick,\n disabled: disabled || undefined,\n }\n )\n } else if (href) {\n mainArea = (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={mainAreaTouchClass}\n onClick={onClick}\n >\n {mainContent}\n </a>\n )\n } else if (onClick) {\n mainArea = (\n <button\n type=\"button\"\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n className={cn(\n \"relative inline-flex items-center gap-1 pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:-inset-y-3 pointer-coarse:after:content-['']\",\n disabled && 'opacity-60'\n )}\n >\n {mainContent}\n </button>\n )\n } else {\n mainArea = <span className={mainAreaTouchClass}>{mainContent}</span>\n }\n\n const moreArea = moreContent ? (\n <span className=\"flex-shrink-0 leading-none\">{moreContent}</span>\n ) : (\n tooltipWrap(\n <MoreVertical className=\"w-3.5 h-3.5\" />,\n 'Click for more',\n 'bottom',\n 'flex-shrink-0 leading-none text-muted-foreground hover:text-foreground',\n {\n type: 'button',\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n onMoreClick?.(e)\n },\n }\n )\n )\n\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={cn(\n baseClasses,\n (onClick || href) && !disabled && 'cursor-pointer hover:bg-muted',\n highlight && highlightClasses\n )}\n style={style}\n data-testid={testId}\n >\n {mainArea}\n {moreArea}\n </span>\n )\n }\n\n if (tooltipContent) {\n if (href) {\n return tooltipWrap(\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={mainAreaClass}\n onClick={onClick}\n >\n {mainContent}\n </a>,\n tooltipContent,\n 'bottom',\n cn(baseClasses, interactiveClasses),\n { 'data-testid': testId, style }\n )\n }\n\n return tooltipWrap(\n mainContent,\n tooltipContent,\n 'bottom',\n cn(\n baseClasses,\n onClick && !disabled ? interactiveClasses : '',\n disabled ? disabledClasses : '',\n highlight && highlightClasses\n ),\n {\n type: 'button',\n ref: ref as React.Ref<HTMLButtonElement>,\n onClick: onClick && !disabled ? onClick : undefined,\n disabled: disabled || undefined,\n 'data-testid': testId,\n style,\n }\n )\n }\n\n if (href) {\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(baseClasses, interactiveClasses)}\n style={style}\n data-testid={testId}\n onClick={onClick}\n >\n {mainContent}\n </a>\n )\n }\n\n if (onClick) {\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n className={cn(\n baseClasses,\n disabled ? disabledClasses : interactiveClasses,\n highlight && highlightClasses\n )}\n style={style}\n data-testid={testId}\n >\n {mainContent}\n </button>\n )\n }\n\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={cn(baseClasses, highlight && highlightClasses)}\n style={style}\n data-testid={testId}\n >\n {mainContent}\n </span>\n )\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["EntityPill"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CreditCard } from "lucide-react";
|
|
3
|
+
import { EntityPill } from "./EntityPill.js";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
const VARIANT_STYLES = {
|
|
6
|
+
"mine-paid": {
|
|
7
|
+
pill: "text-primary",
|
|
8
|
+
icon: "text-primary"
|
|
9
|
+
},
|
|
10
|
+
other: {
|
|
11
|
+
pill: "text-secondary",
|
|
12
|
+
icon: "text-secondary"
|
|
13
|
+
},
|
|
14
|
+
"mine-free": {
|
|
15
|
+
pill: "text-muted-foreground",
|
|
16
|
+
icon: "text-muted-foreground"
|
|
17
|
+
},
|
|
18
|
+
common: {
|
|
19
|
+
pill: "",
|
|
20
|
+
icon: "text-muted-foreground"
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
function resolveVariant(relation, paid, hasCollaborators) {
|
|
24
|
+
if (relation === "common") return "common";
|
|
25
|
+
if (relation === "other") return "other";
|
|
26
|
+
if (relation === "mine") return paid ? "mine-paid" : "mine-free";
|
|
27
|
+
if (paid) return hasCollaborators ? "other" : "mine-paid";
|
|
28
|
+
return "mine-free";
|
|
29
|
+
}
|
|
30
|
+
function ProjectEntity({
|
|
31
|
+
name,
|
|
32
|
+
label,
|
|
33
|
+
icon,
|
|
34
|
+
subscription = "none",
|
|
35
|
+
hasCollaborators = false,
|
|
36
|
+
className,
|
|
37
|
+
onClick,
|
|
38
|
+
relation,
|
|
39
|
+
isPaid,
|
|
40
|
+
tooltipContent
|
|
41
|
+
}) {
|
|
42
|
+
const paid = isPaid ?? (subscription === "active" || subscription === "past_due" || subscription === "dev");
|
|
43
|
+
const variant = resolveVariant(relation, paid, hasCollaborators);
|
|
44
|
+
const { pill, icon: iconClass } = VARIANT_STYLES[variant];
|
|
45
|
+
const iconNode = icon ?? /* @__PURE__ */ jsx(CreditCard, { className: cn("h-3.5 w-3.5", iconClass) });
|
|
46
|
+
return /* @__PURE__ */ jsx(
|
|
47
|
+
EntityPill,
|
|
48
|
+
{
|
|
49
|
+
icon: iconNode,
|
|
50
|
+
label: label ?? name,
|
|
51
|
+
shape: "rounded",
|
|
52
|
+
className: cn(pill, className),
|
|
53
|
+
onClick,
|
|
54
|
+
tooltipContent
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
ProjectEntity
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=ProjectEntity.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/ProjectEntity.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * ProjectEntity Component\n *\n * Fully-rounded pill for a \"project\" (a.k.a. a \"matter\" in some consumer apps).\n * The viewer's relationship to the project drives a TINTED (soft-fill) colour\n * so the kinds read at a glance without shouting:\n * - your paid project \u2192 primary tint\n * - someone else's \u2192 secondary tint\n * - your free project \u2192 grey tint\n * \"Common\" keeps the neutral muted pill.\n *\n * Promoted from the ARBI app and DECOUPLED: no store/stripe deps. The icon\n * defaults to the `CreditCard` glyph and can be overridden via `icon`, and\n * the display text via `label` (falls back to `name`) so consumers can relabel\n * a \"project\" as a \"matter\", \"case\", etc.\n */\n\nimport React from 'react'\nimport { CreditCard } from 'lucide-react'\nimport { EntityPill } from './EntityPill'\nimport { cn } from '../lib/utils'\n\nexport type ProjectRelation = 'mine' | 'other' | 'common'\n\nexport interface ProjectEntityProps {\n name: string\n /** Display text override (defaults to `name`) \u2014 lets a consumer relabel. */\n label?: string\n /** Icon override (defaults to the CreditCard glyph). */\n icon?: React.ReactNode\n subscription?: string\n hasCollaborators?: boolean\n className?: string\n onClick?: (e: React.MouseEvent) => void\n /** Viewer's relationship to the project \u2014 drives the inverted pill colour. */\n relation?: ProjectRelation\n /** Whether the given `subscription` should be treated as paid. When omitted,\n * it's inferred from the `subscription` value ('active' | 'past_due' | 'dev'). */\n isPaid?: boolean\n /** Hover tooltip. */\n tooltipContent?: React.ReactNode\n}\n\ntype PillVariant = 'mine-paid' | 'mine-free' | 'other' | 'common'\n\n// Colour lives in the text and icon only (paid / shared / free); there is no fill or\n// border at rest, so the label stays quiet. The hover fill comes from EntityPill.\nconst VARIANT_STYLES: Record<PillVariant, { pill: string; icon: string }> = {\n 'mine-paid': {\n pill: 'text-primary',\n icon: 'text-primary',\n },\n other: {\n pill: 'text-secondary',\n icon: 'text-secondary',\n },\n 'mine-free': {\n pill: 'text-muted-foreground',\n icon: 'text-muted-foreground',\n },\n common: {\n pill: '',\n icon: 'text-muted-foreground',\n },\n}\n\nfunction resolveVariant(\n relation: ProjectRelation | undefined,\n paid: boolean,\n hasCollaborators: boolean\n): PillVariant {\n if (relation === 'common') return 'common'\n if (relation === 'other') return 'other'\n if (relation === 'mine') return paid ? 'mine-paid' : 'mine-free'\n // Legacy, subscription-driven callers (no relation given).\n if (paid) return hasCollaborators ? 'other' : 'mine-paid'\n return 'mine-free'\n}\n\nexport function ProjectEntity({\n name,\n label,\n icon,\n subscription = 'none',\n hasCollaborators = false,\n className,\n onClick,\n relation,\n isPaid,\n tooltipContent,\n}: ProjectEntityProps) {\n const paid =\n isPaid ?? (subscription === 'active' || subscription === 'past_due' || subscription === 'dev')\n const variant = resolveVariant(relation, paid, hasCollaborators)\n const { pill, icon: iconClass } = VARIANT_STYLES[variant]\n\n const iconNode = icon ?? <CreditCard className={cn('h-3.5 w-3.5', iconClass)} />\n\n return (\n <EntityPill\n icon={iconNode}\n label={label ?? name}\n shape=\"rounded\"\n className={cn(pill, className)}\n onClick={onClick}\n tooltipContent={tooltipContent}\n />\n )\n}\n"],
|
|
5
|
+
"mappings": "AAgG2B;AA9E3B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AA2BnB,MAAM,iBAAsE;AAAA,EAC1E,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,eACP,UACA,MACA,kBACa;AACb,MAAI,aAAa,SAAU,QAAO;AAClC,MAAI,aAAa,QAAS,QAAO;AACjC,MAAI,aAAa,OAAQ,QAAO,OAAO,cAAc;AAErD,MAAI,KAAM,QAAO,mBAAmB,UAAU;AAC9C,SAAO;AACT;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,QAAM,OACJ,WAAW,iBAAiB,YAAY,iBAAiB,cAAc,iBAAiB;AAC1F,QAAM,UAAU,eAAe,UAAU,MAAM,gBAAgB;AAC/D,QAAM,EAAE,MAAM,MAAM,UAAU,IAAI,eAAe,OAAO;AAExD,QAAM,WAAW,QAAQ,oBAAC,cAAW,WAAW,GAAG,eAAe,SAAS,GAAG;AAE9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,SAAS;AAAA,MAChB,OAAM;AAAA,MACN,WAAW,GAAG,MAAM,SAAS;AAAA,MAC7B;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
const ShieldIcon = ({
|
|
3
|
+
char,
|
|
4
|
+
size = 24,
|
|
5
|
+
className = "",
|
|
6
|
+
workspaceColor,
|
|
7
|
+
isSelected = false,
|
|
8
|
+
...props
|
|
9
|
+
}) => {
|
|
10
|
+
const fillColor = workspaceColor && workspaceColor !== "hsl(var(--primary))" ? workspaceColor : "transparent";
|
|
11
|
+
const strokeColor = isSelected ? "white" : workspaceColor && workspaceColor !== "hsl(var(--primary))" ? workspaceColor : "currentColor";
|
|
12
|
+
return /* @__PURE__ */ jsxs(
|
|
13
|
+
"svg",
|
|
14
|
+
{
|
|
15
|
+
width: size,
|
|
16
|
+
height: size,
|
|
17
|
+
viewBox: "0 0 24 24",
|
|
18
|
+
fill: fillColor,
|
|
19
|
+
stroke: strokeColor,
|
|
20
|
+
strokeWidth: "2",
|
|
21
|
+
strokeLinecap: "round",
|
|
22
|
+
strokeLinejoin: "round",
|
|
23
|
+
className: `lucide lucide-square ${className}`,
|
|
24
|
+
...props,
|
|
25
|
+
children: [
|
|
26
|
+
/* @__PURE__ */ jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
|
|
27
|
+
char && /* @__PURE__ */ jsx(
|
|
28
|
+
"text",
|
|
29
|
+
{
|
|
30
|
+
x: "12",
|
|
31
|
+
y: "12.5",
|
|
32
|
+
textAnchor: "middle",
|
|
33
|
+
fontSize: "9",
|
|
34
|
+
fontFamily: "sans-serif",
|
|
35
|
+
fontWeight: "300",
|
|
36
|
+
dominantBaseline: "middle",
|
|
37
|
+
stroke: workspaceColor ? "white" : "currentColor",
|
|
38
|
+
strokeWidth: "0.8",
|
|
39
|
+
children: char.toUpperCase()
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
ShieldIcon
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=ShieldIcon.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/ShieldIcon.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\n\nexport type ShieldIconProps = {\n char?: string\n size?: number\n className?: string\n workspaceColor?: string\n isSelected?: boolean\n} & React.SVGAttributes<SVGElement>\n\nexport const ShieldIcon: React.FC<ShieldIconProps> = ({\n char,\n size = 24,\n className = '',\n workspaceColor,\n isSelected = false,\n ...props\n}) => {\n // workspaceColor is already a hex value from getWorkspaceColor()\n // which uses the central entity color system\n const fillColor =\n workspaceColor && workspaceColor !== 'hsl(var(--primary))' ? workspaceColor : 'transparent'\n const strokeColor = isSelected\n ? 'white'\n : workspaceColor && workspaceColor !== 'hsl(var(--primary))'\n ? workspaceColor\n : 'currentColor'\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={fillColor}\n stroke={strokeColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={`lucide lucide-square ${className}`}\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n {char && (\n <text\n x=\"12\"\n y=\"12.5\"\n textAnchor=\"middle\"\n fontSize=\"9\"\n fontFamily=\"sans-serif\"\n fontWeight=\"300\"\n dominantBaseline=\"middle\"\n stroke={workspaceColor ? 'white' : 'currentColor'}\n strokeWidth=\"0.8\"\n >\n {char.toUpperCase()}\n </text>\n )}\n </svg>\n )\n}\n"],
|
|
5
|
+
"mappings": "AA6BI,SAYE,KAZF;AAnBG,MAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,MAAM;AAGJ,QAAM,YACJ,kBAAkB,mBAAmB,wBAAwB,iBAAiB;AAChF,QAAM,cAAc,aAChB,UACA,kBAAkB,mBAAmB,wBACnC,iBACA;AAEN,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,WAAW,wBAAwB,SAAS;AAAA,MAC3C,GAAG;AAAA,MAEJ;AAAA,4BAAC,UAAK,OAAM,MAAK,QAAO,MAAK,GAAE,KAAI,GAAE,KAAI,IAAG,KAAI;AAAA,QAC/C,QACC;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,GAAE;AAAA,YACF,YAAW;AAAA,YACX,UAAS;AAAA,YACT,YAAW;AAAA,YACX,YAAW;AAAA,YACX,kBAAiB;AAAA,YACjB,QAAQ,iBAAiB,UAAU;AAAA,YACnC,aAAY;AAAA,YAEX,eAAK,YAAY;AAAA;AAAA,QACpB;AAAA;AAAA;AAAA,EAEJ;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { EntityPill } from "./EntityPill.js";
|
|
3
|
+
import { getEntityColor } from "./colors.js";
|
|
4
|
+
import { Badge } from "../ui/badge.js";
|
|
5
|
+
import { Check } from "lucide-react";
|
|
6
|
+
import { getTagTypeLabel } from "./tag-types.js";
|
|
7
|
+
function TagEntity({
|
|
8
|
+
tag,
|
|
9
|
+
size = "md",
|
|
10
|
+
checked = true,
|
|
11
|
+
onCheckedChange,
|
|
12
|
+
className = "",
|
|
13
|
+
wrap = false,
|
|
14
|
+
onClick,
|
|
15
|
+
showTooltip = true,
|
|
16
|
+
tooltipContent
|
|
17
|
+
}) {
|
|
18
|
+
const tagType = tag.tag_type?.type ?? "text";
|
|
19
|
+
const iconSize = size === "sm" ? 12 : size === "md" ? 14 : 16;
|
|
20
|
+
const tagColor = tag.color ?? getEntityColor(tag.external_id, "medium");
|
|
21
|
+
const iconElement = onCheckedChange ? /* @__PURE__ */ jsx(
|
|
22
|
+
"input",
|
|
23
|
+
{
|
|
24
|
+
type: "checkbox",
|
|
25
|
+
"aria-label": tag.name,
|
|
26
|
+
checked,
|
|
27
|
+
onClick: (e) => e.stopPropagation(),
|
|
28
|
+
onChange: (e) => onCheckedChange(e.target.checked),
|
|
29
|
+
className: "shrink-0 cursor-pointer",
|
|
30
|
+
style: { accentColor: tagColor, width: iconSize, height: iconSize }
|
|
31
|
+
}
|
|
32
|
+
) : /* @__PURE__ */ jsx(
|
|
33
|
+
"span",
|
|
34
|
+
{
|
|
35
|
+
className: "flex shrink-0 items-center justify-center rounded-sm border",
|
|
36
|
+
style: {
|
|
37
|
+
width: iconSize,
|
|
38
|
+
height: iconSize,
|
|
39
|
+
borderColor: tagColor,
|
|
40
|
+
backgroundColor: checked ? tagColor : void 0
|
|
41
|
+
},
|
|
42
|
+
"aria-hidden": "true",
|
|
43
|
+
children: checked && /* @__PURE__ */ jsx(Check, { size: iconSize - 2, color: "#ffffff", strokeWidth: 3 })
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
const pillSize = size === "lg" ? "md" : "sm";
|
|
47
|
+
const defaultTooltip = /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5 text-sm", children: [
|
|
48
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
49
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
50
|
+
/* @__PURE__ */ jsx("span", { children: getTagTypeLabel(tagType) })
|
|
51
|
+
] }),
|
|
52
|
+
tag.doctag_count != null && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
53
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Documents:" }),
|
|
54
|
+
/* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "h-5 min-w-[20px] justify-center", children: tag.doctag_count ?? 0 })
|
|
55
|
+
] }),
|
|
56
|
+
tag.shared != null && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: tag.shared ? "Shared" : "Private" }) })
|
|
57
|
+
] }) });
|
|
58
|
+
const resolvedTooltip = showTooltip ? tooltipContent ?? defaultTooltip : void 0;
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
EntityPill,
|
|
61
|
+
{
|
|
62
|
+
icon: iconElement,
|
|
63
|
+
label: tag.name,
|
|
64
|
+
size: pillSize,
|
|
65
|
+
shape: "pill",
|
|
66
|
+
style: { borderColor: tagColor },
|
|
67
|
+
labelMaxWidth: wrap ? "max-w-full" : "max-w-[180px]",
|
|
68
|
+
labelClassName: wrap ? "whitespace-normal! line-clamp-3 break-words text-left" : void 0,
|
|
69
|
+
tooltipContent: onCheckedChange ? void 0 : resolvedTooltip,
|
|
70
|
+
onClick: onCheckedChange ? void 0 : onClick,
|
|
71
|
+
className: `max-w-full px-2! py-0.5! ${className}`,
|
|
72
|
+
"data-testid": `tag-entity-${tag.external_id}`
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
TagEntity
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=TagEntity.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/TagEntity.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * TagEntity Component\n *\n * All tag identity displays use this component: a fully rounded, outlined label from the\n * shared sixteen-color entity-ID palette. Never substitute a plain-text name.\n * Single source of truth for tag visual appearance, promoted from the ARBI app\n * and DECOUPLED from the app store/API. It renders purely from the `tag` prop \u2014\n * the app-only bits (creator/updater lookup, visibility toggle, live doctag\n * count from the query cache) are dropped; pass `doctagCount`/`shared` if you\n * want them shown in the built-in tooltip, or inject a fully custom `tooltipContent`.\n */\n\nimport React from 'react'\nimport { EntityPill, type EntitySize } from './EntityPill'\nimport { getEntityColor } from './colors'\nimport { Badge } from '../ui/badge'\nimport { Check } from 'lucide-react'\nimport { getTagTypeLabel } from './tag-types'\n\n/** Minimal, decoupled tag shape the pill needs. */\nexport interface TagLike {\n external_id: string\n name: string\n /** Field value type, shown in the tooltip; the label identity icon stays consistent. */\n tag_type?: { type: string } | null\n /** Optional explicit color; when omitted it's derived from `external_id`. */\n color?: string\n /** Optional document count shown in the tooltip. */\n doctag_count?: number | null\n /** Optional shared/private flag shown in the tooltip. */\n shared?: boolean | null\n}\n\nexport interface TagEntityProps {\n tag: TagLike\n size?: Exclude<EntitySize, 'xs'>\n checked?: boolean\n onCheckedChange?: (checked: boolean) => void\n className?: string\n /** Wrap long tag names inside a table cell while retaining the pill. */\n wrap?: boolean\n onClick?: (e: React.MouseEvent) => void\n /** Whether to show a tooltip (default: true) */\n showTooltip?: boolean\n /** Injected tooltip override. When provided (and `showTooltip` is not false) it\n * replaces the built-in tooltip \u2014 used by the monolith to render its rich,\n * store-coupled tooltip (fresh count, creator/updater, visibility toggle). */\n tooltipContent?: React.ReactNode\n}\n\nexport function TagEntity({\n tag,\n size = 'md',\n checked = true,\n onCheckedChange,\n className = '',\n wrap = false,\n onClick,\n showTooltip = true,\n tooltipContent,\n}: TagEntityProps) {\n const tagType = tag.tag_type?.type ?? 'text'\n const iconSize = size === 'sm' ? 12 : size === 'md' ? 14 : 16\n\n const tagColor = tag.color ?? getEntityColor(tag.external_id, 'medium')\n const iconElement = onCheckedChange ? (\n <input\n type=\"checkbox\"\n aria-label={tag.name}\n checked={checked}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => onCheckedChange(e.target.checked)}\n className=\"shrink-0 cursor-pointer\"\n style={{ accentColor: tagColor, width: iconSize, height: iconSize }}\n />\n ) : (\n <span\n className=\"flex shrink-0 items-center justify-center rounded-sm border\"\n style={{\n width: iconSize,\n height: iconSize,\n borderColor: tagColor,\n backgroundColor: checked ? tagColor : undefined,\n }}\n aria-hidden=\"true\"\n >\n {checked && <Check size={iconSize - 2} color=\"#ffffff\" strokeWidth={3} />}\n </span>\n )\n\n const pillSize = size === 'lg' ? 'md' : 'sm'\n\n const defaultTooltip = (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-col gap-1.5 text-sm\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Type:</span>\n <span>{getTagTypeLabel(tagType)}</span>\n </div>\n\n {tag.doctag_count != null && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Documents:</span>\n <Badge variant=\"secondary\" className=\"h-5 min-w-[20px] justify-center\">\n {tag.doctag_count ?? 0}\n </Badge>\n </div>\n )}\n\n {tag.shared != null && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">{tag.shared ? 'Shared' : 'Private'}</span>\n </div>\n )}\n </div>\n </div>\n )\n\n const resolvedTooltip = showTooltip ? (tooltipContent ?? defaultTooltip) : undefined\n\n return (\n <EntityPill\n icon={iconElement}\n label={tag.name}\n size={pillSize}\n shape=\"pill\"\n style={{ borderColor: tagColor }}\n labelMaxWidth={wrap ? 'max-w-full' : 'max-w-[180px]'}\n labelClassName={wrap ? 'whitespace-normal! line-clamp-3 break-words text-left' : undefined}\n tooltipContent={onCheckedChange ? undefined : resolvedTooltip}\n onClick={onCheckedChange ? undefined : onClick}\n className={`max-w-full px-2! py-0.5! ${className}`}\n data-testid={`tag-entity-${tag.external_id}`}\n />\n )\n}\n"],
|
|
5
|
+
"mappings": "AAkEI,cA6BI,YA7BJ;AArDJ,SAAS,kBAAmC;AAC5C,SAAS,sBAAsB;AAC/B,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAiCzB,SAAS,UAAU;AAAA,EACxB;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAAmB;AACjB,QAAM,UAAU,IAAI,UAAU,QAAQ;AACtC,QAAM,WAAW,SAAS,OAAO,KAAK,SAAS,OAAO,KAAK;AAE3D,QAAM,WAAW,IAAI,SAAS,eAAe,IAAI,aAAa,QAAQ;AACtE,QAAM,cAAc,kBAClB;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY,IAAI;AAAA,MAChB;AAAA,MACA,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,MAClC,UAAU,CAAC,MAAM,gBAAgB,EAAE,OAAO,OAAO;AAAA,MACjD,WAAU;AAAA,MACV,OAAO,EAAE,aAAa,UAAU,OAAO,UAAU,QAAQ,SAAS;AAAA;AAAA,EACpE,IAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,iBAAiB,UAAU,WAAW;AAAA,MACxC;AAAA,MACA,eAAY;AAAA,MAEX,qBAAW,oBAAC,SAAM,MAAM,WAAW,GAAG,OAAM,WAAU,aAAa,GAAG;AAAA;AAAA,EACzE;AAGF,QAAM,WAAW,SAAS,OAAO,OAAO;AAExC,QAAM,iBACJ,oBAAC,SAAI,WAAU,uBACb,+BAAC,SAAI,WAAU,iCACb;AAAA,yBAAC,SAAI,WAAU,2BACb;AAAA,0BAAC,UAAK,WAAU,yBAAwB,mBAAK;AAAA,MAC7C,oBAAC,UAAM,0BAAgB,OAAO,GAAE;AAAA,OAClC;AAAA,IAEC,IAAI,gBAAgB,QACnB,qBAAC,SAAI,WAAU,2BACb;AAAA,0BAAC,UAAK,WAAU,yBAAwB,wBAAU;AAAA,MAClD,oBAAC,SAAM,SAAQ,aAAY,WAAU,mCAClC,cAAI,gBAAgB,GACvB;AAAA,OACF;AAAA,IAGD,IAAI,UAAU,QACb,oBAAC,SAAI,WAAU,2BACb,8BAAC,UAAK,WAAU,yBAAyB,cAAI,SAAS,WAAW,WAAU,GAC7E;AAAA,KAEJ,GACF;AAGF,QAAM,kBAAkB,cAAe,kBAAkB,iBAAkB;AAE3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,IAAI;AAAA,MACX,MAAM;AAAA,MACN,OAAM;AAAA,MACN,OAAO,EAAE,aAAa,SAAS;AAAA,MAC/B,eAAe,OAAO,eAAe;AAAA,MACrC,gBAAgB,OAAO,0DAA0D;AAAA,MACjF,gBAAgB,kBAAkB,SAAY;AAAA,MAC9C,SAAS,kBAAkB,SAAY;AAAA,MACvC,WAAW,4BAA4B,SAAS;AAAA,MAChD,eAAa,cAAc,IAAI,WAAW;AAAA;AAAA,EAC5C;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { MessageSquareLock, MessageSquareShare } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
function ThreadVisibilityIcon({
|
|
5
|
+
shared,
|
|
6
|
+
className,
|
|
7
|
+
...props
|
|
8
|
+
}) {
|
|
9
|
+
const Icon = shared ? MessageSquareShare : MessageSquareLock;
|
|
10
|
+
return /* @__PURE__ */ jsx(Icon, { ...props, className: cn(shared ? "text-secondary" : "text-primary", className) });
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
ThreadVisibilityIcon
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=ThreadVisibilityIcon.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/ThreadVisibilityIcon.tsx"],
|
|
4
|
+
"sourcesContent": ["import { MessageSquareLock, MessageSquareShare, type LucideProps } from 'lucide-react'\nimport { cn } from '../lib/utils'\n\n/** Thread visibility uses both shape and color across entity labels and grids. */\nexport function ThreadVisibilityIcon({\n shared,\n className,\n ...props\n}: LucideProps & { shared: boolean }) {\n const Icon = shared ? MessageSquareShare : MessageSquareLock\n return <Icon {...props} className={cn(shared ? 'text-secondary' : 'text-primary', className)} />\n}\n"],
|
|
5
|
+
"mappings": "AAUS;AAVT,SAAS,mBAAmB,0BAA4C;AACxE,SAAS,UAAU;AAGZ,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,QAAM,OAAO,SAAS,qBAAqB;AAC3C,SAAO,oBAAC,QAAM,GAAG,OAAO,WAAW,GAAG,SAAS,mBAAmB,gBAAgB,SAAS,GAAG;AAChG;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { MessageCircleMore } from "lucide-react";
|
|
4
|
+
import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
|
|
5
|
+
import { ArbiBotHeadIcon } from "../icons/ArbiBotHeadIcon.js";
|
|
6
|
+
import { VerifiedBadge } from "./VerifiedBadge.js";
|
|
7
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip.js";
|
|
8
|
+
import { cn } from "../lib/utils.js";
|
|
9
|
+
const sizeClasses = {
|
|
10
|
+
xs: "h-5 w-5",
|
|
11
|
+
sm: "h-6 w-6",
|
|
12
|
+
md: "h-8 w-8",
|
|
13
|
+
lg: "h-10 w-10"
|
|
14
|
+
};
|
|
15
|
+
const textSizeClasses = {
|
|
16
|
+
xs: "text-xs",
|
|
17
|
+
sm: "text-xs",
|
|
18
|
+
md: "text-xs",
|
|
19
|
+
lg: "text-sm"
|
|
20
|
+
};
|
|
21
|
+
const presenceDotClasses = {
|
|
22
|
+
xs: "w-2 h-2 border",
|
|
23
|
+
sm: "w-2.5 h-2.5 border",
|
|
24
|
+
md: "w-3 h-3 border-2",
|
|
25
|
+
lg: "w-3.5 h-3.5 border-2"
|
|
26
|
+
};
|
|
27
|
+
const presencePositionClasses = {
|
|
28
|
+
xs: "-right-1 bottom-0",
|
|
29
|
+
sm: "-right-1 bottom-0",
|
|
30
|
+
md: "-right-1.5 -bottom-0.5",
|
|
31
|
+
lg: "-right-1.5 -bottom-0.5"
|
|
32
|
+
};
|
|
33
|
+
const PRESENCE_LABELS = {
|
|
34
|
+
connected: "Online",
|
|
35
|
+
connecting: "Connecting",
|
|
36
|
+
disconnected: "Offline",
|
|
37
|
+
error: "Connection problem",
|
|
38
|
+
hidden: "Status hidden"
|
|
39
|
+
};
|
|
40
|
+
const presenceColorClasses = {
|
|
41
|
+
connected: "bg-status-online",
|
|
42
|
+
connecting: "bg-status-connecting",
|
|
43
|
+
disconnected: "bg-status-away",
|
|
44
|
+
error: "bg-status-busy",
|
|
45
|
+
hidden: "bg-status-offline"
|
|
46
|
+
};
|
|
47
|
+
const UserEntity = memo(function UserEntity2({
|
|
48
|
+
size = "md",
|
|
49
|
+
variant = "pill",
|
|
50
|
+
className,
|
|
51
|
+
showTooltip = true,
|
|
52
|
+
interactive = true,
|
|
53
|
+
initials = "",
|
|
54
|
+
displayName = "",
|
|
55
|
+
picture,
|
|
56
|
+
avatarImageClassName,
|
|
57
|
+
colorClass = "",
|
|
58
|
+
isAgent = false,
|
|
59
|
+
isVerified = false,
|
|
60
|
+
agentStyle,
|
|
61
|
+
avatarStyle,
|
|
62
|
+
isMe = false,
|
|
63
|
+
displayStatus,
|
|
64
|
+
onClick,
|
|
65
|
+
tooltipContent,
|
|
66
|
+
empty = false
|
|
67
|
+
}) {
|
|
68
|
+
if (empty) {
|
|
69
|
+
return /* @__PURE__ */ jsx(
|
|
70
|
+
Avatar,
|
|
71
|
+
{
|
|
72
|
+
className: cn(sizeClasses[size], "border border-border", className),
|
|
73
|
+
"data-testid": "user-entity",
|
|
74
|
+
children: /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-status-empty text-muted-foreground text-xs font-semibold", children: "?" })
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
const agentBadge = isAgent ? /* @__PURE__ */ jsx(ArbiBotHeadIcon, { className: "w-3.5 h-3.5 text-muted-foreground" }) : void 0;
|
|
79
|
+
const canMessage = interactive && !isMe && !isAgent;
|
|
80
|
+
const surfaceStyle = avatarStyle ?? agentStyle;
|
|
81
|
+
const avatarCore = /* @__PURE__ */ jsxs(
|
|
82
|
+
Avatar,
|
|
83
|
+
{
|
|
84
|
+
className: cn(
|
|
85
|
+
sizeClasses[size],
|
|
86
|
+
isAgent ? "rounded-full border-2 border-dashed" : "border border-white"
|
|
87
|
+
),
|
|
88
|
+
style: surfaceStyle,
|
|
89
|
+
"data-testid": "user-entity",
|
|
90
|
+
children: [
|
|
91
|
+
picture && /* @__PURE__ */ jsx(AvatarImage, { src: picture, alt: initials, className: avatarImageClassName }),
|
|
92
|
+
/* @__PURE__ */ jsx(
|
|
93
|
+
AvatarFallback,
|
|
94
|
+
{
|
|
95
|
+
className: cn(
|
|
96
|
+
textSizeClasses[size],
|
|
97
|
+
"font-semibold leading-none",
|
|
98
|
+
isAgent ? "rounded-full bg-transparent" : `text-white ${colorClass}`
|
|
99
|
+
),
|
|
100
|
+
style: surfaceStyle,
|
|
101
|
+
children: initials
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
const statusDot = displayStatus ? /* @__PURE__ */ jsx(
|
|
108
|
+
"span",
|
|
109
|
+
{
|
|
110
|
+
className: cn(
|
|
111
|
+
"absolute rounded-full border-white",
|
|
112
|
+
presenceDotClasses[size],
|
|
113
|
+
presencePositionClasses[size],
|
|
114
|
+
presenceColorClasses[displayStatus]
|
|
115
|
+
),
|
|
116
|
+
"data-testid": "user-entity-presence",
|
|
117
|
+
role: "img",
|
|
118
|
+
"aria-label": PRESENCE_LABELS[displayStatus],
|
|
119
|
+
title: PRESENCE_LABELS[displayStatus]
|
|
120
|
+
}
|
|
121
|
+
) : null;
|
|
122
|
+
const avatarElement = statusDot ? /* @__PURE__ */ jsxs(
|
|
123
|
+
"div",
|
|
124
|
+
{
|
|
125
|
+
className: cn(
|
|
126
|
+
"relative inline-block",
|
|
127
|
+
sizeClasses[size],
|
|
128
|
+
variant === "pill" ? "" : className
|
|
129
|
+
),
|
|
130
|
+
children: [
|
|
131
|
+
avatarCore,
|
|
132
|
+
statusDot
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
) : /* @__PURE__ */ jsx("div", { className: cn("inline-block", variant === "pill" ? "" : className), children: avatarCore });
|
|
136
|
+
const pillAvatar = (
|
|
137
|
+
// shrink-0: when the pill is squeezed the NAME truncates away — the avatar
|
|
138
|
+
// must never collapse under it and overflow onto neighbouring text.
|
|
139
|
+
/* @__PURE__ */ jsxs("span", { className: cn("relative inline-block shrink-0", sizeClasses[size]), children: [
|
|
140
|
+
/* @__PURE__ */ jsx("span", { className: cn("block transition-opacity", canMessage && "group-hover/pill:opacity-0"), children: avatarCore }),
|
|
141
|
+
canMessage && /* @__PURE__ */ jsx(
|
|
142
|
+
"span",
|
|
143
|
+
{
|
|
144
|
+
"aria-hidden": true,
|
|
145
|
+
className: "absolute inset-0 flex items-center justify-center rounded-full bg-muted text-foreground opacity-0 transition-opacity group-hover/pill:opacity-100",
|
|
146
|
+
children: /* @__PURE__ */ jsx(MessageCircleMore, { className: size === "xs" ? "h-3 w-3" : "h-4 w-4" })
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
statusDot
|
|
150
|
+
] })
|
|
151
|
+
);
|
|
152
|
+
const resolvedTooltip = showTooltip ? tooltipContent : void 0;
|
|
153
|
+
if (variant === "pill") {
|
|
154
|
+
const row = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
155
|
+
pillAvatar,
|
|
156
|
+
displayName && /* @__PURE__ */ jsx("span", { className: "min-w-0 max-w-[320px] truncate text-sm leading-tight", children: displayName }),
|
|
157
|
+
isVerified && !isAgent && /* @__PURE__ */ jsx(VerifiedBadge, {}),
|
|
158
|
+
agentBadge
|
|
159
|
+
] });
|
|
160
|
+
const rowClass = "group/pill inline-flex min-w-0 items-center gap-2";
|
|
161
|
+
const clickable = interactive && !!onClick;
|
|
162
|
+
const clickableClass = "relative cursor-pointer rounded-md px-1 py-0.5 -mx-1 transition-colors hover:bg-muted/60 pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:-inset-y-3 pointer-coarse:after:content-['']";
|
|
163
|
+
if (resolvedTooltip) {
|
|
164
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
165
|
+
/* @__PURE__ */ jsx(
|
|
166
|
+
TooltipTrigger,
|
|
167
|
+
{
|
|
168
|
+
type: "button",
|
|
169
|
+
onClick: clickable ? onClick : void 0,
|
|
170
|
+
onFocusCapture: (e) => e.stopPropagation(),
|
|
171
|
+
className: cn(rowClass, clickable && clickableClass, className),
|
|
172
|
+
"data-testid": "user-entity-pill",
|
|
173
|
+
children: row
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
/* @__PURE__ */ jsx(TooltipContent, { className: "p-2", children: resolvedTooltip })
|
|
177
|
+
] });
|
|
178
|
+
}
|
|
179
|
+
if (clickable) {
|
|
180
|
+
return /* @__PURE__ */ jsx(
|
|
181
|
+
"button",
|
|
182
|
+
{
|
|
183
|
+
type: "button",
|
|
184
|
+
onClick,
|
|
185
|
+
className: cn(rowClass, clickableClass, className),
|
|
186
|
+
"data-testid": "user-entity-pill",
|
|
187
|
+
children: row
|
|
188
|
+
}
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
return /* @__PURE__ */ jsx("span", { className: cn(rowClass, className), "data-testid": "user-entity-pill", children: row });
|
|
192
|
+
}
|
|
193
|
+
if (showTooltip) {
|
|
194
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
195
|
+
/* @__PURE__ */ jsx(
|
|
196
|
+
TooltipTrigger,
|
|
197
|
+
{
|
|
198
|
+
onFocusCapture: (e) => e.stopPropagation(),
|
|
199
|
+
className: "touch-hit inline-flex",
|
|
200
|
+
children: avatarElement
|
|
201
|
+
}
|
|
202
|
+
),
|
|
203
|
+
/* @__PURE__ */ jsx(TooltipContent, { className: "p-2", children: tooltipContent })
|
|
204
|
+
] });
|
|
205
|
+
}
|
|
206
|
+
return avatarElement;
|
|
207
|
+
});
|
|
208
|
+
export {
|
|
209
|
+
UserEntity
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=UserEntity.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/UserEntity.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * UserEntity Component\n *\n * Single source of truth for the user pill/avatar visual, promoted from the ARBI\n * app and DECOUPLED from the app store/API. It renders purely from injected,\n * already-resolved props \u2014 the app-coupled bits (current user, WebSocket presence\n * status, shared-workspace / agent-owner lookups) are resolved by the app adapter\n * and passed in as `isMe` / `displayStatus` / `tooltipContent` / `onClick`.\n *\n * Variants:\n * - pill: Avatar + name in a rounded container (default)\n * - icon: Avatar circle with hover tooltip\n *\n * Status-dot colours use the semantic `--color-status-*` token contract (see the\n * consuming app's @theme); they are seeded to the app's prior palette so the dots\n * stay pixel-identical.\n */\n\nimport React, { memo } from 'react'\nimport { MessageCircleMore } from 'lucide-react'\nimport { Avatar, AvatarFallback, AvatarImage } from '../ui/avatar'\nimport { ArbiBotHeadIcon } from '../icons/ArbiBotHeadIcon'\nimport { VerifiedBadge } from './VerifiedBadge'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip'\nimport { cn } from '../lib/utils'\nimport type { EntitySize } from './EntityPill'\n\n/** Presence display status - WebSocket states plus 'hidden' for when status is intentionally not shown */\nexport type PresenceDisplayStatus = 'connected' | 'connecting' | 'disconnected' | 'error' | 'hidden'\n\nexport interface UserEntityProps {\n size?: EntitySize\n variant?: 'icon' | 'pill'\n className?: string\n /** When true (default), shows tooltip on hover */\n showTooltip?: boolean\n /** When true (default), clicking triggers the injected action. Set false to disable interaction. */\n interactive?: boolean\n\n /** Two-letter initials shown in the avatar fallback (resolved by the app). */\n initials?: string\n /** Display label \u2014 \"You\" for the current user, else the real name. */\n displayName?: string\n /** Avatar image URL, if any. */\n picture?: string | null\n /** Optional image treatment for platform logos inside the normal avatar. */\n avatarImageClassName?: string\n /** Avatar background colour class for non-agents (e.g. 'bg-blue-500'). */\n colorClass?: string\n /** Whether this user is an agent \u2014 drives the dashed ring + bot badge. */\n isAgent?: boolean\n /** Verified tick (passed an ID check under this name): a badge after the name in the pill. */\n isVerified?: boolean\n /** Inline border/text colour for agent avatars (from the app's agentAvatarColors). */\n agentStyle?: React.CSSProperties\n /**\n * Inline avatar colours for ANY user, not only agents \u2014 e.g. the deterministic\n * tint the DM rows derive from the user id. Takes precedence over\n * `agentStyle`, which predates it and is the same mechanism under a narrower\n * name.\n */\n avatarStyle?: React.CSSProperties\n /** Whether this pill represents the current user \u2014 hides the chat icon and drives\n * which action `onClick` performs. */\n isMe?: boolean\n /** Resolved presence dot state; undefined hides the dot. */\n displayStatus?: PresenceDisplayStatus\n /** Resolved click handler (open settings for me, DM for others). */\n onClick?: (e: React.MouseEvent) => void\n /** Injected rich tooltip content (built by the app adapter). */\n tooltipContent?: React.ReactNode\n /** Render the empty \"no user\" avatar. */\n empty?: boolean\n}\n\nconst sizeClasses = {\n xs: 'h-5 w-5',\n sm: 'h-6 w-6',\n md: 'h-8 w-8',\n lg: 'h-10 w-10',\n}\n\nconst textSizeClasses = {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm',\n}\n\n// Presence dot sizes proportional to avatar size (larger for better visibility)\nconst presenceDotClasses = {\n xs: 'w-2 h-2 border',\n sm: 'w-2.5 h-2.5 border',\n md: 'w-3 h-3 border-2',\n lg: 'w-3.5 h-3.5 border-2',\n}\n\n// Position the presence dot at edge of avatar\nconst presencePositionClasses = {\n xs: '-right-1 bottom-0',\n sm: '-right-1 bottom-0',\n md: '-right-1.5 -bottom-0.5',\n lg: '-right-1.5 -bottom-0.5',\n}\n\n// Presence colours \u2014 semantic status tokens seeded to the app's prior palette\n// (matches the sidebar's connection-status colours).\n/** Accessible name for each dot state \u2014 the same wording PresenceLabel prints. */\nconst PRESENCE_LABELS: Record<PresenceDisplayStatus, string> = {\n connected: 'Online',\n connecting: 'Connecting',\n disconnected: 'Offline',\n error: 'Connection problem',\n hidden: 'Status hidden',\n}\n\nconst presenceColorClasses: Record<PresenceDisplayStatus, string> = {\n connected: 'bg-status-online',\n connecting: 'bg-status-connecting',\n disconnected: 'bg-status-away',\n error: 'bg-status-busy',\n hidden: 'bg-status-offline',\n}\n\nexport const UserEntity = memo(function UserEntity({\n size = 'md',\n variant = 'pill',\n className,\n showTooltip = true,\n interactive = true,\n initials = '',\n displayName = '',\n picture,\n avatarImageClassName,\n colorClass = '',\n isAgent = false,\n isVerified = false,\n agentStyle,\n avatarStyle,\n isMe = false,\n displayStatus,\n onClick,\n tooltipContent,\n empty = false,\n}: UserEntityProps) {\n // Empty state - no user\n if (empty) {\n return (\n <Avatar\n className={cn(sizeClasses[size], 'border border-border', className)}\n data-testid=\"user-entity\"\n >\n <AvatarFallback className=\"bg-status-empty text-muted-foreground text-xs font-semibold\">\n ?\n </AvatarFallback>\n </Avatar>\n )\n }\n\n const agentBadge = isAgent ? (\n <ArbiBotHeadIcon className=\"w-3.5 h-3.5 text-muted-foreground\" />\n ) : undefined\n\n // Messaging another user: the pill avatar doubles as the affordance \u2014 on hover it\n // swaps to a chat icon (see pillAvatar below).\n const canMessage = interactive && !isMe && !isAgent\n\n // One resolved inline style for the avatar surface. `agentStyle` was always\n // applied regardless of `isAgent`; `avatarStyle` is the same thing named for\n // what it does, so a non-agent tint no longer has to masquerade as one.\n const surfaceStyle = avatarStyle ?? agentStyle\n\n // Core avatar element - used in both icon and pill variants\n const avatarCore = (\n <Avatar\n className={cn(\n sizeClasses[size],\n isAgent ? 'rounded-full border-2 border-dashed' : 'border border-white'\n )}\n style={surfaceStyle}\n data-testid=\"user-entity\"\n >\n {picture && <AvatarImage src={picture} alt={initials} className={avatarImageClassName} />}\n <AvatarFallback\n className={cn(\n textSizeClasses[size],\n 'font-semibold leading-none',\n isAgent ? 'rounded-full bg-transparent' : `text-white ${colorClass}`\n )}\n style={surfaceStyle}\n >\n {initials}\n </AvatarFallback>\n </Avatar>\n )\n\n // Bottom-right avatar dot: the presence colour (green/grey/\u2026).\n const statusDot = displayStatus ? (\n <span\n className={cn(\n 'absolute rounded-full border-white',\n presenceDotClasses[size],\n presencePositionClasses[size],\n presenceColorClasses[displayStatus]\n )}\n data-testid=\"user-entity-presence\"\n // Named, not just coloured: a colour is legible only to someone who\n // already knows the convention, and to nobody using a screen reader.\n role=\"img\"\n aria-label={PRESENCE_LABELS[displayStatus]}\n title={PRESENCE_LABELS[displayStatus]}\n />\n ) : null\n\n // Icon variant avatar (used in stacks/columns) \u2014 avatar + optional status dot.\n // Inline-block at avatar size so a parent ring stays circular.\n const avatarElement = statusDot ? (\n <div\n className={cn(\n 'relative inline-block',\n sizeClasses[size],\n variant === 'pill' ? '' : className\n )}\n >\n {avatarCore}\n {statusDot}\n </div>\n ) : (\n <div className={cn('inline-block', variant === 'pill' ? '' : className)}>{avatarCore}</div>\n )\n\n // Pill variant avatar \u2014 the avatar itself IS the message affordance: on hover it\n // swaps to a chat icon (for other users), with the status dot pinned bottom-right.\n const pillAvatar = (\n // shrink-0: when the pill is squeezed the NAME truncates away \u2014 the avatar\n // must never collapse under it and overflow onto neighbouring text.\n <span className={cn('relative inline-block shrink-0', sizeClasses[size])}>\n <span className={cn('block transition-opacity', canMessage && 'group-hover/pill:opacity-0')}>\n {avatarCore}\n </span>\n {canMessage && (\n <span\n aria-hidden\n className=\"absolute inset-0 flex items-center justify-center rounded-full bg-muted text-foreground opacity-0 transition-opacity group-hover/pill:opacity-100\"\n >\n <MessageCircleMore className={size === 'xs' ? 'h-3 w-3' : 'h-4 w-4'} />\n </span>\n )}\n {statusDot}\n </span>\n )\n\n const resolvedTooltip = showTooltip ? tooltipContent : undefined\n\n // Pill variant \u2014 clean, borderless avatar + name (no container chrome). The avatar\n // itself is the message affordance (hover \u2192 chat icon); unread + presence share one\n // bottom-right dot. Only the agent badge trails the name. Interactivity + tooltip\n // are layered with no resting background \u2014 a subtle hover fill signals the target.\n if (variant === 'pill') {\n const row = (\n <>\n {pillAvatar}\n {displayName && (\n <span className=\"min-w-0 max-w-[320px] truncate text-sm leading-tight\">\n {displayName}\n </span>\n )}\n {isVerified && !isAgent && <VerifiedBadge />}\n {agentBadge}\n </>\n )\n const rowClass = 'group/pill inline-flex min-w-0 items-center gap-2'\n const clickable = interactive && !!onClick\n const clickableClass =\n \"relative cursor-pointer rounded-md px-1 py-0.5 -mx-1 transition-colors hover:bg-muted/60 pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:-inset-y-3 pointer-coarse:after:content-['']\"\n\n if (resolvedTooltip) {\n return (\n <Tooltip>\n <TooltipTrigger\n type=\"button\"\n onClick={clickable ? onClick : undefined}\n onFocusCapture={(e) => e.stopPropagation()}\n className={cn(rowClass, clickable && clickableClass, className)}\n data-testid=\"user-entity-pill\"\n >\n {row}\n </TooltipTrigger>\n <TooltipContent className=\"p-2\">{resolvedTooltip}</TooltipContent>\n </Tooltip>\n )\n }\n\n if (clickable) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(rowClass, clickableClass, className)}\n data-testid=\"user-entity-pill\"\n >\n {row}\n </button>\n )\n }\n\n return (\n <span className={cn(rowClass, className)} data-testid=\"user-entity-pill\">\n {row}\n </span>\n )\n }\n\n // Icon variant - always non-interactive, just show avatar with optional tooltip\n // Note: avoid asChild here \u2014 Radix ref merging with Avatar's internal refs causes infinite loops\n if (showTooltip) {\n return (\n <Tooltip>\n <TooltipTrigger\n onFocusCapture={(e) => e.stopPropagation()}\n className=\"touch-hit inline-flex\"\n >\n {avatarElement}\n </TooltipTrigger>\n <TooltipContent className=\"p-2\">{tooltipContent}</TooltipContent>\n </Tooltip>\n )\n }\n\n return avatarElement\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["UserEntity"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BadgeCheck } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
function VerifiedBadge({ className, label = "Identity verified" }) {
|
|
5
|
+
return /* @__PURE__ */ jsx(
|
|
6
|
+
BadgeCheck,
|
|
7
|
+
{
|
|
8
|
+
role: "img",
|
|
9
|
+
"aria-label": label,
|
|
10
|
+
"data-testid": "verified-badge",
|
|
11
|
+
className: cn("h-3.5 w-3.5 shrink-0 text-sky-500", className),
|
|
12
|
+
children: /* @__PURE__ */ jsx("title", { children: label })
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
VerifiedBadge
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=VerifiedBadge.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/VerifiedBadge.tsx"],
|
|
4
|
+
"sourcesContent": ["import { BadgeCheck } from 'lucide-react'\nimport { cn } from '../lib/utils'\n\nexport interface VerifiedBadgeProps {\n className?: string\n /** Accessible name and hover text; default \"Identity verified\". */\n label?: string\n}\n\n/** The verified tick: the user passed an ID check under the name shown. */\nexport function VerifiedBadge({ className, label = 'Identity verified' }: VerifiedBadgeProps) {\n return (\n <BadgeCheck\n role=\"img\"\n aria-label={label}\n data-testid=\"verified-badge\"\n className={cn('h-3.5 w-3.5 shrink-0 text-sky-500', className)}\n >\n <title>{label}</title>\n </BadgeCheck>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAkBM;AAlBN,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AASZ,SAAS,cAAc,EAAE,WAAW,QAAQ,oBAAoB,GAAuB;AAC5F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,eAAY;AAAA,MACZ,WAAW,GAAG,qCAAqC,SAAS;AAAA,MAE5D,8BAAC,WAAO,iBAAM;AAAA;AAAA,EAChB;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const BG_TO_COLOR = {
|
|
2
|
+
"bg-emerald-700": "#047857",
|
|
3
|
+
"bg-blue-700": "#1d4ed8",
|
|
4
|
+
"bg-purple-700": "#7e22ce",
|
|
5
|
+
"bg-amber-700": "#b45309",
|
|
6
|
+
"bg-rose-700": "#be123c",
|
|
7
|
+
"bg-red-700": "#b91c1c",
|
|
8
|
+
"bg-indigo-700": "#4338ca",
|
|
9
|
+
"bg-teal-700": "#0f766e",
|
|
10
|
+
"bg-cyan-700": "#0e7490",
|
|
11
|
+
"bg-sky-700": "#0369a1",
|
|
12
|
+
"bg-lime-700": "#4d7c0f",
|
|
13
|
+
"bg-orange-700": "#c2410c",
|
|
14
|
+
"bg-pink-700": "#be185d",
|
|
15
|
+
"bg-violet-700": "#6d28d9",
|
|
16
|
+
"bg-fuchsia-700": "#a21caf",
|
|
17
|
+
"bg-yellow-700": "#a16207"
|
|
18
|
+
};
|
|
19
|
+
function agentAvatarColors(bgColorClass) {
|
|
20
|
+
const color = BG_TO_COLOR[bgColorClass] || "#047857";
|
|
21
|
+
return { borderColor: color, color };
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
agentAvatarColors
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=agent-avatar-colors.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/entities/agent-avatar-colors.ts"],
|
|
4
|
+
"sourcesContent": ["import type { CSSProperties } from 'react'\n\n/**\n * Map from Tailwind bg-color class to the actual CSS color value.\n * Used to style agent avatars as outlined (ring) shapes with matching border + text color.\n */\nconst BG_TO_COLOR: Record<string, string> = {\n 'bg-emerald-700': '#047857',\n 'bg-blue-700': '#1d4ed8',\n 'bg-purple-700': '#7e22ce',\n 'bg-amber-700': '#b45309',\n 'bg-rose-700': '#be123c',\n 'bg-red-700': '#b91c1c',\n 'bg-indigo-700': '#4338ca',\n 'bg-teal-700': '#0f766e',\n 'bg-cyan-700': '#0e7490',\n 'bg-sky-700': '#0369a1',\n 'bg-lime-700': '#4d7c0f',\n 'bg-orange-700': '#c2410c',\n 'bg-pink-700': '#be185d',\n 'bg-violet-700': '#6d28d9',\n 'bg-fuchsia-700': '#a21caf',\n 'bg-yellow-700': '#a16207',\n}\n\n/**\n * Returns inline styles for agent avatar border and text color,\n * matching the user's assigned bg color class.\n */\nexport function agentAvatarColors(bgColorClass: string): CSSProperties {\n const color = BG_TO_COLOR[bgColorClass] || '#047857'\n return { borderColor: color, color }\n}\n"],
|
|
5
|
+
"mappings": "AAMA,MAAM,cAAsC;AAAA,EAC1C,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,iBAAiB;AACnB;AAMO,SAAS,kBAAkB,cAAqC;AACrE,QAAM,QAAQ,YAAY,YAAY,KAAK;AAC3C,SAAO,EAAE,aAAa,OAAO,MAAM;AACrC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|