@brainfish-ai/components 0.35.20 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/colors/blue.d.ts +13 -0
- package/dist/colors/dark.d.ts +15 -0
- package/dist/colors/green.d.ts +13 -0
- package/dist/{colors.d.ts → colors/index.d.ts} +159 -161
- package/dist/colors/lime.d.ts +13 -0
- package/dist/colors/magenta.d.ts +13 -0
- package/dist/colors/orange.d.ts +13 -0
- package/dist/colors/pink.d.ts +13 -0
- package/dist/colors/primary.d.ts +14 -0
- package/dist/colors/purple.d.ts +13 -0
- package/dist/colors/red.d.ts +13 -0
- package/dist/colors/teal.d.ts +13 -0
- package/dist/colors/yellow.d.ts +13 -0
- package/dist/components/ai-button/ai-badge.d.ts +6 -0
- package/dist/components/ai-button/ai-button.d.ts +5 -0
- package/dist/components/ai-button/index.d.ts +2 -0
- package/dist/components/article-suggestions-banner/article-suggestions-banner.d.ts +12 -0
- package/dist/components/article-suggestions-banner/index.d.ts +1 -0
- package/dist/components/articles-coverage/articles-coverage.d.ts +14 -0
- package/dist/components/articles-coverage/index.d.ts +1 -0
- package/dist/components/articles-updated/articles-updated.d.ts +14 -0
- package/dist/components/articles-updated/index.d.ts +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +22 -0
- package/dist/components/breadcrumbs/index.d.ts +1 -0
- package/dist/components/chart-area-linear/chart-area-linear.d.ts +18 -0
- package/dist/components/chart-area-linear/index.d.ts +1 -0
- package/dist/components/chart-radial-stacked/chart-radial-stacked.d.ts +12 -0
- package/dist/components/chart-radial-stacked/index.d.ts +1 -0
- package/dist/components/chat-search/ActiveConversations.d.ts +14 -0
- package/dist/components/chat-search/Answer.d.ts +36 -0
- package/dist/components/chat-search/AnswerActions.d.ts +14 -0
- package/dist/components/chat-search/AnswerBlock.d.ts +8 -0
- package/dist/components/chat-search/AnswerLoadingStatus.d.ts +6 -0
- package/dist/components/chat-search/AttachmentThumbnails.d.ts +36 -0
- package/dist/components/chat-search/ChatSearch.d.ts +12 -0
- package/dist/components/chat-search/ChatSearchContext.d.ts +37 -0
- package/dist/components/chat-search/FollowUpQuestions.d.ts +7 -0
- package/dist/components/chat-search/FollowUpSearchBar.d.ts +17 -0
- package/dist/components/chat-search/Header.d.ts +15 -0
- package/dist/components/chat-search/HistoryPage.d.ts +20 -0
- package/dist/components/chat-search/IncludePageToggle.d.ts +9 -0
- package/dist/components/chat-search/KnowledgeGroupSelector.d.ts +8 -0
- package/dist/components/chat-search/LoadingConversation.d.ts +2 -0
- package/dist/components/chat-search/LoadingSkeleton.d.ts +6 -0
- package/dist/components/chat-search/NextBestActions.d.ts +8 -0
- package/dist/components/chat-search/PrimarySearch.d.ts +38 -0
- package/dist/components/chat-search/ResolvedConversationFooter.d.ts +7 -0
- package/dist/components/chat-search/Suggestions.d.ts +9 -0
- package/dist/components/chat-search/TimelineNavigation.d.ts +9 -0
- package/dist/components/chat-search/ToastContainer.d.ts +6 -0
- package/dist/components/chat-search/blocks/ActionButtons.d.ts +5 -0
- package/dist/components/chat-search/blocks/ActionInputForm.d.ts +20 -0
- package/dist/components/chat-search/blocks/MarkdownText.d.ts +8 -0
- package/dist/components/chat-search/blocks/utils.d.ts +16 -0
- package/dist/components/chat-search/helpers/buildConversationContext.d.ts +2 -0
- package/dist/components/chat-search/helpers/cancelStreamReader.d.ts +7 -0
- package/dist/components/chat-search/helpers/excuteClientAction.d.ts +9 -0
- package/dist/components/chat-search/helpers/initialAiMessage.d.ts +2 -0
- package/dist/components/chat-search/helpers/nextBestActions.d.ts +7 -0
- package/dist/components/chat-search/helpers/preChatFormForWidget.d.ts +6 -0
- package/dist/components/chat-search/hooks/index.d.ts +10 -0
- package/dist/components/chat-search/hooks/useAccessibleColor.d.ts +1 -0
- package/dist/components/chat-search/hooks/useAnswerList.d.ts +253 -0
- package/dist/components/chat-search/hooks/useConversationHistory.d.ts +32 -0
- package/dist/components/chat-search/hooks/useConversationId.d.ts +5 -0
- package/dist/components/chat-search/hooks/useConversationLoader.d.ts +19 -0
- package/dist/components/chat-search/hooks/useDarkMode.d.ts +1 -0
- package/dist/components/chat-search/hooks/useFileAttachment.d.ts +20 -0
- package/dist/components/chat-search/hooks/useIncludePage.d.ts +20 -0
- package/dist/components/chat-search/hooks/useIsChatSearchDirty.d.ts +1 -0
- package/dist/components/chat-search/hooks/useScrollManager.d.ts +6 -0
- package/dist/components/chat-search/hooks/useSubscriptionManager.d.ts +4 -0
- package/dist/components/chat-search/hooks/useToast.d.ts +9 -0
- package/dist/components/chat-search/hooks/useUrlManager.d.ts +8 -0
- package/dist/components/chat-search/index.d.ts +7 -0
- package/dist/components/chat-search/text-config.d.ts +3 -0
- package/dist/components/chat-search/theme.d.ts +0 -0
- package/dist/components/chat-search/types/messages.d.ts +21 -0
- package/dist/components/chat-search/types.d.ts +388 -0
- package/dist/{combobox.d.ts → components/combobox/combobox.d.ts} +43 -49
- package/dist/components/combobox/index.d.ts +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +21 -0
- package/dist/components/confirm-dialog/index.d.ts +1 -0
- package/dist/components/conversation/AttachmentPreviews.d.ts +14 -0
- package/dist/components/conversation/ContextPillBadge.d.ts +8 -0
- package/dist/components/conversation/Conversation.d.ts +45 -0
- package/dist/components/conversation/ConversationActions.d.ts +11 -0
- package/dist/components/conversation/ConversationContext.d.ts +17 -0
- package/dist/components/conversation/ConversationHeader.d.ts +12 -0
- package/dist/components/conversation/ConversationInput.d.ts +16 -0
- package/dist/components/conversation/ConversationMessage.d.ts +8 -0
- package/dist/components/conversation/ConversationMessageAssistant.d.ts +11 -0
- package/dist/components/conversation/ConversationMessageUser.d.ts +11 -0
- package/dist/components/conversation/ConversationMessages.d.ts +11 -0
- package/dist/components/conversation/ConversationStatus.d.ts +11 -0
- package/dist/components/conversation/ConversationSuggestions.d.ts +10 -0
- package/dist/components/conversation/attachmentUtils.d.ts +2 -0
- package/dist/components/conversation/blocks/CitationBlock.d.ts +8 -0
- package/dist/components/conversation/blocks/TextBlock.d.ts +8 -0
- package/dist/components/conversation/blocks/index.d.ts +10 -0
- package/dist/components/conversation/index.d.ts +13 -0
- package/dist/components/conversation/mocks.d.ts +14 -0
- package/dist/components/conversation/status.d.ts +15 -0
- package/dist/components/conversation/types.d.ts +149 -0
- package/dist/components/conversation/welcome.d.ts +11 -0
- package/dist/components/convos/answer-diagnostics.d.ts +21 -0
- package/dist/components/convos/attributes-dialog.d.ts +7 -0
- package/dist/components/convos/confidence-badge.d.ts +6 -0
- package/dist/components/convos/convo.d.ts +29 -0
- package/dist/components/convos/convos.d.ts +39 -0
- package/dist/components/convos/discard-form.d.ts +31 -0
- package/dist/components/convos/empty-convos.d.ts +4 -0
- package/dist/components/convos/feedback-dialog.d.ts +14 -0
- package/dist/components/convos/index.d.ts +5 -0
- package/dist/components/convos/message.d.ts +79 -0
- package/dist/components/convos/mocks.d.ts +43 -0
- package/dist/components/convos/status-badge.d.ts +8 -0
- package/dist/components/convos/stream-badge.d.ts +5 -0
- package/dist/components/data-table/data-table.d.ts +17 -0
- package/dist/components/data-table/index.d.ts +2 -0
- package/dist/{date-picker.d.ts → components/date-picker/date-picker.d.ts} +9 -12
- package/dist/components/date-picker/index.d.ts +1 -0
- package/dist/components/discoveries-created/discoveries-created.d.ts +22 -0
- package/dist/components/discoveries-created/index.d.ts +1 -0
- package/dist/components/editable-label/editable-label.d.ts +6 -0
- package/dist/components/editable-label/index.d.ts +1 -0
- package/dist/components/feedback/feedback-reason.d.ts +10 -0
- package/dist/{feedback.d.ts → components/feedback/feedback.d.ts} +17 -21
- package/dist/components/feedback/index.d.ts +1 -0
- package/dist/components/file-upload/file-upload-status.d.ts +17 -0
- package/dist/components/file-upload/file-upload.d.ts +4 -0
- package/dist/components/file-upload/index.d.ts +4 -0
- package/dist/components/file-upload/types.d.ts +18 -0
- package/dist/components/file-upload/utils.d.ts +1 -0
- package/dist/components/filter/components/CustomValueInput.d.ts +11 -0
- package/dist/components/filter/components/MultiSelectDropdown.d.ts +10 -0
- package/dist/components/filter/components/SingleSelectDropdown.d.ts +9 -0
- package/dist/components/filter/filter.d.ts +6 -0
- package/dist/components/filter/filters.d.ts +12 -0
- package/dist/components/filter/hooks.d.ts +9 -0
- package/dist/components/filter/index.d.ts +3 -0
- package/dist/{filter.d.ts → components/filter/types.d.ts} +59 -82
- package/dist/components/font-picker/font-picker-item.d.ts +13 -0
- package/dist/components/font-picker/font-picker.d.ts +44 -0
- package/dist/components/font-picker/font-utils.d.ts +18 -0
- package/dist/components/font-picker/index.d.ts +5 -0
- package/dist/components/font-picker/types.d.ts +6 -0
- package/dist/components/font-picker/use-font-options.d.ts +17 -0
- package/dist/components/generating-star/generating-star.d.ts +10 -0
- package/dist/components/generating-star/index.d.ts +1 -0
- package/dist/components/input-with-tags/index.d.ts +1 -0
- package/dist/{input-with-tags.d.ts → components/input-with-tags/input-with-tags.d.ts} +26 -31
- package/dist/components/logo/ai-logo.d.ts +12 -0
- package/dist/components/logo/chat-logo.d.ts +8 -0
- package/dist/components/logo/index.d.ts +3 -0
- package/dist/components/logo/logo.d.ts +8 -0
- package/dist/components/love/index.d.ts +1 -0
- package/dist/components/love/love.d.ts +7 -0
- package/dist/components/markdown/CodeBlock.d.ts +7 -0
- package/dist/components/markdown/FormattedMessage.d.ts +14 -0
- package/dist/components/markdown/Frame.d.ts +10 -0
- package/dist/components/markdown/MemoizedReactMarkdown.d.ts +6 -0
- package/dist/components/markdown/MermaidDiagram.d.ts +6 -0
- package/dist/components/markdown/SmartImage.d.ts +5 -0
- package/dist/components/markdown/ZoomableImage.d.ts +7 -0
- package/dist/components/markdown/embeds/Loom.d.ts +7 -0
- package/dist/components/markdown/embeds/NativeVideo.d.ts +6 -0
- package/dist/components/markdown/embeds/Supademo.d.ts +7 -0
- package/dist/components/markdown/embeds/Typeform.d.ts +7 -0
- package/dist/components/markdown/embeds/VideoTimeline.d.ts +9 -0
- package/dist/components/markdown/embeds/Vimeo.d.ts +7 -0
- package/dist/components/markdown/embeds/Wistia.d.ts +7 -0
- package/dist/components/markdown/embeds/Youtube.d.ts +7 -0
- package/dist/components/markdown/embeds/index.d.ts +9 -0
- package/dist/components/markdown/index.d.ts +6 -0
- package/dist/components/markdown/utils/codeblock.d.ts +6 -0
- package/dist/components/markdown/utils/stripNewLines.d.ts +1 -0
- package/dist/components/markdown/utils/urls.d.ts +6 -0
- package/dist/components/metric-card/index.d.ts +1 -0
- package/dist/components/metric-card/metric-card.d.ts +11 -0
- package/dist/components/metric-card-group/index.d.ts +1 -0
- package/dist/components/metric-card-group/metric-card-group.d.ts +6 -0
- package/dist/components/plan-usage-card/index.d.ts +1 -0
- package/dist/{plan-usage-card.d.ts → components/plan-usage-card/plan-usage-card.d.ts} +10 -15
- package/dist/components/rich-text-input/LexicalEditor.d.ts +7 -0
- package/dist/components/rich-text-input/RichTextInput.d.ts +31 -0
- package/dist/components/rich-text-input/index.d.ts +2 -0
- package/dist/components/select/index.d.ts +1 -0
- package/dist/{select.d.ts → components/select/simpleSelect.d.ts} +15 -20
- package/dist/components/trend-value/index.d.ts +1 -0
- package/dist/components/trend-value/trend-value.d.ts +14 -0
- package/dist/components/two-level-combobox/index.d.ts +1 -0
- package/dist/{two-level-combobox.d.ts → components/two-level-combobox/two-level-combobox.d.ts} +15 -26
- package/dist/components/ui/accordion.d.ts +7 -2
- package/dist/components/ui/alert-dialog.d.ts +37 -2
- package/dist/components/ui/alert.d.ts +11 -2
- package/dist/components/ui/avatar.d.ts +11 -2
- package/dist/components/ui/badge.d.ts +9 -2
- package/dist/components/ui/breadcrumb.d.ts +19 -2
- package/dist/components/ui/button-group.d.ts +13 -2
- package/dist/components/ui/button.d.ts +13 -2
- package/dist/components/ui/calendar.d.ts +8 -2
- package/dist/components/ui/card.d.ts +8 -2
- package/dist/components/ui/chart.d.ts +62 -0
- package/dist/components/ui/collapsible.d.ts +6 -2
- package/dist/components/ui/combobox.d.ts +2 -2
- package/dist/components/ui/command.d.ts +80 -2
- package/dist/components/ui/dialog.d.ts +19 -2
- package/dist/components/ui/div-button.d.ts +11 -2
- package/dist/components/ui/dropdown-menu.d.ts +31 -2
- package/dist/components/ui/hover-card.d.ts +6 -2
- package/dist/components/ui/icon.d.ts +8 -2
- package/dist/components/ui/input.d.ts +10 -2
- package/dist/components/ui/item.d.ts +23 -2
- package/dist/components/ui/label.d.ts +5 -2
- package/dist/components/ui/popover.d.ts +13 -2
- package/dist/components/ui/progress.d.ts +6 -2
- package/dist/components/ui/radio-group.d.ts +5 -2
- package/dist/components/ui/resizable.d.ts +8 -2
- package/dist/components/ui/ripple-status.d.ts +14 -0
- package/dist/components/ui/ripple.d.ts +5 -0
- package/dist/components/ui/scroll-area.d.ts +5 -2
- package/dist/components/ui/select.d.ts +13 -2
- package/dist/components/ui/separator.d.ts +4 -2
- package/dist/components/ui/sheet.d.ts +25 -2
- package/dist/components/ui/spinner.d.ts +3 -2
- package/dist/components/ui/sweep-text.d.ts +14 -0
- package/dist/components/ui/switch.d.ts +4 -2
- package/dist/components/ui/table.d.ts +10 -2
- package/dist/components/ui/tabs.d.ts +7 -2
- package/dist/components/ui/textarea.d.ts +6 -2
- package/dist/components/ui/tooltip.d.ts +10 -2
- package/dist/components/ui/types.d.ts +1 -0
- package/dist/components/usage-indicator-pill/index.d.ts +1 -0
- package/dist/components/usage-indicator-pill/usage-indicator-pill.d.ts +23 -0
- package/dist/env.d.ts +5 -0
- package/dist/esm/colors/blue.js +16 -0
- package/dist/esm/colors/dark.js +17 -0
- package/dist/esm/colors/green.js +16 -0
- package/dist/esm/colors/lime.js +16 -0
- package/dist/esm/colors/magenta.js +16 -0
- package/dist/esm/colors/orange.js +16 -0
- package/dist/esm/colors/pink.js +16 -0
- package/dist/esm/colors/primary.js +17 -0
- package/dist/esm/colors/purple.js +16 -0
- package/dist/esm/colors/red.js +16 -0
- package/dist/esm/colors/teal.js +16 -0
- package/dist/esm/colors/yellow.js +16 -0
- package/dist/esm/colors.js +29 -2
- package/dist/esm/components/ai-button/ai-badge.js +44 -0
- package/dist/esm/components/article-suggestions-banner/article-suggestions-banner.js +49 -0
- package/dist/esm/components/article-suggestions-banner.js +1 -5
- package/dist/esm/components/articles-coverage/articles-coverage.js +116 -0
- package/dist/esm/components/articles-coverage.js +1 -5
- package/dist/esm/components/articles-updated/articles-updated.js +74 -0
- package/dist/esm/components/articles-updated.js +1 -5
- package/dist/esm/components/breadcrumbs/breadcrumbs.js +13 -0
- package/dist/esm/components/breadcrumbs.js +1 -4
- package/dist/esm/components/chart-area-linear/chart-area-linear.js +66 -0
- package/dist/esm/components/chart-area-linear.js +1 -7
- package/dist/esm/components/chart-radial-stacked/chart-radial-stacked.js +48 -0
- package/dist/esm/components/chart-radial-stacked.js +1 -3
- package/dist/esm/components/chat-search/ActiveConversations.js +16 -0
- package/dist/esm/components/chat-search/Answer.js +175 -0
- package/dist/esm/components/chat-search/AnswerActions.js +64 -0
- package/dist/esm/components/chat-search/AnswerBlock.js +19 -0
- package/dist/esm/components/chat-search/AnswerLoadingStatus.js +8 -0
- package/dist/esm/components/chat-search/AttachmentThumbnails.js +45 -0
- package/dist/esm/components/chat-search/ChatSearch.js +1175 -0
- package/dist/esm/components/chat-search/ChatSearchContext.js +73 -0
- package/dist/esm/components/chat-search/FollowUpQuestions.js +39 -0
- package/dist/esm/components/chat-search/FollowUpSearchBar.js +189 -0
- package/dist/esm/components/chat-search/FollowUpSearchBar.module.css +4 -0
- package/dist/esm/components/chat-search/FollowUpSearchBar.module.css.js +6 -0
- package/dist/esm/components/chat-search/Header.js +104 -0
- package/dist/esm/components/chat-search/HistoryPage.js +82 -0
- package/dist/esm/components/chat-search/IncludePageToggle.js +8 -0
- package/dist/esm/components/chat-search/KnowledgeGroupSelector.js +23 -0
- package/dist/esm/components/chat-search/LoadingConversation.js +19 -0
- package/dist/esm/components/chat-search/NextBestActions.js +210 -0
- package/dist/esm/components/chat-search/PrimarySearch.js +415 -0
- package/dist/esm/components/chat-search/ResolvedConversationFooter.js +28 -0
- package/dist/esm/components/chat-search/Suggestions.js +20 -0
- package/dist/esm/components/chat-search/TimelineNavigation.js +113 -0
- package/dist/esm/components/chat-search/ToastContainer.js +29 -0
- package/dist/esm/components/chat-search/blocks/ActionButtons.js +5 -0
- package/dist/esm/components/chat-search/blocks/ActionInputForm.js +154 -0
- package/dist/esm/components/chat-search/blocks/MarkdownText.js +24 -0
- package/dist/esm/components/chat-search/blocks/utils.js +36 -0
- package/dist/esm/components/chat-search/helpers/buildConversationContext.js +11 -0
- package/dist/esm/components/chat-search/helpers/cancelStreamReader.js +21 -0
- package/dist/esm/components/chat-search/helpers/excuteClientAction.js +32 -0
- package/dist/esm/components/chat-search/helpers/initialAiMessage.js +4 -0
- package/dist/esm/components/chat-search/helpers/nextBestActions.js +97 -0
- package/dist/esm/components/chat-search/helpers/preChatFormForWidget.js +20 -0
- package/dist/esm/components/chat-search/hooks/useAccessibleColor.js +23 -0
- package/dist/esm/components/chat-search/hooks/useAnswerList.js +366 -0
- package/dist/esm/components/chat-search/hooks/useConversationHistory.js +128 -0
- package/dist/esm/components/chat-search/hooks/useConversationId.js +41 -0
- package/dist/esm/components/chat-search/hooks/useConversationLoader.js +99 -0
- package/dist/esm/components/chat-search/hooks/useDarkMode.js +18 -0
- package/dist/esm/components/chat-search/hooks/useFileAttachment.js +105 -0
- package/dist/esm/components/chat-search/hooks/useIncludePage.js +133 -0
- package/dist/esm/components/chat-search/hooks/useIsChatSearchDirty.js +9 -0
- package/dist/esm/components/chat-search/hooks/useScrollManager.js +36 -0
- package/dist/esm/components/chat-search/hooks/useSubscriptionManager.js +31 -0
- package/dist/esm/components/chat-search/hooks/useToast.js +22 -0
- package/dist/esm/components/chat-search/text-config.js +29 -0
- package/dist/esm/components/chat-search/types.js +40 -0
- package/dist/esm/components/chat-search.js +5 -2
- package/dist/esm/components/combobox/combobox.js +94 -0
- package/dist/esm/components/combobox.js +1 -2
- package/dist/esm/components/confirm-dialog/confirm-dialog.js +46 -0
- package/dist/esm/components/confirm-dialog.js +1 -3
- package/dist/esm/components/conversation/AttachmentPreviews.js +86 -0
- package/dist/esm/components/conversation/ContextPillBadge.js +35 -0
- package/dist/esm/components/conversation/Conversation.js +106 -0
- package/dist/esm/components/conversation/ConversationActions.js +20 -0
- package/dist/esm/components/conversation/ConversationContext.js +49 -0
- package/dist/esm/components/conversation/ConversationHeader.js +49 -0
- package/dist/esm/components/conversation/ConversationInput.js +350 -0
- package/dist/esm/components/conversation/ConversationMessage.js +16 -0
- package/dist/esm/components/conversation/ConversationMessageAssistant.js +53 -0
- package/dist/esm/components/conversation/ConversationMessageUser.js +46 -0
- package/dist/esm/components/conversation/ConversationMessages.js +50 -0
- package/dist/esm/components/conversation/ConversationStatus.js +13 -0
- package/dist/esm/components/conversation/ConversationSuggestions.js +21 -0
- package/dist/esm/components/conversation/attachmentUtils.js +9 -0
- package/dist/esm/components/conversation/blocks/CitationBlock.js +21 -0
- package/dist/esm/components/conversation/blocks/TextBlock.js +8 -0
- package/dist/esm/components/conversation/blocks/index.js +12 -0
- package/dist/esm/components/conversation/status.js +34 -0
- package/dist/esm/components/conversation/welcome.js +50 -0
- package/dist/esm/components/conversation.js +11 -2
- package/dist/esm/components/convos/answer-diagnostics.js +17 -0
- package/dist/esm/components/convos/attributes-dialog.css +51 -0
- package/dist/esm/components/convos/attributes-dialog.js +70 -0
- package/dist/esm/components/convos/confidence-badge.js +17 -0
- package/dist/esm/components/convos/convo.js +142 -0
- package/dist/esm/components/convos/convos.js +85 -0
- package/dist/esm/components/convos/discard-form.js +187 -0
- package/dist/esm/components/convos/empty-convos.js +8 -0
- package/dist/esm/components/convos/feedback-dialog.js +61 -0
- package/dist/esm/components/convos/message.css +258 -0
- package/dist/esm/components/convos/message.js +113 -0
- package/dist/esm/components/convos/status-badge.js +45 -0
- package/dist/esm/components/convos/stream-badge.js +33 -0
- package/dist/esm/components/convos.js +5 -29
- package/dist/esm/components/data-table/data-table.js +101 -0
- package/dist/esm/components/data-table.js +1 -2
- package/dist/esm/components/date-picker/date-picker.js +26 -0
- package/dist/esm/components/date-picker.js +1 -2
- package/dist/esm/components/discoveries-created/discoveries-created.js +64 -0
- package/dist/esm/components/discoveries-created.js +1 -5
- package/dist/esm/components/editable-label/editable-label.js +73 -0
- package/dist/esm/components/editable-label.js +1 -3
- package/dist/esm/components/feedback/feedback-reason.js +81 -0
- package/dist/esm/components/feedback/feedback.js +90 -0
- package/dist/esm/components/feedback.js +1 -2
- package/dist/esm/components/file-upload/file-upload-status.js +78 -0
- package/dist/esm/components/file-upload/file-upload.js +62 -0
- package/dist/esm/components/file-upload/utils.js +9 -0
- package/dist/esm/components/file-upload.js +3 -2
- package/dist/esm/components/filter/components/CustomValueInput.js +49 -0
- package/dist/esm/components/filter/components/MultiSelectDropdown.js +109 -0
- package/dist/esm/components/filter/components/SingleSelectDropdown.js +50 -0
- package/dist/esm/components/filter/filter.js +260 -0
- package/dist/esm/components/filter/filters.js +85 -0
- package/dist/esm/components/filter/hooks.js +28 -0
- package/dist/esm/components/filter/types.js +10 -0
- package/dist/esm/components/filter.js +3 -2
- package/dist/esm/components/font-picker/font-picker-item.js +47 -0
- package/dist/esm/components/font-picker/font-picker.js +54 -0
- package/dist/esm/components/font-picker/font-utils.js +45 -0
- package/dist/esm/components/font-picker/use-font-options.js +46 -0
- package/dist/esm/components/font-picker.js +4 -2
- package/dist/esm/components/generating-star/generating-star.js +85 -0
- package/dist/esm/components/generating-star.js +1 -2
- package/dist/esm/components/input-with-tags/input-with-tags.js +109 -0
- package/dist/esm/components/input-with-tags.js +1 -2
- package/dist/esm/components/logo/ai-logo.js +46 -0
- package/dist/esm/components/logo/chat-logo.js +32 -0
- package/dist/esm/components/logo/logo.js +191 -0
- package/dist/esm/components/logo.js +3 -2
- package/dist/esm/components/love/love.js +55 -0
- package/dist/esm/components/markdown/CodeBlock.js +76 -0
- package/dist/esm/components/markdown/FormattedMessage.js +227 -0
- package/dist/esm/components/markdown/Frame.js +46 -0
- package/dist/esm/components/markdown/MemoizedReactMarkdown.js +9 -0
- package/dist/esm/components/markdown/MermaidDiagram.js +49 -0
- package/dist/esm/components/markdown/SmartImage.js +25 -0
- package/dist/esm/components/markdown/ZoomableImage.js +96 -0
- package/dist/esm/components/markdown/embeds/Loom.js +13 -0
- package/dist/esm/components/markdown/embeds/NativeVideo.js +85 -0
- package/dist/esm/components/markdown/embeds/Supademo.js +12 -0
- package/dist/esm/components/markdown/embeds/Typeform.js +12 -0
- package/dist/esm/components/markdown/embeds/VideoTimeline.js +42 -0
- package/dist/esm/components/markdown/embeds/Vimeo.js +21 -0
- package/dist/esm/components/markdown/embeds/Wistia.js +21 -0
- package/dist/esm/components/markdown/embeds/Youtube.js +33 -0
- package/dist/esm/components/markdown/embeds/index.js +36 -0
- package/dist/esm/components/markdown/utils/codeblock.js +36 -0
- package/dist/esm/components/markdown/utils/stripNewLines.js +3 -0
- package/dist/esm/components/markdown/utils/urls.js +34 -0
- package/dist/esm/components/markdown.js +5 -2
- package/dist/esm/components/metric-card/metric-card.js +29 -0
- package/dist/esm/components/metric-card-group/metric-card-group.js +8 -0
- package/dist/esm/components/metric-card-group.js +1 -3
- package/dist/esm/components/metric-card.js +1 -4
- package/dist/esm/components/plan-usage-card/plan-usage-card.js +16 -0
- package/dist/esm/components/plan-usage-card.js +1 -3
- package/dist/esm/components/rich-text-input/LexicalEditor.js +108 -0
- package/dist/esm/components/rich-text-input/RichTextInput.js +7 -0
- package/dist/esm/components/select/simpleSelect.js +22 -0
- package/dist/esm/components/select.js +1 -2
- package/dist/esm/components/trend-value/trend-value.js +50 -0
- package/dist/esm/components/trend-value.js +1 -2
- package/dist/esm/components/two-level-combobox/two-level-combobox.js +131 -0
- package/dist/esm/components/two-level-combobox.js +1 -2
- package/dist/esm/components/ui/accordion.js +46 -8
- package/dist/esm/components/ui/alert-dialog.js +114 -4
- package/dist/esm/components/ui/alert.js +103 -5
- package/dist/esm/components/ui/avatar.js +89 -8
- package/dist/esm/components/ui/badge.js +26 -3
- package/dist/esm/components/ui/breadcrumb.js +60 -5
- package/dist/esm/components/ui/button-group.js +88 -5
- package/dist/esm/components/ui/button.js +63 -2
- package/dist/esm/components/ui/calendar.css +255 -0
- package/dist/esm/components/ui/calendar.js +20 -3
- package/dist/esm/components/ui/card.js +55 -2
- package/dist/esm/components/ui/chart.js +198 -0
- package/dist/esm/components/ui/collapsible.js +33 -2
- package/dist/esm/components/ui/combobox.js +1 -2
- package/dist/esm/components/ui/command.js +79 -3
- package/dist/esm/components/ui/dialog.js +53 -3
- package/dist/esm/components/ui/div-button.js +61 -3
- package/dist/esm/components/ui/dropdown-menu.js +114 -4
- package/dist/esm/components/ui/hover-card.js +22 -2
- package/dist/esm/components/ui/icon.js +25 -3
- package/dist/esm/components/ui/input.js +47 -5
- package/dist/esm/components/ui/item.js +140 -12
- package/dist/esm/components/ui/label.js +19 -2
- package/dist/esm/components/ui/popover.js +31 -2
- package/dist/esm/components/ui/progress.js +22 -3
- package/dist/esm/components/ui/radio-group.js +33 -3
- package/dist/esm/components/ui/resizable.js +38 -5
- package/dist/esm/components/ui/ripple-status.js +22 -0
- package/dist/esm/components/ui/ripple.js +23 -0
- package/dist/esm/components/ui/ripple.module.css +47 -0
- package/dist/esm/components/ui/ripple.module.css.js +8 -0
- package/dist/esm/components/ui/scroll-area.js +32 -3
- package/dist/esm/components/ui/select.js +66 -6
- package/dist/esm/components/ui/separator.js +23 -2
- package/dist/esm/components/ui/sheet.js +62 -4
- package/dist/esm/components/ui/spinner.js +17 -3
- package/dist/esm/components/ui/sweep-text.js +24 -0
- package/dist/esm/components/ui/switch.js +26 -3
- package/dist/esm/components/ui/table.js +82 -2
- package/dist/esm/components/ui/tabs.js +65 -2
- package/dist/esm/components/ui/textarea.js +33 -2
- package/dist/esm/components/ui/tooltip.js +31 -4
- package/dist/esm/components/usage-indicator-pill/usage-indicator-pill.js +45 -0
- package/dist/esm/global.css +5321 -1
- package/dist/esm/index.js +94 -6
- package/dist/esm/layouts/full-layout/blurry-blob.js +21 -0
- package/dist/esm/layouts/full-layout/components/body.js +8 -0
- package/dist/esm/layouts/full-layout/components/header.js +28 -0
- package/dist/esm/layouts/full-layout/components/left-sidebar.js +33 -0
- package/dist/esm/layouts/full-layout/components/main-area.js +8 -0
- package/dist/esm/layouts/full-layout/components/main.js +23 -0
- package/dist/esm/layouts/full-layout/components/right-sidebar.js +21 -0
- package/dist/esm/layouts/full-layout/context.js +24 -0
- package/dist/esm/layouts/full-layout/header-pane.js +49 -0
- package/dist/esm/layouts/full-layout/layout.js +305 -0
- package/dist/esm/layouts/full-layout/left-sidebar-pane.js +66 -0
- package/dist/esm/layouts/full-layout/right-sidebar-pane.js +28 -0
- package/dist/esm/layouts/full-layout.js +5 -2
- package/dist/esm/layouts/header-nav/account-dropdown.js +90 -0
- package/dist/esm/layouts/header-nav/header-nav.js +116 -0
- package/dist/esm/layouts/header-nav.js +1 -2
- package/dist/esm/layouts/sidebar/app-nav/app-nav.js +47 -0
- package/dist/esm/layouts/sidebar/article-nav/article-item.js +138 -0
- package/dist/esm/layouts/sidebar/article-nav/article-nav.js +75 -0
- package/dist/esm/layouts/sidebar/article-nav/article-search-results.js +46 -0
- package/dist/esm/layouts/sidebar/article-nav/article-search.js +44 -0
- package/dist/esm/layouts/sidebar/article-nav/article-tree.js +243 -0
- package/dist/esm/layouts/sidebar/article-nav/expansion.js +6 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/article-status-icon.js +34 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/chevron-slot.js +8 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/constant.js +3 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/discovery-icon.js +15 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/file/file-status-icon.js +31 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/folder/folder-status-icon.js +59 -0
- package/dist/esm/layouts/sidebar/article-nav/status-icons/icon-shell.js +12 -0
- package/dist/esm/layouts/sidebar/article-nav/tree-sync.js +52 -0
- package/dist/esm/layouts/sidebar/context.js +72 -0
- package/dist/esm/layouts/sidebar/section-nav/section-nav.js +26 -0
- package/dist/esm/layouts/sidebar/sidebar.js +85 -0
- package/dist/esm/layouts/sidebar.js +2 -2
- package/dist/esm/lib/addUtmParams.js +26 -0
- package/dist/esm/lib/ajvResolver.js +60 -0
- package/dist/esm/lib/api.js +240 -0
- package/dist/esm/lib/countSuggestions.js +21 -0
- package/dist/esm/lib/feature-flags.js +21 -0
- package/dist/esm/lib/features.js +5 -0
- package/dist/esm/lib/fetchClient.js +77 -0
- package/dist/esm/lib/formatDate.js +40 -0
- package/dist/esm/lib/formatNumber.js +9 -0
- package/dist/esm/lib/getContentType.js +36 -0
- package/dist/esm/lib/hooks.js +80 -0
- package/dist/esm/lib/pluralise.js +6 -0
- package/dist/esm/lib/sortAttributeKeys.js +13 -0
- package/dist/esm/lib/styles.js +3 -0
- package/dist/esm/lib/useChartDateFormatters.js +10 -0
- package/dist/esm/lib/utils.js +45 -0
- package/dist/esm/logos/microsoft-logo.js +66 -7
- package/dist/esm/logos/microsoft-teams-logo.js +112 -13
- package/dist/esm/logos/slack-logo.js +39 -4
- package/dist/esm/scenes/knowledge-review/context.js +69 -0
- package/dist/esm/scenes/knowledge-review/diff-loader.js +42 -0
- package/dist/esm/scenes/knowledge-review/knowledge-review-panel.js +83 -0
- package/dist/esm/scenes/knowledge-review/knowledge-review.css +14 -0
- package/dist/esm/scenes/knowledge-review/review-list/edit-count.js +8 -0
- package/dist/esm/scenes/knowledge-review/review-list/review-list-item.js +37 -0
- package/dist/esm/scenes/knowledge-review/review-list/review-list.js +23 -0
- package/dist/esm/scenes/knowledge-review/scene.js +122 -0
- package/dist/esm/scenes/knowledge-review/status-source-summary.js +41 -0
- package/dist/esm/scenes/knowledge-review/suggestion-card/suggestion-card.js +110 -0
- package/dist/esm/scenes/knowledge-review/suggestions-header/suggestions-header-title-nav.js +54 -0
- package/dist/esm/scenes/knowledge-review/suggestions-header/suggestions-header-toolbar.js +114 -0
- package/dist/esm/scenes/knowledge-review/suggestions-header/suggestions-header.js +105 -0
- package/dist/esm/scenes/knowledge-review.js +5 -20
- package/dist/esm/tailwind.preset.js +305 -2
- package/dist/esm/tokens.css +539 -0
- package/dist/index.d.ts +60 -2634
- package/dist/layouts/full-layout/blurry-blob.d.ts +11 -0
- package/dist/layouts/full-layout/components/body.d.ts +7 -0
- package/dist/layouts/full-layout/components/header.d.ts +6 -0
- package/dist/layouts/full-layout/components/index.d.ts +7 -0
- package/dist/layouts/full-layout/components/left-sidebar.d.ts +6 -0
- package/dist/layouts/full-layout/components/main-area.d.ts +7 -0
- package/dist/layouts/full-layout/components/main.d.ts +8 -0
- package/dist/layouts/full-layout/components/right-sidebar.d.ts +8 -0
- package/dist/layouts/full-layout/context.d.ts +61 -0
- package/dist/layouts/full-layout/header-pane.d.ts +7 -0
- package/dist/layouts/full-layout/index.d.ts +10 -0
- package/dist/layouts/full-layout/layout.d.ts +27 -0
- package/dist/layouts/full-layout/left-sidebar-pane.d.ts +14 -0
- package/dist/layouts/full-layout/right-sidebar-pane.d.ts +8 -0
- package/dist/layouts/header-nav/account-dropdown.d.ts +71 -0
- package/dist/layouts/header-nav/header-nav.d.ts +22 -0
- package/dist/layouts/header-nav/index.d.ts +2 -0
- package/dist/layouts/sidebar/app-nav/app-nav.d.ts +12 -0
- package/dist/layouts/sidebar/app-nav/index.d.ts +1 -0
- package/dist/layouts/sidebar/article-nav/article-item.d.ts +18 -0
- package/dist/layouts/sidebar/article-nav/article-nav.d.ts +8 -0
- package/dist/layouts/sidebar/article-nav/article-search-results.d.ts +7 -0
- package/dist/layouts/sidebar/article-nav/article-search.d.ts +2 -0
- package/dist/layouts/sidebar/article-nav/article-tree.d.ts +10 -0
- package/dist/layouts/sidebar/article-nav/expansion.d.ts +2 -0
- package/dist/layouts/sidebar/article-nav/index.d.ts +1 -0
- package/dist/layouts/sidebar/article-nav/status-icons/article-status-icon.d.ts +11 -0
- package/dist/layouts/sidebar/article-nav/status-icons/chevron-slot.d.ts +4 -0
- package/dist/layouts/sidebar/article-nav/status-icons/constant.d.ts +1 -0
- package/dist/layouts/sidebar/article-nav/status-icons/discovery-icon.d.ts +4 -0
- package/dist/layouts/sidebar/article-nav/status-icons/file/file-status-icon.d.ts +7 -0
- package/dist/layouts/sidebar/article-nav/status-icons/folder/folder-status-icon.d.ts +9 -0
- package/dist/layouts/sidebar/article-nav/status-icons/icon-shell.d.ts +2 -0
- package/dist/layouts/sidebar/article-nav/status-icons/index.d.ts +1 -0
- package/dist/layouts/sidebar/article-nav/tree-sync.d.ts +20 -0
- package/dist/layouts/sidebar/context.d.ts +33 -0
- package/dist/layouts/sidebar/index.d.ts +3 -0
- package/dist/layouts/sidebar/mocks.d.ts +4 -0
- package/dist/layouts/sidebar/section-nav/index.d.ts +1 -0
- package/dist/layouts/sidebar/section-nav/section-nav.d.ts +8 -0
- package/dist/layouts/sidebar/sidebar.d.ts +15 -0
- package/dist/layouts/sidebar/types.d.ts +20 -0
- package/dist/lib/addUtmParams.d.ts +20 -0
- package/dist/lib/ajvResolver.d.ts +5 -0
- package/dist/lib/api.d.ts +133 -0
- package/dist/lib/countSuggestions.d.ts +4 -0
- package/dist/lib/feature-flags.d.ts +9 -0
- package/dist/lib/features.d.ts +4 -0
- package/dist/lib/fetchClient.d.ts +19 -0
- package/dist/lib/formatDate.d.ts +4 -0
- package/dist/lib/formatNumber.d.ts +1 -0
- package/dist/lib/getContentType.d.ts +1 -0
- package/dist/lib/groupAttributesByKey.d.ts +1 -0
- package/dist/lib/hooks.d.ts +19 -0
- package/dist/lib/pluralise.d.ts +1 -0
- package/dist/lib/sortAttributeKeys.d.ts +1 -0
- package/dist/lib/styles.d.ts +1 -0
- package/dist/lib/useChartDateFormatters.d.ts +4 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/logos/microsoft-logo.d.ts +10 -2
- package/dist/logos/microsoft-teams-logo.d.ts +10 -2
- package/dist/logos/slack-logo.d.ts +10 -2
- package/dist/scenes/knowledge-review/context.d.ts +46 -0
- package/dist/scenes/knowledge-review/diff-loader.d.ts +10 -0
- package/dist/scenes/knowledge-review/index.d.ts +10 -0
- package/dist/scenes/knowledge-review/knowledge-review-panel.d.ts +18 -0
- package/dist/scenes/knowledge-review/review-list/edit-count.d.ts +4 -0
- package/dist/scenes/knowledge-review/review-list/index.d.ts +3 -0
- package/dist/scenes/knowledge-review/review-list/mockItems.d.ts +43 -0
- package/dist/scenes/knowledge-review/review-list/review-list-item.d.ts +22 -0
- package/dist/scenes/knowledge-review/review-list/review-list.d.ts +8 -0
- package/dist/scenes/knowledge-review/scene.d.ts +33 -0
- package/dist/scenes/knowledge-review/status-source-summary.d.ts +12 -0
- package/dist/scenes/knowledge-review/suggestion-card/index.d.ts +2 -0
- package/dist/scenes/knowledge-review/suggestion-card/suggestion-card.d.ts +88 -0
- package/dist/scenes/knowledge-review/suggestions-header/index.d.ts +1 -0
- package/dist/scenes/knowledge-review/suggestions-header/suggestions-header-title-nav.d.ts +12 -0
- package/dist/scenes/knowledge-review/suggestions-header/suggestions-header-toolbar.d.ts +20 -0
- package/dist/scenes/knowledge-review/suggestions-header/suggestions-header.d.ts +17 -0
- package/package.json +36 -27
- package/dist/accordion.d.ts +0 -12
- package/dist/alert-dialog.d.ts +0 -50
- package/dist/alert.d.ts +0 -18
- package/dist/article-suggestions-banner.d.ts +0 -16
- package/dist/articles-coverage.d.ts +0 -41
- package/dist/articles-updated.d.ts +0 -41
- package/dist/avatar.d.ts +0 -18
- package/dist/badge.d.ts +0 -14
- package/dist/breadcrumb.d.ts +0 -27
- package/dist/breadcrumbs.d.ts +0 -27
- package/dist/button-group.d.ts +0 -22
- package/dist/button.d.ts +0 -18
- package/dist/calendar.d.ts +0 -12
- package/dist/card.d.ts +0 -15
- package/dist/chart-area-linear.d.ts +0 -41
- package/dist/chart-radial-stacked.d.ts +0 -39
- package/dist/chat-search.d.ts +0 -532
- package/dist/collapsible.d.ts +0 -10
- package/dist/command.d.ts +0 -90
- package/dist/confirm-dialog.d.ts +0 -37
- package/dist/conversation.d.ts +0 -362
- package/dist/convos.d.ts +0 -220
- package/dist/data-table.d.ts +0 -23
- package/dist/dialog.d.ts +0 -30
- package/dist/discoveries-created.d.ts +0 -49
- package/dist/div-button.d.ts +0 -16
- package/dist/dropdown-menu.d.ts +0 -47
- package/dist/editable-label.d.ts +0 -8
- package/dist/esm/ChatSearch.css +0 -1
- package/dist/esm/chunks/ChatSearch.Crh0QjPs.js +0 -96
- package/dist/esm/chunks/ChatSearch.Crh0QjPs.js.map +0 -1
- package/dist/esm/chunks/Conversation.CWR55agZ.js +0 -33
- package/dist/esm/chunks/Conversation.CWR55agZ.js.map +0 -1
- package/dist/esm/chunks/FormattedMessage.DXVhkV-z.js +0 -23
- package/dist/esm/chunks/FormattedMessage.DXVhkV-z.js.map +0 -1
- package/dist/esm/chunks/MermaidDiagram.PRgXQ5Yh.js +0 -2
- package/dist/esm/chunks/MermaidDiagram.PRgXQ5Yh.js.map +0 -1
- package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js +0 -2
- package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js.map +0 -1
- package/dist/esm/chunks/ai-badge.BxsWnJJZ.js +0 -5
- package/dist/esm/chunks/ai-badge.BxsWnJJZ.js.map +0 -1
- package/dist/esm/chunks/ai-logo.Bh2bhNcG.js +0 -8
- package/dist/esm/chunks/ai-logo.Bh2bhNcG.js.map +0 -1
- package/dist/esm/chunks/button.DXe2tRBO.js +0 -3
- package/dist/esm/chunks/button.DXe2tRBO.js.map +0 -1
- package/dist/esm/chunks/chart.D9xvsrKX.js +0 -10
- package/dist/esm/chunks/chart.D9xvsrKX.js.map +0 -1
- package/dist/esm/chunks/chat-logo.F_m9SJrM.js +0 -3
- package/dist/esm/chunks/chat-logo.F_m9SJrM.js.map +0 -1
- package/dist/esm/chunks/combobox.Ccfe3IGO.js +0 -6
- package/dist/esm/chunks/combobox.Ccfe3IGO.js.map +0 -1
- package/dist/esm/chunks/dark.DuW7JuAk.js +0 -2
- package/dist/esm/chunks/dark.DuW7JuAk.js.map +0 -1
- package/dist/esm/chunks/data-table.Dn7VQJFo.js +0 -5
- package/dist/esm/chunks/data-table.Dn7VQJFo.js.map +0 -1
- package/dist/esm/chunks/date-picker.GRONonNX.js +0 -4
- package/dist/esm/chunks/date-picker.GRONonNX.js.map +0 -1
- package/dist/esm/chunks/extends.DPdBf6DS.js +0 -2
- package/dist/esm/chunks/extends.DPdBf6DS.js.map +0 -1
- package/dist/esm/chunks/feature-flags.DOcVlPHk.js +0 -3
- package/dist/esm/chunks/feature-flags.DOcVlPHk.js.map +0 -1
- package/dist/esm/chunks/feedback.nVBNjdPh.js +0 -13
- package/dist/esm/chunks/feedback.nVBNjdPh.js.map +0 -1
- package/dist/esm/chunks/file-upload-status.znDE1kUC.js +0 -8
- package/dist/esm/chunks/file-upload-status.znDE1kUC.js.map +0 -1
- package/dist/esm/chunks/filters.CZJ31Eqj.js +0 -22
- package/dist/esm/chunks/filters.CZJ31Eqj.js.map +0 -1
- package/dist/esm/chunks/font-picker.DrA0q0TI.js +0 -6
- package/dist/esm/chunks/font-picker.DrA0q0TI.js.map +0 -1
- package/dist/esm/chunks/formatDate.D2xEZm8f.js +0 -2
- package/dist/esm/chunks/formatDate.D2xEZm8f.js.map +0 -1
- package/dist/esm/chunks/formatNumber.DhVn228t.js +0 -2
- package/dist/esm/chunks/formatNumber.DhVn228t.js.map +0 -1
- package/dist/esm/chunks/generating-star.DN8DVygp.js +0 -7
- package/dist/esm/chunks/generating-star.DN8DVygp.js.map +0 -1
- package/dist/esm/chunks/header-nav.BQXr30-S.js +0 -12
- package/dist/esm/chunks/header-nav.BQXr30-S.js.map +0 -1
- package/dist/esm/chunks/header-pane.D40kbO-a.js +0 -20
- package/dist/esm/chunks/header-pane.D40kbO-a.js.map +0 -1
- package/dist/esm/chunks/hooks.DjDPgQm6.js +0 -2
- package/dist/esm/chunks/hooks.DjDPgQm6.js.map +0 -1
- package/dist/esm/chunks/index.C9B3bui8.js +0 -2
- package/dist/esm/chunks/index.C9B3bui8.js.map +0 -1
- package/dist/esm/chunks/input-with-tags.4LvQIIuq.js +0 -5
- package/dist/esm/chunks/input-with-tags.4LvQIIuq.js.map +0 -1
- package/dist/esm/chunks/logo.DtwFGMBj.js +0 -5
- package/dist/esm/chunks/logo.DtwFGMBj.js.map +0 -1
- package/dist/esm/chunks/primary.CMQbo1GJ.js +0 -2
- package/dist/esm/chunks/primary.CMQbo1GJ.js.map +0 -1
- package/dist/esm/chunks/ripple-status.BiOlScXz.js +0 -6
- package/dist/esm/chunks/ripple-status.BiOlScXz.js.map +0 -1
- package/dist/esm/chunks/sidebar.CM8HDZg0.js +0 -29
- package/dist/esm/chunks/sidebar.CM8HDZg0.js.map +0 -1
- package/dist/esm/chunks/simpleSelect.C1KHuEVe.js +0 -3
- package/dist/esm/chunks/simpleSelect.C1KHuEVe.js.map +0 -1
- package/dist/esm/chunks/status-badge.BVWcC9Dt.js +0 -3
- package/dist/esm/chunks/status-badge.BVWcC9Dt.js.map +0 -1
- package/dist/esm/chunks/suggestion-card.PPUwB3ML.js +0 -21
- package/dist/esm/chunks/suggestion-card.PPUwB3ML.js.map +0 -1
- package/dist/esm/chunks/trend-value.lSWHqdkm.js +0 -3
- package/dist/esm/chunks/trend-value.lSWHqdkm.js.map +0 -1
- package/dist/esm/chunks/two-level-combobox.CQUmvlq6.js +0 -8
- package/dist/esm/chunks/two-level-combobox.CQUmvlq6.js.map +0 -1
- package/dist/esm/chunks/useChartDateFormatters.Dx2h5AAm.js +0 -2
- package/dist/esm/chunks/useChartDateFormatters.Dx2h5AAm.js.map +0 -1
- package/dist/esm/chunks/utils.DtKoarLP.js +0 -2
- package/dist/esm/chunks/utils.DtKoarLP.js.map +0 -1
- package/dist/esm/colors.js.map +0 -1
- package/dist/esm/components/accordion.js +0 -1
- package/dist/esm/components/alert-dialog.js +0 -1
- package/dist/esm/components/alert.js +0 -1
- package/dist/esm/components/article-suggestions-banner.js.map +0 -1
- package/dist/esm/components/articles-coverage.js.map +0 -1
- package/dist/esm/components/articles-updated.js.map +0 -1
- package/dist/esm/components/avatar.js +0 -1
- package/dist/esm/components/badge.js +0 -1
- package/dist/esm/components/breadcrumb.js +0 -1
- package/dist/esm/components/breadcrumbs.js.map +0 -1
- package/dist/esm/components/button-group.js +0 -1
- package/dist/esm/components/button.js +0 -1
- package/dist/esm/components/calendar.js +0 -1
- package/dist/esm/components/card.js +0 -1
- package/dist/esm/components/chart-area-linear.js.map +0 -1
- package/dist/esm/components/chart-radial-stacked.js.map +0 -1
- package/dist/esm/components/chat-search.js.map +0 -1
- package/dist/esm/components/collapsible.js +0 -1
- package/dist/esm/components/combobox.js.map +0 -1
- package/dist/esm/components/command.js +0 -1
- package/dist/esm/components/confirm-dialog.js.map +0 -1
- package/dist/esm/components/conversation.js.map +0 -1
- package/dist/esm/components/convos.js.map +0 -1
- package/dist/esm/components/data-table.js.map +0 -1
- package/dist/esm/components/date-picker.js.map +0 -1
- package/dist/esm/components/dialog.js +0 -1
- package/dist/esm/components/discoveries-created.js.map +0 -1
- package/dist/esm/components/div-button.js +0 -1
- package/dist/esm/components/dropdown-menu.js +0 -1
- package/dist/esm/components/editable-label.js.map +0 -1
- package/dist/esm/components/feedback.js.map +0 -1
- package/dist/esm/components/file-upload.js.map +0 -1
- package/dist/esm/components/filter.js.map +0 -1
- package/dist/esm/components/font-picker.js.map +0 -1
- package/dist/esm/components/generating-star.js.map +0 -1
- package/dist/esm/components/hover-card.js +0 -1
- package/dist/esm/components/icon.js +0 -1
- package/dist/esm/components/input-with-tags.js.map +0 -1
- package/dist/esm/components/input.js +0 -1
- package/dist/esm/components/item.js +0 -1
- package/dist/esm/components/label.js +0 -1
- package/dist/esm/components/logo.js.map +0 -1
- package/dist/esm/components/markdown.js.map +0 -1
- package/dist/esm/components/metric-card-group.js.map +0 -1
- package/dist/esm/components/metric-card.js.map +0 -1
- package/dist/esm/components/plan-usage-card.js.map +0 -1
- package/dist/esm/components/popover.js +0 -1
- package/dist/esm/components/progress.js +0 -1
- package/dist/esm/components/radio-group.js +0 -1
- package/dist/esm/components/resizable.js +0 -1
- package/dist/esm/components/scroll-area.js +0 -1
- package/dist/esm/components/select.js.map +0 -1
- package/dist/esm/components/separator.js +0 -1
- package/dist/esm/components/sheet.js +0 -1
- package/dist/esm/components/spinner.js +0 -1
- package/dist/esm/components/switch.js +0 -1
- package/dist/esm/components/table.js +0 -1
- package/dist/esm/components/tabs.js +0 -1
- package/dist/esm/components/textarea.js +0 -1
- package/dist/esm/components/tooltip.js +0 -1
- package/dist/esm/components/trend-value.js.map +0 -1
- package/dist/esm/components/two-level-combobox.js.map +0 -1
- package/dist/esm/components/ui/accordion.js.map +0 -1
- package/dist/esm/components/ui/alert-dialog.js.map +0 -1
- package/dist/esm/components/ui/alert.js.map +0 -1
- package/dist/esm/components/ui/avatar.js.map +0 -1
- package/dist/esm/components/ui/badge.js.map +0 -1
- package/dist/esm/components/ui/breadcrumb.js.map +0 -1
- package/dist/esm/components/ui/button-group.js.map +0 -1
- package/dist/esm/components/ui/button.js.map +0 -1
- package/dist/esm/components/ui/calendar.js.map +0 -1
- package/dist/esm/components/ui/card.js.map +0 -1
- package/dist/esm/components/ui/collapsible.js.map +0 -1
- package/dist/esm/components/ui/combobox.js.map +0 -1
- package/dist/esm/components/ui/command.js.map +0 -1
- package/dist/esm/components/ui/dialog.js.map +0 -1
- package/dist/esm/components/ui/div-button.js.map +0 -1
- package/dist/esm/components/ui/dropdown-menu.js.map +0 -1
- package/dist/esm/components/ui/hover-card.js.map +0 -1
- package/dist/esm/components/ui/icon.js.map +0 -1
- package/dist/esm/components/ui/input.js.map +0 -1
- package/dist/esm/components/ui/item.js.map +0 -1
- package/dist/esm/components/ui/label.js.map +0 -1
- package/dist/esm/components/ui/popover.js.map +0 -1
- package/dist/esm/components/ui/progress.js.map +0 -1
- package/dist/esm/components/ui/radio-group.js.map +0 -1
- package/dist/esm/components/ui/resizable.js.map +0 -1
- package/dist/esm/components/ui/scroll-area.js.map +0 -1
- package/dist/esm/components/ui/select.js.map +0 -1
- package/dist/esm/components/ui/separator.js.map +0 -1
- package/dist/esm/components/ui/sheet.js.map +0 -1
- package/dist/esm/components/ui/spinner.js.map +0 -1
- package/dist/esm/components/ui/switch.js.map +0 -1
- package/dist/esm/components/ui/table.js.map +0 -1
- package/dist/esm/components/ui/tabs.js.map +0 -1
- package/dist/esm/components/ui/textarea.js.map +0 -1
- package/dist/esm/components/ui/tooltip.js.map +0 -1
- package/dist/esm/convos.css +0 -1
- package/dist/esm/date-picker.css +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/knowledge-review.css +0 -1
- package/dist/esm/layouts/full-layout.js.map +0 -1
- package/dist/esm/layouts/header-nav.js.map +0 -1
- package/dist/esm/layouts/sidebar.js.map +0 -1
- package/dist/esm/logos/microsoft-logo.js.map +0 -1
- package/dist/esm/logos/microsoft-teams-logo.js.map +0 -1
- package/dist/esm/logos/slack-logo.js.map +0 -1
- package/dist/esm/ripple-status.css +0 -1
- package/dist/esm/scenes/knowledge-review.js.map +0 -1
- package/dist/esm/tailwind.preset.js.map +0 -1
- package/dist/file-upload.d.ts +0 -45
- package/dist/font-picker.d.ts +0 -106
- package/dist/full-layout.d.ts +0 -346
- package/dist/generating-star.d.ts +0 -15
- package/dist/header-nav.d.ts +0 -105
- package/dist/hover-card.d.ts +0 -10
- package/dist/icon.d.ts +0 -12
- package/dist/input.d.ts +0 -13
- package/dist/item.d.ts +0 -39
- package/dist/knowledge-review.d.ts +0 -228
- package/dist/label.d.ts +0 -8
- package/dist/layouts/full-layout.d.ts +0 -2
- package/dist/layouts/header-nav.d.ts +0 -2
- package/dist/layouts/sidebar.d.ts +0 -2
- package/dist/logo.d.ts +0 -38
- package/dist/markdown.d.ts +0 -55
- package/dist/metric-card-group.d.ts +0 -10
- package/dist/metric-card.d.ts +0 -21
- package/dist/microsoft-logo.d.ts +0 -15
- package/dist/microsoft-teams-logo.d.ts +0 -15
- package/dist/popover.d.ts +0 -18
- package/dist/progress.d.ts +0 -8
- package/dist/radio-group.d.ts +0 -8
- package/dist/resizable.d.ts +0 -12
- package/dist/scenes/knowledge-review.d.ts +0 -2
- package/dist/scroll-area.d.ts +0 -8
- package/dist/separator.d.ts +0 -6
- package/dist/sheet.d.ts +0 -39
- package/dist/sidebar.d.ts +0 -72
- package/dist/slack-logo.d.ts +0 -15
- package/dist/spinner.d.ts +0 -5
- package/dist/stats.html +0 -5305
- package/dist/switch.d.ts +0 -6
- package/dist/table.d.ts +0 -19
- package/dist/tabs.d.ts +0 -12
- package/dist/tailwind.preset.d.ts +0 -1
- package/dist/textarea.d.ts +0 -9
- package/dist/tooltip.d.ts +0 -16
- package/dist/trend-value.d.ts +0 -19
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/button-group.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/button.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/calendar.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/card.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-area-linear.js","sources":["../../../src/components/chart-area-linear/chart-area-linear.tsx"],"sourcesContent":["import React from 'react';\nimport { Area, AreaChart, XAxis } from 'recharts';\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';\nimport { useChartDateFormatters } from '@/lib/useChartDateFormatters';\n\nexport const description = 'A linear area chart';\n\nexport interface ChartAreaLinearProps {\n title: string;\n metric: string;\n data: {\n date: Date | string;\n key1: number;\n key2?: number;\n key3?: number;\n key4?: number;\n key5?: number;\n }[];\n chartConfig: ChartConfig;\n locale?: string;\n}\n\nexport function ChartAreaLinear({ title, metric, data, chartConfig, locale }: ChartAreaLinearProps) {\n const { tickFormatter, formatXLabel } = useChartDateFormatters(locale);\n\n return (\n <Card className=\"min-w-80 h-44 p-4 flex flex-col text-dark shadow-none\">\n <CardHeader className=\"p-0 space-y-0\" data-name=\"header\">\n <CardTitle className=\"uppercase font-geist heading-xxxs tracking-normal\">{title}</CardTitle>\n <CardDescription data-name=\"metric\" className=\"mt-0 text-[2rem] leading-10 text-dark font-geist\">\n {metric}\n </CardDescription>\n </CardHeader>\n <CardContent data-name=\"content\" className=\"p-0 flex-1 min-h-0\">\n <ChartContainer config={chartConfig} className=\"h-full w-full\">\n <AreaChart\n accessibilityLayer\n data={data}\n margin={{\n top: 2,\n left: 14,\n right: 23,\n }}\n >\n <defs>\n <linearGradient id=\"key1Gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor=\"var(--color-key1)\" />\n <stop offset=\"1\" stopColor=\"var(--color-key1)\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n axisLine={false}\n tickMargin={8}\n minTickGap={20}\n interval=\"preserveStartEnd\"\n tickFormatter={tickFormatter}\n tick={({ x, y, payload }) => (\n <text\n x={x}\n y={y}\n dy={12}\n textAnchor=\"middle\"\n className=\"uppercase font-bold font-geist tracking-tight !fill-dark-900\"\n >\n {tickFormatter(payload.value)}\n </text>\n )}\n />\n <ChartTooltip\n cursor={false}\n content={({ active, payload, label }) => (\n <ChartTooltipContent active={active} payload={payload} hideIndicator label={formatXLabel(label)} />\n )}\n />\n <Area\n dataKey=\"key1\"\n type=\"linear\"\n fill=\"url(#key1Gradient)\"\n stroke=\"var(--color-key1)\"\n strokeLinecap=\"round\"\n strokeWidth={3}\n />\n </AreaChart>\n </ChartContainer>\n </CardContent>\n </Card>\n );\n}\n"],"names":["description","ChartAreaLinear","title","metric","data","chartConfig","locale","tickFormatter","formatXLabel","useChartDateFormatters","Card","className","React","createElement","CardHeader","CardTitle","CardDescription","CardContent","ChartContainer","config","AreaChart","accessibilityLayer","margin","top","left","right","id","x1","y1","x2","y2","stopColor","offset","stopOpacity","XAxis","dataKey","tickLine","axisLine","tickMargin","minTickGap","interval","tick","x","y","payload","dy","textAnchor","value","ChartTooltip","cursor","content","active","label","ChartTooltipContent","hideIndicator","Area","type","fill","stroke","strokeLinecap","strokeWidth"],"mappings":"uTAOO,MAAMA,EAAc,sBAiBpB,SAASC,GAAgBC,MAAEA,EAAAC,OAAOA,OAAQC,EAAAC,YAAMA,EAAAC,OAAaA,IAClE,MAAMC,cAAEA,EAAAC,aAAeA,GAAiBC,EAAuBH;AAE/D,uBACGI,EAAA,CAAKC,UAAU,wEACdC,EAAAC,cAACC,GAAWH,UAAU,gBAAgB,YAAU,yCAC7CI,EAAA,CAAUJ,UAAU,qDAAqDT,kBAC1EU,EAAAC,cAACG,EAAA,CAAgB,YAAU,SAASL,UAAU,oDAC3CR,mCAGJc,EAAA,CAAY,YAAU,UAAUN,UAAU,qCACzCC,EAAAC,cAACK,EAAA,CAAeC,OAAQd,EAAaM,UAAU,gCAC7CC,EAAAC,cAACO,EAAA,CACCC,oBAAkB,EAClBjB,OACAkB,OAAQ,CACNC,IAAK,EACLC,KAAM,GACNC,MAAO;eAGTb,EAAAC,cAAC,OAAA,oBACCD,EAAAC,cAAC,iBAAA,CAAea,GAAG,eAAeC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,oBACxDlB,EAAAC,cAAC,OAAA,CAAKkB,UAAU,qCAChBnB,EAAAC,cAAC,OAAA,CAAKmB,OAAO,IAAID,UAAU,oBAAoBE,YAAa;eAGhErB,EAAAC,cAACqB,EAAA,CACCC,QAAQ,OACRC,UAAU,EACVC,UAAU,EACVC,WAAY,EACZC,WAAY,GACZC,SAAS,mBACTjC,gBACAkC,KAAM,EAAGC,IAAGC,IAAGC,4BACbhC,EAAAC,cAAC,OAAA,CACC6B,IACAC,IACAE,GAAI,GACJC,WAAW,SACXnC,UAAU,gEAETJ,EAAcqC,EAAQG;eAI7BnC,EAAAC,cAACmC,EAAA,CACCC,QAAQ,EACRC,QAAS,EAAGC,SAAQP,UAASQ,0BAC3BxC,EAAAC,cAACwC,EAAA,CAAoBF,SAAgBP,UAAkBU,eAAa,EAACF,MAAO5C,EAAa4C;eAG7FxC,EAAAC,cAAC0C,EAAA,CACCpB,QAAQ,OACRqB,KAAK,SACLC,KAAK,qBACLC,OAAO,oBACPC,cAAc,QACdC,YAAa,OAO3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-radial-stacked.js","sources":["../../../src/components/chart-radial-stacked/chart-radial-stacked.tsx"],"sourcesContent":["import React from 'react';\nimport { Label, PolarRadiusAxis, RadialBar, RadialBarChart } from 'recharts';\n\nimport { Trend, TrendValue } from '../trend-value';\n\nimport { formatNumber } from '@/lib/formatNumber';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';\nimport { cn } from '@/lib/utils';\n\nexport interface ChartRadialStackedProps {\n title: string;\n data: Record<string, number>[];\n chartConfig: ChartConfig;\n trend?: Trend;\n trendValue?: string;\n className?: string;\n}\n\nexport function ChartRadialStacked({\n title,\n data,\n chartConfig,\n trend,\n trendValue,\n className,\n}: ChartRadialStackedProps) {\n // Early return if data is invalid\n if (!data || data.length === 0) {\n return null;\n }\n\n const OUTER_RADIUS = 120;\n const INNER_RADIUS = 80;\n\n // return the sum\n const metricLabel = Object.values(data[0]).reduce((a, b) => (typeof b === 'number' ? a + b : a), 0);\n const formattedMetricLabel = formatNumber(metricLabel);\n\n // returns the data in sorted order by value\n const sortedData = Object.entries(data[0]).sort((a, b) => b[1] - a[1]); // Sort by value (descending)\n\n return (\n <Card className={cn('flex flex-col w-full min-w-60 p-4 shadow-none', className)}>\n <CardHeader className=\"p-0 space-y-0\" data-name=\"header\">\n <CardTitle className=\"uppercase font-geist heading-xxxs tracking-normal\">{title}</CardTitle>\n </CardHeader>\n <CardContent data-name=\"content\" className=\"p-0 flex-1 min-h-0\">\n <ChartContainer config={chartConfig} className=\"mx-auto aspect-[2/1] w-full max-w-52\">\n <RadialBarChart data={data} endAngle={180} innerRadius={INNER_RADIUS} outerRadius={OUTER_RADIUS} cy=\"100%\">\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\n <Label\n content={({ viewBox }) => {\n if (viewBox && 'cx' in viewBox && 'cy' in viewBox) {\n return (\n <text x={viewBox.cx} y={viewBox.cy} textAnchor=\"middle\">\n <tspan x={viewBox.cx} y={(viewBox.cy || 0) - 16} className=\"fill-foreground text-xl font-geist\">\n {formattedMetricLabel}\n </tspan>\n </text>\n );\n }\n\n return null;\n }}\n />\n </PolarRadiusAxis>\n {sortedData.map(([key]) => (\n <RadialBar\n key={key}\n dataKey={key}\n stackId=\"a\"\n cornerRadius={4}\n fill={chartConfig[key]?.color || `var(--color-${key})`}\n className=\"stroke-card stroke-2\"\n />\n ))}\n </RadialBarChart>\n </ChartContainer>\n {trend && trendValue && (\n <TrendValue variant=\"long\" trend={trend} trendValue={trendValue} className=\"mt-4 justify-center\" />\n )}\n </CardContent>\n </Card>\n );\n}\n"],"names":["ChartRadialStacked","title","data","chartConfig","trend","trendValue","className","length","metricLabel","Object","values","reduce","a","b","formattedMetricLabel","formatNumber","sortedData","entries","sort","React","createElement","Card","cn","CardHeader","CardTitle","CardContent","ChartContainer","config","RadialBarChart","endAngle","innerRadius","outerRadius","cy","ChartTooltip","cursor","content","ChartTooltipContent","hideLabel","PolarRadiusAxis","tick","tickLine","axisLine","Label","viewBox","x","cx","y","textAnchor","map","key","RadialBar","dataKey","stackId","cornerRadius","fill","color","TrendValue","variant"],"mappings":"6ZAmBO,SAASA,GAAmBC,MACjCA,EAAAC,KACAA,EAAAC,YACAA,EAAAC,MACAA,EAAAC,WACAA,EAAAC,UACAA,IAGA,IAAKJ,GAAwB,IAAhBA,EAAKK,OAChB,OAAO,KAGT,MAIMC,EAAcC,OAAOC,OAAOR,EAAK,IAAIS,OAAO,CAACC,EAAGC,IAAoB,iBAANA,EAAiBD,EAAIC,EAAID,EAAI,GAC3FE,EAAuBC,EAAaP,GAGpCQ,EAAaP,OAAOQ,QAAQf,EAAK,IAAIgB,KAAK,CAACN,EAAGC,IAAMA,EAAE,GAAKD,EAAE;AAEnE,OACEO,EAAAC,cAACC,EAAA,CAAKf,UAAWgB,EAAG,gDAAiDhB,mBACnEa,EAAAC,cAACG,EAAA,CAAWjB,UAAU,gBAAgB,YAAU,yBAC9Ca,EAAAC,cAACI,EAAA,CAAUlB,UAAU,qDAAqDL,mBAE5EkB,EAAAC,cAACK,EAAA,CAAY,YAAU,UAAUnB,UAAU,qCACzCa,EAAAC,cAACM,EAAA,CAAeC,OAAQxB,EAAaG,UAAU,uDAC7Ca,EAAAC,cAACQ,EAAA,CAAe1B,OAAY2B,SAAU,IAAKC,YAhB9B,GAgByDC,YAjBzD,IAiBoFC,GAAG,uBAClGb,EAAAC,cAACa,EAAA,CAAaC,QAAQ,EAAOC,uBAAShB,EAAAC,cAACgB,EAAA,CAAoBC,WAAS,qBACpElB,EAAAC,cAACkB,EAAA,CAAgBC,MAAM,EAAOC,UAAU,EAAOC,UAAU,kBACvDtB,EAAAC,cAACsB,EAAA,CACCP,QAAS,EAAGQ,aACNA,GAAW,OAAQA,GAAW,OAAQA,iBAEtCxB,EAAAC,cAAC,QAAKwB,EAAGD,EAAQE,GAAIC,EAAGH,EAAQX,GAAIe,WAAW,yBAC7C5B,EAAAC,cAAC,SAAMwB,EAAGD,EAAQE,GAAIC,GAAIH,EAAQX,IAAM,GAAK,GAAI1B,UAAU,sCACxDQ,IAMF,QAIZE,EAAWgC,IAAI,EAAEC,oBAChB9B,EAAAC,cAAC8B,EAAA,CACCD,MACAE,QAASF,EACTG,QAAQ,IACRC,aAAc,EACdC,KAAMnD,EAAY8C,IAAMM,OAAS,eAAeN,KAChD3C,UAAU,4BAKjBF,GAASC,kBACRc,EAAAC,cAACoC,EAAA,CAAWC,QAAQ,OAAOrD,QAAcC,aAAwBC,UAAU,yBAKrF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat-search.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/collapsible.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/command.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-dialog.js","sources":["../../../src/components/confirm-dialog/confirm-dialog.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n AlertDialog,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogHeader,\n AlertDialogCancel,\n AlertDialogAction,\n AlertDialogFooter,\n AlertDialogContent,\n} from '../ui/alert-dialog';\n\ninterface Props {\n title: string;\n description: React.ReactNode;\n onSubmit: () => Promise<void> | void;\n onCancel?: () => void;\n // Optional external state control - if not provided, manages state internally\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n variant: React.ComponentProps<typeof AlertDialogAction>['variant'];\n cancelText: string;\n submitText: string;\n loadingText?: string;\n zIndex?: number; // z-index of the dialog\n}\n\nexport interface ConfirmDialogRef {\n open: () => void;\n close: () => void;\n}\n\nexport const ConfirmDialog = React.forwardRef<ConfirmDialogRef, Props>(\n (\n {\n title,\n description,\n onSubmit,\n onCancel,\n open: externalOpen,\n onOpenChange: externalOnOpenChange,\n variant,\n cancelText,\n submitText,\n loadingText,\n zIndex = 50,\n },\n ref,\n ) => {\n const [isLoading, setIsLoading] = React.useState(false);\n\n // Internal state management (merged from useDialogState)\n const [internalOpen, setInternalOpen] = React.useState(false);\n\n // Use external state if provided, otherwise use internal state\n const isOpen = externalOpen ?? internalOpen;\n const setIsOpen = externalOnOpenChange ?? setInternalOpen;\n\n // Expose methods via ref for programmatic control\n React.useImperativeHandle(ref, () => ({\n open: () => setIsOpen(true),\n close: () => setIsOpen(false),\n }));\n\n const handleCancel = () => {\n if (isLoading) return; // Prevent cancel during loading\n onCancel?.();\n setIsOpen(false);\n };\n\n const handleSubmit = async () => {\n if (isLoading) return; // Prevent double submission\n\n setIsLoading(true);\n try {\n await onSubmit();\n setIsOpen(false); // Close dialog after successful submission\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <AlertDialog open={isOpen} onOpenChange={setIsOpen}>\n <AlertDialogContent zIndex={zIndex}>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={handleCancel} disabled={isLoading}>\n {cancelText}\n </AlertDialogCancel>\n <AlertDialogAction variant={variant} onClick={handleSubmit} disabled={isLoading}>\n {isLoading ? loadingText || submitText : submitText}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n },\n);\n\nConfirmDialog.displayName = 'ConfirmDialog';\n"],"names":["ConfirmDialog","React","forwardRef","title","description","onSubmit","onCancel","open","externalOpen","onOpenChange","externalOnOpenChange","variant","cancelText","submitText","loadingText","zIndex","ref","isLoading","setIsLoading","useState","internalOpen","setInternalOpen","isOpen","setIsOpen","useImperativeHandle","close","AlertDialog","AlertDialogContent","AlertDialogHeader","createElement","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","onClick","disabled","AlertDialogAction","async","displayName"],"mappings":"8OAiCO,MAAMA,EAAgBC,EAAMC,WACjC,EAEIC,QACAC,cACAC,WACAC,WACAC,KAAMC,EACNC,aAAcC,EACdC,UACAC,aACAC,aACAC,cACAC,SAAS,IAEXC,KAEA,MAAOC,EAAWC,GAAgBjB,EAAMkB,UAAS,IAG1CC,EAAcC,GAAmBpB,EAAMkB,UAAS,GAGjDG,EAASd,GAAgBY,EACzBG,EAAYb,GAAwBW,EAG1CpB,EAAMuB,oBAAoBR,EAAK,KAAA,CAC7BT,KAAM,IAAMgB,GAAU,GACtBE,MAAO,IAAMF,GAAU;AAqBzB,uBACGG,EAAA,CAAYnB,KAAMe,EAAQb,aAAcc,kCACtCI,EAAA,CAAmBZ,yCACjBa,EAAA,oBACC3B,EAAA4B,cAACC,OAAkB3B,kCAClB4B,EAAA,KAAwB3B,mBAE3BH,EAAA4B,cAACG,sBACC/B,EAAA4B,cAACI,EAAA,CAAkBC,QA1BN,KACfjB,IACJX,MACAiB,GAAU,KAuBsCY,SAAUlB,GACjDL,kCAEFwB,EAAA,CAAkBzB,UAAkBuB,QAvBxBG,UACnB,IAAIpB,EAAJ,CAEAC,GAAa,GACb,UACQb,IACNkB,GAAU,EACZ,CAAA,QACEL,GAAa,EACf,CARe,GAsBmDiB,SAAUlB,GACnEA,GAAYH,GAA4BD,QASvDb,EAAcsC,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convos.js","sources":["../../../src/components/convos/answer-diagnostics.tsx","../../../src/components/convos/discard-form.tsx","../../../src/components/convos/feedback-dialog.tsx","../../../src/components/convos/confidence-badge.tsx","../../../src/components/convos/message.tsx","../../../src/components/convos/attributes-dialog.tsx","../../../src/lib/sortAttributeKeys.ts","../../../src/components/convos/stream-badge.tsx","../../../src/components/convos/convo.tsx","../../../src/components/convos/convos.tsx","../../../src/components/convos/empty-convos.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ArrowSquareOut } from '@phosphor-icons/react';\n\nimport { Spinner } from '../ui/spinner';\nimport { useConvosContext } from './convos';\nimport { Button } from '../ui/button';\n\ntype ContextSufficiency = 'Sufficient' | 'Partially Sufficient' | 'Insufficient';\ntype AnswerGenerationType = 'Direct Extraction' | 'Summarization' | 'Inference' | 'Combination' | 'Cannot Answer';\ntype QueryContextRelevance = 'High' | 'Medium' | 'Low';\ninterface EvidenceFromContext {\n supporting_quote?: string;\n url?: string;\n}\nexport type AnswerDiagnostics = {\n confidence_score: string;\n answer_generation_type?: AnswerGenerationType;\n query_context_relevance?: QueryContextRelevance;\n context_sufficiency?: ContextSufficiency;\n confidence_justification?: string;\n evidence_from_context?: EvidenceFromContext[];\n};\n\ninterface AnswerDiagnosticsProps {\n messageId: string;\n}\n\nexport function AnswerDiagnosticsSection({ messageId }: AnswerDiagnosticsProps) {\n const { fetchAnswerDiagnostics } = useConvosContext();\n const [answerDiagnostics, setAnswerDiagnostics] = useState<AnswerDiagnostics | null>(null);\n const [isLoading, setIsLoading] = useState(true); // start loading when it mounts. It will start to fetch answer diagnostics on mount\n\n useEffect(() => {\n void fetchAnswerDiagnostics(messageId)\n .then((diagnostics) => setAnswerDiagnostics(diagnostics))\n .finally(() => setIsLoading(false));\n }, [fetchAnswerDiagnostics, messageId]);\n\n return (\n <div className=\"flex flex-col gap-4 px-4 flex-shrink-0 bg-surface\" data-name=\"discard-dialog-answer-diagnostic\">\n {isLoading ? (\n <div className=\"flex items-center justify-center h-full\">\n <Spinner />\n </div>\n ) : (\n <>\n {answerDiagnostics && (\n <>\n <dl className=\"grid grid-cols-[1fr_2fr] grid-rows-2 gap-5\">\n <div className=\"flex flex-col gap-1\">\n <dt className=\"heading-xs\">Confidence</dt>\n <dd className=\"text-sm\">{answerDiagnostics.confidence_score}</dd>\n </div>\n {answerDiagnostics.answer_generation_type && (\n <div className=\"flex flex-col gap-1\">\n <dt className=\"heading-xs\">Answer Type</dt>\n <dd className=\"text-sm\">{answerDiagnostics.answer_generation_type}</dd>\n </div>\n )}\n {answerDiagnostics.query_context_relevance && (\n <div className=\"flex flex-col gap-1\">\n <dt className=\"heading-xs\">Relevance</dt>\n <dd className=\"text-sm\">{answerDiagnostics.query_context_relevance}</dd>\n </div>\n )}\n {answerDiagnostics.context_sufficiency && (\n <div className=\"flex flex-col gap-1\">\n <dt className=\"heading-xs\">Context</dt>\n <dd className=\"text-sm\">{answerDiagnostics.context_sufficiency}</dd>\n </div>\n )}\n </dl>\n {answerDiagnostics.confidence_justification && (\n <div className=\"flex flex-col gap-2\" data-name=\"diagnostic-justification\">\n <span className=\"heading-xs\">Justification</span>\n <p className=\"text-sm my-0\">{answerDiagnostics.confidence_justification}</p>\n </div>\n )}\n {answerDiagnostics.evidence_from_context && answerDiagnostics.evidence_from_context.length > 0 && (\n <div className=\"flex flex-col gap-2\" data-name=\"diagnostic-evidence\">\n <span className=\"heading-xs\">Evidence (from Knowledge Base)</span>\n {answerDiagnostics.evidence_from_context.map((evidence, index) => (\n <div key={index} className=\"flex flex-col gap-1\">\n {evidence.supporting_quote && <p className=\"text-sm my-0\">{evidence.supporting_quote}</p>}\n {evidence.url && (\n <Button variant=\"link\" size=\"sm\" className=\"flex gap-1 text-sm self-end items-center\" asChild>\n <a href={evidence.url} target=\"_blank\" rel=\"noopener noreferrer\">\n <span>Source</span>\n <ArrowSquareOut size={16} />\n </a>\n </Button>\n )}\n </div>\n ))}\n </div>\n )}\n </>\n )}\n </>\n )}\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { CheckCircle, XCircle } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select';\nimport { Label } from '../ui/label';\nimport { Textarea } from '../ui/textarea';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';\n\nimport { cn } from '@/lib/utils';\n\nexport enum DiscardReason {\n INCORRECT_ANSWER = 'incorrect_answer',\n HALLUCINATED_ANSWER = 'hallucinated_answer',\n OVERSHARING = 'oversharing',\n WRONG_ARTICLE_SURFACED = 'wrong_article_surfaced',\n OTHER = 'other',\n}\n\nexport const DiscardReasonLabels: Record<DiscardReason, string> = {\n [DiscardReason.INCORRECT_ANSWER]: 'Incorrect answer',\n [DiscardReason.HALLUCINATED_ANSWER]: 'Hallucinated answer',\n [DiscardReason.OVERSHARING]: 'Oversharing',\n [DiscardReason.WRONG_ARTICLE_SURFACED]: 'Wrong article surfaced',\n [DiscardReason.OTHER]: 'Other',\n};\n\nexport interface DiscardFormData {\n reason: DiscardReason;\n preferredAnswer?: string;\n}\n\nexport interface DiscardedMeta {\n reason: DiscardReason;\n suggestedAnswer?: string;\n}\n\nexport interface SelectOpenHandle {\n isOpen: boolean;\n close: () => void;\n}\n\ninterface DiscardFormProps {\n discarded?: boolean;\n discardedMeta?: DiscardedMeta;\n onSubmit: (data: DiscardFormData) => Promise<void>;\n onApprove: () => Promise<void>;\n selectOpenRef?: React.MutableRefObject<SelectOpenHandle>;\n className?: string;\n}\n\nexport function DiscardForm({\n discarded,\n discardedMeta,\n onSubmit,\n onApprove,\n selectOpenRef,\n className,\n}: DiscardFormProps): React.ReactNode {\n const [isExpanded, setIsExpanded] = useState(discarded ?? false);\n const [isSelectOpen, setIsSelectOpenState] = useState(false);\n const [isDiscarded, setIsDiscarded] = useState(discarded);\n const formRef = useRef<HTMLFormElement>(null);\n\n // Sync local state when prop changes (e.g., after server refresh)\n useEffect(() => {\n setIsDiscarded(discarded);\n if (discarded) setIsExpanded(true);\n }, [discarded]);\n\n const setIsSelectOpen = (open: boolean) => {\n setIsSelectOpenState(open);\n if (selectOpenRef) selectOpenRef.current.isOpen = open;\n };\n\n // Expose close method to parent via ref - must be in useEffect to avoid side effects during render\n useEffect(() => {\n if (selectOpenRef) {\n selectOpenRef.current.close = () => setIsSelectOpen(false);\n }\n }, [selectOpenRef]);\n\n const {\n control,\n register,\n handleSubmit,\n reset,\n formState: { isSubmitting },\n } = useForm<DiscardFormData>({\n defaultValues: {\n reason: discardedMeta?.reason,\n preferredAnswer: discardedMeta?.suggestedAnswer || '',\n },\n });\n\n useEffect(() => {\n reset({\n reason: discardedMeta?.reason,\n preferredAnswer: discardedMeta?.suggestedAnswer || '',\n });\n }, [discardedMeta, reset]);\n\n useEffect(() => {\n if (formRef.current) {\n formRef.current.inert = !isExpanded;\n }\n }, [isExpanded]);\n\n const handleCancel = () => {\n setIsExpanded(false);\n setIsSelectOpen(false);\n reset();\n };\n\n const handleApprove = async () => {\n try {\n await onApprove();\n setIsDiscarded(false);\n setIsExpanded(false);\n setIsSelectOpen(false);\n } catch (error) {\n console.error('Failed to approve:', error);\n // TODO: Consider adding error UI feedback\n }\n };\n\n const handleDiscard = async (data: DiscardFormData) => {\n try {\n await onSubmit(data);\n setIsDiscarded(true);\n setIsSelectOpen(false);\n } catch (error) {\n console.error('Failed to discard:', error);\n // TODO: Consider adding error UI feedback\n }\n };\n\n const isResolved = isDiscarded !== undefined && isDiscarded !== null;\n const showApproveButton = !isResolved || isDiscarded === false;\n const showDiscardButton = !isResolved || isDiscarded === true;\n\n return (\n <div className={cn('space-y-4', className)}>\n {/* Buttons */}\n <div className=\"flex gap-2 px-4\">\n {showApproveButton && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"surface\"\n elevation=\"shadow\"\n size=\"sm\"\n className={cn('text-default !opacity-100', { 'bg-green-600 text-dark-100': isDiscarded === false })}\n disabled={isResolved}\n onClick={handleApprove}\n >\n <CheckCircle /> {isDiscarded === false ? 'Approved' : 'Approve'}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <span>Approve the answer</span>\n </TooltipContent>\n </Tooltip>\n )}\n {showDiscardButton && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"surface\"\n elevation=\"shadow\"\n size=\"sm\"\n className={cn('text-default !opacity-100', { 'bg-red-600 text-dark-100': isDiscarded === true })}\n disabled={isResolved}\n onClick={() => setIsExpanded(!isExpanded)}\n >\n <XCircle />\n {isDiscarded === true ? 'Discarded' : 'Discard'}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <span>Discard the answer</span>\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n {/* Form */}\n <div\n className={cn(\n 'grid transition-[grid-template-rows] duration-300 ease-in-out',\n isExpanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',\n )}\n >\n {isDiscarded ? (\n <div\n className={cn('overflow-hidden min-h-0 px-4 bg-dark-200 space-y-4', isExpanded ? 'py-4 mb-4' : 'py-0')}\n data-name=\"discard-dialog-reason\"\n >\n <div className=\"space-y-1\">\n <Label htmlFor=\"reason\" className=\"text-sm\">\n Reason\n </Label>\n <span className=\"text-sm block\">\n {discardedMeta?.reason && DiscardReasonLabels[discardedMeta.reason]}\n </span>\n </div>\n <div className=\"space-y-1\">\n <Label htmlFor=\"preferredAnswer\" className=\"text-sm\">\n Preferred answer\n </Label>\n <span className=\"text-sm block\">{discardedMeta?.suggestedAnswer}</span>\n </div>\n </div>\n ) : (\n <form\n ref={formRef}\n onSubmit={handleSubmit(handleDiscard)}\n className={cn(\n 'overflow-hidden min-h-0 px-4 bg-dark-200 transition-all duration-300 ease-in-out',\n isExpanded ? 'py-4 mb-4' : 'py-0',\n )}\n >\n <fieldset className=\"space-y-4\" data-name=\"discard-dialog-reason\">\n <div className=\"space-y-1\">\n <Label htmlFor=\"reason\" className=\"heading-xs\">\n Reason\n </Label>\n <Controller\n control={control}\n name=\"reason\"\n rules={{ required: true }}\n render={({ field }) => (\n <Select\n value={field.value}\n onValueChange={field.onChange}\n open={isSelectOpen}\n onOpenChange={setIsSelectOpen}\n required\n >\n <SelectTrigger className=\"border-dark-300 bg-surface\">\n <SelectValue placeholder=\"Select a reason\" />\n </SelectTrigger>\n <SelectContent>\n {Object.values(DiscardReason).map((reason) => (\n <SelectItem key={reason} value={reason}>\n {DiscardReasonLabels[reason]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n />\n <span className=\"text-xs text-subtle ml-1 hidden\">\n Give your ambient agent a descriptive name that reflects its purpose. This agent will learn from your\n content to provide personalized assistance.\n </span>\n </div>\n <div className=\"space-y-1\">\n <Label htmlFor=\"preferredAnswer\" className=\"heading-xs\">\n Preferred answer\n </Label>\n <Textarea\n id=\"preferredAnswer\"\n required\n minLength={10}\n placeholder=\"Explain what you'd like Brainfish to do next time in this case....\"\n rows={4}\n className=\"h-52 resize-none bg-surface\"\n {...register('preferredAnswer')}\n />\n <span className=\"text-xs text-subtle ml-1 hidden\">\n Tell Brainfish why this is the incorrect answer.\n </span>\n </div>\n <div className=\"flex gap-2 !mb-1 justify-end mr-1\">\n <Button variant=\"link\" size=\"sm\" type=\"button\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"default\" elevation=\"shadow\" size=\"sm\" disabled={isSubmitting}>\n {isSubmitting ? 'Submitting...' : 'Submit'}\n </Button>\n </div>\n </fieldset>\n </form>\n )}\n </div>\n </div>\n );\n}\n","import React, { useRef, useState } from 'react';\nimport { DialogProps } from '@radix-ui/react-dialog';\nimport { ListMagnifyingGlass } from '@phosphor-icons/react';\n\nimport { AnswerDiagnosticsSection } from './answer-diagnostics';\nimport { useConvosContext } from './convos';\nimport { DiscardForm, DiscardFormData, DiscardReason, SelectOpenHandle } from './discard-form';\nimport { DivButton } from '../ui/div-button';\nimport { ScrollArea } from '../ui/scroll-area';\n\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet';\n\nexport { DiscardReason } from './discard-form';\n\ninterface FeedbackDialogProps extends DialogProps {\n id: string;\n discarded?: boolean;\n discardedMeta?: { reason: DiscardReason; suggestedAnswer?: string };\n className?: string;\n}\n\nexport function FeedbackDialog({\n id,\n discarded,\n discardedMeta,\n open: externalOpen,\n onOpenChange: externalOnOpenChange,\n ...args\n}: FeedbackDialogProps): React.ReactNode {\n const { onDiscard, onApprove } = useConvosContext();\n const [internalOpen, setInternalOpen] = useState(false);\n const selectOpenRef = useRef<SelectOpenHandle>({ isOpen: false, close: () => {} });\n\n // Use external state if provided, otherwise use internal state\n const isOpen = externalOpen ?? internalOpen;\n const setIsOpen = externalOnOpenChange ?? setInternalOpen;\n\n const onSubmitForm = async (data: DiscardFormData) => {\n await onDiscard(id, data.reason, data.preferredAnswer).then(() => setIsOpen(false));\n };\n\n const handleApprove = async () => {\n await onApprove(id);\n };\n\n return (\n <Sheet modal={false} open={isOpen} onOpenChange={setIsOpen} {...args}>\n <SheetTrigger asChild onClick={(e) => e.stopPropagation()} onKeyUp={(e) => e.stopPropagation()}>\n <DivButton variant=\"shadowSurface\" size=\"sm\" aria-label=\"Inspect answer information\">\n <ListMagnifyingGlass className=\"text-dark-600\" /> Inspect\n </DivButton>\n </SheetTrigger>\n <SheetContent\n className=\"space-y-4 px-0\"\n onEscapeKeyDown={(e) => {\n if (selectOpenRef.current.isOpen) {\n e.preventDefault();\n selectOpenRef.current.close();\n }\n }}\n onInteractOutside={(e) => {\n if (selectOpenRef.current.isOpen) {\n e.preventDefault();\n }\n }}\n >\n <SheetHeader className=\"px-4\">\n <SheetTitle className=\"heading-sm m-0\">Answer information</SheetTitle>\n <SheetDescription className=\"sr-only\">\n Shows answer diagnostics and allows you to provide feedback.\n </SheetDescription>\n </SheetHeader>\n\n <ScrollArea className=\"h-[calc(100vh-4rem)] pb-4\">\n <DiscardForm\n discarded={discarded}\n discardedMeta={discardedMeta}\n onSubmit={onSubmitForm}\n onApprove={handleApprove}\n selectOpenRef={selectOpenRef}\n />\n <AnswerDiagnosticsSection messageId={id} />\n </ScrollArea>\n </SheetContent>\n </Sheet>\n );\n}\n","import React from 'react';\n\nimport { Badge } from '@/components/ui/badge';\n\ninterface ConfidenceBadgeProps {\n score?: number;\n}\n\nexport const ConfidenceBadge = ({ score }: ConfidenceBadgeProps) => {\n const formattedScore = `${score}%`;\n if (!score || score > 100) {\n return <Badge variant=\"disabled\">N/A</Badge>;\n } else if (score >= 80) {\n return <Badge variant=\"success\">{formattedScore}</Badge>;\n } else if (score >= 40 && score < 80) {\n return <Badge variant=\"warning\">{formattedScore}</Badge>;\n } else {\n return <Badge variant=\"disabled\">N/A</Badge>;\n }\n};\n","import React, { useMemo } from 'react';\nimport { ArrowSquareOut, Eye, UserCircle } from '@phosphor-icons/react';\n\nimport { StatusBadge } from './status-badge';\nimport { FormattedMessage } from '../markdown';\nimport { useConvosContext } from './convos';\nimport { FeedbackDialog, DiscardReason } from './feedback-dialog';\nimport { DivButton } from '../ui/div-button';\nimport { Button } from '../ui/button';\nimport { ConfidenceBadge } from './confidence-badge';\n\nimport { AILogo } from '@/components/logo/ai-logo';\nimport { Item, ItemHeader, ItemContent, ItemTitle } from '@/components/ui/item';\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';\nimport { cn } from '@/lib/utils';\nimport { formatDate } from '@/lib/formatDate';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport './message.css';\n\n// Preserve markdown code and GFM angle-bracket autolinks before HTML escaping.\nconst PROTECTED_MARKDOWN_SEGMENT = /(```[\\s\\S]*?```|`[^`\\n]+`|<(?:[a-zA-Z][a-zA-Z0-9+.-]*:|www\\.)[^\\s>]+>)/g;\n\nconst GFM_ANGLE_BRACKET_AUTOLINK = /^<(?:[a-zA-Z][a-zA-Z0-9+.-]*:|www\\.)[^\\s>]+>$/;\n\nfunction isProtectedMarkdownSegment(segment: string) {\n return (\n segment.startsWith('```') ||\n (segment.startsWith('`') && segment.endsWith('`')) ||\n GFM_ANGLE_BRACKET_AUTOLINK.test(segment)\n );\n}\n\nfunction escapeHtmlEntities(text: string) {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction escapeHtmlOutsideProtectedMarkdownSegments(content: string) {\n return content\n .split(PROTECTED_MARKDOWN_SEGMENT)\n .map((segment) => (isProtectedMarkdownSegment(segment) ? segment : escapeHtmlEntities(segment)))\n .join('');\n}\n\nexport interface RelatedArticle {\n id: string;\n title: string;\n url: string;\n score: number;\n}\n\nexport enum MessageType {\n ACTION = 'action', // user action like 'Next Best Action clicks'\n FEEDBACK = 'feedback', // feedback for up/down vote\n QUESTION = 'question', // user question\n ANSWER = 'answer', // ai generated answer\n HUMAN = 'human', // human agent (e.g. Zendesk)\n}\n\nexport enum Feedback {\n Positive = 'positive',\n Negative = 'negative',\n}\n\n// Shared base fields\ninterface BaseMessage {\n id: string;\n timestamp: Date;\n locale?: string; // only if not using en-US. For formatting dates (overrides context locale)\n isFeedbackDialogOpen?: boolean; // controlled state for feedback dialog\n onFeedbackDialogChange?: (isOpen: boolean) => void; // callback for feedback dialog state changes\n}\n\n// AI Answer - has related articles, discard info, confidence\nexport interface AIAnswerMessage extends BaseMessage {\n type: MessageType.ANSWER;\n role: 'ai';\n content: string;\n relatedArticles?: RelatedArticle[];\n discarded?: boolean;\n discardedMeta?: {\n reason: DiscardReason;\n suggestedAnswer?: string;\n };\n confidenceScore?: number;\n}\n\nexport interface Attachment {\n type: 'image' | string;\n url: string;\n}\n\n// User Question\nexport interface UserQuestionMessage extends BaseMessage {\n type: MessageType.QUESTION;\n role: 'user';\n content: string;\n attachments?: Attachment[];\n onlyShowAttachments?: boolean;\n}\n\n// User Feedback - requires feedback field\nexport interface UserFeedbackMessage extends BaseMessage {\n type: MessageType.FEEDBACK;\n role: 'user';\n content: string; // optional comment text\n feedback: Feedback;\n}\n\n// User Action\nexport interface UserActionMessage extends BaseMessage {\n type: MessageType.ACTION;\n role: 'user';\n content: string;\n}\n\nexport interface HumanAgentMessage extends BaseMessage {\n type: MessageType.HUMAN;\n role: 'human';\n content: string;\n authorName?: string;\n authorAvatarUrl?: string;\n source?: string;\n}\n\n// Union type\nexport type MessageProps =\n | AIAnswerMessage\n | UserQuestionMessage\n | UserFeedbackMessage\n | UserActionMessage\n | HumanAgentMessage;\n\n// Type guards for external use\nexport const isAIAnswer = (msg: MessageProps): msg is AIAnswerMessage => msg.type === MessageType.ANSWER;\n\nexport const isUserQuestion = (msg: MessageProps): msg is UserQuestionMessage => msg.type === MessageType.QUESTION;\n\nexport const isFeedback = (msg: MessageProps): msg is UserFeedbackMessage => msg.type === MessageType.FEEDBACK;\n\nexport const isAction = (msg: MessageProps): msg is UserActionMessage => msg.type === MessageType.ACTION;\n\nexport const isHumanAgent = (msg: MessageProps): msg is HumanAgentMessage => msg.type === MessageType.HUMAN;\n\nfunction formatHumanAgentTitle(authorName?: string, source?: string) {\n const name = authorName?.trim() || 'Support';\n if (!source?.trim()) {\n return name;\n }\n\n const sourceLabel = source.charAt(0).toUpperCase() + source.slice(1);\n\n return `${name} (via ${sourceLabel})`;\n}\n\nfunction MessageAttachmentImageThumbnails({ attachments }: { attachments: Attachment[] }) {\n return (\n <div className=\"flex gap-2 flex-wrap\">\n {attachments\n .filter((a) => a.type === 'image')\n .map((att, i) => (\n <div key={i} className=\"relative bg-dark-300 p-1 rounded shrink-0\">\n <a href={att.url} target=\"_blank\" rel=\"noopener noreferrer\">\n <img src={att.url} alt=\"\" className=\"size-14 object-cover rounded\" />\n </a>\n <div className=\"absolute top-1.5 right-1.5 bg-dark-300 rounded-full p-0.5\">\n <Eye size={8} />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction Message(props: MessageProps) {\n const { id, content, timestamp, locale: localeOverride, isFeedbackDialogOpen, onFeedbackDialogChange } = props;\n\n const purifiedContent = useMemo(() => escapeHtmlOutsideProtectedMarkdownSegments(content), [content]);\n\n // Get locale from context, with override if provided\n const { locale: contextLocale } = useConvosContext();\n const locale = localeOverride || contextLocale;\n\n const formattedDate = formatDate(timestamp, locale);\n\n if (isAIAnswer(props)) {\n const { relatedArticles, discarded, discardedMeta, confidenceScore } = props;\n\n return (\n <li className=\"relative before-line after-line list-none [&_a]:break-all\">\n <Item className=\"message-item\">\n <ItemHeader className=\"justify-start gap-1.5\">\n <AILogo variant=\"dark\" width={16} height={16} className=\"shrink-0\" />\n <ItemTitle className=\"text-xs font-bold\">{`AI generated ${discarded ? '(Discarded)' : ''}`}</ItemTitle>\n </ItemHeader>\n <ItemContent\n className={cn('message-ai-content', {\n 'py-6': !relatedArticles?.length,\n 'pt-6 pb-0': relatedArticles?.length,\n })}\n >\n <div className=\"message-content-wrapper\">\n <FormattedMessage message={{ content: purifiedContent }} />\n <div className=\"flex gap-2 justify-between mt-2 items-center\">\n <span className=\"message-timestamp\">{formattedDate}</span>\n <div className=\"flex items-center gap-2\">\n {confidenceScore && (\n <Tooltip>\n <TooltipTrigger asChild>\n <DivButton variant=\"outline\" size=\"sm\" className=\"text-xs p-1 h-auto\">\n {confidenceScore}\n </DivButton>\n </TooltipTrigger>\n <TooltipContent>\n <p>Answer score: {confidenceScore}</p>\n </TooltipContent>\n </Tooltip>\n )}\n <FeedbackDialog\n id={id}\n discarded={discarded}\n discardedMeta={discardedMeta}\n open={isFeedbackDialogOpen}\n onOpenChange={onFeedbackDialogChange}\n />\n </div>\n </div>\n </div>\n {!!relatedArticles?.length && (\n <Accordion type=\"single\" collapsible className=\"p-0 custom-dashed-border-t-dark-300 w-full\">\n <AccordionItem value=\"related-articles\">\n <AccordionTrigger className=\"px-6\">Related articles</AccordionTrigger>\n <AccordionContent>\n <ul className=\"message-article-list\">\n {relatedArticles.map((article) => (\n <li\n key={article.id}\n className=\"grid gap-2 grid-cols-[auto_1fr] items-center justify-items-start\"\n >\n <ConfidenceBadge score={Math.round(article.score * 100)} />\n <Button\n variant=\"link\"\n size=\"xs\"\n asChild\n className=\"flex items-center gap-2 min-w-0 !justify-start w-full\"\n >\n <a href={article.url} target=\"_blank\" rel=\"noopener noreferrer\">\n <span className=\"truncate\">{article.title}</span>\n <ArrowSquareOut className=\"size-4 flex-shrink-0\" weight=\"regular\" />\n </a>\n </Button>\n </li>\n ))}\n </ul>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n )}\n </ItemContent>\n </Item>\n </li>\n );\n }\n\n if (isHumanAgent(props)) {\n const { authorName, authorAvatarUrl, source } = props;\n const title = formatHumanAgentTitle(authorName, source);\n\n return (\n <li className=\"relative before-line after-line list-none [&_a]:break-all\">\n <Item className=\"message-item\">\n <ItemHeader className=\"justify-start gap-2\">\n {authorAvatarUrl ? (\n <img src={authorAvatarUrl} alt=\"\" className=\"size-6 shrink-0 rounded-full object-cover\" />\n ) : (\n <UserCircle weight=\"fill\" size={24} className=\"shrink-0\" />\n )}\n <ItemTitle className=\"text-xs font-bold\">{title}</ItemTitle>\n </ItemHeader>\n <ItemContent className=\"message-ai-content py-6\">\n <div className=\"message-content-wrapper\">\n <FormattedMessage message={{ content: purifiedContent }} />\n <span className=\"message-timestamp\">{formattedDate}</span>\n </div>\n </ItemContent>\n </Item>\n </li>\n );\n }\n\n // User messages (Question, Feedback, Action)\n const feedback = isFeedback(props) ? props.feedback : null;\n\n return (\n <li className=\"relative list-none before-line--user after-line--user\">\n <Item className=\"message-item\">\n <ItemHeader className=\"basis-0\">\n <UserCircle weight=\"fill\" size={24} />\n </ItemHeader>\n <ItemContent className=\"message-user-content\">\n {isUserQuestion(props) && (\n <div className=\"flex flex-col gap-2\">\n {props.attachments && props.attachments.some((a) => a.type === 'image') && (\n <MessageAttachmentImageThumbnails attachments={props.attachments} />\n )}\n {!props.onlyShowAttachments && <FormattedMessage message={{ content: purifiedContent }} />}\n <span className=\"message-timestamp\">{formattedDate}</span>\n </div>\n )}\n {isFeedback(props) && feedback && (\n <>\n <div className=\"message-header\">\n <div className=\"message-feedback-text\">\n {feedback === Feedback.Positive ? 'Upvoted as helpful' : 'Downvoted as not helpful'}\n </div>\n <div className=\"message-meta\">\n <StatusBadge variant={feedback === Feedback.Positive ? 'success' : 'destructive'}>\n {feedback === Feedback.Positive ? 'Answered' : 'Unable to help'}\n </StatusBadge>\n </div>\n </div>\n {content && <div className=\"text-base mb-1\">{content}</div>}\n <span className=\"message-timestamp-simple\">{formattedDate}</span>\n </>\n )}\n {isAction(props) && (\n <div className=\"message-header\">\n <div className=\"flex flex-col gap-2\">\n <span className=\"text-subtle text-sm italic\">{content}</span>\n <span className=\"message-timestamp-simple\">{formattedDate}</span>\n </div>\n\n <div className=\"message-meta\">\n <StatusBadge variant=\"warning\">Action</StatusBadge>\n </div>\n </div>\n )}\n </ItemContent>\n </Item>\n </li>\n );\n}\n\nexport { Message, MessageAttachmentImageThumbnails };\n","import React, { useState, useEffect } from 'react';\nimport { UserFocus } from '@phosphor-icons/react';\nimport { DialogProps } from '@radix-ui/react-dialog';\nimport { createId } from '@paralleldrive/cuid2';\n\nimport { useConvosContext } from './convos';\nimport { Table, TableBody, TableCell, TableRow, TableHeader, TableHead } from '../ui/table';\nimport { ScrollArea } from '../ui/scroll-area';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/index';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet';\nimport { DivButton } from '@/components/ui/div-button';\nimport { sortAttributeKeys } from '@/lib/sortAttributeKeys';\n\nimport './attributes-dialog.css';\n\ninterface Props extends DialogProps {\n conversationId: string;\n}\n\nexport function AttributesDialog({ conversationId, open, onOpenChange, ...args }: Props) {\n const [attributes, setAttributes] = useState<Record<string, any>[]>();\n const [sortedAttributesKeys, setSortedAttributesKeys] = useState<string[]>();\n\n const { fetchAttributes } = useConvosContext();\n\n useEffect(() => {\n void fetchAttributes(conversationId)\n .then((attrs) => {\n setAttributes(attrs);\n setSortedAttributesKeys(sortAttributeKeys(attrs));\n })\n .catch(() => {\n // Error handling - could be extended with error reporting\n });\n }, [fetchAttributes, conversationId]);\n\n if (!attributes?.length) {\n return null;\n }\n\n return (\n <Sheet modal={false} open={open} onOpenChange={onOpenChange} {...args}>\n <Tooltip>\n <TooltipTrigger asChild>\n <SheetTrigger asChild onClick={(e) => e.stopPropagation()} onKeyUp={(e) => e.stopPropagation()}>\n <DivButton\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7 [&_svg]:size-6 text-dark-900\"\n aria-label=\"Open Custom attributes dialog\"\n >\n <UserFocus size={24} />\n </DivButton>\n </SheetTrigger>\n </TooltipTrigger>\n <TooltipContent>Customer attributes</TooltipContent>\n </Tooltip>\n <SheetContent className=\"space-y-4\">\n <SheetHeader>\n <SheetTitle className=\"heading-sm m-0\">Custom attributes</SheetTitle>\n <SheetDescription className=\"sr-only\">\n Custom attributes are used to store additional information about the conversation.\n </SheetDescription>\n </SheetHeader>\n {sortedAttributesKeys && (\n <ScrollArea className=\"h-[calc(100vh-8rem)]\">\n {' '}\n {/* 8rem is an approximation, accounting for header, padding, and close button */}\n <Table className=\"bg-surface\" data-test-id=\"attributes-table\">\n <TableHeader>\n <TableRow>\n {sortedAttributesKeys.map((key) => (\n <TableHead key={key} className=\"capitalize font-bold\">\n {key}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {attributes.map((record) => (\n <TableRow key={record?.id ?? createId()} className=\"border-none\">\n {sortedAttributesKeys.map((key) => (\n <TableCell key={key} data-title={key}>\n {typeof record[key] === 'boolean' ? String(record[key]) : record[key]}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </ScrollArea>\n )}\n </SheetContent>\n </Sheet>\n );\n}\n","// sort the attributes by key so the important ones are at the top\n// namely id, name, email, phone, followed by the rest as is\n// return the sorted keys\nexport function sortAttributeKeys(attributes: Record<string, any>[]): string[] {\n const PRIORITY_KEYS = ['id', 'name', 'email', 'phone'];\n\n if (attributes.length === 0) {\n return [];\n }\n\n const priority = (key: string) => {\n const idx = PRIORITY_KEYS.indexOf(key);\n\n // non-important keys should be at the end, so we return Infinity\n return idx === -1 ? Infinity : idx;\n };\n\n return Object.keys(attributes[0]).sort((a, b) => priority(a) - priority(b));\n}\n","import React from 'react';\nimport { Circle } from '@phosphor-icons/react';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';\n\nimport { dark } from '@/colors/dark';\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/lib/utils';\n\ntype Props = React.ComponentPropsWithRef<typeof Badge> & {\n streamName: string;\n dotColor?: string; // hex code from Platform\n};\n\nexport const StreamBadge = React.forwardRef<HTMLDivElement, Props>(\n ({ className, streamName, dotColor = 'transparent', ...props }, ref) => {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n ref={ref}\n role=\"button\"\n className={cn('flex items-center gap-1 rounded-full p-0', className)}\n tabIndex={0}\n >\n <Badge {...props} className=\"bg-surface rounded-full border border-dark-300 text-subtle\">\n <span className=\"flex items-center gap-1\">\n <Circle\n size={8}\n weight=\"bold\"\n className=\"!size-2 rounded-full\"\n style={{ backgroundColor: dotColor }}\n color={dotColor === 'transparent' ? dark[300] : 'transparent'}\n />\n <span className=\"max-w-32 truncate inline-block\">{streamName}</span>\n </span>\n </Badge>\n </div>\n </TooltipTrigger>\n <TooltipContent>{streamName}</TooltipContent>\n </Tooltip>\n );\n },\n);\n\nStreamBadge.displayName = 'StreamBadge';\n","import React, { useState } from 'react';\n\nimport { StatusBadge } from './status-badge';\nimport { Message, isUserQuestion } from './message';\nimport { useConvosContext } from './convos';\nimport { AttributesDialog } from './attributes-dialog';\nimport { DivButton } from '../ui/div-button';\nimport { StreamBadge } from './stream-badge';\n\nimport { AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';\nimport { Item, ItemContent, ItemDescription, ItemTitle } from '@/components/ui/item';\nimport { cn } from '@/lib/utils';\nimport { formatDistance } from '@/lib/formatDate';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/index';\n\ninterface Source {\n name: string;\n color?: string;\n}\n\ninterface Props {\n locale?: string; // only if not using en-US. For formatting dates (overrides context locale)\n question: string; // the initial query\n timestamp: Date; // created_at date of the conversation thread\n location?: string; // location of the user\n source?: Source; // source of the conversation, i.e. channel name and color\n status?: React.ComponentProps<typeof StatusBadge>['variant'];\n statusMessage?: string; // status of the conversation - Answered | Article not found | Partial | Unanswered, etc\n hasAttributes?: boolean; // whether the conversation has attributes\n onClick?: () => void; // handler to fetch messages when accordion is clicked\n score?: number; // score of the conversation\n}\n\nexport type ConvoProps = React.ComponentPropsWithRef<typeof AccordionItem> & Props;\n\ntype OpenDialog = 'attributes' | 'feedback' | null;\n\ntype EnrichedStatusBadgeProps = Pick<ConvoProps, 'score' | 'status' | 'statusMessage'>;\nconst EnrichedStatusBadge = ({ score, status, statusMessage }: EnrichedStatusBadgeProps) => {\n return score ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <DivButton variant=\"ghost\" size=\"sm\" className=\"p-0 h-[26px]\">\n <StatusBadge variant={status} suffix={score}>\n {statusMessage}\n </StatusBadge>\n </DivButton>\n </TooltipTrigger>\n <TooltipContent>\n <p>Conversation score: {score}</p>\n </TooltipContent>\n </Tooltip>\n ) : (\n <StatusBadge variant={status} suffix={score}>\n {statusMessage}\n </StatusBadge>\n );\n};\n\n/**\n * Convo component - A single conversation item in an accordion.\n * Displays conversation metadata and messages, with support for lazy loading.\n *\n * This is a presentational component - it receives messages and loading state as props\n * rather than managing fetching logic itself.\n */\nexport function Convo({\n locale: localeOverride,\n value: queryId,\n question,\n timestamp,\n location,\n source,\n status,\n statusMessage,\n hasAttributes,\n onClick,\n className,\n score,\n ...props\n}: ConvoProps) {\n const { getMessages, isLoading: isLoadingFromContext, locale: contextLocale } = useConvosContext();\n\n // Dialog state management\n const [openDialog, setOpenDialog] = useState<OpenDialog>(null);\n const [openFeedbackMessageId, setOpenFeedbackMessageId] = useState<string | null>(null);\n\n const handleDialogChange = (dialogType: OpenDialog, messageId?: string) => (isOpen: boolean) => {\n if (isOpen) {\n setOpenDialog(dialogType);\n if (messageId) setOpenFeedbackMessageId(messageId);\n } else {\n setOpenDialog(null);\n setOpenFeedbackMessageId(null);\n }\n };\n\n const isAnyDialogOpen = openDialog !== null;\n\n // Use locale override if provided, otherwise use context locale\n const locale = localeOverride || contextLocale;\n\n // Get messages and loading state from context\n const messages = getMessages(queryId);\n const isLoading = isLoadingFromContext(queryId);\n\n // Format date\n const formattedDateRelative = formatDistance(timestamp, locale);\n\n // Create description string: \"Nov 1, 2025, 11:00 AM • United States\"\n // Filters out undefined/null values and joins with bullet separator\n const description = [formattedDateRelative, location].filter(Boolean).join(' • ');\n\n const handleAccordionClick = (e: React.MouseEvent) => {\n // Prevent accordion from toggling if click originated from within a dialog\n if ((e.target as HTMLElement).closest('[role=\"dialog\"]')) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n onClick?.();\n };\n\n return (\n <AccordionItem\n value={queryId}\n className={cn(\n 'border border-dark-200 hover:border-dark-300 rounded-lg bg-dark-100 [&[data-state=\"open\"]]:bg-surface [&[data-state=\"open\"]]:border-dark-100',\n { 'shadow-md shadow-dark-300': isAnyDialogOpen },\n className,\n )}\n {...props}\n >\n <AccordionTrigger\n className=\"flex-row-reverse px-4 gap-1 items-center [&[data-state=open]]:px-6\"\n onClick={handleAccordionClick}\n >\n <Item size=\"sm\" className=\"flex-1 p-0 justify-between\">\n <ItemContent className=\"max-w-[400px]\">\n <ItemTitle className=\"text-base text-default\">{question}</ItemTitle>\n <ItemDescription className=\"text-xs text-default flex items-center gap-1\">\n {description}\n {source && <StreamBadge streamName={source.name} dotColor={source.color} />}\n </ItemDescription>\n </ItemContent>\n <div className=\"flex items-center gap-0\">\n {hasAttributes && (\n <AttributesDialog\n conversationId={queryId}\n open={openDialog === 'attributes'}\n onOpenChange={handleDialogChange('attributes')}\n />\n )}\n {/* Add tooltip to say \"Conversation score\", only when there is a score */}\n {status && <EnrichedStatusBadge score={score} status={status} statusMessage={statusMessage} />}\n </div>\n </Item>\n </AccordionTrigger>\n <AccordionContent className=\"flex flex-col gap-4 text-balance px-5\">\n {isLoading ? (\n <div className=\"text-center text-subtle py-4\">Loading messages...</div>\n ) : (\n <ul className=\"list-none space-y-4\">\n {messages.map((message, idx) => {\n const userMsg = isUserQuestion(message) ? message : null;\n const attachments = userMsg?.attachments?.length ? userMsg.attachments : null;\n\n // First message text is already shown in the accordion header.\n // Skip unless it has attachments to display.\n if (idx === 0) {\n return attachments ? (\n <Message\n key={message.id}\n {...{ ...message, onlyShowAttachments: true }}\n isFeedbackDialogOpen={openDialog === 'feedback' && openFeedbackMessageId === message.id}\n onFeedbackDialogChange={handleDialogChange('feedback', message.id)}\n />\n ) : null;\n }\n\n return (\n <Message\n key={message.id}\n {...message}\n isFeedbackDialogOpen={openDialog === 'feedback' && openFeedbackMessageId === message.id}\n onFeedbackDialogChange={handleDialogChange('feedback', message.id)}\n />\n );\n })}\n </ul>\n )}\n </AccordionContent>\n </AccordionItem>\n );\n}\n","import React from 'react';\n\nimport { Convo, ConvoProps } from './convo';\nimport { MessageProps } from './message';\nimport { AnswerDiagnostics } from './answer-diagnostics';\nimport { DiscardReason } from './discard-form';\n\nimport { Accordion } from '@/components/ui/accordion';\n\n// Context types and implementation\ninterface ConvosContextValue {\n // Fetch functions\n fetchMessages: (conversationId: string) => Promise<MessageProps[]>;\n fetchAttributes: (conversationId: string) => Promise<Record<string, any>[]>;\n\n // Messages and loading state\n getMessages: (conversationId: string) => MessageProps[];\n isLoading: (conversationId: string) => boolean;\n handleFetchMessages: (conversationId: string) => void;\n\n // Locale for date formatting\n locale?: string;\n\n // Discard dialog functions\n fetchAnswerDiagnostics: (messageId: string) => Promise<AnswerDiagnostics>;\n onDiscard: (id: string, reason: DiscardReason, suggestedAnswer?: string) => Promise<void>;\n onApprove: (id: string) => Promise<void>;\n}\n\nconst ConvosContext = React.createContext<ConvosContextValue | undefined>(undefined);\n\nexport function useConvosContext() {\n const context = React.useContext(ConvosContext);\n if (context === undefined) {\n throw new Error('useConvosContext must be used within a ConvosProvider');\n }\n\n return context;\n}\n\ninterface ConvosProviderProps {\n children: React.ReactNode;\n value: ConvosContextValue;\n}\n\nexport function ConvosProvider({ children, value }: ConvosProviderProps) {\n return <ConvosContext.Provider value={value}>{children}</ConvosContext.Provider>;\n}\n\ninterface ConvosProps {\n convos: ConvoProps[];\n fetchMessages: (conversationId: string) => Promise<MessageProps[]>; // required fetch function for lazy loading\n fetchAttributes: (conversationId: string) => Promise<Record<string, any>[]>; // required fetch function for lazy loading\n fetchAnswerDiagnostics: (messageId: string) => Promise<AnswerDiagnostics>;\n onDiscard: (id: string, reason: DiscardReason, suggestedAnswer?: string) => Promise<void>;\n onApprove: (id: string) => Promise<void>;\n}\n\n/**\n * Convos component - Displays a list of conversations in an accordion.\n * Messages are always lazy loaded when accordion items are opened.\n *\n * @param convos - Array of conversation data\n * @param fetchMessages - Async function to fetch messages for a conversation\n */\nexport function Convos({\n convos,\n fetchMessages,\n fetchAttributes,\n fetchAnswerDiagnostics,\n onDiscard,\n onApprove,\n}: ConvosProps) {\n // Maps conversation IDs to their fetched messages\n const [messagesMap, setMessagesMap] = React.useState<Record<string, MessageProps[]>>({});\n\n // Tracks which conversations are currently loading messages\n const [loadingMap, setLoadingMap] = React.useState<Record<string, boolean>>({});\n\n // Refs used to check fetch status without causing re-renders\n // These are updated synchronously and don't trigger React re-renders\n const fetchedSetRef = React.useRef<Set<string>>(new Set());\n const loadingMapRef = React.useRef<Record<string, boolean>>({});\n\n /**\n * Handles fetching messages when an accordion item is clicked.\n * Prevents duplicate fetches by checking refs before making the request.\n * Updates both refs (for synchronous checks) and state (for UI updates).\n */\n const handleFetchMessages = React.useCallback(\n (conversationId: string) => {\n // Skip if already fetched or currently loading\n if (fetchedSetRef.current.has(conversationId) || loadingMapRef.current[conversationId]) {\n return;\n }\n\n // Set loading state in both ref (for quick checks) and state (for UI)\n loadingMapRef.current[conversationId] = true;\n setLoadingMap((prev) => ({ ...prev, [conversationId]: true }));\n\n fetchMessages(conversationId)\n .then((fetchedMessages) => {\n // Store fetched messages and mark as fetched\n setMessagesMap((prev) => ({ ...prev, [conversationId]: fetchedMessages }));\n fetchedSetRef.current.add(conversationId);\n })\n .catch(() => {\n // Error handling - could be extended with error reporting\n })\n .finally(() => {\n // Clear loading state from both ref and state\n delete loadingMapRef.current[conversationId];\n setLoadingMap((prev) => {\n const newMap = { ...prev };\n delete newMap[conversationId];\n\n return newMap;\n });\n });\n },\n [fetchMessages],\n );\n\n // Create context value - use the first convo's locale as default, or allow override\n const defaultLocale = convos[0]?.locale;\n\n const contextValue = React.useMemo(\n () => ({\n fetchMessages,\n fetchAttributes,\n getMessages: (conversationId: string) => messagesMap[conversationId] || [],\n isLoading: (conversationId: string) => loadingMap[conversationId] || false,\n handleFetchMessages,\n locale: defaultLocale,\n fetchAnswerDiagnostics: (messageId: string) => fetchAnswerDiagnostics(messageId),\n onDiscard,\n onApprove,\n }),\n [\n fetchMessages,\n fetchAttributes,\n messagesMap,\n loadingMap,\n handleFetchMessages,\n defaultLocale,\n fetchAnswerDiagnostics,\n onDiscard,\n onApprove,\n ],\n );\n\n return (\n <ConvosProvider value={contextValue}>\n <Accordion type=\"single\" collapsible className=\"w-full space-y-2\">\n {convos.map((convo) => (\n <Convo\n {...convo}\n key={convo.value}\n // Trigger fetch when accordion trigger is clicked\n onClick={() => handleFetchMessages(convo.value)}\n />\n ))}\n </Accordion>\n </ConvosProvider>\n );\n}\n","import React from 'react';\n\nimport { GeneratingStar } from '../generating-star';\n\nexport const EmptyConvos = ({ children }: { children: React.ReactNode }) => {\n return (\n <div className=\"flex flex-col items-center justify-center h-full w-full mt-40 gap-2\">\n <GeneratingStar className=\"size-8\" variant=\"disabled\" />\n <div className=\"text-subtlest text-sm w-96 text-center leading-5\">{children}</div>\n </div>\n );\n};\n"],"names":["AnswerDiagnosticsSection","messageId","fetchAnswerDiagnostics","useConvosContext","answerDiagnostics","setAnswerDiagnostics","useState","isLoading","setIsLoading","useEffect","then","diagnostics","finally","React","createElement","className","Spinner","Fragment","confidence_score","answer_generation_type","query_context_relevance","context_sufficiency","confidence_justification","evidence_from_context","length","map","evidence","index","key","supporting_quote","url","Button","variant","size","asChild","href","target","rel","ArrowSquareOut","DiscardReason","DiscardReasonLabels","incorrect_answer","hallucinated_answer","oversharing","wrong_article_surfaced","other","DiscardForm","discarded","discardedMeta","onSubmit","onApprove","selectOpenRef","isExpanded","setIsExpanded","isSelectOpen","setIsSelectOpenState","isDiscarded","setIsDiscarded","formRef","useRef","setIsSelectOpen","open","current","isOpen","close","control","register","handleSubmit","reset","formState","isSubmitting","useForm","defaultValues","reason","preferredAnswer","suggestedAnswer","inert","isResolved","showApproveButton","showDiscardButton","cn","Tooltip","TooltipTrigger","elevation","disabled","onClick","async","error","console","CheckCircle","TooltipContent","XCircle","Label","htmlFor","ref","data","Controller","name","rules","required","render","field","Select","value","onValueChange","onChange","onOpenChange","SelectTrigger","SelectValue","placeholder","SelectContent","Object","values","SelectItem","Textarea","id","minLength","rows","type","FeedbackDialog","externalOpen","externalOnOpenChange","args","onDiscard","internalOpen","setInternalOpen","setIsOpen","Sheet","modal","SheetTrigger","e","stopPropagation","onKeyUp","DivButton","ListMagnifyingGlass","SheetContent","onEscapeKeyDown","preventDefault","onInteractOutside","SheetHeader","SheetTitle","SheetDescription","ScrollArea","ConfidenceBadge","score","formattedScore","Badge","PROTECTED_MARKDOWN_SEGMENT","GFM_ANGLE_BRACKET_AUTOLINK","escapeHtmlOutsideProtectedMarkdownSegments","content","split","segment","startsWith","endsWith","test","isProtectedMarkdownSegment","replace","join","MessageType","Feedback","isAIAnswer","msg","isUserQuestion","isFeedback","isAction","isHumanAgent","MessageAttachmentImageThumbnails","attachments","filter","a","att","i","src","alt","Eye","Message","props","timestamp","locale","localeOverride","isFeedbackDialogOpen","onFeedbackDialogChange","purifiedContent","useMemo","contextLocale","formattedDate","formatDate","relatedArticles","confidenceScore","Item","ItemHeader","AILogo","width","height","ItemTitle","ItemContent","FormattedMessage","message","Accordion","collapsible","AccordionItem","AccordionTrigger","AccordionContent","article","Math","round","title","weight","authorName","authorAvatarUrl","source","trim","charAt","toUpperCase","slice","formatHumanAgentTitle","UserCircle","feedback","some","onlyShowAttachments","StatusBadge","AttributesDialog","conversationId","attributes","setAttributes","sortedAttributesKeys","setSortedAttributesKeys","fetchAttributes","attrs","PRIORITY_KEYS","priority","idx","indexOf","Infinity","keys","sort","b","sortAttributeKeys","catch","UserFocus","Table","TableHeader","TableRow","TableHead","TableBody","record","createId","TableCell","String","StreamBadge","forwardRef","streamName","dotColor","role","tabIndex","Circle","style","backgroundColor","color","dark","displayName","EnrichedStatusBadge","status","statusMessage","suffix","Convo","queryId","question","location","hasAttributes","getMessages","isLoadingFromContext","openDialog","setOpenDialog","openFeedbackMessageId","setOpenFeedbackMessageId","handleDialogChange","dialogType","isAnyDialogOpen","messages","description","formatDistance","Boolean","closest","ItemDescription","userMsg","ConvosContext","createContext","context","useContext","Error","ConvosProvider","children","Provider","Convos","convos","fetchMessages","messagesMap","setMessagesMap","loadingMap","setLoadingMap","fetchedSetRef","Set","loadingMapRef","handleFetchMessages","useCallback","has","prev","fetchedMessages","add","newMap","defaultLocale","contextValue","convo","EmptyConvos","GeneratingStar"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/dialog.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discoveries-created.js","sources":["../../../src/components/discoveries-created/discoveries-created.tsx"],"sourcesContent":["import React from 'react';\nimport { CartesianGrid, Line, LineChart, XAxis } from 'recharts';\n\nimport { Trend, TrendValue } from '../trend-value';\n\nimport { Card, CardContent, CardHeader } from '@/components/ui/card';\nimport {\n ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from '@/components/ui/chart';\nimport { formatNumber } from '@/lib/formatNumber';\nimport { useChartDateFormatters } from '@/lib/useChartDateFormatters';\nimport { cn } from '@/lib/utils';\n\nexport interface DiscoveriesCreatedProps {\n total: number;\n trend: Trend;\n trendValue: string;\n subBreakdowns: Array<{ label: string; value: number }>;\n sourceTotals: Array<{ key: string; label: string; value: number }>;\n data: Array<Record<string, number | string | Date>>;\n chartConfig: ChartConfig;\n locale?: string;\n className?: string;\n}\n\nconst formatWhole = (value: number) => formatNumber(value, {});\n\nexport function DiscoveriesCreated({\n total,\n trend,\n trendValue,\n subBreakdowns,\n sourceTotals,\n data,\n chartConfig,\n locale,\n className,\n}: DiscoveriesCreatedProps) {\n const { tickFormatter, formatXLabel } = useChartDateFormatters(locale);\n const lineKeys = Object.keys(chartConfig);\n\n return (\n <Card className={cn('shadow-none border border-dark-300 rounded-lg', className)}>\n <CardHeader className=\"p-0 space-y-0 border-b border-dark-300\">\n <div className=\"flex items-stretch justify-between\">\n <div className=\"flex flex-col gap-1 justify-center py-4 px-4\">\n <p className=\"uppercase heading-xxxs font-semibold text-dark tracking-normal\">Discoveries created</p>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-mono text-3xl leading-10 text-dark\">{formatWhole(total)}</span>\n <TrendValue trend={trend} trendValue={trendValue} />\n {subBreakdowns.map((item, i) => (\n <span key={item.label} className=\"text-xs leading-4 text-dark-600\">\n {i > 0 && <span className=\"mr-2\">·</span>}\n {formatWhole(item.value)} {item.label}\n </span>\n ))}\n </div>\n </div>\n\n <div className=\"flex items-center self-stretch\">\n {sourceTotals.map((source) => (\n <div\n key={source.key}\n className=\"border-l border-dark-300 flex flex-col justify-center px-4 py-2 self-stretch\"\n >\n <span className=\"text-xs leading-4 text-dark-700\">{source.label}</span>\n <span className=\"font-mono text-3xl leading-10 text-dark\">{formatWhole(source.value)}</span>\n </div>\n ))}\n </div>\n </div>\n </CardHeader>\n\n <CardContent className=\"px-4 pt-4 pb-0\">\n <ChartContainer config={chartConfig} className=\"h-48 w-full\">\n <LineChart data={data} margin={{ top: 8, left: 0, right: 0, bottom: 0 }}>\n <CartesianGrid horizontal vertical={false} className=\"stroke-dark-300\" />\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n axisLine={false}\n tickMargin={8}\n minTickGap={32}\n interval=\"preserveStartEnd\"\n tickFormatter={tickFormatter}\n tick={({ x, y, payload }) => (\n <text x={x} y={y} dy={12} textAnchor=\"middle\" className=\"text-xs fill-dark-600\">\n {tickFormatter(payload.value)}\n </text>\n )}\n />\n <ChartTooltip\n cursor={false}\n content={({ active, payload, label }) => (\n <ChartTooltipContent active={active} payload={payload} label={formatXLabel(label)} />\n )}\n />\n {lineKeys.map((key) => (\n <Line\n key={key}\n dataKey={key}\n type=\"monotone\"\n stroke={`var(--color-${key})`}\n strokeWidth={2}\n dot={false}\n activeDot={{ r: 4, strokeWidth: 0 }}\n />\n ))}\n <ChartLegend content={<ChartLegendContent />} />\n </LineChart>\n </ChartContainer>\n </CardContent>\n </Card>\n );\n}\n"],"names":["formatWhole","value","formatNumber","DiscoveriesCreated","total","trend","trendValue","subBreakdowns","sourceTotals","data","chartConfig","locale","className","tickFormatter","formatXLabel","useChartDateFormatters","lineKeys","Object","keys","Card","cn","React","createElement","CardHeader","TrendValue","map","item","i","key","label","source","CardContent","ChartContainer","config","LineChart","margin","top","left","right","bottom","CartesianGrid","horizontal","vertical","XAxis","dataKey","tickLine","axisLine","tickMargin","minTickGap","interval","tick","x","y","payload","dy","textAnchor","ChartTooltip","cursor","content","active","ChartTooltipContent","Line","type","stroke","strokeWidth","dot","activeDot","r","ChartLegend","ChartLegendContent"],"mappings":"4cA8BA,MAAMA,EAAeC,GAAkBC,EAAaD,EAAO,CAAA,GAEpD,SAASE,GAAmBC,MACjCA,EAAAC,MACAA,EAAAC,WACAA,EAAAC,cACAA,EAAAC,aACAA,EAAAC,KACAA,EAAAC,YACAA,EAAAC,OACAA,EAAAC,UACAA,IAEA,MAAMC,cAAEA,EAAAC,aAAeA,GAAiBC,EAAuBJ,GACzDK,EAAWC,OAAOC,KAAKR;AAE7B,uBACGS,EAAA,CAAKP,UAAWQ,EAAG,gDAAiDR,mBACnES,EAAAC,cAACC,EAAA,CAAWX,UAAU,yDACpBS,EAAAC,cAAC,MAAA,CAAIV,UAAU,qDACbS,EAAAC,cAAC,OAAIV,UAAU,+DACbS,EAAAC,cAAC,IAAA,CAAEV,UAAU,kEAAiE,sCAC9ES,EAAAC,cAAC,OAAIV,UAAU,0CACbS,EAAAC,cAAC,OAAA,CAAKV,UAAU,2CAA2CZ,EAAYI,mCACtEoB,EAAA,CAAWnB,QAAcC,eACzBC,EAAckB,IAAI,CAACC,EAAMC,mCACvB,OAAA,CAAKC,IAAKF,EAAKG,MAAOjB,UAAU,mCAC9Be,EAAI,kBAAKN,EAAAC,cAAC,OAAA,CAAKV,UAAU,QAAO,KAChCZ,EAAY0B,EAAKzB,OAAO,IAAEyB,EAAKG,yCAMvC,MAAA,CAAIjB,UAAU,kCACZJ,EAAaiB,IAAKK,kBACjBT,EAAAC,cAAC,MAAA,CACCM,IAAKE,EAAOF,IACZhB,UAAU;eAEVS,EAAAC,cAAC,OAAA,CAAKV,UAAU,mCAAmCkB,EAAOD;+BACzD,OAAA,CAAKjB,UAAU,2CAA2CZ,EAAY8B,EAAO7B,4CAOvF8B,EAAA,CAAYnB,UAAU,iCACrBS,EAAAC,cAACU,GAAeC,OAAQvB,EAAaE,UAAU,8CAC5CsB,EAAA,CAAUzB,OAAY0B,OAAQ,CAAEC,IAAK,EAAGC,KAAM,EAAGC,MAAO,EAAGC,OAAQ,mBAClElB,EAAAC,cAACkB,GAAcC,YAAU,EAACC,UAAU,EAAO9B,UAAU,mCACrDS,EAAAC,cAACqB,EAAA,CACCC,QAAQ,OACRC,UAAU,EACVC,UAAU,EACVC,WAAY,EACZC,WAAY,GACZC,SAAS,mBACTpC,gBACAqC,KAAM,EAAGC,IAAGC,IAAGC,4CACZ,OAAA,CAAKF,IAAMC,IAAME,GAAI,GAAIC,WAAW,SAAS3C,UAAU,yBACrDC,EAAcwC,EAAQpD,yBAI7BoB,EAAAC,cAACkC,EAAA,CACCC,QAAQ,EACRC,QAAS,EAAGC,SAAQN,UAASxB,0BAC3BR,EAAAC,cAACsC,EAAA,CAAoBD,SAAgBN,UAAkBxB,MAAOf,EAAae,OAG9Eb,EAASS,IAAKG,kBACbP,EAAAC,cAACuC,EAAA,CACCjC,MACAgB,QAAShB,EACTkC,KAAK,WACLC,OAAQ,eAAenC,KACvBoC,YAAa,EACbC,KAAK,EACLC,UAAW,CAAEC,EAAG,EAAGH,YAAa,qBAGpC3C,EAAAC,cAAC8C,EAAA,CAAYV,uBAASrC,EAAAC,cAAC+C,EAAA,WAMnC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/div-button.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/dropdown-menu.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editable-label.js","sources":["../../../src/components/editable-label/editable-label.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { PencilSimple } from '@phosphor-icons/react';\nimport clsx from 'clsx';\n\ntype EditableLabelProps = React.ComponentPropsWithoutRef<'span'> & {\n placeholder?: string;\n required?: boolean;\n};\n\nconst hasNoLabelText = (children: React.ReactNode) =>\n children == null || (typeof children === 'string' && children.trim() === '');\n\nexport const EditableLabel = React.forwardRef<HTMLSpanElement, EditableLabelProps>(\n ({ className, children, onKeyDown, onBlur, onInput, placeholder, required, ...props }, ref) => {\n const [invalid, setInvalid] = useState(false);\n\n const isEmpty = (element: HTMLElement) => !(element.textContent?.trim() ?? '');\n\n return (\n <span className=\"group flex items-center\">\n <span\n {...props}\n ref={ref}\n role=\"textbox\"\n tabIndex={0}\n aria-placeholder={placeholder}\n aria-multiline={false}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n contentEditable=\"plaintext-only\"\n suppressContentEditableWarning\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n onKeyDown?.(event);\n }}\n onInput={(event) => {\n if (event.currentTarget.textContent === '') {\n event.currentTarget.textContent = '';\n }\n if (!isEmpty(event.currentTarget)) {\n setInvalid(false);\n }\n onInput?.(event);\n }}\n onBlur={(event) => {\n if (required && isEmpty(event.currentTarget)) {\n event.currentTarget.textContent = '';\n setInvalid(true);\n } else {\n setInvalid(false);\n }\n onBlur?.(event);\n }}\n className={clsx(\n 'whitespace-nowrap overflow-hidden',\n 'inline-grid grid-cols-1',\n 'empty:before:pointer-events-none empty:before:content-[attr(aria-placeholder)] empty:before:text-muted-foreground empty:before:col-start-1 empty:before:row-start-1 empty:before:z-10',\n invalid && 'text-destructive empty:before:text-destructive',\n className,\n )}\n >\n {hasNoLabelText(children) ? null : children}\n </span>\n <PencilSimple\n size={16}\n className={clsx(\n 'ml-2 opacity-0 -translate-x-1 transition-[opacity,transform] duration-300',\n 'group-hover:opacity-100 group-hover:translate-x-0',\n 'group-focus-within:opacity-100 group-focus-within:translate-x-0',\n )}\n role=\"presentation\"\n />\n </span>\n );\n },\n);\n\nEditableLabel.displayName = 'EditableLabel';\n\nexport default EditableLabel;\n"],"names":["EditableLabel","React","forwardRef","className","children","onKeyDown","onBlur","onInput","placeholder","required","props","ref","invalid","setInvalid","useState","isEmpty","element","textContent","trim","createElement","role","tabIndex","contentEditable","suppressContentEditableWarning","event","key","preventDefault","currentTarget","blur","clsx","hasNoLabelText","PencilSimple","size","displayName"],"mappings":"6GASA,MAGaA,EAAgBC,EAAMC,WACjC,EAAGC,YAAWC,WAAUC,YAAWC,SAAQC,UAASC,cAAaC,cAAaC,GAASC,KACrF,MAAOC,EAASC,GAAcC,GAAS,GAEjCC,EAAWC,IAA2BA,EAAQC,aAAaC;AAEjE,OACEjB,EAAAkB,cAAC,OAAA,CAAKhB,UAAU,0CACdF,EAAAkB,cAAC,OAAA,IACKT,EACJC,MACAS,KAAK,UACLC,SAAU,EACV,mBAAkBb,EAClB,kBAAgB,EAChB,gBAAeC,QAAY,EAC3B,eAAcG,QAAW,EACzBU,gBAAgB,iBAChBC,gCAA8B,EAC9BlB,UAAYmB,IACQ,UAAdA,EAAMC,MACRD,EAAME,iBACNF,EAAMG,cAAcC,QAEtBvB,IAAYmB,IAEdjB,QAAUiB,IACgC,KAApCA,EAAMG,cAAcV,cACtBO,EAAMG,cAAcV,YAAc,IAE/BF,EAAQS,EAAMG,gBACjBd,GAAW,GAEbN,IAAUiB,IAEZlB,OAASkB,IACHf,GAAYM,EAAQS,EAAMG,gBAC5BH,EAAMG,cAAcV,YAAc,GAClCJ,GAAW,IAEXA,GAAW,GAEbP,IAASkB,IAEXrB,UAAW0B,EACT,oCACA,0BACA,wLACAjB,GAAW,iDACXT,IApDW,CAACC,GACV,MAAZA,GAAyC,iBAAbA,GAA6C,KAApBA,EAASc,OAsDrDY,CAAe1B,GAAY,KAAOA,kBAErCH,EAAAkB,cAACY,EAAA,CACCC,KAAM,GACN7B,UAAW0B,EACT,4EACA,oDACA,mEAEFT,KAAK,oBAOfpB,EAAciC,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"font-picker.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generating-star.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/hover-card.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/icon.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-with-tags.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/input.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/item.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/label.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logo.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metric-card-group.js","sources":["../../../src/components/metric-card-group/metric-card-group.tsx"],"sourcesContent":["import React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface MetricCardGroupProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function MetricCardGroup({ children, className }: MetricCardGroupProps) {\n return (\n <div className={cn('flex flex-wrap', className)}>\n {React.Children.map(children, (child, index) => (\n <div key={index} className=\"flex items-stretch first:pl-0\">\n {child}\n </div>\n ))}\n </div>\n );\n}\n"],"names":["MetricCardGroup","children","className","React","createElement","cn","Children","map","child","index","key"],"mappings":"qEASO,SAASA,GAAgBC,SAAEA,EAAAC,UAAUA;AAC1C,OACEC,EAAAC,cAAC,OAAIF,UAAWG,EAAG,iBAAkBH,IAClCC,EAAMG,SAASC,IAAIN,EAAU,CAACO,EAAOC,mCACnC,MAAA,CAAIC,IAAKD,EAAOP,UAAU,iCACxBM,IAKX"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metric-card.js","sources":["../../../src/components/metric-card/metric-card.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Trend, TrendValue } from '../trend-value';\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\nimport { formatNumber } from '@/lib/formatNumber';\n\nexport const description = 'A card to display metrics and its trend';\n\nexport interface MetricCardProps {\n title: string;\n value: string;\n trend: Trend;\n trendValue: string;\n className?: string;\n}\n\nexport function MetricCard({ title, value, trend, trendValue, className }: MetricCardProps) {\n let formattedValue = formatNumber(Number(value));\n if (isNaN(Number(value))) {\n formattedValue = value;\n }\n const showTooltip = Number(value) >= 1000;\n\n return (\n <Card className={cn('p-4 shadow-none', className)}>\n <CardHeader className=\"p-0 space-y-0\" data-name=\"header\">\n <CardDescription data-name=\"title\" className=\"uppercase font-geist heading-xxxs tracking-normal text-dark\">\n {title}\n </CardDescription>\n <CardTitle className=\"justify-start text-dark text-[64px] font-normal font-geist leading-[72px]\">\n {showTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <span>{formattedValue}</span>\n </TooltipTrigger>\n <TooltipContent>{value}</TooltipContent>\n </Tooltip>\n ) : (\n <span>{formattedValue}</span>\n )}\n </CardTitle>\n </CardHeader>\n <CardContent\n data-name=\"content\"\n className={cn('p-0 flex items-center gap-[2px]', {\n 'text-green-600': trend === Trend.UP,\n 'text-red-600': trend === Trend.DOWN,\n 'text-dark-600': trend === Trend.FLAT,\n })}\n >\n <TrendValue trend={trend} trendValue={trendValue} />\n </CardContent>\n </Card>\n );\n}\n"],"names":["description","MetricCard","title","value","trend","trendValue","className","formattedValue","formatNumber","Number","isNaN","showTooltip","React","createElement","Card","cn","CardHeader","CardDescription","CardTitle","Tooltip","TooltipTrigger","asChild","TooltipContent","CardContent","Trend","UP","DOWN","FLAT","TrendValue"],"mappings":"+WASO,MAAMA,EAAc,0CAUpB,SAASC,GAAWC,MAAEA,EAAAC,MAAOA,QAAOC,EAAAC,WAAOA,EAAAC,UAAYA,IAC5D,IAAIC,EAAiBC,EAAaC,OAAON,IACrCO,MAAMD,OAAON,MACfI,EAAiBJ,GAEnB,MAAMQ,EAAcF,OAAON,IAAU;AAErC,OACES,EAAAC,cAACC,GAAKR,UAAWS,EAAG,kBAAmBT,mCACpCU,EAAA,CAAWV,UAAU,gBAAgB,YAAU,yCAC7CW,EAAA,CAAgB,YAAU,QAAQX,UAAU,+DAC1CJ,kBAEHU,EAAAC,cAACK,EAAA,CAAUZ,UAAU,6EAClBK,iCACEQ,EAAA,oBACCP,EAAAC,cAACO,GAAeC,SAAO,kBACrBT,EAAAC,cAAC,OAAA,KAAMN,mBAETK,EAAAC,cAACS,EAAA,KAAgBnB,mCAGlB,OAAA,KAAMI,oBAIbK,EAAAC,cAACU,EAAA,CACC,YAAU,UACVjB,UAAWS,EAAG,kCAAmC,CAC/C,iBAAkBX,IAAUoB,EAAMC,GAClC,eAAgBrB,IAAUoB,EAAME,KAChC,gBAAiBtB,IAAUoB,EAAMG;eAGnCf,EAAAC,cAACe,EAAA,CAAWxB,QAAcC,gBAIlC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan-usage-card.js","sources":["../../../src/components/plan-usage-card/plan-usage-card.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Card, CardHeader } from '@/components/ui/card';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\nimport { formatNumber } from '@/lib/formatNumber';\n\nexport const description = 'A card to display plan allocation and usage status';\n\nexport interface PlanUsageCardProps {\n title: string;\n current: number;\n limit?: number;\n subtitle?: string;\n className?: string;\n}\n\nexport function PlanUsageCard({ title, current, limit, subtitle, className }: PlanUsageCardProps) {\n const formattedCurrent = formatNumber(current);\n\n const isNumericLimit = typeof limit === 'number';\n\n const limitText = isNumericLimit ? formatNumber(limit) : 'Custom';\n\n const showTooltip = current >= 1000 || (isNumericLimit && limit >= 1000);\n\n return (\n <Card className={cn('p-4 shadow-none rounded-2xl border-none', className)}>\n <CardHeader className=\"p-0 space-y-1\">\n <div className=\"flex items-baseline gap-0.5\">\n <span className=\"text-dark text-3xl font-bold leading-tight\">\n {showTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <span>{formattedCurrent}</span>\n </TooltipTrigger>\n <TooltipContent>{current}</TooltipContent>\n </Tooltip>\n ) : (\n formattedCurrent\n )}\n </span>\n\n <span className=\"text-muted-foreground text-xl leading-tight\">/{limitText}</span>\n </div>\n\n <div className=\"flex flex-col\">\n <span className=\"text-muted-foreground text-sm\">{title}</span>\n\n {subtitle && <span className=\"text-muted-foreground text-sm\">{subtitle}</span>}\n </div>\n </CardHeader>\n </Card>\n );\n}\n"],"names":["description","PlanUsageCard","title","current","limit","subtitle","className","formattedCurrent","formatNumber","isNumericLimit","limitText","showTooltip","React","createElement","Card","cn","CardHeader","Tooltip","TooltipTrigger","asChild","TooltipContent"],"mappings":"kQAOO,MAAMA,EAAc,qDAUpB,SAASC,GAAcC,MAAEA,EAAAC,QAAOA,QAASC,EAAAC,SAAOA,EAAAC,UAAUA,IAC/D,MAAMC,EAAmBC,EAAaL,GAEhCM,EAAkC,iBAAVL,EAExBM,EAAYD,EAAiBD,EAAaJ,GAAS,SAEnDO,EAAcR,GAAW,KAASM,GAAkBL,GAAS;AAEnE,OACEQ,EAAAC,cAACC,EAAA,CAAKR,UAAWS,EAAG,0CAA2CT,mBAC7DM,EAAAC,cAACG,EAAA,CAAWV,UAAU,gCACpBM,EAAAC,cAAC,OAAIP,UAAU,8CACbM,EAAAC,cAAC,OAAA,CAAKP,UAAU,8CACbK,iBACCC,EAAAC,cAACI,EAAA,oBACCL,EAAAC,cAACK,EAAA,CAAeC,SAAO,kBACrBP,EAAAC,cAAC,OAAA,KAAMN,mBAETK,EAAAC,cAACO,EAAA,KAAgBjB,IAGnBI,kBAIJK,EAAAC,cAAC,OAAA,CAAKP,UAAU,+CAA8C,IAAEI,mCAGjE,MAAA,CAAIJ,UAAU,gCACbM,EAAAC,cAAC,OAAA,CAAKP,UAAU,iCAAiCJ,GAEhDG,kBAAYO,EAAAC,cAAC,OAAA,CAAKP,UAAU,iCAAiCD,KAKxE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/popover.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/progress.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/radio-group.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/resizable.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/scroll-area.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/separator.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/sheet.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/spinner.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/switch.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/table.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/tabs.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/textarea.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ui/tooltip.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trend-value.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"two-level-combobox.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","sources":["../../../../src/components/ui/accordion.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { CaretDown } from '@phosphor-icons/react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b [&>h3]:my-0', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:no-underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180 group',\n className,\n )}\n {...props}\n >\n {children}\n <CaretDown className=\"text-muted-foreground size-4 shrink-0 translate-y-0.5 transition-transform duration-200 hover:bg-dark-300 hover:group-[&[data-state=open]]:bg-dark-200 rounded-sm group-hover:transition-colors hover:duration-300 hover:ease-in-out\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"],"names":["Accordion","props","AccordionPrimitive","Root","AccordionItem","className","React","createElement","Item","cn","AccordionTrigger","children","Header","Trigger","CaretDown","AccordionContent","Content"],"mappings":"yKAMA,SAASA,MAAeC;AACtB,uBAAQC,EAAmBC,KAAnB,CAAwB,YAAU,eAAgBF,GAC5D,CAEA,SAASG,GAAcC,UAAEA,KAAcJ;AACrC,OACEK,EAAAC,cAACL,EAAmBM,KAAnB,CACC,YAAU,iBACVH,UAAWI,EAAG,uBAAwBJ,MAClCJ,GAGV,CAEA,SAASS,GAAiBL,UAAEA,EAAAM,SAAWA,KAAaV;AAClD,OACEK,EAAAC,cAACL,EAAmBU,OAAnB,CAA0BP,UAAU,uBACnCC,EAAAC,cAACL,EAAmBW,QAAnB,CACC,YAAU,oBACVR,UAAWI,EACT,sTACAJ,MAEEJ,GAEHU;eACDL,EAAAC,cAACO,EAAA,CAAUT,UAAU,0OAI7B,CAEA,SAASU,GAAiBV,UAAEA,EAAAM,SAAWA,KAAaV;AAClD,OACEK,EAAAC,cAACL,EAAmBc,QAAnB,CACC,YAAU,oBACVX,UAAU,+GACNJ;+BAEH,MAAA,CAAII,UAAWI,EAAG,YAAaJ,IAAaM,GAGnD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.js","sources":["../../../../src/components/ui/alert-dialog.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\nimport { buttonVariants } from '@/components/ui/button';\n\n// Context to provide dialog close function\nconst AlertDialogContext = React.createContext<{\n onClose?: () => void;\n}>({});\n\nconst AlertDialog = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root>\n>(({ onOpenChange, ...props }, _ref) => {\n const handleClose = React.useCallback(() => {\n onOpenChange?.(false);\n }, [onOpenChange]);\n\n return (\n <AlertDialogContext.Provider value={{ onClose: handleClose }}>\n <AlertDialogPrimitive.Root onOpenChange={onOpenChange} {...props} />\n </AlertDialogContext.Provider>\n );\n});\nAlertDialog.displayName = AlertDialogPrimitive.Root.displayName;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay> & {\n zIndex?: number;\n }\n>(({ className, zIndex, style, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n style={zIndex != null ? { ...style, zIndex } : style}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> & {\n zIndex?: number;\n }\n>(({ className, zIndex, style, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay zIndex={zIndex} />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] border border-border bg-background p-0 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-md',\n className,\n )}\n style={zIndex != null ? { ...style, zIndex } : style}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col text-center sm:text-left', className)} {...props} />\n);\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 pb-4 px-4', className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-medium px-4 my-0 h-12 flex items-center', className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description ref={ref} className={cn('text-sm px-4 py-3 my-0', className)} {...props} />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }\n>(({ className, variant, asChild, onClick, ...props }, ref) => {\n const { onClose } = React.useContext(AlertDialogContext);\n\n const handleClick = React.useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!onClick) return;\n\n const result = onClick(event);\n const isPromise = (value: unknown): value is Promise<unknown> =>\n value != null && typeof value === 'object' && 'then' in value;\n\n if (isPromise(result)) {\n event.preventDefault();\n try {\n await result;\n onClose?.();\n } catch (error) {\n console.error('AlertDialogAction onClick failed:', error);\n }\n }\n },\n [onClick, onClose],\n );\n\n if (asChild) {\n return (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants({ variant }), className)}\n onClick={handleClick}\n {...props}\n />\n );\n }\n\n return (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants({ variant }), className)}\n onClick={handleClick}\n {...props}\n />\n );\n});\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel> & VariantProps<typeof buttonVariants>\n>(({ className, variant, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: variant || 'link' }), 'mt-2 sm:mt-0 text-foreground', className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n"],"names":["AlertDialogContext","React","createContext","AlertDialog","forwardRef","onOpenChange","props","_ref","handleClose","useCallback","Provider","value","onClose","createElement","AlertDialogPrimitive","Root","displayName","AlertDialogTrigger","Trigger","AlertDialogPortal","Portal","AlertDialogOverlay","className","zIndex","style","ref","Overlay","cn","AlertDialogContent","Content","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","Title","AlertDialogDescription","Description","AlertDialogAction","variant","asChild","onClick","useContext","handleClick","async","event","result","preventDefault","error","console","Action","buttonVariants","AlertDialogCancel","Cancel"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sources":["../../../../src/components/ui/alert.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-lg border px-4 py-3 text-sm flex gap-3 [&>svg]:size-5 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n danger: 'border-red bg-red-100 text-dark [&>svg]:text-red',\n success: 'border-green bg-green-100 text-dark [&>svg]:text-green',\n warning: 'border-yellow bg-yellow-100 text-dark [&>svg]:text-yellow',\n info: 'border-blue bg-blue-100 text-dark [&>svg]:text-blue',\n },\n layout: {\n compact: 'items-center',\n longForm:\n \"p-8 items-start [&_[data-slot='alert-description']]:space-y-4 [&_[data-slot='alert-description']>p]:my-0\",\n },\n },\n defaultVariants: {\n variant: 'default',\n layout: 'compact',\n },\n },\n);\n\nconst Alert = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'> & VariantProps<typeof alertVariants>>(\n ({ className, variant, layout, children, ...props }, ref) => {\n // Group title and description elements into AlertContent\n const wrappedChildren: React.ReactNode[] = [];\n let contentChildren: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n const isTitle = child.type === AlertTitle;\n const isDescription = child.type === AlertDescription;\n\n if (isTitle || isDescription) {\n contentChildren.push(child);\n } else {\n // If we have accumulated content children, wrap them first\n if (contentChildren.length > 0) {\n wrappedChildren.push(\n <AlertContent key={`content-${wrappedChildren.length}`}>{contentChildren}</AlertContent>,\n );\n contentChildren = [];\n }\n wrappedChildren.push(child);\n }\n } else {\n // If we have accumulated content children, wrap them first\n if (contentChildren.length > 0) {\n wrappedChildren.push(\n <AlertContent key={`content-${wrappedChildren.length}`}>{contentChildren}</AlertContent>,\n );\n contentChildren = [];\n }\n wrappedChildren.push(child);\n }\n });\n\n // Handle any remaining content children\n if (contentChildren.length > 0) {\n wrappedChildren.push(<AlertContent key={`content-${wrappedChildren.length}`}>{contentChildren}</AlertContent>);\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant, layout }), className)}\n {...props}\n >\n {wrappedChildren}\n </div>\n );\n },\n);\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef<HTMLHeadingElement, React.ComponentProps<'h5'>>(({ className, ...props }, ref) => (\n // eslint-disable-next-line jsx-a11y/heading-has-content\n <h5 ref={ref} data-slot=\"alert-title\" className={cn('line-clamp-1 min-h-4 heading-xs', className)} {...props} />\n));\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"alert-description\"\n className={cn('text-dark/80 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className)}\n {...props}\n />\n ),\n);\nAlertDescription.displayName = 'AlertDescription';\n\nconst AlertContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"alert-content\" className={cn('flex flex-col gap-1 flex-grow', className)} {...props} />\n));\nAlertContent.displayName = 'AlertContent';\n\nconst AlertAction = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"alert-action\"\n className={cn('self-start flex items-start justify-end', className)}\n {...props}\n />\n));\nAlertAction.displayName = 'AlertAction';\n\nexport { Alert, AlertTitle, AlertDescription, AlertContent, AlertAction };\n"],"names":["alertVariants","cva","variants","variant","default","danger","success","warning","info","layout","compact","longForm","defaultVariants","Alert","React","forwardRef","className","children","props","ref","wrappedChildren","contentChildren","Children","forEach","child","isValidElement","isTitle","type","AlertTitle","isDescription","AlertDescription","push","length","AlertContent","key","createElement","role","cn","displayName","AlertAction"],"mappings":"0HAKA,MAAMA,EAAgBC,EACpB,iGACA,CACEC,SAAU,CACRC,QAAS,CACPC,QAAS,+BACTC,OAAQ,mDACRC,QAAS,yDACTC,QAAS,4DACTC,KAAM,uDAERC,OAAQ,CACNC,QAAS,eACTC,SACE,6GAGNC,gBAAiB,CACfT,QAAS,UACTM,OAAQ,aAKRI,EAAQC,EAAMC,WAClB,EAAGC,YAAWb,UAASM,SAAQQ,cAAaC,GAASC,KAEnD,MAAMC,EAAqC,GAC3C,IAAIC,EAAqC,GAoCzC,OAlCAP,EAAMQ,SAASC,QAAQN,EAAWO,IAChC,GAAIV,EAAMW,eAAeD,GAAQ,CAC/B,MAAME,EAAUF,EAAMG,OAASC,EACzBC,EAAgBL,EAAMG,OAASG,EAEjCJ,GAAWG,EACbR,EAAgBU,KAAKP,IAGjBH,EAAgBW,OAAS,IAC3BZ,EAAgBW;+BACbE,EAAA,CAAaC,IAAK,WAAWd,EAAgBY,UAAWX,IAE3DA,EAAkB,IAEpBD,EAAgBW,KAAKP,GAEzB,MAEMH,EAAgBW,OAAS,IAC3BZ,EAAgBW;+BACbE,EAAA,CAAaC,IAAK,WAAWd,EAAgBY,UAAWX,IAE3DA,EAAkB,IAEpBD,EAAgBW,KAAKP,KAKrBH,EAAgBW,OAAS,GAC3BZ,EAAgBW,oCAAME,EAAA,CAAaC,IAAK,WAAWd,EAAgBY,UAAWX,mBAI9EP,EAAAqB,cAAC,MAAA,CACChB,MACA,YAAU,QACViB,KAAK,QACLpB,UAAWqB,EAAGrC,EAAc,CAAEG,UAASM,WAAWO,MAC9CE,GAEHE,KAKTP,EAAMyB,YAAc,QAEpB,MAAMV,EAAad,EAAMC,WAA2D,EAAGC,eAAcE,GAASC;eAE5GL,EAAAqB,cAAC,KAAA,CAAGhB,MAAU,YAAU,cAAcH,UAAWqB,EAAG,kCAAmCrB,MAAgBE,KAEzGU,EAAWU,YAAc,aAEzB,MAAMR,EAAmBhB,EAAMC,WAC7B,EAAGC,eAAcE,GAASC,mBACxBL,EAAAqB,cAAC,MAAA,CACChB,MACA,YAAU,oBACVH,UAAWqB,EAAG,4EAA6ErB,MACvFE,KAIVY,EAAiBQ,YAAc,mBAE/B,MAAML,EAAenB,EAAMC,WAAwD,EAAGC,eAAcE,GAASC,mBAC3GL,EAAAqB,cAAC,OAAIhB,MAAU,YAAU,gBAAgBH,UAAWqB,EAAG,gCAAiCrB,MAAgBE,KAE1Ge,EAAaK,YAAc,eAE3B,MAAMC,EAAczB,EAAMC,WAAwD,EAAGC,eAAcE,GAASC,mBAC1GL,EAAAqB,cAAC,MAAA,CACChB,MACA,YAAU,eACVH,UAAWqB,EAAG,0CAA2CrB,MACrDE,KAGRqB,EAAYD,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.js","sources":["../../../../src/components/ui/avatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/lib/utils';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full overflow-hidden rounded-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2 group-data-[size=default]/avatar:ring-1',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n"],"names":["Avatar","className","size","props","React","createElement","AvatarPrimitive","Root","cn","AvatarImage","Image","AvatarFallback","Fallback","AvatarBadge","AvatarGroup","AvatarGroupCount"],"mappings":"oHAKA,SAASA,GAAOC,UACdA,EAAAC,KACAA,EAAO,aACJC;AAIH,OACEC,EAAAC,cAACC,EAAgBC,KAAhB,CACC,YAAU,SACV,YAAWL,EACXD,UAAWO,EACT,sGACAP,MAEEE,GAGV,CAEA,SAASM,GAAYR,UAAEA,KAAcE;AACnC,OACEC,EAAAC,cAACC,EAAgBI,MAAhB,CACC,YAAU,eACVT,UAAWO,EAAG,uDAAwDP,MAClEE,GAGV,CAEA,SAASQ,GAAeV,UAAEA,KAAcE;AACtC,OACEC,EAAAC,cAACC,EAAgBM,SAAhB,CACC,YAAU,kBACVX,UAAWO,EACT,qIACAP,MAEEE,GAGV,CAEA,SAASU,GAAYZ,UAAEA,KAAcE;AACnC,OACEC,EAAAC,cAAC,OAAA,CACC,YAAU,eACVJ,UAAWO,EACT,4JACA,gFACA,oIACA,gFACAP,MAEEE,GAGV,CAEA,SAASW,GAAYb,UAAEA,KAAcE;AACnC,OACEC,EAAAC,cAAC,MAAA,CACC,YAAU,eACVJ,UAAWO,EACT,sGACAP,MAEEE,GAGV,CAEA,SAASY,GAAiBd,UAAEA,KAAcE;AACxC,OACEC,EAAAC,cAAC,MAAA,CACC,YAAU,qBACVJ,UAAWO,EACT,2VACAP,MAEEE,GAGV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","sources":["../../../../src/components/ui/badge.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border h-[18px] font-normal rounded-[4px] py-[1px] px-[6px] text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-primary bg-primary text-primary-foreground hover:bg-primary/80',\n destructive: 'inline-flex border-destructive bg-destructive text-destructive hover:bg-destructive/80',\n success: 'inline-flex border-success bg-success text-success hover:bg-success/80',\n warning: 'inline-flex border-warning bg-warning text-warning hover:bg-warning/80',\n disabled: 'inline-flex border-disabled bg-disabled text-disabled hover:bg-disabled/80',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <span className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n"],"names":["badgeVariants","cva","variants","variant","default","destructive","success","warning","disabled","defaultVariants","Badge","className","props","React","createElement","cn"],"mappings":"0HAKA,MAAMA,EAAgBC,EACpB,gMACA,CACEC,SAAU,CACRC,QAAS,CACPC,QAAS,wEACTC,YAAa,yFACbC,QAAS,yEACTC,QAAS,yEACTC,SAAU,+EAGdC,gBAAiB,CACfN,QAAS,aAOf,SAASO,GAAMC,UAAEA,EAAAR,QAAWA,KAAYS;AACtC,OAAOC,EAAAC,cAAC,OAAA,CAAKH,UAAWI,EAAGf,EAAc,CAAEG,YAAYQ,MAAgBC,GACzE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.js","sources":["../../../../src/components/ui/breadcrumb.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n separator?: React.ReactNode;\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\nBreadcrumb.displayName = 'Breadcrumb';\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5 list-none',\n className,\n )}\n {...props}\n />\n ),\n);\nBreadcrumbList.displayName = 'BreadcrumbList';\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props} />\n ),\n);\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean;\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return <Comp ref={ref} className={cn('transition-colors hover:text-foreground', className)} {...props} />;\n});\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('font-normal text-foreground', className)}\n {...props}\n />\n ),\n);\nBreadcrumbPage.displayName = 'BreadcrumbPage';\n\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (\n <li role=\"presentation\" aria-hidden=\"true\" className={cn('[&>svg]:w-3.5 [&>svg]:h-3.5', className)} {...props}>\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n"],"names":["Breadcrumb","React","forwardRef","props","ref","createElement","displayName","BreadcrumbList","className","cn","BreadcrumbItem","BreadcrumbLink","asChild","Comp","Slot","BreadcrumbPage","role","BreadcrumbSeparator","children","ChevronRight","BreadcrumbEllipsis","MoreHorizontal"],"mappings":"8LAMA,MAAMA,EAAaC,EAAMC,WAKvB,KAAMC,GAASC,mBAAQH,EAAAI,cAAC,OAAID,MAAU,aAAW,gBAAiBD,KACpEH,EAAWM,YAAc,aAEzB,MAAMC,EAAiBN,EAAMC,WAC3B,EAAGM,eAAcL,GAASC,mBACxBH,EAAAI,cAAC,KAAA,CACCD,MACAI,UAAWC,EACT,qGACAD,MAEEL,KAIVI,EAAeD,YAAc,iBAE7B,MAAMI,EAAiBT,EAAMC,WAC3B,EAAGM,eAAcL,GAASC,mBACxBH,EAAAI,cAAC,KAAA,CAAGD,MAAUI,UAAWC,EAAG,mCAAoCD,MAAgBL,KAGpFO,EAAeJ,YAAc,iBAE7B,MAAMK,EAAiBV,EAAMC,WAK3B,EAAGU,UAASJ,eAAcL,GAASC,KACnC,MAAMS,EAAOD,EAAUE,EAAO;AAE9B,OAAOb,EAAAI,cAACQ,GAAKT,MAAUI,UAAWC,EAAG,0CAA2CD,MAAgBL,MAElGQ,EAAeL,YAAc,iBAE7B,MAAMS,EAAiBd,EAAMC,WAC3B,EAAGM,eAAcL,GAASC,mBACxBH,EAAAI,cAAC,OAAA,CACCD,MACAY,KAAK,OACL,gBAAc,OACd,eAAa,OACbR,UAAWC,EAAG,8BAA+BD,MACzCL,KAIVY,EAAeT,YAAc,iBAE7B,MAAMW,EAAsB,EAAGC,WAAUV,eAAcL,oBACrDF,EAAAI,cAAC,KAAA,CAAGW,KAAK,eAAe,cAAY,OAAOR,UAAWC,EAAG,8BAA+BD,MAAgBL,GACrGe,kBAAYjB,EAAAI,cAACc,EAAA,OAGlBF,EAAoBX,YAAc,sBAElC,MAAMc,EAAqB,EAAGZ,eAAcL,oBAC1CF,EAAAI,cAAC,OAAA,CACCW,KAAK,eACL,cAAY,OACZR,UAAWC,EAAG,2CAA4CD,MACtDL;eAEJF,EAAAI,cAACgB,EAAA,CAAeb,UAAU;eAC1BP,EAAAI,cAAC,OAAA,CAAKG,UAAU,WAAU,SAG9BY,EAAmBd,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-group.js","sources":["../../../../src/components/ui/button-group.tsx"],"sourcesContent":["import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\nimport { Separator } from '@/components/ui/separator';\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal: '',\n vertical: 'flex-col',\n },\n rounded: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n rounded: true,\n className:\n '[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none',\n },\n {\n orientation: 'vertical',\n rounded: true,\n className:\n '[&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n rounded: true,\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n rounded,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation, rounded }), className)}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n className={cn(\n \"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn('bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto', className)}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n"],"names":["buttonGroupVariants","cva","variants","orientation","horizontal","vertical","rounded","true","false","compoundVariants","className","defaultVariants","ButtonGroup","props","React","createElement","role","cn","ButtonGroupText","asChild","Comp","Slot","ButtonGroupSeparator","Separator"],"mappings":"qNAOA,MAAMA,EAAsBC,EAC1B,mSACA,CACEC,SAAU,CACRC,YAAa,CACXC,WAAY,GACZC,SAAU,YAEZC,QAAS,CACPC,KAAM,GACNC,MAAO,KAGXC,iBAAkB,CAChB,CACEN,YAAa,aACbG,SAAS,EACTI,UACE,mHAEJ,CACEP,YAAa,WACbG,SAAS,EACTI,UACE,oHAGNC,gBAAiB,CACfR,YAAa,aACbG,SAAS,KAKf,SAASM,GAAYF,UACnBA,EAAAP,YACAA,EAAAG,QACAA,KACGO;AAEH,OACEC,EAAAC,cAAC,MAAA,CACCC,KAAK,QACL,YAAU,eACV,mBAAkBb,EAClBO,UAAWO,EAAGjB,EAAoB,CAAEG,cAAaG,YAAYI,MACzDG,GAGV,CAEA,SAASK,GAAgBR,UACvBA,EAAAS,QACAA,GAAU,KACPN,IAIH,MAAMO,EAAOD,EAAUE,EAAO;AAE9B,OACEP,EAAAC,cAACK,EAAA,CACCV,UAAWO,EACT,yJACAP,MAEEG,GAGV,CAEA,SAASS,GAAqBZ,UAC5BA,EAAAP,YACAA,EAAc,cACXU;AAEH,OACEC,EAAAC,cAACQ,EAAA,CACC,YAAU,yBACVpB,cACAO,UAAWO,EAAG,yEAA0EP,MACpFG,GAGV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|