@iblai/iblai-js 2.9.5 → 2.9.7
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.
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default, { useRef, useEffect, useState, useCallback, createContext, useContext, useMemo, forwardRef, createElement as createElement$1, useLayoutEffect, useReducer, useImperativeHandle, isValidElement, Children, PureComponent, cloneElement, Component, useId as useId$2, useDebugValue, lazy, Suspense } from 'react';
|
|
3
3
|
import { useDispatch, useSelector } from 'react-redux';
|
|
4
|
-
import { selectSessionId, selectActiveChatMessages, useCachedSessionId, chatActions, LOCAL_STORAGE_KEYS, TimeTracker,
|
|
4
|
+
import { selectSessionId, selectActiveChatMessages, useCachedSessionId, chatActions, LOCAL_STORAGE_KEYS, TimeTracker, selectRbacPermissions, useCurrentTenant, canViewOtherUsersChatHistory, getInitials, useTenantMetadata, isPureWatcher, WithPermissions, canWriteField, useStripeUpgrade, openExternalUrl, CHAT_AREA_SIZE, isAlphaNumeric32, checkRbacPermission, getTimeAgo, REQUIRED_ACTIONS_FOR_GROUPS, getVisibleAnalyticsTabs, formatRelativeTime as formatRelativeTime$2, ANONYMOUS_USERNAME, combineCSVData, WATCHER_HIDDEN_REPORTS, canViewPlatformAuditLogs, redirectToAuthSpaJoinTenant, redirectToAuthSpa, getAuthSpaJoinUrl, useOS, selectNumberOfActiveChatMessages, useUsername, selectStreaming, isLoggedIn, TOOLS, hasRemoteAiConfig, isSafariBrowser, useShowAttachment, useShowVoiceCall, useShowVoiceRecorder, useMentorSettings, selectShowingSharedChat, useShowFreeTrialDialog, useEmbedMode, chatInputSliceSelectors, useResponsive, useAccessingPublicRoute, useVisitingTenant, useModelFileUploadCapabilities, useChatFileUpload, useVoiceChat, selectAttachedFiles, MENTOR_CHAT_DOCUMENTS_EXTENSIONS, chatInputSliceActions, removeFile, WithFormPermissions, MENTOR_VISIBILITY } from '@iblai/web-utils';
|
|
5
5
|
import * as dataLayer from '@iblai/data-layer';
|
|
6
|
-
import { useCreateSessionIdMutation, useTimeTrackingMutation, useGetUserMetadataQuery, useGetUserMetadataEdxQuery, useUpdateUserMetadataMutation, useUpdateUserMetadataEdxMutation, useUploadProfileImageMutation, useResetPasswordMutation, useSelfRetireMutation, useCreateUserInstitutionMutation, useGetUserInstitutionsQuery, useCreateUserEducationMutation, useUpdateUserEducationMutation, useDeleteUserEducationMutation, useGetUserEducationQuery, useCreateUserCompanyMutation, useGetUserCompaniesQuery, useCreateUserExperienceMutation, useUpdateUserExperienceMutation, useDeleteUserExperienceMutation, useGetUserExperienceQuery, useGetUserResumeQuery, useCreateUserResumeMutation, useGetMySubscriptionsQuery, useGetItemSubscriptionQuery, useCancelSubscriptionMutation, useGetLearnerDetailsQuery, useGetUserEnrolledCoursesQuery, useGetUserEnrolledProgramsQuery, useGetUserCatalogPathwaysQuery, useGetUsersAsAssertionsQuery, useGetUserEarnedSkillsQuery, useGetUserReportedSkillsQuery, useGetUserDesiredSkillsQuery, useCreateGlobalMemoryMutation, useUpdateGlobalMemoryMutation, useUpdateMentorMemoryMutation, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useGetAllMentorMemoriesQuery, useDeleteGlobalMemoryMutation, useDeleteMentorMemoryMutation, useGetAiSearchMentorsQuery, useGetUserChatHistoryReportsQuery, USER_CHAT_HISTORY_REPORT_ACTIVE_STATES, useCreateUserChatHistoryReportMutation, useLazyGetDownloadReportFromURLQuery, useGetUserChatHistoryReportStatusQuery, userChatHistoryApiSlice, USER_CHAT_HISTORY_QUERY_KEYS, useGetUserChatHistoryQuery, useGetUserChatHistoryFilterQuery, useGetMentorsQuery, useGetUserChatHistorySessionQuery, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useUpdateUserRoleMutation, useUpdateUserStatusMutation, useUpdatePlatformUserRoleWithPoliciesMutation, usePlatformUsersQuery, useGetAccessibleUsersQuery, isPoliciesResponse, platformApiSlice, featureTags, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation, useGetRbacGroupsQuery, usePlatformUserGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetRbacGroupDetailsQuery, useGetPlatformUserGroupDetailsQuery, useGetRbacPermissionsMutation, useGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetWatchedGroupsQuery, useCreateWatchedGroupMutation, useUpdateWatchedGroupMutation, useDeleteWatchedGroupMutation, useAddWatchedUserMutation, useRemoveWatchedUserMutation, useAddWatcherMutation, useUpdateWatcherMutation, useDeleteWatcherMutation, useGetWatchedUsersQuery, useGetWatchersQuery, WATCHER_NOTIFICATION_EVENTS, WATCHER_NOTIFICATION_EVENT_LABELS, useGetApplicationFormsQuery, useGetApplicationFormDetailQuery, useCreateApplicationFormMutation, useUpdateApplicationFormMutation, useGetApplicationAdminDetailQuery, useInviteApplicationCandidateMutation, useLazyGetApplicationAttachmentFileQuery, useCreateApplicationWaiverMutation, useDeleteApplicationWaiverMutation, useSubmitApplicationOverrideMutation, useUpdateApplicationPlacementMutation, useDeleteApplicationCourseAssignmentMutation, useCreateApplicationNoteMutation, useUpdateApplicationNoteMutation, useDeleteApplicationNoteMutation, useTransitionApplicationMutation, useLinkApplicationCandidateMutation, useCreateApplicationPlacementsMutation, useGetCustomMentorsQuery, useCreateApplicationCourseAssignmentsMutation, useGetApplicationBlocksQuery, useDeleteApplicationBlockMutation, useGetApplicationsPipelineStatsQuery, useGetApplicationsPipelineQuery, useGetTenantMetadataQuery, useUpdateTenantMetadataMutation, useLazyGetTenantMetadataQuery, useDeleteApiKeyMutation, useGetApiKeyQuery, useGetApiKeyFieldPermissionsQuery, useUpdateApiKeyMutation, useGetApiKeysQuery, unwrapApiTokenList, useCreateApiKeyMutation, useCreateLLMCredentialMutation, useGetCredentialsSchemaQuery, useGetMaskedLLMCredentialsQuery, useGetLlmsQuery, useDeleteIntegrationCredentialMutation, useDeleteCredentialMutation, useCreateIntegrationCredentialMutation, useGetIntegrationCredentialsSchemaQuery, useGetMaskedIntegrationCredentialsQuery, useGetAccountBillingInfoQuery, useUpdateAutoRechargeInfoMutation, useTriggerAutoRechargeMutation, useGetAgentSpendCapQuery, useGetTenantSpendCapQuery, useListAgentUserSpendCapsQuery, useUpsertAgentSpendCapMutation, useDeleteAgentSpendCapMutation, useUpsertTenantSpendCapMutation, useDeleteTenantSpendCapMutation, useUpsertUserSpendCapMutation, useDeleteUserSpendCapMutation, useGetFinancialStatsQuery, useListAgentSpendCapsQuery, useGetCreditTransactionsQuery, useCreateStripeCustomerPortalMutation, useSetPlatformConfigurationsMutation, useGetPlatformConfigurationsQuery, useUpdatePlatformMembershipMutation, useGetPlatformMembershipQuery, useGetCustomDomainsQuery, useCreateCustomDomainMutation, useDeleteCustomDomainMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, coreApiSlice, recommendationPromptTypeEnum, useGetRecommendedPromptsListQuery, useCreateRecommendedPromptMutation, useUpdateRecommendedPromptMutation, useDeleteRecommendedPromptMutation, useLazyGetPublicPlatformImageAssetFileUrlQuery, useCreatePlatformImageAssetMutation, useGetProviderConfigQuery, useCreateProviderConfigMutation, useDeleteProviderConfigMutation, useGetExternalMappingQuery, useGetCredentialsListQuery, useCreateExternalMappingMutation, useDeleteExternalMappingMutation, useGetMemsearchConfigQuery, useUpdateMemsearchConfigMutation, useGetStripeConnectStatusQuery, useStartStripeConnectOnboardingMutation, useLazyGetStripeConnectDashboardQuery, useListPaywallsQuery, useListPricesQuery, useCreatePriceMutation, useUpdatePriceMutation, useDeletePriceMutation, useGetPaywallConfigQuery, useEnablePaywallMutation, useUpdatePaywallMutation, useGetNotificationsCountQuery, useLazyGetNotificationsQuery, useMarkAllAsReadMutation, useCreateNotificationPreviewMutation, useSendNotificationMutation, USER_PROGRESS_DATA_POINTS, useResetTemplateMutation, useSendTestTemplateEmailMutation, useUpdateTemplateMutation, useGetTemplateDetailsQuery, USER_PROGRESS_SUMMARY_TYPE, useGetTemplatesQuery, useLazyGetTemplateDetailsQuery, useToggleTemplateMutation, useGetTopicsStatsQuery, useGetUsersStatsQuery, useGetSessionStatsQuery, useGetTopicsDetailsStatsQuery, useGetAccessTimeHeatmapQuery, useGetUserDetailsStatsQuery, useGetTranscriptsConversationHeadlineQuery, useGetAverageRatingQuery, useGetDetailedFinancialStatsQuery, useGetTranscriptsMessagesDetailsQuery, useGetTranscriptsMessagesQuery, useGetReportDetailQuery, useGetMentorPublicSettingsQuery, useGetReportsQuery, useCreateReportMutation, useGetContentAnalyticsQuery, useGetContentAnalyticsDetailsQuery, useGetRevenueQuery, useListSubscribersQuery, useGetAuditLogsQuery, useGetPlatformAuditLogsQuery, PLATFORM_AUDIT_EVENT_TYPES, PLATFORM_AUDIT_ACTION_CODES, useGetMentorMemoriesListQuery, useGetMentorMemoriesQuery, useGetMemoryCategoriesAdminQuery, useLazyGetCourseMetaDataQuery, useLazyGetCourseCompletionOutlinesQuery, useLazyGetCourseEligibilityQuery, useLazyGetUserEnrolledCoursesQuery, useLazyGetUserAssignedCoursesQuery, useLazyGetUserCredentialsQuery, useLazyGetOverTimeActivityQuery, useLazyGetCatalogSearchQuery, useCreateOrUpdateUserReportedSkillMutation, useCreateOrUpdateUserDesiredSkillMutation, useLazyGetPathwayListQuery, useLazyGetUserAssignedPathwaysQuery, useLazyGetUserEnrolledPathwaysQuery, useLazyGetPathwayCompletionQuery, useLazyGetProgramListQuery, useLazyGetProgramCompletionQuery, useLazyGetUserEnrolledProgramsQuery, useLazyGetAssignedProgramsQuery, useLazyGetUserSkillsPointsQuery, useLazyGetUserReportedSkillsQuery, useLazyGetUserDesiredSkillsQuery, useLazyGetUserCatalogPathwaysQuery, useLazyGetPerLearnerInfoQuery, useLazyGetEdxSSOTokenQuery, useCreateCourseEnrollmentMutation, useCreateStripeCheckoutSessionMutation, useLazyGetCourseProgressQuery, useLazyGetCourseCompletionQuery, useLazyGetPersonnalizedSearchQuery, useUpdateExamAttemptMutation, useStartExamMutation, useLazyGetExamInfoQuery, useGetMentorSettingsQuery, useEditMentorMutation, useGetClawMentorConfigQuery, useGetClawInstancesQuery, useGetAgentConfigQuery, useUpdateClawMentorConfigMutation, useCreateClawMentorConfigMutation, useDeleteClawMentorConfigMutation, usePushClawConfigMutation, useCreateClawInstanceMutation, useDeleteClawInstanceMutation, useUpdateAgentConfigMutation, useHealthCheckClawInstanceMutation, useTestConnectivityClawInstanceMutation, useUpdateClawInstanceMutation, useGetAgentSkillResourcesQuery, useCreateAgentSkillResourceMutation, useUpdateAgentSkillResourceMutation, useUploadAgentSkillResourceAssetMutation, useDeleteAgentSkillResourceMutation, useGetMentorSkillAssignmentsQuery, useGetAgentSkillsQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation, filterSlashSkills, useGetMentorSkillAssignmentsInfiniteQuery, MENTOR_SKILL_ASSIGNMENTS_PAGE_SIZE, useCreateCheckoutMutation, useGetUserProjectsQuery, useUpdateUserProjectMutation, useGetTrainingDocumentsQuery, useGetVectorDocumentsQuery, useCreateMentorMemoryMutation, useLazyGetConnectedServiceAuthUrlQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorCategoriesQuery, useCreateMentorMutation, useUpdateUserPlatformMetadataMutation, useGetApplicationStatusQuery, useListOwnApplicationsQuery, useGetApplicationFormQuery, useWithdrawApplicationMutation, useRenewApplicationMutation, useCreateApplicationDraftMutation, useSubmitApplicationMutation, useUpdateApplicationMutation, useUploadApplicationAttachmentMutation, useDeleteApplicationAttachmentMutation, useGetPromptCategoriesQuery, useCreatePromptMutation, useDeletePromptMutation, useGetPromptsSearchQuery, useUpdatePromptMutation, useDeleteTrainingDocumentMutation, useGetTrainingDocumentRetrainScheduleQuery, useCreateTrainingDocumentRetrainScheduleMutation } from '@iblai/data-layer';
|
|
6
|
+
import { useCreateSessionIdMutation, useTimeTrackingMutation, useGetUserMetadataQuery, useGetUserMetadataEdxQuery, useUpdateUserMetadataMutation, useUpdateUserMetadataEdxMutation, useUploadProfileImageMutation, useResetPasswordMutation, useSelfRetireMutation, useCreateUserInstitutionMutation, useGetUserInstitutionsQuery, useCreateUserEducationMutation, useUpdateUserEducationMutation, useDeleteUserEducationMutation, useGetUserEducationQuery, useCreateUserCompanyMutation, useGetUserCompaniesQuery, useCreateUserExperienceMutation, useUpdateUserExperienceMutation, useDeleteUserExperienceMutation, useGetUserExperienceQuery, useGetUserResumeQuery, useCreateUserResumeMutation, useGetMySubscriptionsQuery, useGetItemSubscriptionQuery, useCancelSubscriptionMutation, useGetLearnerDetailsQuery, useGetUserEnrolledCoursesQuery, useGetUserEnrolledProgramsQuery, useGetUserCatalogPathwaysQuery, useGetUsersAsAssertionsQuery, useGetUserEarnedSkillsQuery, useGetUserReportedSkillsQuery, useGetUserDesiredSkillsQuery, useCreateGlobalMemoryMutation, useUpdateGlobalMemoryMutation, useUpdateMentorMemoryMutation, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useGetAllMentorMemoriesQuery, useDeleteGlobalMemoryMutation, useDeleteMentorMemoryMutation, useGetAiSearchMentorsQuery, useGetUserChatHistoryReportsQuery, USER_CHAT_HISTORY_REPORT_ACTIVE_STATES, useCreateUserChatHistoryReportMutation, useLazyGetDownloadReportFromURLQuery, useGetUserChatHistoryReportStatusQuery, userChatHistoryApiSlice, USER_CHAT_HISTORY_QUERY_KEYS, useGetUserChatHistoryQuery, useGetUserChatHistoryFilterQuery, useGetMentorsQuery, useGetUserChatHistorySessionQuery, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useUpdateUserRoleMutation, useUpdateUserStatusMutation, useUpdatePlatformUserRoleWithPoliciesMutation, usePlatformUsersQuery, useGetAccessibleUsersQuery, isPoliciesResponse, platformApiSlice, featureTags, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation, useGetRbacGroupsQuery, usePlatformUserGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetRbacGroupDetailsQuery, useGetPlatformUserGroupDetailsQuery, useGetRbacPermissionsMutation, useGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetWatchedGroupsQuery, useCreateWatchedGroupMutation, useUpdateWatchedGroupMutation, useDeleteWatchedGroupMutation, useAddWatchedUserMutation, useRemoveWatchedUserMutation, useAddWatcherMutation, useUpdateWatcherMutation, useDeleteWatcherMutation, useGetWatchedUsersQuery, useGetWatchersQuery, WATCHER_NOTIFICATION_EVENTS, WATCHER_NOTIFICATION_EVENT_LABELS, useGetApplicationFormsQuery, useGetApplicationFormDetailQuery, useCreateApplicationFormMutation, useUpdateApplicationFormMutation, useGetApplicationAdminDetailQuery, useInviteApplicationCandidateMutation, useLazyGetApplicationAttachmentFileQuery, useCreateApplicationWaiverMutation, useDeleteApplicationWaiverMutation, useSubmitApplicationOverrideMutation, useUpdateApplicationPlacementMutation, useDeleteApplicationCourseAssignmentMutation, useCreateApplicationNoteMutation, useUpdateApplicationNoteMutation, useDeleteApplicationNoteMutation, useTransitionApplicationMutation, useLinkApplicationCandidateMutation, useCreateApplicationPlacementsMutation, useGetCustomMentorsQuery, useCreateApplicationCourseAssignmentsMutation, useGetApplicationBlocksQuery, useDeleteApplicationBlockMutation, useGetApplicationsPipelineStatsQuery, useGetApplicationsPipelineQuery, useGetTenantMetadataQuery, useUpdateTenantMetadataMutation, useLazyGetTenantMetadataQuery, useDeleteApiKeyMutation, useGetApiKeyQuery, useGetApiKeyFieldPermissionsQuery, useUpdateApiKeyMutation, useGetApiKeysQuery, unwrapApiTokenList, useCreateApiKeyMutation, useCreateLLMCredentialMutation, useGetCredentialsSchemaQuery, useGetMaskedLLMCredentialsQuery, useGetLlmsQuery, useDeleteIntegrationCredentialMutation, useDeleteCredentialMutation, useCreateIntegrationCredentialMutation, useGetIntegrationCredentialsSchemaQuery, useGetMaskedIntegrationCredentialsQuery, useGetAccountBillingInfoQuery, useUpdateAutoRechargeInfoMutation, useTriggerAutoRechargeMutation, useGetAgentSpendCapQuery, useGetTenantSpendCapQuery, useListAgentUserSpendCapsQuery, useUpsertAgentSpendCapMutation, useDeleteAgentSpendCapMutation, useUpsertTenantSpendCapMutation, useDeleteTenantSpendCapMutation, useUpsertUserSpendCapMutation, useDeleteUserSpendCapMutation, useGetFinancialStatsQuery, useListAgentSpendCapsQuery, useGetCreditTransactionsQuery, useCreateStripeCustomerPortalMutation, useSetPlatformConfigurationsMutation, useGetPlatformConfigurationsQuery, useUpdatePlatformMembershipMutation, useGetPlatformMembershipQuery, useGetCustomDomainsQuery, useCreateCustomDomainMutation, useDeleteCustomDomainMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, coreApiSlice, recommendationPromptTypeEnum, useGetRecommendedPromptsListQuery, useCreateRecommendedPromptMutation, useUpdateRecommendedPromptMutation, useDeleteRecommendedPromptMutation, useLazyGetPublicPlatformImageAssetFileUrlQuery, useCreatePlatformImageAssetMutation, useGetProviderConfigQuery, useCreateProviderConfigMutation, useDeleteProviderConfigMutation, useGetExternalMappingQuery, useGetCredentialsListQuery, useCreateExternalMappingMutation, useDeleteExternalMappingMutation, useGetMemsearchConfigQuery, useUpdateMemsearchConfigMutation, useGetStripeConnectStatusQuery, useStartStripeConnectOnboardingMutation, useLazyGetStripeConnectDashboardQuery, useListPaywallsQuery, useListPricesQuery, useCreatePriceMutation, useUpdatePriceMutation, useDeletePriceMutation, useGetPaywallConfigQuery, useEnablePaywallMutation, useUpdatePaywallMutation, useGetMentorMemoriesListQuery, useGetMemoryCategoriesAdminQuery, useCreateMentorMemoryMutation, useGetNotificationsCountQuery, useLazyGetNotificationsQuery, useMarkAllAsReadMutation, useCreateNotificationPreviewMutation, useSendNotificationMutation, USER_PROGRESS_DATA_POINTS, useResetTemplateMutation, useSendTestTemplateEmailMutation, useUpdateTemplateMutation, useGetTemplateDetailsQuery, USER_PROGRESS_SUMMARY_TYPE, useGetTemplatesQuery, useLazyGetTemplateDetailsQuery, useToggleTemplateMutation, useGetTopicsStatsQuery, useGetUsersStatsQuery, useGetSessionStatsQuery, useGetTopicsDetailsStatsQuery, useGetAccessTimeHeatmapQuery, useGetUserDetailsStatsQuery, useGetTranscriptsConversationHeadlineQuery, useGetAverageRatingQuery, useGetDetailedFinancialStatsQuery, useGetTranscriptsMessagesDetailsQuery, useGetTranscriptsMessagesQuery, useGetReportDetailQuery, useGetMentorPublicSettingsQuery, useGetReportsQuery, useCreateReportMutation, useGetContentAnalyticsQuery, useGetContentAnalyticsDetailsQuery, useGetRevenueQuery, useListSubscribersQuery, useGetAuditLogsQuery, useGetPlatformAuditLogsQuery, PLATFORM_AUDIT_EVENT_TYPES, PLATFORM_AUDIT_ACTION_CODES, useGetMentorMemoriesQuery, useLazyGetCourseMetaDataQuery, useLazyGetCourseCompletionOutlinesQuery, useLazyGetCourseEligibilityQuery, useLazyGetUserEnrolledCoursesQuery, useLazyGetUserAssignedCoursesQuery, useLazyGetUserCredentialsQuery, useLazyGetOverTimeActivityQuery, useLazyGetCatalogSearchQuery, useCreateOrUpdateUserReportedSkillMutation, useCreateOrUpdateUserDesiredSkillMutation, useLazyGetPathwayListQuery, useLazyGetUserAssignedPathwaysQuery, useLazyGetUserEnrolledPathwaysQuery, useLazyGetPathwayCompletionQuery, useLazyGetProgramListQuery, useLazyGetProgramCompletionQuery, useLazyGetUserEnrolledProgramsQuery, useLazyGetAssignedProgramsQuery, useLazyGetUserSkillsPointsQuery, useLazyGetUserReportedSkillsQuery, useLazyGetUserDesiredSkillsQuery, useLazyGetUserCatalogPathwaysQuery, useLazyGetPerLearnerInfoQuery, useLazyGetEdxSSOTokenQuery, useCreateCourseEnrollmentMutation, useCreateStripeCheckoutSessionMutation, useLazyGetCourseProgressQuery, useLazyGetCourseCompletionQuery, useLazyGetPersonnalizedSearchQuery, useUpdateExamAttemptMutation, useStartExamMutation, useLazyGetExamInfoQuery, useGetMentorSettingsQuery, useEditMentorMutation, useGetClawMentorConfigQuery, useGetClawInstancesQuery, useGetAgentConfigQuery, useUpdateClawMentorConfigMutation, useCreateClawMentorConfigMutation, useDeleteClawMentorConfigMutation, usePushClawConfigMutation, useCreateClawInstanceMutation, useDeleteClawInstanceMutation, useUpdateAgentConfigMutation, useHealthCheckClawInstanceMutation, useTestConnectivityClawInstanceMutation, useUpdateClawInstanceMutation, useGetAgentSkillResourcesQuery, useCreateAgentSkillResourceMutation, useUpdateAgentSkillResourceMutation, useUploadAgentSkillResourceAssetMutation, useDeleteAgentSkillResourceMutation, useGetMentorSkillAssignmentsQuery, useGetAgentSkillsQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation, filterSlashSkills, useGetMentorSkillAssignmentsInfiniteQuery, MENTOR_SKILL_ASSIGNMENTS_PAGE_SIZE, useCreateCheckoutMutation, useGetUserProjectsQuery, useUpdateUserProjectMutation, useGetTrainingDocumentsQuery, useGetVectorDocumentsQuery, useLazyGetConnectedServiceAuthUrlQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorCategoriesQuery, useCreateMentorMutation, useUpdateUserPlatformMetadataMutation, useGetApplicationStatusQuery, useListOwnApplicationsQuery, useGetApplicationFormQuery, useWithdrawApplicationMutation, useRenewApplicationMutation, useCreateApplicationDraftMutation, useSubmitApplicationMutation, useUpdateApplicationMutation, useUploadApplicationAttachmentMutation, useDeleteApplicationAttachmentMutation, useCreateMemoryCategoryMutation, useUpdateMemoryCategoryMutation, useDeleteMemoryCategoryMutation, useGetPromptCategoriesQuery, useCreatePromptMutation, useDeletePromptMutation, useGetPromptsSearchQuery, useUpdatePromptMutation, useDeleteTrainingDocumentMutation, useGetTrainingDocumentRetrainScheduleQuery, useCreateTrainingDocumentRetrainScheduleMutation } from '@iblai/data-layer';
|
|
7
7
|
import { toast } from 'sonner';
|
|
8
8
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
9
9
|
import * as ReactDOM from 'react-dom';
|
|
@@ -13,10 +13,10 @@ import { RemoveScroll } from 'react-remove-scroll';
|
|
|
13
13
|
import { skipToken } from '@reduxjs/toolkit/query';
|
|
14
14
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
15
15
|
import { createDialogScope } from '@radix-ui/react-dialog';
|
|
16
|
+
import dynamic from 'next/dynamic';
|
|
16
17
|
import { NotificationSourceTypeEnum, StateEnum, MentorVisibilityEnum, PromptVisibilityEnum } from '@iblai/iblai-api';
|
|
17
18
|
import { useSearchParams, useRouter, usePathname, useParams } from 'next/navigation';
|
|
18
19
|
import Image$4 from 'next/image';
|
|
19
|
-
import dynamic from 'next/dynamic';
|
|
20
20
|
import Link$2 from 'next/link';
|
|
21
21
|
import Script from 'next/script';
|
|
22
22
|
|
|
@@ -2661,6 +2661,7 @@ var chatHistoryChatHistoryTab$3 = {
|
|
|
2661
2661
|
exportFailed: "Failed to export chat history. Please try again.",
|
|
2662
2662
|
downloadFailed: "Failed to download report.",
|
|
2663
2663
|
loadFailed: "Failed to load history.",
|
|
2664
|
+
forbidden: "You don't have permission to view this user's history.",
|
|
2664
2665
|
noConversations: "No conversations found",
|
|
2665
2666
|
noMessages: "No messages in this conversation.",
|
|
2666
2667
|
conversation: "Conversation",
|
|
@@ -2681,6 +2682,7 @@ var chatHistoryReportHistory$3 = {
|
|
|
2681
2682
|
download: "Download",
|
|
2682
2683
|
allAgents: "All agents",
|
|
2683
2684
|
allTime: "All time",
|
|
2685
|
+
createdBy: "by {owner}",
|
|
2684
2686
|
agentsCount: "{count, plural, one {# agent} other {# agents}}",
|
|
2685
2687
|
statePending: "Pending",
|
|
2686
2688
|
stateProcessing: "Processing",
|
|
@@ -9682,6 +9684,7 @@ var chatHistoryChatHistoryTab$2 = {
|
|
|
9682
9684
|
exportFailed: "Échec de l'exportation de l'historique. Veuillez réessayer.",
|
|
9683
9685
|
downloadFailed: "Échec du téléchargement du rapport.",
|
|
9684
9686
|
loadFailed: "Échec du chargement de l'historique.",
|
|
9687
|
+
forbidden: "Vous n'avez pas la permission de voir l'historique de cet utilisateur.",
|
|
9685
9688
|
noConversations: "Aucune conversation trouvée",
|
|
9686
9689
|
noMessages: "Aucun message dans cette conversation.",
|
|
9687
9690
|
conversation: "Conversation",
|
|
@@ -9702,6 +9705,7 @@ var chatHistoryReportHistory$2 = {
|
|
|
9702
9705
|
download: "Télécharger",
|
|
9703
9706
|
allAgents: "Tous les agents",
|
|
9704
9707
|
allTime: "Toute la période",
|
|
9708
|
+
createdBy: "par {owner}",
|
|
9705
9709
|
agentsCount: "{count, plural, one {# agent} other {# agents}}",
|
|
9706
9710
|
statePending: "En attente",
|
|
9707
9711
|
stateProcessing: "En cours",
|
|
@@ -16703,6 +16707,7 @@ var chatHistoryChatHistoryTab$1 = {
|
|
|
16703
16707
|
exportFailed: "No se pudo exportar el historial de chat. Inténtalo de nuevo.",
|
|
16704
16708
|
downloadFailed: "No se pudo descargar el informe.",
|
|
16705
16709
|
loadFailed: "No se pudo cargar el historial.",
|
|
16710
|
+
forbidden: "No tienes permiso para ver el historial de este usuario.",
|
|
16706
16711
|
noConversations: "No se encontraron conversaciones",
|
|
16707
16712
|
noMessages: "No hay mensajes en esta conversación.",
|
|
16708
16713
|
conversation: "Conversación",
|
|
@@ -16723,6 +16728,7 @@ var chatHistoryReportHistory$1 = {
|
|
|
16723
16728
|
download: "Descargar",
|
|
16724
16729
|
allAgents: "Todos los agentes",
|
|
16725
16730
|
allTime: "Todo el tiempo",
|
|
16731
|
+
createdBy: "por {owner}",
|
|
16726
16732
|
agentsCount: "{count, plural, one {# agente} other {# agentes}}",
|
|
16727
16733
|
statePending: "Pendiente",
|
|
16728
16734
|
stateProcessing: "Procesando",
|
|
@@ -23724,6 +23730,7 @@ var chatHistoryChatHistoryTab = {
|
|
|
23724
23730
|
exportFailed: "导出聊天记录失败,请重试。",
|
|
23725
23731
|
downloadFailed: "下载报告失败。",
|
|
23726
23732
|
loadFailed: "加载历史记录失败。",
|
|
23733
|
+
forbidden: "您无权查看此用户的历史记录。",
|
|
23727
23734
|
noConversations: "未找到对话",
|
|
23728
23735
|
noMessages: "此对话中没有消息。",
|
|
23729
23736
|
conversation: "对话",
|
|
@@ -23744,6 +23751,7 @@ var chatHistoryReportHistory = {
|
|
|
23744
23751
|
download: "下载",
|
|
23745
23752
|
allAgents: "所有代理",
|
|
23746
23753
|
allTime: "全部时间",
|
|
23754
|
+
createdBy: "由 {owner} 创建",
|
|
23747
23755
|
agentsCount: "{count, plural, other {# 个代理}}",
|
|
23748
23756
|
statePending: "等待中",
|
|
23749
23757
|
stateProcessing: "处理中",
|
|
@@ -77813,7 +77821,7 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
77813
77821
|
*/
|
|
77814
77822
|
|
|
77815
77823
|
|
|
77816
|
-
const __iconNode$
|
|
77824
|
+
const __iconNode$2p = [
|
|
77817
77825
|
[
|
|
77818
77826
|
"path",
|
|
77819
77827
|
{
|
|
@@ -77822,7 +77830,7 @@ const __iconNode$2o = [
|
|
|
77822
77830
|
}
|
|
77823
77831
|
]
|
|
77824
77832
|
];
|
|
77825
|
-
const Activity = createLucideIcon("activity", __iconNode$
|
|
77833
|
+
const Activity = createLucideIcon("activity", __iconNode$2p);
|
|
77826
77834
|
|
|
77827
77835
|
/**
|
|
77828
77836
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77832,12 +77840,12 @@ const Activity = createLucideIcon("activity", __iconNode$2o);
|
|
|
77832
77840
|
*/
|
|
77833
77841
|
|
|
77834
77842
|
|
|
77835
|
-
const __iconNode$
|
|
77843
|
+
const __iconNode$2o = [
|
|
77836
77844
|
["path", { d: "M17 12H7", key: "16if0g" }],
|
|
77837
77845
|
["path", { d: "M19 18H5", key: "18s9l3" }],
|
|
77838
77846
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
77839
77847
|
];
|
|
77840
|
-
const AlignCenter = createLucideIcon("align-center", __iconNode$
|
|
77848
|
+
const AlignCenter = createLucideIcon("align-center", __iconNode$2o);
|
|
77841
77849
|
|
|
77842
77850
|
/**
|
|
77843
77851
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77847,12 +77855,12 @@ const AlignCenter = createLucideIcon("align-center", __iconNode$2n);
|
|
|
77847
77855
|
*/
|
|
77848
77856
|
|
|
77849
77857
|
|
|
77850
|
-
const __iconNode$
|
|
77858
|
+
const __iconNode$2n = [
|
|
77851
77859
|
["path", { d: "M15 12H3", key: "6jk70r" }],
|
|
77852
77860
|
["path", { d: "M17 18H3", key: "1amg6g" }],
|
|
77853
77861
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
77854
77862
|
];
|
|
77855
|
-
const AlignLeft = createLucideIcon("align-left", __iconNode$
|
|
77863
|
+
const AlignLeft = createLucideIcon("align-left", __iconNode$2n);
|
|
77856
77864
|
|
|
77857
77865
|
/**
|
|
77858
77866
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77862,12 +77870,12 @@ const AlignLeft = createLucideIcon("align-left", __iconNode$2m);
|
|
|
77862
77870
|
*/
|
|
77863
77871
|
|
|
77864
77872
|
|
|
77865
|
-
const __iconNode$
|
|
77873
|
+
const __iconNode$2m = [
|
|
77866
77874
|
["path", { d: "M21 12H9", key: "dn1m92" }],
|
|
77867
77875
|
["path", { d: "M21 18H7", key: "1ygte8" }],
|
|
77868
77876
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
77869
77877
|
];
|
|
77870
|
-
const AlignRight = createLucideIcon("align-right", __iconNode$
|
|
77878
|
+
const AlignRight = createLucideIcon("align-right", __iconNode$2m);
|
|
77871
77879
|
|
|
77872
77880
|
/**
|
|
77873
77881
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77877,12 +77885,12 @@ const AlignRight = createLucideIcon("align-right", __iconNode$2l);
|
|
|
77877
77885
|
*/
|
|
77878
77886
|
|
|
77879
77887
|
|
|
77880
|
-
const __iconNode$
|
|
77888
|
+
const __iconNode$2l = [
|
|
77881
77889
|
["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
|
|
77882
77890
|
["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
|
|
77883
77891
|
["path", { d: "M10 12h4", key: "a56b0p" }]
|
|
77884
77892
|
];
|
|
77885
|
-
const Archive = createLucideIcon("archive", __iconNode$
|
|
77893
|
+
const Archive = createLucideIcon("archive", __iconNode$2l);
|
|
77886
77894
|
|
|
77887
77895
|
/**
|
|
77888
77896
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77892,11 +77900,11 @@ const Archive = createLucideIcon("archive", __iconNode$2k);
|
|
|
77892
77900
|
*/
|
|
77893
77901
|
|
|
77894
77902
|
|
|
77895
|
-
const __iconNode$
|
|
77903
|
+
const __iconNode$2k = [
|
|
77896
77904
|
["path", { d: "M12 5v14", key: "s699le" }],
|
|
77897
77905
|
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
77898
77906
|
];
|
|
77899
|
-
const ArrowDown = createLucideIcon("arrow-down", __iconNode$
|
|
77907
|
+
const ArrowDown = createLucideIcon("arrow-down", __iconNode$2k);
|
|
77900
77908
|
|
|
77901
77909
|
/**
|
|
77902
77910
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77906,11 +77914,11 @@ const ArrowDown = createLucideIcon("arrow-down", __iconNode$2j);
|
|
|
77906
77914
|
*/
|
|
77907
77915
|
|
|
77908
77916
|
|
|
77909
|
-
const __iconNode$
|
|
77917
|
+
const __iconNode$2j = [
|
|
77910
77918
|
["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
|
|
77911
77919
|
["path", { d: "M19 12H5", key: "x3x0zl" }]
|
|
77912
77920
|
];
|
|
77913
|
-
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$
|
|
77921
|
+
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$2j);
|
|
77914
77922
|
|
|
77915
77923
|
/**
|
|
77916
77924
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77920,11 +77928,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$2i);
|
|
|
77920
77928
|
*/
|
|
77921
77929
|
|
|
77922
77930
|
|
|
77923
|
-
const __iconNode$
|
|
77931
|
+
const __iconNode$2i = [
|
|
77924
77932
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
77925
77933
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
77926
77934
|
];
|
|
77927
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$
|
|
77935
|
+
const ArrowRight = createLucideIcon("arrow-right", __iconNode$2i);
|
|
77928
77936
|
|
|
77929
77937
|
/**
|
|
77930
77938
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77934,11 +77942,11 @@ const ArrowRight = createLucideIcon("arrow-right", __iconNode$2h);
|
|
|
77934
77942
|
*/
|
|
77935
77943
|
|
|
77936
77944
|
|
|
77937
|
-
const __iconNode$
|
|
77945
|
+
const __iconNode$2h = [
|
|
77938
77946
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
77939
77947
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
77940
77948
|
];
|
|
77941
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
77949
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$2h);
|
|
77942
77950
|
|
|
77943
77951
|
/**
|
|
77944
77952
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77948,7 +77956,7 @@ const ArrowUp = createLucideIcon("arrow-up", __iconNode$2g);
|
|
|
77948
77956
|
*/
|
|
77949
77957
|
|
|
77950
77958
|
|
|
77951
|
-
const __iconNode$
|
|
77959
|
+
const __iconNode$2g = [
|
|
77952
77960
|
[
|
|
77953
77961
|
"path",
|
|
77954
77962
|
{
|
|
@@ -77958,7 +77966,7 @@ const __iconNode$2f = [
|
|
|
77958
77966
|
],
|
|
77959
77967
|
["circle", { cx: "12", cy: "8", r: "6", key: "1vp47v" }]
|
|
77960
77968
|
];
|
|
77961
|
-
const Award = createLucideIcon("award", __iconNode$
|
|
77969
|
+
const Award = createLucideIcon("award", __iconNode$2g);
|
|
77962
77970
|
|
|
77963
77971
|
/**
|
|
77964
77972
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77968,11 +77976,11 @@ const Award = createLucideIcon("award", __iconNode$2f);
|
|
|
77968
77976
|
*/
|
|
77969
77977
|
|
|
77970
77978
|
|
|
77971
|
-
const __iconNode$
|
|
77979
|
+
const __iconNode$2f = [
|
|
77972
77980
|
["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
|
|
77973
77981
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
77974
77982
|
];
|
|
77975
|
-
const Ban = createLucideIcon("ban", __iconNode$
|
|
77983
|
+
const Ban = createLucideIcon("ban", __iconNode$2f);
|
|
77976
77984
|
|
|
77977
77985
|
/**
|
|
77978
77986
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77982,12 +77990,12 @@ const Ban = createLucideIcon("ban", __iconNode$2e);
|
|
|
77982
77990
|
*/
|
|
77983
77991
|
|
|
77984
77992
|
|
|
77985
|
-
const __iconNode$
|
|
77993
|
+
const __iconNode$2e = [
|
|
77986
77994
|
["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
|
|
77987
77995
|
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
|
|
77988
77996
|
["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }]
|
|
77989
77997
|
];
|
|
77990
|
-
const Banknote = createLucideIcon("banknote", __iconNode$
|
|
77998
|
+
const Banknote = createLucideIcon("banknote", __iconNode$2e);
|
|
77991
77999
|
|
|
77992
78000
|
/**
|
|
77993
78001
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -77997,7 +78005,7 @@ const Banknote = createLucideIcon("banknote", __iconNode$2d);
|
|
|
77997
78005
|
*/
|
|
77998
78006
|
|
|
77999
78007
|
|
|
78000
|
-
const __iconNode$
|
|
78008
|
+
const __iconNode$2d = [
|
|
78001
78009
|
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
78002
78010
|
["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
|
|
78003
78011
|
[
|
|
@@ -78009,7 +78017,7 @@ const __iconNode$2c = [
|
|
|
78009
78017
|
],
|
|
78010
78018
|
["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
|
|
78011
78019
|
];
|
|
78012
|
-
const BellRing = createLucideIcon("bell-ring", __iconNode$
|
|
78020
|
+
const BellRing = createLucideIcon("bell-ring", __iconNode$2d);
|
|
78013
78021
|
|
|
78014
78022
|
/**
|
|
78015
78023
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78019,7 +78027,7 @@ const BellRing = createLucideIcon("bell-ring", __iconNode$2c);
|
|
|
78019
78027
|
*/
|
|
78020
78028
|
|
|
78021
78029
|
|
|
78022
|
-
const __iconNode$
|
|
78030
|
+
const __iconNode$2c = [
|
|
78023
78031
|
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
78024
78032
|
[
|
|
78025
78033
|
"path",
|
|
@@ -78029,7 +78037,7 @@ const __iconNode$2b = [
|
|
|
78029
78037
|
}
|
|
78030
78038
|
]
|
|
78031
78039
|
];
|
|
78032
|
-
const Bell = createLucideIcon("bell", __iconNode$
|
|
78040
|
+
const Bell = createLucideIcon("bell", __iconNode$2c);
|
|
78033
78041
|
|
|
78034
78042
|
/**
|
|
78035
78043
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78039,13 +78047,13 @@ const Bell = createLucideIcon("bell", __iconNode$2b);
|
|
|
78039
78047
|
*/
|
|
78040
78048
|
|
|
78041
78049
|
|
|
78042
|
-
const __iconNode$
|
|
78050
|
+
const __iconNode$2b = [
|
|
78043
78051
|
[
|
|
78044
78052
|
"path",
|
|
78045
78053
|
{ d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
|
|
78046
78054
|
]
|
|
78047
78055
|
];
|
|
78048
|
-
const Bold$1 = createLucideIcon("bold", __iconNode$
|
|
78056
|
+
const Bold$1 = createLucideIcon("bold", __iconNode$2b);
|
|
78049
78057
|
|
|
78050
78058
|
/**
|
|
78051
78059
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78055,7 +78063,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$2a);
|
|
|
78055
78063
|
*/
|
|
78056
78064
|
|
|
78057
78065
|
|
|
78058
|
-
const __iconNode$
|
|
78066
|
+
const __iconNode$2a = [
|
|
78059
78067
|
["path", { d: "M12 7v14", key: "1akyts" }],
|
|
78060
78068
|
[
|
|
78061
78069
|
"path",
|
|
@@ -78065,7 +78073,7 @@ const __iconNode$29 = [
|
|
|
78065
78073
|
}
|
|
78066
78074
|
]
|
|
78067
78075
|
];
|
|
78068
|
-
const BookOpen = createLucideIcon("book-open", __iconNode$
|
|
78076
|
+
const BookOpen = createLucideIcon("book-open", __iconNode$2a);
|
|
78069
78077
|
|
|
78070
78078
|
/**
|
|
78071
78079
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78075,7 +78083,7 @@ const BookOpen = createLucideIcon("book-open", __iconNode$29);
|
|
|
78075
78083
|
*/
|
|
78076
78084
|
|
|
78077
78085
|
|
|
78078
|
-
const __iconNode$
|
|
78086
|
+
const __iconNode$29 = [
|
|
78079
78087
|
["path", { d: "M12 8V4H8", key: "hb8ula" }],
|
|
78080
78088
|
["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
|
|
78081
78089
|
["path", { d: "M2 14h2", key: "vft8re" }],
|
|
@@ -78083,7 +78091,7 @@ const __iconNode$28 = [
|
|
|
78083
78091
|
["path", { d: "M15 13v2", key: "1xurst" }],
|
|
78084
78092
|
["path", { d: "M9 13v2", key: "rq6x2g" }]
|
|
78085
78093
|
];
|
|
78086
|
-
const Bot = createLucideIcon("bot", __iconNode$
|
|
78094
|
+
const Bot = createLucideIcon("bot", __iconNode$29);
|
|
78087
78095
|
|
|
78088
78096
|
/**
|
|
78089
78097
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78093,11 +78101,11 @@ const Bot = createLucideIcon("bot", __iconNode$28);
|
|
|
78093
78101
|
*/
|
|
78094
78102
|
|
|
78095
78103
|
|
|
78096
|
-
const __iconNode$
|
|
78104
|
+
const __iconNode$28 = [
|
|
78097
78105
|
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
78098
78106
|
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
78099
78107
|
];
|
|
78100
|
-
const Briefcase = createLucideIcon("briefcase", __iconNode$
|
|
78108
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$28);
|
|
78101
78109
|
|
|
78102
78110
|
/**
|
|
78103
78111
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78107,7 +78115,7 @@ const Briefcase = createLucideIcon("briefcase", __iconNode$27);
|
|
|
78107
78115
|
*/
|
|
78108
78116
|
|
|
78109
78117
|
|
|
78110
|
-
const __iconNode$
|
|
78118
|
+
const __iconNode$27 = [
|
|
78111
78119
|
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
78112
78120
|
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
78113
78121
|
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
@@ -78116,7 +78124,7 @@ const __iconNode$26 = [
|
|
|
78116
78124
|
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
78117
78125
|
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
78118
78126
|
];
|
|
78119
|
-
const Building2 = createLucideIcon("building-2", __iconNode$
|
|
78127
|
+
const Building2 = createLucideIcon("building-2", __iconNode$27);
|
|
78120
78128
|
|
|
78121
78129
|
/**
|
|
78122
78130
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78126,13 +78134,13 @@ const Building2 = createLucideIcon("building-2", __iconNode$26);
|
|
|
78126
78134
|
*/
|
|
78127
78135
|
|
|
78128
78136
|
|
|
78129
|
-
const __iconNode$
|
|
78137
|
+
const __iconNode$26 = [
|
|
78130
78138
|
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
78131
78139
|
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
78132
78140
|
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
78133
78141
|
["path", { d: "M3 10h18", key: "8toen8" }]
|
|
78134
78142
|
];
|
|
78135
|
-
const Calendar$1 = createLucideIcon("calendar", __iconNode$
|
|
78143
|
+
const Calendar$1 = createLucideIcon("calendar", __iconNode$26);
|
|
78136
78144
|
|
|
78137
78145
|
/**
|
|
78138
78146
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78142,11 +78150,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$25);
|
|
|
78142
78150
|
*/
|
|
78143
78151
|
|
|
78144
78152
|
|
|
78145
|
-
const __iconNode$
|
|
78153
|
+
const __iconNode$25 = [
|
|
78146
78154
|
["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
|
|
78147
78155
|
["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
|
|
78148
78156
|
];
|
|
78149
|
-
const CheckCheck = createLucideIcon("check-check", __iconNode$
|
|
78157
|
+
const CheckCheck = createLucideIcon("check-check", __iconNode$25);
|
|
78150
78158
|
|
|
78151
78159
|
/**
|
|
78152
78160
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78156,8 +78164,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$24);
|
|
|
78156
78164
|
*/
|
|
78157
78165
|
|
|
78158
78166
|
|
|
78159
|
-
const __iconNode$
|
|
78160
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
78167
|
+
const __iconNode$24 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
78168
|
+
const Check = createLucideIcon("check", __iconNode$24);
|
|
78161
78169
|
|
|
78162
78170
|
/**
|
|
78163
78171
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78167,8 +78175,8 @@ const Check = createLucideIcon("check", __iconNode$23);
|
|
|
78167
78175
|
*/
|
|
78168
78176
|
|
|
78169
78177
|
|
|
78170
|
-
const __iconNode$
|
|
78171
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
78178
|
+
const __iconNode$23 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
78179
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$23);
|
|
78172
78180
|
|
|
78173
78181
|
/**
|
|
78174
78182
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78178,11 +78186,11 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$22);
|
|
|
78178
78186
|
*/
|
|
78179
78187
|
|
|
78180
78188
|
|
|
78181
|
-
const __iconNode$
|
|
78189
|
+
const __iconNode$22 = [
|
|
78182
78190
|
["path", { d: "m17 18-6-6 6-6", key: "1yerx2" }],
|
|
78183
78191
|
["path", { d: "M7 6v12", key: "1p53r6" }]
|
|
78184
78192
|
];
|
|
78185
|
-
const ChevronFirst = createLucideIcon("chevron-first", __iconNode$
|
|
78193
|
+
const ChevronFirst = createLucideIcon("chevron-first", __iconNode$22);
|
|
78186
78194
|
|
|
78187
78195
|
/**
|
|
78188
78196
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78192,11 +78200,11 @@ const ChevronFirst = createLucideIcon("chevron-first", __iconNode$21);
|
|
|
78192
78200
|
*/
|
|
78193
78201
|
|
|
78194
78202
|
|
|
78195
|
-
const __iconNode$
|
|
78203
|
+
const __iconNode$21 = [
|
|
78196
78204
|
["path", { d: "m7 18 6-6-6-6", key: "lwmzdw" }],
|
|
78197
78205
|
["path", { d: "M17 6v12", key: "1o0aio" }]
|
|
78198
78206
|
];
|
|
78199
|
-
const ChevronLast = createLucideIcon("chevron-last", __iconNode$
|
|
78207
|
+
const ChevronLast = createLucideIcon("chevron-last", __iconNode$21);
|
|
78200
78208
|
|
|
78201
78209
|
/**
|
|
78202
78210
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78206,8 +78214,8 @@ const ChevronLast = createLucideIcon("chevron-last", __iconNode$20);
|
|
|
78206
78214
|
*/
|
|
78207
78215
|
|
|
78208
78216
|
|
|
78209
|
-
const __iconNode$
|
|
78210
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
78217
|
+
const __iconNode$20 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
78218
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$20);
|
|
78211
78219
|
|
|
78212
78220
|
/**
|
|
78213
78221
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78217,8 +78225,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1$);
|
|
|
78217
78225
|
*/
|
|
78218
78226
|
|
|
78219
78227
|
|
|
78220
|
-
const __iconNode$
|
|
78221
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
78228
|
+
const __iconNode$1$ = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
78229
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$1$);
|
|
78222
78230
|
|
|
78223
78231
|
/**
|
|
78224
78232
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78228,8 +78236,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1_);
|
|
|
78228
78236
|
*/
|
|
78229
78237
|
|
|
78230
78238
|
|
|
78231
|
-
const __iconNode$
|
|
78232
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
78239
|
+
const __iconNode$1_ = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
78240
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$1_);
|
|
78233
78241
|
|
|
78234
78242
|
/**
|
|
78235
78243
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78239,11 +78247,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1Z);
|
|
|
78239
78247
|
*/
|
|
78240
78248
|
|
|
78241
78249
|
|
|
78242
|
-
const __iconNode$
|
|
78250
|
+
const __iconNode$1Z = [
|
|
78243
78251
|
["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
|
|
78244
78252
|
["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
|
|
78245
78253
|
];
|
|
78246
|
-
const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$
|
|
78254
|
+
const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1Z);
|
|
78247
78255
|
|
|
78248
78256
|
/**
|
|
78249
78257
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78253,11 +78261,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1Y);
|
|
|
78253
78261
|
*/
|
|
78254
78262
|
|
|
78255
78263
|
|
|
78256
|
-
const __iconNode$
|
|
78264
|
+
const __iconNode$1Y = [
|
|
78257
78265
|
["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
|
|
78258
78266
|
["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
|
|
78259
78267
|
];
|
|
78260
|
-
const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$
|
|
78268
|
+
const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1Y);
|
|
78261
78269
|
|
|
78262
78270
|
/**
|
|
78263
78271
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78267,11 +78275,11 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1X);
|
|
|
78267
78275
|
*/
|
|
78268
78276
|
|
|
78269
78277
|
|
|
78270
|
-
const __iconNode$
|
|
78278
|
+
const __iconNode$1X = [
|
|
78271
78279
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
78272
78280
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
78273
78281
|
];
|
|
78274
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
78282
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1X);
|
|
78275
78283
|
|
|
78276
78284
|
/**
|
|
78277
78285
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78281,12 +78289,12 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1W);
|
|
|
78281
78289
|
*/
|
|
78282
78290
|
|
|
78283
78291
|
|
|
78284
|
-
const __iconNode$
|
|
78292
|
+
const __iconNode$1W = [
|
|
78285
78293
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
78286
78294
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
78287
78295
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
78288
78296
|
];
|
|
78289
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
78297
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$1W);
|
|
78290
78298
|
|
|
78291
78299
|
/**
|
|
78292
78300
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78296,11 +78304,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1V);
|
|
|
78296
78304
|
*/
|
|
78297
78305
|
|
|
78298
78306
|
|
|
78299
|
-
const __iconNode$
|
|
78307
|
+
const __iconNode$1V = [
|
|
78300
78308
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
78301
78309
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
78302
78310
|
];
|
|
78303
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
78311
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1V);
|
|
78304
78312
|
|
|
78305
78313
|
/**
|
|
78306
78314
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78310,11 +78318,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1U);
|
|
|
78310
78318
|
*/
|
|
78311
78319
|
|
|
78312
78320
|
|
|
78313
|
-
const __iconNode$
|
|
78321
|
+
const __iconNode$1U = [
|
|
78314
78322
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
78315
78323
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
78316
78324
|
];
|
|
78317
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
78325
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$1U);
|
|
78318
78326
|
|
|
78319
78327
|
/**
|
|
78320
78328
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78324,11 +78332,11 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$1T);
|
|
|
78324
78332
|
*/
|
|
78325
78333
|
|
|
78326
78334
|
|
|
78327
|
-
const __iconNode$
|
|
78335
|
+
const __iconNode$1T = [
|
|
78328
78336
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
78329
78337
|
["path", { d: "M8 12h8", key: "1wcyev" }]
|
|
78330
78338
|
];
|
|
78331
|
-
const CircleMinus$1 = createLucideIcon("circle-minus", __iconNode$
|
|
78339
|
+
const CircleMinus$1 = createLucideIcon("circle-minus", __iconNode$1T);
|
|
78332
78340
|
|
|
78333
78341
|
/**
|
|
78334
78342
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78338,11 +78346,11 @@ const CircleMinus$1 = createLucideIcon("circle-minus", __iconNode$1S);
|
|
|
78338
78346
|
*/
|
|
78339
78347
|
|
|
78340
78348
|
|
|
78341
|
-
const __iconNode$
|
|
78349
|
+
const __iconNode$1S = [
|
|
78342
78350
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
78343
78351
|
["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }]
|
|
78344
78352
|
];
|
|
78345
|
-
const CircleStop = createLucideIcon("circle-stop", __iconNode$
|
|
78353
|
+
const CircleStop = createLucideIcon("circle-stop", __iconNode$1S);
|
|
78346
78354
|
|
|
78347
78355
|
/**
|
|
78348
78356
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78352,12 +78360,12 @@ const CircleStop = createLucideIcon("circle-stop", __iconNode$1R);
|
|
|
78352
78360
|
*/
|
|
78353
78361
|
|
|
78354
78362
|
|
|
78355
|
-
const __iconNode$
|
|
78363
|
+
const __iconNode$1R = [
|
|
78356
78364
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
78357
78365
|
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
78358
78366
|
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
78359
78367
|
];
|
|
78360
|
-
const CircleX = createLucideIcon("circle-x", __iconNode$
|
|
78368
|
+
const CircleX = createLucideIcon("circle-x", __iconNode$1R);
|
|
78361
78369
|
|
|
78362
78370
|
/**
|
|
78363
78371
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78367,8 +78375,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$1Q);
|
|
|
78367
78375
|
*/
|
|
78368
78376
|
|
|
78369
78377
|
|
|
78370
|
-
const __iconNode$
|
|
78371
|
-
const Circle = createLucideIcon("circle", __iconNode$
|
|
78378
|
+
const __iconNode$1Q = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
78379
|
+
const Circle = createLucideIcon("circle", __iconNode$1Q);
|
|
78372
78380
|
|
|
78373
78381
|
/**
|
|
78374
78382
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78378,7 +78386,7 @@ const Circle = createLucideIcon("circle", __iconNode$1P);
|
|
|
78378
78386
|
*/
|
|
78379
78387
|
|
|
78380
78388
|
|
|
78381
|
-
const __iconNode$
|
|
78389
|
+
const __iconNode$1P = [
|
|
78382
78390
|
["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
|
|
78383
78391
|
[
|
|
78384
78392
|
"path",
|
|
@@ -78392,7 +78400,7 @@ const __iconNode$1O = [
|
|
|
78392
78400
|
["path", { d: "M8 11h.01", key: "1dfujw" }],
|
|
78393
78401
|
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
78394
78402
|
];
|
|
78395
|
-
const ClipboardList = createLucideIcon("clipboard-list", __iconNode$
|
|
78403
|
+
const ClipboardList = createLucideIcon("clipboard-list", __iconNode$1P);
|
|
78396
78404
|
|
|
78397
78405
|
/**
|
|
78398
78406
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78402,11 +78410,11 @@ const ClipboardList = createLucideIcon("clipboard-list", __iconNode$1O);
|
|
|
78402
78410
|
*/
|
|
78403
78411
|
|
|
78404
78412
|
|
|
78405
|
-
const __iconNode$
|
|
78413
|
+
const __iconNode$1O = [
|
|
78406
78414
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
|
|
78407
78415
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
78408
78416
|
];
|
|
78409
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
78417
|
+
const Clock = createLucideIcon("clock", __iconNode$1O);
|
|
78410
78418
|
|
|
78411
78419
|
/**
|
|
78412
78420
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78416,12 +78424,12 @@ const Clock = createLucideIcon("clock", __iconNode$1N);
|
|
|
78416
78424
|
*/
|
|
78417
78425
|
|
|
78418
78426
|
|
|
78419
|
-
const __iconNode$
|
|
78427
|
+
const __iconNode$1N = [
|
|
78420
78428
|
["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
|
|
78421
78429
|
["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
|
|
78422
78430
|
["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
|
|
78423
78431
|
];
|
|
78424
|
-
const CodeXml = createLucideIcon("code-xml", __iconNode$
|
|
78432
|
+
const CodeXml = createLucideIcon("code-xml", __iconNode$1N);
|
|
78425
78433
|
|
|
78426
78434
|
/**
|
|
78427
78435
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78431,11 +78439,11 @@ const CodeXml = createLucideIcon("code-xml", __iconNode$1M);
|
|
|
78431
78439
|
*/
|
|
78432
78440
|
|
|
78433
78441
|
|
|
78434
|
-
const __iconNode$
|
|
78442
|
+
const __iconNode$1M = [
|
|
78435
78443
|
["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
|
|
78436
78444
|
["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
|
|
78437
78445
|
];
|
|
78438
|
-
const Code$1 = createLucideIcon("code", __iconNode$
|
|
78446
|
+
const Code$1 = createLucideIcon("code", __iconNode$1M);
|
|
78439
78447
|
|
|
78440
78448
|
/**
|
|
78441
78449
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78445,11 +78453,11 @@ const Code$1 = createLucideIcon("code", __iconNode$1L);
|
|
|
78445
78453
|
*/
|
|
78446
78454
|
|
|
78447
78455
|
|
|
78448
|
-
const __iconNode$
|
|
78456
|
+
const __iconNode$1L = [
|
|
78449
78457
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
78450
78458
|
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
78451
78459
|
];
|
|
78452
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
78460
|
+
const Copy = createLucideIcon("copy", __iconNode$1L);
|
|
78453
78461
|
|
|
78454
78462
|
/**
|
|
78455
78463
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78459,11 +78467,11 @@ const Copy = createLucideIcon("copy", __iconNode$1K);
|
|
|
78459
78467
|
*/
|
|
78460
78468
|
|
|
78461
78469
|
|
|
78462
|
-
const __iconNode$
|
|
78470
|
+
const __iconNode$1K = [
|
|
78463
78471
|
["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
|
|
78464
78472
|
["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
|
|
78465
78473
|
];
|
|
78466
|
-
const CreditCard = createLucideIcon("credit-card", __iconNode$
|
|
78474
|
+
const CreditCard = createLucideIcon("credit-card", __iconNode$1K);
|
|
78467
78475
|
|
|
78468
78476
|
/**
|
|
78469
78477
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78473,12 +78481,12 @@ const CreditCard = createLucideIcon("credit-card", __iconNode$1J);
|
|
|
78473
78481
|
*/
|
|
78474
78482
|
|
|
78475
78483
|
|
|
78476
|
-
const __iconNode$
|
|
78484
|
+
const __iconNode$1J = [
|
|
78477
78485
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
78478
78486
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
78479
78487
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
78480
78488
|
];
|
|
78481
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
78489
|
+
const Database = createLucideIcon("database", __iconNode$1J);
|
|
78482
78490
|
|
|
78483
78491
|
/**
|
|
78484
78492
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78488,11 +78496,11 @@ const Database = createLucideIcon("database", __iconNode$1I);
|
|
|
78488
78496
|
*/
|
|
78489
78497
|
|
|
78490
78498
|
|
|
78491
|
-
const __iconNode$
|
|
78499
|
+
const __iconNode$1I = [
|
|
78492
78500
|
["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }],
|
|
78493
78501
|
["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }]
|
|
78494
78502
|
];
|
|
78495
|
-
const DollarSign = createLucideIcon("dollar-sign", __iconNode$
|
|
78503
|
+
const DollarSign = createLucideIcon("dollar-sign", __iconNode$1I);
|
|
78496
78504
|
|
|
78497
78505
|
/**
|
|
78498
78506
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78502,7 +78510,7 @@ const DollarSign = createLucideIcon("dollar-sign", __iconNode$1H);
|
|
|
78502
78510
|
*/
|
|
78503
78511
|
|
|
78504
78512
|
|
|
78505
|
-
const __iconNode$
|
|
78513
|
+
const __iconNode$1H = [
|
|
78506
78514
|
["path", { d: "M11 20H2", key: "nlcfvz" }],
|
|
78507
78515
|
[
|
|
78508
78516
|
"path",
|
|
@@ -78515,7 +78523,7 @@ const __iconNode$1G = [
|
|
|
78515
78523
|
["path", { d: "M14 12h.01", key: "1jfl7z" }],
|
|
78516
78524
|
["path", { d: "M22 20h-3", key: "vhrsz" }]
|
|
78517
78525
|
];
|
|
78518
|
-
const DoorOpen = createLucideIcon("door-open", __iconNode$
|
|
78526
|
+
const DoorOpen = createLucideIcon("door-open", __iconNode$1H);
|
|
78519
78527
|
|
|
78520
78528
|
/**
|
|
78521
78529
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78525,12 +78533,12 @@ const DoorOpen = createLucideIcon("door-open", __iconNode$1G);
|
|
|
78525
78533
|
*/
|
|
78526
78534
|
|
|
78527
78535
|
|
|
78528
|
-
const __iconNode$
|
|
78536
|
+
const __iconNode$1G = [
|
|
78529
78537
|
["path", { d: "M12 15V3", key: "m9g1x1" }],
|
|
78530
78538
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
78531
78539
|
["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
|
|
78532
78540
|
];
|
|
78533
|
-
const Download = createLucideIcon("download", __iconNode$
|
|
78541
|
+
const Download = createLucideIcon("download", __iconNode$1G);
|
|
78534
78542
|
|
|
78535
78543
|
/**
|
|
78536
78544
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78540,12 +78548,12 @@ const Download = createLucideIcon("download", __iconNode$1F);
|
|
|
78540
78548
|
*/
|
|
78541
78549
|
|
|
78542
78550
|
|
|
78543
|
-
const __iconNode$
|
|
78551
|
+
const __iconNode$1F = [
|
|
78544
78552
|
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
78545
78553
|
["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
|
|
78546
78554
|
["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
|
|
78547
78555
|
];
|
|
78548
|
-
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$
|
|
78556
|
+
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1F);
|
|
78549
78557
|
|
|
78550
78558
|
/**
|
|
78551
78559
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78555,12 +78563,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1E);
|
|
|
78555
78563
|
*/
|
|
78556
78564
|
|
|
78557
78565
|
|
|
78558
|
-
const __iconNode$
|
|
78566
|
+
const __iconNode$1E = [
|
|
78559
78567
|
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
78560
78568
|
["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
|
|
78561
78569
|
["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
|
|
78562
78570
|
];
|
|
78563
|
-
const Ellipsis = createLucideIcon("ellipsis", __iconNode$
|
|
78571
|
+
const Ellipsis = createLucideIcon("ellipsis", __iconNode$1E);
|
|
78564
78572
|
|
|
78565
78573
|
/**
|
|
78566
78574
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78570,12 +78578,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$1D);
|
|
|
78570
78578
|
*/
|
|
78571
78579
|
|
|
78572
78580
|
|
|
78573
|
-
const __iconNode$
|
|
78581
|
+
const __iconNode$1D = [
|
|
78574
78582
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
78575
78583
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
78576
78584
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
78577
78585
|
];
|
|
78578
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
78586
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$1D);
|
|
78579
78587
|
|
|
78580
78588
|
/**
|
|
78581
78589
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78585,7 +78593,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$1C);
|
|
|
78585
78593
|
*/
|
|
78586
78594
|
|
|
78587
78595
|
|
|
78588
|
-
const __iconNode$
|
|
78596
|
+
const __iconNode$1C = [
|
|
78589
78597
|
[
|
|
78590
78598
|
"path",
|
|
78591
78599
|
{
|
|
@@ -78603,7 +78611,7 @@ const __iconNode$1B = [
|
|
|
78603
78611
|
],
|
|
78604
78612
|
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
78605
78613
|
];
|
|
78606
|
-
const EyeOff = createLucideIcon("eye-off", __iconNode$
|
|
78614
|
+
const EyeOff = createLucideIcon("eye-off", __iconNode$1C);
|
|
78607
78615
|
|
|
78608
78616
|
/**
|
|
78609
78617
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78613,7 +78621,7 @@ const EyeOff = createLucideIcon("eye-off", __iconNode$1B);
|
|
|
78613
78621
|
*/
|
|
78614
78622
|
|
|
78615
78623
|
|
|
78616
|
-
const __iconNode$
|
|
78624
|
+
const __iconNode$1B = [
|
|
78617
78625
|
[
|
|
78618
78626
|
"path",
|
|
78619
78627
|
{
|
|
@@ -78623,7 +78631,7 @@ const __iconNode$1A = [
|
|
|
78623
78631
|
],
|
|
78624
78632
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
78625
78633
|
];
|
|
78626
|
-
const Eye = createLucideIcon("eye", __iconNode$
|
|
78634
|
+
const Eye = createLucideIcon("eye", __iconNode$1B);
|
|
78627
78635
|
|
|
78628
78636
|
/**
|
|
78629
78637
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78633,7 +78641,7 @@ const Eye = createLucideIcon("eye", __iconNode$1A);
|
|
|
78633
78641
|
*/
|
|
78634
78642
|
|
|
78635
78643
|
|
|
78636
|
-
const __iconNode$
|
|
78644
|
+
const __iconNode$1A = [
|
|
78637
78645
|
["path", { d: "M10 12v-1", key: "v7bkov" }],
|
|
78638
78646
|
["path", { d: "M10 18v-2", key: "1cjy8d" }],
|
|
78639
78647
|
["path", { d: "M10 7V6", key: "dljcrl" }],
|
|
@@ -78644,7 +78652,7 @@ const __iconNode$1z = [
|
|
|
78644
78652
|
],
|
|
78645
78653
|
["circle", { cx: "10", cy: "20", r: "2", key: "1xzdoj" }]
|
|
78646
78654
|
];
|
|
78647
|
-
const FileArchive = createLucideIcon("file-archive", __iconNode$
|
|
78655
|
+
const FileArchive = createLucideIcon("file-archive", __iconNode$1A);
|
|
78648
78656
|
|
|
78649
78657
|
/**
|
|
78650
78658
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78654,7 +78662,7 @@ const FileArchive = createLucideIcon("file-archive", __iconNode$1z);
|
|
|
78654
78662
|
*/
|
|
78655
78663
|
|
|
78656
78664
|
|
|
78657
|
-
const __iconNode$
|
|
78665
|
+
const __iconNode$1z = [
|
|
78658
78666
|
["path", { d: "M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "rslqgf" }],
|
|
78659
78667
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78660
78668
|
[
|
|
@@ -78665,7 +78673,7 @@ const __iconNode$1y = [
|
|
|
78665
78673
|
}
|
|
78666
78674
|
]
|
|
78667
78675
|
];
|
|
78668
|
-
const FileAudio = createLucideIcon("file-audio", __iconNode$
|
|
78676
|
+
const FileAudio = createLucideIcon("file-audio", __iconNode$1z);
|
|
78669
78677
|
|
|
78670
78678
|
/**
|
|
78671
78679
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78675,13 +78683,13 @@ const FileAudio = createLucideIcon("file-audio", __iconNode$1y);
|
|
|
78675
78683
|
*/
|
|
78676
78684
|
|
|
78677
78685
|
|
|
78678
|
-
const __iconNode$
|
|
78686
|
+
const __iconNode$1y = [
|
|
78679
78687
|
["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
|
|
78680
78688
|
["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }],
|
|
78681
78689
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78682
78690
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }]
|
|
78683
78691
|
];
|
|
78684
|
-
const FileCode = createLucideIcon("file-code", __iconNode$
|
|
78692
|
+
const FileCode = createLucideIcon("file-code", __iconNode$1y);
|
|
78685
78693
|
|
|
78686
78694
|
/**
|
|
78687
78695
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78691,13 +78699,13 @@ const FileCode = createLucideIcon("file-code", __iconNode$1x);
|
|
|
78691
78699
|
*/
|
|
78692
78700
|
|
|
78693
78701
|
|
|
78694
|
-
const __iconNode$
|
|
78702
|
+
const __iconNode$1x = [
|
|
78695
78703
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
78696
78704
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78697
78705
|
["path", { d: "M12 18v-6", key: "17g6i2" }],
|
|
78698
78706
|
["path", { d: "m9 15 3 3 3-3", key: "1npd3o" }]
|
|
78699
78707
|
];
|
|
78700
|
-
const FileDown = createLucideIcon("file-down", __iconNode$
|
|
78708
|
+
const FileDown = createLucideIcon("file-down", __iconNode$1x);
|
|
78701
78709
|
|
|
78702
78710
|
/**
|
|
78703
78711
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78707,13 +78715,13 @@ const FileDown = createLucideIcon("file-down", __iconNode$1w);
|
|
|
78707
78715
|
*/
|
|
78708
78716
|
|
|
78709
78717
|
|
|
78710
|
-
const __iconNode$
|
|
78718
|
+
const __iconNode$1w = [
|
|
78711
78719
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
78712
78720
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78713
78721
|
["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
|
|
78714
78722
|
["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
|
|
78715
78723
|
];
|
|
78716
|
-
const FileImage = createLucideIcon("file-image", __iconNode$
|
|
78724
|
+
const FileImage = createLucideIcon("file-image", __iconNode$1w);
|
|
78717
78725
|
|
|
78718
78726
|
/**
|
|
78719
78727
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78723,7 +78731,7 @@ const FileImage = createLucideIcon("file-image", __iconNode$1v);
|
|
|
78723
78731
|
*/
|
|
78724
78732
|
|
|
78725
78733
|
|
|
78726
|
-
const __iconNode$
|
|
78734
|
+
const __iconNode$1v = [
|
|
78727
78735
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78728
78736
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
|
|
78729
78737
|
[
|
|
@@ -78734,7 +78742,7 @@ const __iconNode$1u = [
|
|
|
78734
78742
|
}
|
|
78735
78743
|
]
|
|
78736
78744
|
];
|
|
78737
|
-
const FilePlay = createLucideIcon("file-play", __iconNode$
|
|
78745
|
+
const FilePlay = createLucideIcon("file-play", __iconNode$1v);
|
|
78738
78746
|
|
|
78739
78747
|
/**
|
|
78740
78748
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78744,7 +78752,7 @@ const FilePlay = createLucideIcon("file-play", __iconNode$1u);
|
|
|
78744
78752
|
*/
|
|
78745
78753
|
|
|
78746
78754
|
|
|
78747
|
-
const __iconNode$
|
|
78755
|
+
const __iconNode$1u = [
|
|
78748
78756
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
78749
78757
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78750
78758
|
["path", { d: "M8 13h2", key: "yr2amv" }],
|
|
@@ -78752,7 +78760,7 @@ const __iconNode$1t = [
|
|
|
78752
78760
|
["path", { d: "M8 17h2", key: "2yhykz" }],
|
|
78753
78761
|
["path", { d: "M14 17h2", key: "10kma7" }]
|
|
78754
78762
|
];
|
|
78755
|
-
const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$
|
|
78763
|
+
const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1u);
|
|
78756
78764
|
|
|
78757
78765
|
/**
|
|
78758
78766
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78762,14 +78770,14 @@ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1t);
|
|
|
78762
78770
|
*/
|
|
78763
78771
|
|
|
78764
78772
|
|
|
78765
|
-
const __iconNode$
|
|
78773
|
+
const __iconNode$1t = [
|
|
78766
78774
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
78767
78775
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
78768
78776
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
78769
78777
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
78770
78778
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
78771
78779
|
];
|
|
78772
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
78780
|
+
const FileText = createLucideIcon("file-text", __iconNode$1t);
|
|
78773
78781
|
|
|
78774
78782
|
/**
|
|
78775
78783
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78779,11 +78787,11 @@ const FileText = createLucideIcon("file-text", __iconNode$1s);
|
|
|
78779
78787
|
*/
|
|
78780
78788
|
|
|
78781
78789
|
|
|
78782
|
-
const __iconNode$
|
|
78790
|
+
const __iconNode$1s = [
|
|
78783
78791
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
78784
78792
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
|
|
78785
78793
|
];
|
|
78786
|
-
const File$1 = createLucideIcon("file", __iconNode$
|
|
78794
|
+
const File$1 = createLucideIcon("file", __iconNode$1s);
|
|
78787
78795
|
|
|
78788
78796
|
/**
|
|
78789
78797
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78793,7 +78801,7 @@ const File$1 = createLucideIcon("file", __iconNode$1r);
|
|
|
78793
78801
|
*/
|
|
78794
78802
|
|
|
78795
78803
|
|
|
78796
|
-
const __iconNode$
|
|
78804
|
+
const __iconNode$1r = [
|
|
78797
78805
|
[
|
|
78798
78806
|
"path",
|
|
78799
78807
|
{
|
|
@@ -78811,7 +78819,7 @@ const __iconNode$1q = [
|
|
|
78811
78819
|
["path", { d: "M3 5a2 2 0 0 0 2 2h3", key: "f2jnh7" }],
|
|
78812
78820
|
["path", { d: "M3 3v13a2 2 0 0 0 2 2h3", key: "k8epm1" }]
|
|
78813
78821
|
];
|
|
78814
|
-
const FolderTree = createLucideIcon("folder-tree", __iconNode$
|
|
78822
|
+
const FolderTree = createLucideIcon("folder-tree", __iconNode$1r);
|
|
78815
78823
|
|
|
78816
78824
|
/**
|
|
78817
78825
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78821,14 +78829,14 @@ const FolderTree = createLucideIcon("folder-tree", __iconNode$1q);
|
|
|
78821
78829
|
*/
|
|
78822
78830
|
|
|
78823
78831
|
|
|
78824
|
-
const __iconNode$
|
|
78832
|
+
const __iconNode$1q = [
|
|
78825
78833
|
["path", { d: "m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8", key: "15492f" }],
|
|
78826
78834
|
["path", { d: "m16 16 6-6", key: "vzrcl6" }],
|
|
78827
78835
|
["path", { d: "m8 8 6-6", key: "18bi4p" }],
|
|
78828
78836
|
["path", { d: "m9 7 8 8", key: "5jnvq1" }],
|
|
78829
78837
|
["path", { d: "m21 11-8-8", key: "z4y7zo" }]
|
|
78830
78838
|
];
|
|
78831
|
-
const Gavel = createLucideIcon("gavel", __iconNode$
|
|
78839
|
+
const Gavel = createLucideIcon("gavel", __iconNode$1q);
|
|
78832
78840
|
|
|
78833
78841
|
/**
|
|
78834
78842
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78838,13 +78846,13 @@ const Gavel = createLucideIcon("gavel", __iconNode$1p);
|
|
|
78838
78846
|
*/
|
|
78839
78847
|
|
|
78840
78848
|
|
|
78841
|
-
const __iconNode$
|
|
78849
|
+
const __iconNode$1p = [
|
|
78842
78850
|
["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
|
|
78843
78851
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
78844
78852
|
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
|
|
78845
78853
|
["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
|
|
78846
78854
|
];
|
|
78847
|
-
const GitBranch = createLucideIcon("git-branch", __iconNode$
|
|
78855
|
+
const GitBranch = createLucideIcon("git-branch", __iconNode$1p);
|
|
78848
78856
|
|
|
78849
78857
|
/**
|
|
78850
78858
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78854,12 +78862,12 @@ const GitBranch = createLucideIcon("git-branch", __iconNode$1o);
|
|
|
78854
78862
|
*/
|
|
78855
78863
|
|
|
78856
78864
|
|
|
78857
|
-
const __iconNode$
|
|
78865
|
+
const __iconNode$1o = [
|
|
78858
78866
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
78859
78867
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
78860
78868
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
78861
78869
|
];
|
|
78862
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
78870
|
+
const Globe = createLucideIcon("globe", __iconNode$1o);
|
|
78863
78871
|
|
|
78864
78872
|
/**
|
|
78865
78873
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78869,7 +78877,7 @@ const Globe = createLucideIcon("globe", __iconNode$1n);
|
|
|
78869
78877
|
*/
|
|
78870
78878
|
|
|
78871
78879
|
|
|
78872
|
-
const __iconNode$
|
|
78880
|
+
const __iconNode$1n = [
|
|
78873
78881
|
[
|
|
78874
78882
|
"path",
|
|
78875
78883
|
{
|
|
@@ -78880,7 +78888,7 @@ const __iconNode$1m = [
|
|
|
78880
78888
|
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
78881
78889
|
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
78882
78890
|
];
|
|
78883
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$
|
|
78891
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$1n);
|
|
78884
78892
|
|
|
78885
78893
|
/**
|
|
78886
78894
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78890,7 +78898,7 @@ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$1m);
|
|
|
78890
78898
|
*/
|
|
78891
78899
|
|
|
78892
78900
|
|
|
78893
|
-
const __iconNode$
|
|
78901
|
+
const __iconNode$1m = [
|
|
78894
78902
|
["path", { d: "M14 18a2 2 0 0 0-4 0", key: "1v8fkw" }],
|
|
78895
78903
|
[
|
|
78896
78904
|
"path",
|
|
@@ -78903,7 +78911,7 @@ const __iconNode$1l = [
|
|
|
78903
78911
|
["circle", { cx: "17", cy: "18", r: "3", key: "82mm0e" }],
|
|
78904
78912
|
["circle", { cx: "7", cy: "18", r: "3", key: "lvkj7j" }]
|
|
78905
78913
|
];
|
|
78906
|
-
const HatGlasses = createLucideIcon("hat-glasses", __iconNode$
|
|
78914
|
+
const HatGlasses = createLucideIcon("hat-glasses", __iconNode$1m);
|
|
78907
78915
|
|
|
78908
78916
|
/**
|
|
78909
78917
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78913,13 +78921,13 @@ const HatGlasses = createLucideIcon("hat-glasses", __iconNode$1l);
|
|
|
78913
78921
|
*/
|
|
78914
78922
|
|
|
78915
78923
|
|
|
78916
|
-
const __iconNode$
|
|
78924
|
+
const __iconNode$1l = [
|
|
78917
78925
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
78918
78926
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
78919
78927
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
78920
78928
|
["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
|
|
78921
78929
|
];
|
|
78922
|
-
const Heading1 = createLucideIcon("heading-1", __iconNode$
|
|
78930
|
+
const Heading1 = createLucideIcon("heading-1", __iconNode$1l);
|
|
78923
78931
|
|
|
78924
78932
|
/**
|
|
78925
78933
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78929,13 +78937,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$1k);
|
|
|
78929
78937
|
*/
|
|
78930
78938
|
|
|
78931
78939
|
|
|
78932
|
-
const __iconNode$
|
|
78940
|
+
const __iconNode$1k = [
|
|
78933
78941
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
78934
78942
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
78935
78943
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
78936
78944
|
["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
|
|
78937
78945
|
];
|
|
78938
|
-
const Heading2 = createLucideIcon("heading-2", __iconNode$
|
|
78946
|
+
const Heading2 = createLucideIcon("heading-2", __iconNode$1k);
|
|
78939
78947
|
|
|
78940
78948
|
/**
|
|
78941
78949
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78945,14 +78953,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$1j);
|
|
|
78945
78953
|
*/
|
|
78946
78954
|
|
|
78947
78955
|
|
|
78948
|
-
const __iconNode$
|
|
78956
|
+
const __iconNode$1j = [
|
|
78949
78957
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
78950
78958
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
78951
78959
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
78952
78960
|
["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
|
|
78953
78961
|
["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
|
|
78954
78962
|
];
|
|
78955
|
-
const Heading3 = createLucideIcon("heading-3", __iconNode$
|
|
78963
|
+
const Heading3 = createLucideIcon("heading-3", __iconNode$1j);
|
|
78956
78964
|
|
|
78957
78965
|
/**
|
|
78958
78966
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78962,12 +78970,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$1i);
|
|
|
78962
78970
|
*/
|
|
78963
78971
|
|
|
78964
78972
|
|
|
78965
|
-
const __iconNode$
|
|
78973
|
+
const __iconNode$1i = [
|
|
78966
78974
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
78967
78975
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }],
|
|
78968
78976
|
["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
|
|
78969
78977
|
];
|
|
78970
|
-
const History = createLucideIcon("history", __iconNode$
|
|
78978
|
+
const History = createLucideIcon("history", __iconNode$1i);
|
|
78971
78979
|
|
|
78972
78980
|
/**
|
|
78973
78981
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78977,12 +78985,12 @@ const History = createLucideIcon("history", __iconNode$1h);
|
|
|
78977
78985
|
*/
|
|
78978
78986
|
|
|
78979
78987
|
|
|
78980
|
-
const __iconNode$
|
|
78988
|
+
const __iconNode$1h = [
|
|
78981
78989
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
78982
78990
|
["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
|
|
78983
78991
|
["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
|
|
78984
78992
|
];
|
|
78985
|
-
const Image$3 = createLucideIcon("image", __iconNode$
|
|
78993
|
+
const Image$3 = createLucideIcon("image", __iconNode$1h);
|
|
78986
78994
|
|
|
78987
78995
|
/**
|
|
78988
78996
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -78992,7 +79000,7 @@ const Image$3 = createLucideIcon("image", __iconNode$1g);
|
|
|
78992
79000
|
*/
|
|
78993
79001
|
|
|
78994
79002
|
|
|
78995
|
-
const __iconNode$
|
|
79003
|
+
const __iconNode$1g = [
|
|
78996
79004
|
["polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12", key: "o97t9d" }],
|
|
78997
79005
|
[
|
|
78998
79006
|
"path",
|
|
@@ -79002,7 +79010,7 @@ const __iconNode$1f = [
|
|
|
79002
79010
|
}
|
|
79003
79011
|
]
|
|
79004
79012
|
];
|
|
79005
|
-
const Inbox = createLucideIcon("inbox", __iconNode$
|
|
79013
|
+
const Inbox = createLucideIcon("inbox", __iconNode$1g);
|
|
79006
79014
|
|
|
79007
79015
|
/**
|
|
79008
79016
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79012,12 +79020,12 @@ const Inbox = createLucideIcon("inbox", __iconNode$1f);
|
|
|
79012
79020
|
*/
|
|
79013
79021
|
|
|
79014
79022
|
|
|
79015
|
-
const __iconNode$
|
|
79023
|
+
const __iconNode$1f = [
|
|
79016
79024
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
79017
79025
|
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
79018
79026
|
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
79019
79027
|
];
|
|
79020
|
-
const Info$3 = createLucideIcon("info", __iconNode$
|
|
79028
|
+
const Info$3 = createLucideIcon("info", __iconNode$1f);
|
|
79021
79029
|
|
|
79022
79030
|
/**
|
|
79023
79031
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79027,12 +79035,12 @@ const Info$3 = createLucideIcon("info", __iconNode$1e);
|
|
|
79027
79035
|
*/
|
|
79028
79036
|
|
|
79029
79037
|
|
|
79030
|
-
const __iconNode$
|
|
79038
|
+
const __iconNode$1e = [
|
|
79031
79039
|
["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
|
|
79032
79040
|
["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
|
|
79033
79041
|
["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
|
|
79034
79042
|
];
|
|
79035
|
-
const Italic$1 = createLucideIcon("italic", __iconNode$
|
|
79043
|
+
const Italic$1 = createLucideIcon("italic", __iconNode$1e);
|
|
79036
79044
|
|
|
79037
79045
|
/**
|
|
79038
79046
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79042,7 +79050,7 @@ const Italic$1 = createLucideIcon("italic", __iconNode$1d);
|
|
|
79042
79050
|
*/
|
|
79043
79051
|
|
|
79044
79052
|
|
|
79045
|
-
const __iconNode$
|
|
79053
|
+
const __iconNode$1d = [
|
|
79046
79054
|
[
|
|
79047
79055
|
"path",
|
|
79048
79056
|
{
|
|
@@ -79052,7 +79060,7 @@ const __iconNode$1c = [
|
|
|
79052
79060
|
],
|
|
79053
79061
|
["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }]
|
|
79054
79062
|
];
|
|
79055
|
-
const KeyRound = createLucideIcon("key-round", __iconNode$
|
|
79063
|
+
const KeyRound = createLucideIcon("key-round", __iconNode$1d);
|
|
79056
79064
|
|
|
79057
79065
|
/**
|
|
79058
79066
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79062,7 +79070,7 @@ const KeyRound = createLucideIcon("key-round", __iconNode$1c);
|
|
|
79062
79070
|
*/
|
|
79063
79071
|
|
|
79064
79072
|
|
|
79065
|
-
const __iconNode$
|
|
79073
|
+
const __iconNode$1c = [
|
|
79066
79074
|
["path", { d: "M10 18v-7", key: "wt116b" }],
|
|
79067
79075
|
[
|
|
79068
79076
|
"path",
|
|
@@ -79076,7 +79084,7 @@ const __iconNode$1b = [
|
|
|
79076
79084
|
["path", { d: "M3 22h18", key: "8prr45" }],
|
|
79077
79085
|
["path", { d: "M6 18v-7", key: "1ivflk" }]
|
|
79078
79086
|
];
|
|
79079
|
-
const Landmark = createLucideIcon("landmark", __iconNode$
|
|
79087
|
+
const Landmark = createLucideIcon("landmark", __iconNode$1c);
|
|
79080
79088
|
|
|
79081
79089
|
/**
|
|
79082
79090
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79086,7 +79094,7 @@ const Landmark = createLucideIcon("landmark", __iconNode$1b);
|
|
|
79086
79094
|
*/
|
|
79087
79095
|
|
|
79088
79096
|
|
|
79089
|
-
const __iconNode$
|
|
79097
|
+
const __iconNode$1b = [
|
|
79090
79098
|
[
|
|
79091
79099
|
"path",
|
|
79092
79100
|
{
|
|
@@ -79109,7 +79117,7 @@ const __iconNode$1a = [
|
|
|
79109
79117
|
}
|
|
79110
79118
|
]
|
|
79111
79119
|
];
|
|
79112
|
-
const Layers = createLucideIcon("layers", __iconNode$
|
|
79120
|
+
const Layers = createLucideIcon("layers", __iconNode$1b);
|
|
79113
79121
|
|
|
79114
79122
|
/**
|
|
79115
79123
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79119,12 +79127,12 @@ const Layers = createLucideIcon("layers", __iconNode$1a);
|
|
|
79119
79127
|
*/
|
|
79120
79128
|
|
|
79121
79129
|
|
|
79122
|
-
const __iconNode$
|
|
79130
|
+
const __iconNode$1a = [
|
|
79123
79131
|
["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
|
|
79124
79132
|
["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
|
|
79125
79133
|
["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
|
|
79126
79134
|
];
|
|
79127
|
-
const Link2 = createLucideIcon("link-2", __iconNode$
|
|
79135
|
+
const Link2 = createLucideIcon("link-2", __iconNode$1a);
|
|
79128
79136
|
|
|
79129
79137
|
/**
|
|
79130
79138
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79134,11 +79142,11 @@ const Link2 = createLucideIcon("link-2", __iconNode$19);
|
|
|
79134
79142
|
*/
|
|
79135
79143
|
|
|
79136
79144
|
|
|
79137
|
-
const __iconNode$
|
|
79145
|
+
const __iconNode$19 = [
|
|
79138
79146
|
["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
|
|
79139
79147
|
["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
|
|
79140
79148
|
];
|
|
79141
|
-
const Link$1 = createLucideIcon("link", __iconNode$
|
|
79149
|
+
const Link$1 = createLucideIcon("link", __iconNode$19);
|
|
79142
79150
|
|
|
79143
79151
|
/**
|
|
79144
79152
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79148,7 +79156,7 @@ const Link$1 = createLucideIcon("link", __iconNode$18);
|
|
|
79148
79156
|
*/
|
|
79149
79157
|
|
|
79150
79158
|
|
|
79151
|
-
const __iconNode$
|
|
79159
|
+
const __iconNode$18 = [
|
|
79152
79160
|
["path", { d: "M10 12h11", key: "6m4ad9" }],
|
|
79153
79161
|
["path", { d: "M10 18h11", key: "11hvi2" }],
|
|
79154
79162
|
["path", { d: "M10 6h11", key: "c7qv1k" }],
|
|
@@ -79156,7 +79164,7 @@ const __iconNode$17 = [
|
|
|
79156
79164
|
["path", { d: "M4 6h1v4", key: "cnovpq" }],
|
|
79157
79165
|
["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
|
|
79158
79166
|
];
|
|
79159
|
-
const ListOrdered = createLucideIcon("list-ordered", __iconNode$
|
|
79167
|
+
const ListOrdered = createLucideIcon("list-ordered", __iconNode$18);
|
|
79160
79168
|
|
|
79161
79169
|
/**
|
|
79162
79170
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79166,7 +79174,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$17);
|
|
|
79166
79174
|
*/
|
|
79167
79175
|
|
|
79168
79176
|
|
|
79169
|
-
const __iconNode$
|
|
79177
|
+
const __iconNode$17 = [
|
|
79170
79178
|
["path", { d: "M3 12h.01", key: "nlz23k" }],
|
|
79171
79179
|
["path", { d: "M3 18h.01", key: "1tta3j" }],
|
|
79172
79180
|
["path", { d: "M3 6h.01", key: "1rqtza" }],
|
|
@@ -79174,7 +79182,7 @@ const __iconNode$16 = [
|
|
|
79174
79182
|
["path", { d: "M8 18h13", key: "1lx6n3" }],
|
|
79175
79183
|
["path", { d: "M8 6h13", key: "ik3vkj" }]
|
|
79176
79184
|
];
|
|
79177
|
-
const List$1 = createLucideIcon("list", __iconNode$
|
|
79185
|
+
const List$1 = createLucideIcon("list", __iconNode$17);
|
|
79178
79186
|
|
|
79179
79187
|
/**
|
|
79180
79188
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79184,8 +79192,8 @@ const List$1 = createLucideIcon("list", __iconNode$16);
|
|
|
79184
79192
|
*/
|
|
79185
79193
|
|
|
79186
79194
|
|
|
79187
|
-
const __iconNode$
|
|
79188
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
79195
|
+
const __iconNode$16 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
79196
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$16);
|
|
79189
79197
|
|
|
79190
79198
|
/**
|
|
79191
79199
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79195,11 +79203,11 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$15);
|
|
|
79195
79203
|
*/
|
|
79196
79204
|
|
|
79197
79205
|
|
|
79198
|
-
const __iconNode$
|
|
79206
|
+
const __iconNode$15 = [
|
|
79199
79207
|
["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
|
|
79200
79208
|
["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
|
|
79201
79209
|
];
|
|
79202
|
-
const Lock = createLucideIcon("lock", __iconNode$
|
|
79210
|
+
const Lock = createLucideIcon("lock", __iconNode$15);
|
|
79203
79211
|
|
|
79204
79212
|
/**
|
|
79205
79213
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79209,11 +79217,11 @@ const Lock = createLucideIcon("lock", __iconNode$14);
|
|
|
79209
79217
|
*/
|
|
79210
79218
|
|
|
79211
79219
|
|
|
79212
|
-
const __iconNode$
|
|
79220
|
+
const __iconNode$14 = [
|
|
79213
79221
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
79214
79222
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
79215
79223
|
];
|
|
79216
|
-
const Mail = createLucideIcon("mail", __iconNode$
|
|
79224
|
+
const Mail = createLucideIcon("mail", __iconNode$14);
|
|
79217
79225
|
|
|
79218
79226
|
/**
|
|
79219
79227
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79223,10 +79231,10 @@ const Mail = createLucideIcon("mail", __iconNode$13);
|
|
|
79223
79231
|
*/
|
|
79224
79232
|
|
|
79225
79233
|
|
|
79226
|
-
const __iconNode$
|
|
79234
|
+
const __iconNode$13 = [
|
|
79227
79235
|
["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }]
|
|
79228
79236
|
];
|
|
79229
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$
|
|
79237
|
+
const MessageSquare = createLucideIcon("message-square", __iconNode$13);
|
|
79230
79238
|
|
|
79231
79239
|
/**
|
|
79232
79240
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79236,12 +79244,12 @@ const MessageSquare = createLucideIcon("message-square", __iconNode$12);
|
|
|
79236
79244
|
*/
|
|
79237
79245
|
|
|
79238
79246
|
|
|
79239
|
-
const __iconNode$
|
|
79247
|
+
const __iconNode$12 = [
|
|
79240
79248
|
["path", { d: "M12 19v3", key: "npa21l" }],
|
|
79241
79249
|
["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }],
|
|
79242
79250
|
["rect", { x: "9", y: "2", width: "6", height: "13", rx: "3", key: "s6n7sd" }]
|
|
79243
79251
|
];
|
|
79244
|
-
const Mic = createLucideIcon("mic", __iconNode$
|
|
79252
|
+
const Mic = createLucideIcon("mic", __iconNode$12);
|
|
79245
79253
|
|
|
79246
79254
|
/**
|
|
79247
79255
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79251,12 +79259,12 @@ const Mic = createLucideIcon("mic", __iconNode$11);
|
|
|
79251
79259
|
*/
|
|
79252
79260
|
|
|
79253
79261
|
|
|
79254
|
-
const __iconNode$
|
|
79262
|
+
const __iconNode$11 = [
|
|
79255
79263
|
["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
|
|
79256
79264
|
["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
|
|
79257
79265
|
["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
|
|
79258
79266
|
];
|
|
79259
|
-
const Monitor = createLucideIcon("monitor", __iconNode$
|
|
79267
|
+
const Monitor = createLucideIcon("monitor", __iconNode$11);
|
|
79260
79268
|
|
|
79261
79269
|
/**
|
|
79262
79270
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79266,7 +79274,7 @@ const Monitor = createLucideIcon("monitor", __iconNode$10);
|
|
|
79266
79274
|
*/
|
|
79267
79275
|
|
|
79268
79276
|
|
|
79269
|
-
const __iconNode
|
|
79277
|
+
const __iconNode$10 = [
|
|
79270
79278
|
[
|
|
79271
79279
|
"path",
|
|
79272
79280
|
{
|
|
@@ -79275,7 +79283,7 @@ const __iconNode$$ = [
|
|
|
79275
79283
|
}
|
|
79276
79284
|
]
|
|
79277
79285
|
];
|
|
79278
|
-
const Paperclip = createLucideIcon("paperclip", __iconNode
|
|
79286
|
+
const Paperclip = createLucideIcon("paperclip", __iconNode$10);
|
|
79279
79287
|
|
|
79280
79288
|
/**
|
|
79281
79289
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79285,7 +79293,7 @@ const Paperclip = createLucideIcon("paperclip", __iconNode$$);
|
|
|
79285
79293
|
*/
|
|
79286
79294
|
|
|
79287
79295
|
|
|
79288
|
-
const __iconNode
|
|
79296
|
+
const __iconNode$$ = [
|
|
79289
79297
|
["path", { d: "M13 21h8", key: "1jsn5i" }],
|
|
79290
79298
|
[
|
|
79291
79299
|
"path",
|
|
@@ -79295,7 +79303,7 @@ const __iconNode$_ = [
|
|
|
79295
79303
|
}
|
|
79296
79304
|
]
|
|
79297
79305
|
];
|
|
79298
|
-
const PenLine = createLucideIcon("pen-line", __iconNode
|
|
79306
|
+
const PenLine = createLucideIcon("pen-line", __iconNode$$);
|
|
79299
79307
|
|
|
79300
79308
|
/**
|
|
79301
79309
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79305,7 +79313,7 @@ const PenLine = createLucideIcon("pen-line", __iconNode$_);
|
|
|
79305
79313
|
*/
|
|
79306
79314
|
|
|
79307
79315
|
|
|
79308
|
-
const __iconNode$
|
|
79316
|
+
const __iconNode$_ = [
|
|
79309
79317
|
[
|
|
79310
79318
|
"path",
|
|
79311
79319
|
{
|
|
@@ -79314,7 +79322,7 @@ const __iconNode$Z = [
|
|
|
79314
79322
|
}
|
|
79315
79323
|
]
|
|
79316
79324
|
];
|
|
79317
|
-
const Pen = createLucideIcon("pen", __iconNode$
|
|
79325
|
+
const Pen = createLucideIcon("pen", __iconNode$_);
|
|
79318
79326
|
|
|
79319
79327
|
/**
|
|
79320
79328
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79324,7 +79332,7 @@ const Pen = createLucideIcon("pen", __iconNode$Z);
|
|
|
79324
79332
|
*/
|
|
79325
79333
|
|
|
79326
79334
|
|
|
79327
|
-
const __iconNode$
|
|
79335
|
+
const __iconNode$Z = [
|
|
79328
79336
|
[
|
|
79329
79337
|
"path",
|
|
79330
79338
|
{
|
|
@@ -79334,7 +79342,7 @@ const __iconNode$Y = [
|
|
|
79334
79342
|
],
|
|
79335
79343
|
["path", { d: "m15 5 4 4", key: "1mk7zo" }]
|
|
79336
79344
|
];
|
|
79337
|
-
const Pencil = createLucideIcon("pencil", __iconNode$
|
|
79345
|
+
const Pencil = createLucideIcon("pencil", __iconNode$Z);
|
|
79338
79346
|
|
|
79339
79347
|
/**
|
|
79340
79348
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79344,7 +79352,7 @@ const Pencil = createLucideIcon("pencil", __iconNode$Y);
|
|
|
79344
79352
|
*/
|
|
79345
79353
|
|
|
79346
79354
|
|
|
79347
|
-
const __iconNode$
|
|
79355
|
+
const __iconNode$Y = [
|
|
79348
79356
|
[
|
|
79349
79357
|
"path",
|
|
79350
79358
|
{
|
|
@@ -79353,7 +79361,7 @@ const __iconNode$X = [
|
|
|
79353
79361
|
}
|
|
79354
79362
|
]
|
|
79355
79363
|
];
|
|
79356
|
-
const Play = createLucideIcon("play", __iconNode$
|
|
79364
|
+
const Play = createLucideIcon("play", __iconNode$Y);
|
|
79357
79365
|
|
|
79358
79366
|
/**
|
|
79359
79367
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79363,11 +79371,11 @@ const Play = createLucideIcon("play", __iconNode$X);
|
|
|
79363
79371
|
*/
|
|
79364
79372
|
|
|
79365
79373
|
|
|
79366
|
-
const __iconNode$
|
|
79374
|
+
const __iconNode$X = [
|
|
79367
79375
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
79368
79376
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
79369
79377
|
];
|
|
79370
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
79378
|
+
const Plus = createLucideIcon("plus", __iconNode$X);
|
|
79371
79379
|
|
|
79372
79380
|
/**
|
|
79373
79381
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79377,12 +79385,12 @@ const Plus = createLucideIcon("plus", __iconNode$W);
|
|
|
79377
79385
|
*/
|
|
79378
79386
|
|
|
79379
79387
|
|
|
79380
|
-
const __iconNode$
|
|
79388
|
+
const __iconNode$W = [
|
|
79381
79389
|
["path", { d: "M2 3h20", key: "91anmk" }],
|
|
79382
79390
|
["path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3", key: "2k9sn8" }],
|
|
79383
79391
|
["path", { d: "m7 21 5-5 5 5", key: "bip4we" }]
|
|
79384
79392
|
];
|
|
79385
|
-
const Presentation = createLucideIcon("presentation", __iconNode$
|
|
79393
|
+
const Presentation = createLucideIcon("presentation", __iconNode$W);
|
|
79386
79394
|
|
|
79387
79395
|
/**
|
|
79388
79396
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79392,7 +79400,7 @@ const Presentation = createLucideIcon("presentation", __iconNode$V);
|
|
|
79392
79400
|
*/
|
|
79393
79401
|
|
|
79394
79402
|
|
|
79395
|
-
const __iconNode$
|
|
79403
|
+
const __iconNode$V = [
|
|
79396
79404
|
[
|
|
79397
79405
|
"path",
|
|
79398
79406
|
{
|
|
@@ -79401,7 +79409,7 @@ const __iconNode$U = [
|
|
|
79401
79409
|
}
|
|
79402
79410
|
]
|
|
79403
79411
|
];
|
|
79404
|
-
const Puzzle = createLucideIcon("puzzle", __iconNode$
|
|
79412
|
+
const Puzzle = createLucideIcon("puzzle", __iconNode$V);
|
|
79405
79413
|
|
|
79406
79414
|
/**
|
|
79407
79415
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79411,7 +79419,7 @@ const Puzzle = createLucideIcon("puzzle", __iconNode$U);
|
|
|
79411
79419
|
*/
|
|
79412
79420
|
|
|
79413
79421
|
|
|
79414
|
-
const __iconNode$
|
|
79422
|
+
const __iconNode$U = [
|
|
79415
79423
|
[
|
|
79416
79424
|
"path",
|
|
79417
79425
|
{
|
|
@@ -79427,7 +79435,7 @@ const __iconNode$T = [
|
|
|
79427
79435
|
}
|
|
79428
79436
|
]
|
|
79429
79437
|
];
|
|
79430
|
-
const Quote = createLucideIcon("quote", __iconNode$
|
|
79438
|
+
const Quote = createLucideIcon("quote", __iconNode$U);
|
|
79431
79439
|
|
|
79432
79440
|
/**
|
|
79433
79441
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79437,14 +79445,14 @@ const Quote = createLucideIcon("quote", __iconNode$T);
|
|
|
79437
79445
|
*/
|
|
79438
79446
|
|
|
79439
79447
|
|
|
79440
|
-
const __iconNode$
|
|
79448
|
+
const __iconNode$T = [
|
|
79441
79449
|
["path", { d: "M16.247 7.761a6 6 0 0 1 0 8.478", key: "1fwjs5" }],
|
|
79442
79450
|
["path", { d: "M19.075 4.933a10 10 0 0 1 0 14.134", key: "ehdyv1" }],
|
|
79443
79451
|
["path", { d: "M4.925 19.067a10 10 0 0 1 0-14.134", key: "1q22gi" }],
|
|
79444
79452
|
["path", { d: "M7.753 16.239a6 6 0 0 1 0-8.478", key: "r2q7qm" }],
|
|
79445
79453
|
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }]
|
|
79446
79454
|
];
|
|
79447
|
-
const Radio$1 = createLucideIcon("radio", __iconNode$
|
|
79455
|
+
const Radio$1 = createLucideIcon("radio", __iconNode$T);
|
|
79448
79456
|
|
|
79449
79457
|
/**
|
|
79450
79458
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79454,13 +79462,13 @@ const Radio$1 = createLucideIcon("radio", __iconNode$S);
|
|
|
79454
79462
|
*/
|
|
79455
79463
|
|
|
79456
79464
|
|
|
79457
|
-
const __iconNode$
|
|
79465
|
+
const __iconNode$S = [
|
|
79458
79466
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
79459
79467
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
79460
79468
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
79461
79469
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
79462
79470
|
];
|
|
79463
|
-
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$
|
|
79471
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$S);
|
|
79464
79472
|
|
|
79465
79473
|
/**
|
|
79466
79474
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79470,13 +79478,13 @@ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$R);
|
|
|
79470
79478
|
*/
|
|
79471
79479
|
|
|
79472
79480
|
|
|
79473
|
-
const __iconNode$
|
|
79481
|
+
const __iconNode$R = [
|
|
79474
79482
|
["path", { d: "m17 2 4 4-4 4", key: "nntrym" }],
|
|
79475
79483
|
["path", { d: "M3 11v-1a4 4 0 0 1 4-4h14", key: "84bu3i" }],
|
|
79476
79484
|
["path", { d: "m7 22-4-4 4-4", key: "1wqhfi" }],
|
|
79477
79485
|
["path", { d: "M21 13v1a4 4 0 0 1-4 4H3", key: "1rx37r" }]
|
|
79478
79486
|
];
|
|
79479
|
-
const Repeat = createLucideIcon("repeat", __iconNode$
|
|
79487
|
+
const Repeat = createLucideIcon("repeat", __iconNode$R);
|
|
79480
79488
|
|
|
79481
79489
|
/**
|
|
79482
79490
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79486,11 +79494,11 @@ const Repeat = createLucideIcon("repeat", __iconNode$Q);
|
|
|
79486
79494
|
*/
|
|
79487
79495
|
|
|
79488
79496
|
|
|
79489
|
-
const __iconNode$
|
|
79497
|
+
const __iconNode$Q = [
|
|
79490
79498
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
79491
79499
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }]
|
|
79492
79500
|
];
|
|
79493
|
-
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$
|
|
79501
|
+
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$Q);
|
|
79494
79502
|
|
|
79495
79503
|
/**
|
|
79496
79504
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79500,11 +79508,11 @@ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$P);
|
|
|
79500
79508
|
*/
|
|
79501
79509
|
|
|
79502
79510
|
|
|
79503
|
-
const __iconNode$
|
|
79511
|
+
const __iconNode$P = [
|
|
79504
79512
|
["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
|
|
79505
79513
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }]
|
|
79506
79514
|
];
|
|
79507
|
-
const RotateCw = createLucideIcon("rotate-cw", __iconNode$
|
|
79515
|
+
const RotateCw = createLucideIcon("rotate-cw", __iconNode$P);
|
|
79508
79516
|
|
|
79509
79517
|
/**
|
|
79510
79518
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79514,12 +79522,12 @@ const RotateCw = createLucideIcon("rotate-cw", __iconNode$O);
|
|
|
79514
79522
|
*/
|
|
79515
79523
|
|
|
79516
79524
|
|
|
79517
|
-
const __iconNode$
|
|
79525
|
+
const __iconNode$O = [
|
|
79518
79526
|
["circle", { cx: "6", cy: "19", r: "3", key: "1kj8tv" }],
|
|
79519
79527
|
["path", { d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15", key: "1d8sl" }],
|
|
79520
79528
|
["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }]
|
|
79521
79529
|
];
|
|
79522
|
-
const Route = createLucideIcon("route", __iconNode$
|
|
79530
|
+
const Route = createLucideIcon("route", __iconNode$O);
|
|
79523
79531
|
|
|
79524
79532
|
/**
|
|
79525
79533
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79529,7 +79537,7 @@ const Route = createLucideIcon("route", __iconNode$N);
|
|
|
79529
79537
|
*/
|
|
79530
79538
|
|
|
79531
79539
|
|
|
79532
|
-
const __iconNode$
|
|
79540
|
+
const __iconNode$N = [
|
|
79533
79541
|
[
|
|
79534
79542
|
"path",
|
|
79535
79543
|
{
|
|
@@ -79540,7 +79548,7 @@ const __iconNode$M = [
|
|
|
79540
79548
|
["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
|
|
79541
79549
|
["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
|
|
79542
79550
|
];
|
|
79543
|
-
const Save = createLucideIcon("save", __iconNode$
|
|
79551
|
+
const Save = createLucideIcon("save", __iconNode$N);
|
|
79544
79552
|
|
|
79545
79553
|
/**
|
|
79546
79554
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79550,7 +79558,7 @@ const Save = createLucideIcon("save", __iconNode$M);
|
|
|
79550
79558
|
*/
|
|
79551
79559
|
|
|
79552
79560
|
|
|
79553
|
-
const __iconNode$
|
|
79561
|
+
const __iconNode$M = [
|
|
79554
79562
|
["path", { d: "M14 22v-4a2 2 0 1 0-4 0v4", key: "hhkicm" }],
|
|
79555
79563
|
[
|
|
79556
79564
|
"path",
|
|
@@ -79564,7 +79572,7 @@ const __iconNode$L = [
|
|
|
79564
79572
|
["path", { d: "M6 5v17", key: "1xfsm0" }],
|
|
79565
79573
|
["circle", { cx: "12", cy: "9", r: "2", key: "1092wv" }]
|
|
79566
79574
|
];
|
|
79567
|
-
const School = createLucideIcon("school", __iconNode$
|
|
79575
|
+
const School = createLucideIcon("school", __iconNode$M);
|
|
79568
79576
|
|
|
79569
79577
|
/**
|
|
79570
79578
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79574,14 +79582,14 @@ const School = createLucideIcon("school", __iconNode$L);
|
|
|
79574
79582
|
*/
|
|
79575
79583
|
|
|
79576
79584
|
|
|
79577
|
-
const __iconNode$
|
|
79585
|
+
const __iconNode$L = [
|
|
79578
79586
|
["path", { d: "M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3", key: "i8wdob" }],
|
|
79579
79587
|
["path", { d: "M8 21h8", key: "1ev6f3" }],
|
|
79580
79588
|
["path", { d: "M12 17v4", key: "1riwvh" }],
|
|
79581
79589
|
["path", { d: "m17 8 5-5", key: "fqif7o" }],
|
|
79582
79590
|
["path", { d: "M17 3h5v5", key: "1o3tu8" }]
|
|
79583
79591
|
];
|
|
79584
|
-
const ScreenShare = createLucideIcon("screen-share", __iconNode$
|
|
79592
|
+
const ScreenShare = createLucideIcon("screen-share", __iconNode$L);
|
|
79585
79593
|
|
|
79586
79594
|
/**
|
|
79587
79595
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79591,7 +79599,7 @@ const ScreenShare = createLucideIcon("screen-share", __iconNode$K);
|
|
|
79591
79599
|
*/
|
|
79592
79600
|
|
|
79593
79601
|
|
|
79594
|
-
const __iconNode$
|
|
79602
|
+
const __iconNode$K = [
|
|
79595
79603
|
["path", { d: "M15 12h-5", key: "r7krc0" }],
|
|
79596
79604
|
["path", { d: "M15 8h-5", key: "1khuty" }],
|
|
79597
79605
|
["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
|
|
@@ -79603,7 +79611,7 @@ const __iconNode$J = [
|
|
|
79603
79611
|
}
|
|
79604
79612
|
]
|
|
79605
79613
|
];
|
|
79606
|
-
const ScrollText = createLucideIcon("scroll-text", __iconNode$
|
|
79614
|
+
const ScrollText = createLucideIcon("scroll-text", __iconNode$K);
|
|
79607
79615
|
|
|
79608
79616
|
/**
|
|
79609
79617
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79613,11 +79621,11 @@ const ScrollText = createLucideIcon("scroll-text", __iconNode$J);
|
|
|
79613
79621
|
*/
|
|
79614
79622
|
|
|
79615
79623
|
|
|
79616
|
-
const __iconNode$
|
|
79624
|
+
const __iconNode$J = [
|
|
79617
79625
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
79618
79626
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
79619
79627
|
];
|
|
79620
|
-
const Search = createLucideIcon("search", __iconNode$
|
|
79628
|
+
const Search = createLucideIcon("search", __iconNode$J);
|
|
79621
79629
|
|
|
79622
79630
|
/**
|
|
79623
79631
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79627,7 +79635,7 @@ const Search = createLucideIcon("search", __iconNode$I);
|
|
|
79627
79635
|
*/
|
|
79628
79636
|
|
|
79629
79637
|
|
|
79630
|
-
const __iconNode$
|
|
79638
|
+
const __iconNode$I = [
|
|
79631
79639
|
[
|
|
79632
79640
|
"path",
|
|
79633
79641
|
{
|
|
@@ -79637,7 +79645,7 @@ const __iconNode$H = [
|
|
|
79637
79645
|
],
|
|
79638
79646
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
79639
79647
|
];
|
|
79640
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
79648
|
+
const Send = createLucideIcon("send", __iconNode$I);
|
|
79641
79649
|
|
|
79642
79650
|
/**
|
|
79643
79651
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79647,13 +79655,13 @@ const Send = createLucideIcon("send", __iconNode$H);
|
|
|
79647
79655
|
*/
|
|
79648
79656
|
|
|
79649
79657
|
|
|
79650
|
-
const __iconNode$
|
|
79658
|
+
const __iconNode$H = [
|
|
79651
79659
|
["rect", { width: "20", height: "8", x: "2", y: "2", rx: "2", ry: "2", key: "ngkwjq" }],
|
|
79652
79660
|
["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", ry: "2", key: "iecqi9" }],
|
|
79653
79661
|
["line", { x1: "6", x2: "6.01", y1: "6", y2: "6", key: "16zg32" }],
|
|
79654
79662
|
["line", { x1: "6", x2: "6.01", y1: "18", y2: "18", key: "nzw8ys" }]
|
|
79655
79663
|
];
|
|
79656
|
-
const Server = createLucideIcon("server", __iconNode$
|
|
79664
|
+
const Server = createLucideIcon("server", __iconNode$H);
|
|
79657
79665
|
|
|
79658
79666
|
/**
|
|
79659
79667
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79663,13 +79671,13 @@ const Server = createLucideIcon("server", __iconNode$G);
|
|
|
79663
79671
|
*/
|
|
79664
79672
|
|
|
79665
79673
|
|
|
79666
|
-
const __iconNode$
|
|
79674
|
+
const __iconNode$G = [
|
|
79667
79675
|
["path", { d: "M14 17H5", key: "gfn3mx" }],
|
|
79668
79676
|
["path", { d: "M19 7h-9", key: "6i9tg" }],
|
|
79669
79677
|
["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }],
|
|
79670
79678
|
["circle", { cx: "7", cy: "7", r: "3", key: "dfmy0x" }]
|
|
79671
79679
|
];
|
|
79672
|
-
const Settings2 = createLucideIcon("settings-2", __iconNode$
|
|
79680
|
+
const Settings2 = createLucideIcon("settings-2", __iconNode$G);
|
|
79673
79681
|
|
|
79674
79682
|
/**
|
|
79675
79683
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79679,7 +79687,7 @@ const Settings2 = createLucideIcon("settings-2", __iconNode$F);
|
|
|
79679
79687
|
*/
|
|
79680
79688
|
|
|
79681
79689
|
|
|
79682
|
-
const __iconNode$
|
|
79690
|
+
const __iconNode$F = [
|
|
79683
79691
|
[
|
|
79684
79692
|
"path",
|
|
79685
79693
|
{
|
|
@@ -79689,7 +79697,7 @@ const __iconNode$E = [
|
|
|
79689
79697
|
],
|
|
79690
79698
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
79691
79699
|
];
|
|
79692
|
-
const Settings = createLucideIcon("settings", __iconNode$
|
|
79700
|
+
const Settings = createLucideIcon("settings", __iconNode$F);
|
|
79693
79701
|
|
|
79694
79702
|
/**
|
|
79695
79703
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79699,14 +79707,14 @@ const Settings = createLucideIcon("settings", __iconNode$E);
|
|
|
79699
79707
|
*/
|
|
79700
79708
|
|
|
79701
79709
|
|
|
79702
|
-
const __iconNode$
|
|
79710
|
+
const __iconNode$E = [
|
|
79703
79711
|
["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
|
|
79704
79712
|
["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
|
|
79705
79713
|
["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
|
|
79706
79714
|
["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
|
|
79707
79715
|
["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
|
|
79708
79716
|
];
|
|
79709
|
-
const Share2 = createLucideIcon("share-2", __iconNode$
|
|
79717
|
+
const Share2 = createLucideIcon("share-2", __iconNode$E);
|
|
79710
79718
|
|
|
79711
79719
|
/**
|
|
79712
79720
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79716,7 +79724,7 @@ const Share2 = createLucideIcon("share-2", __iconNode$D);
|
|
|
79716
79724
|
*/
|
|
79717
79725
|
|
|
79718
79726
|
|
|
79719
|
-
const __iconNode$
|
|
79727
|
+
const __iconNode$D = [
|
|
79720
79728
|
[
|
|
79721
79729
|
"path",
|
|
79722
79730
|
{
|
|
@@ -79727,7 +79735,7 @@ const __iconNode$C = [
|
|
|
79727
79735
|
["path", { d: "M12 8v4", key: "1got3b" }],
|
|
79728
79736
|
["path", { d: "M12 16h.01", key: "1drbdi" }]
|
|
79729
79737
|
];
|
|
79730
|
-
const ShieldAlert = createLucideIcon("shield-alert", __iconNode$
|
|
79738
|
+
const ShieldAlert = createLucideIcon("shield-alert", __iconNode$D);
|
|
79731
79739
|
|
|
79732
79740
|
/**
|
|
79733
79741
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79737,7 +79745,7 @@ const ShieldAlert = createLucideIcon("shield-alert", __iconNode$C);
|
|
|
79737
79745
|
*/
|
|
79738
79746
|
|
|
79739
79747
|
|
|
79740
|
-
const __iconNode$
|
|
79748
|
+
const __iconNode$C = [
|
|
79741
79749
|
[
|
|
79742
79750
|
"path",
|
|
79743
79751
|
{
|
|
@@ -79747,7 +79755,7 @@ const __iconNode$B = [
|
|
|
79747
79755
|
],
|
|
79748
79756
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
79749
79757
|
];
|
|
79750
|
-
const ShieldCheck = createLucideIcon("shield-check", __iconNode$
|
|
79758
|
+
const ShieldCheck = createLucideIcon("shield-check", __iconNode$C);
|
|
79751
79759
|
|
|
79752
79760
|
/**
|
|
79753
79761
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79757,7 +79765,7 @@ const ShieldCheck = createLucideIcon("shield-check", __iconNode$B);
|
|
|
79757
79765
|
*/
|
|
79758
79766
|
|
|
79759
79767
|
|
|
79760
|
-
const __iconNode$
|
|
79768
|
+
const __iconNode$B = [
|
|
79761
79769
|
[
|
|
79762
79770
|
"path",
|
|
79763
79771
|
{
|
|
@@ -79766,7 +79774,7 @@ const __iconNode$A = [
|
|
|
79766
79774
|
}
|
|
79767
79775
|
]
|
|
79768
79776
|
];
|
|
79769
|
-
const Shield = createLucideIcon("shield", __iconNode$
|
|
79777
|
+
const Shield = createLucideIcon("shield", __iconNode$B);
|
|
79770
79778
|
|
|
79771
79779
|
/**
|
|
79772
79780
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79776,7 +79784,7 @@ const Shield = createLucideIcon("shield", __iconNode$A);
|
|
|
79776
79784
|
*/
|
|
79777
79785
|
|
|
79778
79786
|
|
|
79779
|
-
const __iconNode$
|
|
79787
|
+
const __iconNode$A = [
|
|
79780
79788
|
["path", { d: "M16 10a4 4 0 0 1-8 0", key: "1ltviw" }],
|
|
79781
79789
|
["path", { d: "M3.103 6.034h17.794", key: "awc11p" }],
|
|
79782
79790
|
[
|
|
@@ -79787,7 +79795,7 @@ const __iconNode$z = [
|
|
|
79787
79795
|
}
|
|
79788
79796
|
]
|
|
79789
79797
|
];
|
|
79790
|
-
const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$
|
|
79798
|
+
const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$A);
|
|
79791
79799
|
|
|
79792
79800
|
/**
|
|
79793
79801
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79797,14 +79805,14 @@ const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$z);
|
|
|
79797
79805
|
*/
|
|
79798
79806
|
|
|
79799
79807
|
|
|
79800
|
-
const __iconNode$
|
|
79808
|
+
const __iconNode$z = [
|
|
79801
79809
|
["path", { d: "m18 14 4 4-4 4", key: "10pe0f" }],
|
|
79802
79810
|
["path", { d: "m18 2 4 4-4 4", key: "pucp1d" }],
|
|
79803
79811
|
["path", { d: "M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22", key: "1ailkh" }],
|
|
79804
79812
|
["path", { d: "M2 6h1.972a4 4 0 0 1 3.6 2.2", key: "km57vx" }],
|
|
79805
79813
|
["path", { d: "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45", key: "os18l9" }]
|
|
79806
79814
|
];
|
|
79807
|
-
const Shuffle = createLucideIcon("shuffle", __iconNode$
|
|
79815
|
+
const Shuffle = createLucideIcon("shuffle", __iconNode$z);
|
|
79808
79816
|
|
|
79809
79817
|
/**
|
|
79810
79818
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79814,7 +79822,7 @@ const Shuffle = createLucideIcon("shuffle", __iconNode$y);
|
|
|
79814
79822
|
*/
|
|
79815
79823
|
|
|
79816
79824
|
|
|
79817
|
-
const __iconNode$
|
|
79825
|
+
const __iconNode$y = [
|
|
79818
79826
|
["line", { x1: "21", x2: "14", y1: "4", y2: "4", key: "obuewd" }],
|
|
79819
79827
|
["line", { x1: "10", x2: "3", y1: "4", y2: "4", key: "1q6298" }],
|
|
79820
79828
|
["line", { x1: "21", x2: "12", y1: "12", y2: "12", key: "1iu8h1" }],
|
|
@@ -79825,7 +79833,7 @@ const __iconNode$x = [
|
|
|
79825
79833
|
["line", { x1: "8", x2: "8", y1: "10", y2: "14", key: "1i6ji0" }],
|
|
79826
79834
|
["line", { x1: "16", x2: "16", y1: "18", y2: "22", key: "1lctlv" }]
|
|
79827
79835
|
];
|
|
79828
|
-
const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$
|
|
79836
|
+
const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$y);
|
|
79829
79837
|
|
|
79830
79838
|
/**
|
|
79831
79839
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79835,11 +79843,11 @@ const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$x);
|
|
|
79835
79843
|
*/
|
|
79836
79844
|
|
|
79837
79845
|
|
|
79838
|
-
const __iconNode$
|
|
79846
|
+
const __iconNode$x = [
|
|
79839
79847
|
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
79840
79848
|
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
79841
79849
|
];
|
|
79842
|
-
const Smartphone = createLucideIcon("smartphone", __iconNode$
|
|
79850
|
+
const Smartphone = createLucideIcon("smartphone", __iconNode$x);
|
|
79843
79851
|
|
|
79844
79852
|
/**
|
|
79845
79853
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79849,7 +79857,7 @@ const Smartphone = createLucideIcon("smartphone", __iconNode$w);
|
|
|
79849
79857
|
*/
|
|
79850
79858
|
|
|
79851
79859
|
|
|
79852
|
-
const __iconNode$
|
|
79860
|
+
const __iconNode$w = [
|
|
79853
79861
|
[
|
|
79854
79862
|
"path",
|
|
79855
79863
|
{
|
|
@@ -79861,7 +79869,7 @@ const __iconNode$v = [
|
|
|
79861
79869
|
["path", { d: "M22 4h-4", key: "gwowj6" }],
|
|
79862
79870
|
["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
|
|
79863
79871
|
];
|
|
79864
|
-
const Sparkles = createLucideIcon("sparkles", __iconNode$
|
|
79872
|
+
const Sparkles = createLucideIcon("sparkles", __iconNode$w);
|
|
79865
79873
|
|
|
79866
79874
|
/**
|
|
79867
79875
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79871,7 +79879,7 @@ const Sparkles = createLucideIcon("sparkles", __iconNode$v);
|
|
|
79871
79879
|
*/
|
|
79872
79880
|
|
|
79873
79881
|
|
|
79874
|
-
const __iconNode$
|
|
79882
|
+
const __iconNode$v = [
|
|
79875
79883
|
["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
|
|
79876
79884
|
[
|
|
79877
79885
|
"path",
|
|
@@ -79881,7 +79889,7 @@ const __iconNode$u = [
|
|
|
79881
79889
|
}
|
|
79882
79890
|
]
|
|
79883
79891
|
];
|
|
79884
|
-
const SquarePen = createLucideIcon("square-pen", __iconNode$
|
|
79892
|
+
const SquarePen = createLucideIcon("square-pen", __iconNode$v);
|
|
79885
79893
|
|
|
79886
79894
|
/**
|
|
79887
79895
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79891,10 +79899,10 @@ const SquarePen = createLucideIcon("square-pen", __iconNode$u);
|
|
|
79891
79899
|
*/
|
|
79892
79900
|
|
|
79893
79901
|
|
|
79894
|
-
const __iconNode$
|
|
79902
|
+
const __iconNode$u = [
|
|
79895
79903
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
|
|
79896
79904
|
];
|
|
79897
|
-
const Square$1 = createLucideIcon("square", __iconNode$
|
|
79905
|
+
const Square$1 = createLucideIcon("square", __iconNode$u);
|
|
79898
79906
|
|
|
79899
79907
|
/**
|
|
79900
79908
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79904,7 +79912,7 @@ const Square$1 = createLucideIcon("square", __iconNode$t);
|
|
|
79904
79912
|
*/
|
|
79905
79913
|
|
|
79906
79914
|
|
|
79907
|
-
const __iconNode$
|
|
79915
|
+
const __iconNode$t = [
|
|
79908
79916
|
[
|
|
79909
79917
|
"path",
|
|
79910
79918
|
{
|
|
@@ -79913,7 +79921,7 @@ const __iconNode$s = [
|
|
|
79913
79921
|
}
|
|
79914
79922
|
]
|
|
79915
79923
|
];
|
|
79916
|
-
const Star$1 = createLucideIcon("star", __iconNode$
|
|
79924
|
+
const Star$1 = createLucideIcon("star", __iconNode$t);
|
|
79917
79925
|
|
|
79918
79926
|
/**
|
|
79919
79927
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79923,14 +79931,14 @@ const Star$1 = createLucideIcon("star", __iconNode$s);
|
|
|
79923
79931
|
*/
|
|
79924
79932
|
|
|
79925
79933
|
|
|
79926
|
-
const __iconNode$
|
|
79934
|
+
const __iconNode$s = [
|
|
79927
79935
|
["path", { d: "M11 2v2", key: "1539x4" }],
|
|
79928
79936
|
["path", { d: "M5 2v2", key: "1yf1q8" }],
|
|
79929
79937
|
["path", { d: "M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1", key: "rb5t3r" }],
|
|
79930
79938
|
["path", { d: "M8 15a6 6 0 0 0 12 0v-3", key: "x18d4x" }],
|
|
79931
79939
|
["circle", { cx: "20", cy: "10", r: "2", key: "ts1r5v" }]
|
|
79932
79940
|
];
|
|
79933
|
-
const Stethoscope = createLucideIcon("stethoscope", __iconNode$
|
|
79941
|
+
const Stethoscope = createLucideIcon("stethoscope", __iconNode$s);
|
|
79934
79942
|
|
|
79935
79943
|
/**
|
|
79936
79944
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79940,11 +79948,11 @@ const Stethoscope = createLucideIcon("stethoscope", __iconNode$r);
|
|
|
79940
79948
|
*/
|
|
79941
79949
|
|
|
79942
79950
|
|
|
79943
|
-
const __iconNode$
|
|
79951
|
+
const __iconNode$r = [
|
|
79944
79952
|
["path", { d: "M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z", key: "qazsjp" }],
|
|
79945
79953
|
["path", { d: "M15 3v4a2 2 0 0 0 2 2h4", key: "40519r" }]
|
|
79946
79954
|
];
|
|
79947
|
-
const StickyNote = createLucideIcon("sticky-note", __iconNode$
|
|
79955
|
+
const StickyNote = createLucideIcon("sticky-note", __iconNode$r);
|
|
79948
79956
|
|
|
79949
79957
|
/**
|
|
79950
79958
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79954,7 +79962,7 @@ const StickyNote = createLucideIcon("sticky-note", __iconNode$q);
|
|
|
79954
79962
|
*/
|
|
79955
79963
|
|
|
79956
79964
|
|
|
79957
|
-
const __iconNode$
|
|
79965
|
+
const __iconNode$q = [
|
|
79958
79966
|
["path", { d: "m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7", key: "ztvudi" }],
|
|
79959
79967
|
["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }],
|
|
79960
79968
|
["path", { d: "M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4", key: "2ebpfo" }],
|
|
@@ -79967,7 +79975,7 @@ const __iconNode$p = [
|
|
|
79967
79975
|
}
|
|
79968
79976
|
]
|
|
79969
79977
|
];
|
|
79970
|
-
const Store$1 = createLucideIcon("store", __iconNode$
|
|
79978
|
+
const Store$1 = createLucideIcon("store", __iconNode$q);
|
|
79971
79979
|
|
|
79972
79980
|
/**
|
|
79973
79981
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -79977,7 +79985,7 @@ const Store$1 = createLucideIcon("store", __iconNode$p);
|
|
|
79977
79985
|
*/
|
|
79978
79986
|
|
|
79979
79987
|
|
|
79980
|
-
const __iconNode$
|
|
79988
|
+
const __iconNode$p = [
|
|
79981
79989
|
[
|
|
79982
79990
|
"path",
|
|
79983
79991
|
{
|
|
@@ -79987,7 +79995,28 @@ const __iconNode$o = [
|
|
|
79987
79995
|
],
|
|
79988
79996
|
["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]
|
|
79989
79997
|
];
|
|
79990
|
-
const Tag = createLucideIcon("tag", __iconNode$
|
|
79998
|
+
const Tag = createLucideIcon("tag", __iconNode$p);
|
|
79999
|
+
|
|
80000
|
+
/**
|
|
80001
|
+
* @license lucide-react v0.528.0 - ISC
|
|
80002
|
+
*
|
|
80003
|
+
* This source code is licensed under the ISC license.
|
|
80004
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
80005
|
+
*/
|
|
80006
|
+
|
|
80007
|
+
|
|
80008
|
+
const __iconNode$o = [
|
|
80009
|
+
["path", { d: "m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19", key: "1cbfv1" }],
|
|
80010
|
+
[
|
|
80011
|
+
"path",
|
|
80012
|
+
{
|
|
80013
|
+
d: "M9.586 5.586A2 2 0 0 0 8.172 5H3a1 1 0 0 0-1 1v5.172a2 2 0 0 0 .586 1.414L8.29 18.29a2.426 2.426 0 0 0 3.42 0l3.58-3.58a2.426 2.426 0 0 0 0-3.42z",
|
|
80014
|
+
key: "135mg7"
|
|
80015
|
+
}
|
|
80016
|
+
],
|
|
80017
|
+
["circle", { cx: "6.5", cy: "9.5", r: ".5", fill: "currentColor", key: "5pm5xn" }]
|
|
80018
|
+
];
|
|
80019
|
+
const Tags = createLucideIcon("tags", __iconNode$o);
|
|
79991
80020
|
|
|
79992
80021
|
/**
|
|
79993
80022
|
* @license lucide-react v0.528.0 - ISC
|
|
@@ -143948,7 +143977,7 @@ function DetailRow$1({ label, children }) {
|
|
|
143948
143977
|
return (jsxs("div", { className: "flex items-center justify-between gap-4 py-2", children: [jsx("span", { className: "text-sm text-gray-500", children: label }), jsx("span", { className: "text-sm font-medium text-gray-900 text-right", children: children })] }));
|
|
143949
143978
|
}
|
|
143950
143979
|
|
|
143951
|
-
const PAGE_SIZE$
|
|
143980
|
+
const PAGE_SIZE$a = 8;
|
|
143952
143981
|
const CONTENT_TYPES = [
|
|
143953
143982
|
{ value: 'courses', labelKey: 'gradebookGradebookTab.typeCourses', icon: GraduationCap },
|
|
143954
143983
|
{ value: 'programs', labelKey: 'gradebookGradebookTab.typePrograms', icon: Layers },
|
|
@@ -143979,14 +144008,14 @@ function useGradebookData(type, org, username, page, search) {
|
|
|
143979
144008
|
username,
|
|
143980
144009
|
query: {
|
|
143981
144010
|
page,
|
|
143982
|
-
page_size: PAGE_SIZE$
|
|
144011
|
+
page_size: PAGE_SIZE$a,
|
|
143983
144012
|
platform_key: org,
|
|
143984
144013
|
...(trimmed ? { search: trimmed } : {}),
|
|
143985
144014
|
},
|
|
143986
144015
|
}, { skip: type !== 'courses', refetchOnMountOrArgChange: true });
|
|
143987
144016
|
const programsQ = useGetUserEnrolledProgramsQuery([{ username, platformKey: org }], { skip: type !== 'programs' });
|
|
143988
144017
|
const pathwaysQ = useGetUserCatalogPathwaysQuery({ username, platform_key: org }, { skip: type !== 'pathways' });
|
|
143989
|
-
const credentialsQ = useGetUsersAsAssertionsQuery({ platformKey: org, userId: username, page, pageSize: PAGE_SIZE$
|
|
144018
|
+
const credentialsQ = useGetUsersAsAssertionsQuery({ platformKey: org, userId: username, page, pageSize: PAGE_SIZE$a }, { skip: type !== 'credentials', refetchOnMountOrArgChange: true });
|
|
143990
144019
|
const earnedQ = useGetUserEarnedSkillsQuery([{ org, userId: username }], { skip: type !== 'skills' });
|
|
143991
144020
|
const reportedQ = useGetUserReportedSkillsQuery([{ username }], { skip: type !== 'skills' });
|
|
143992
144021
|
const desiredQ = useGetUserDesiredSkillsQuery([{ username }], { skip: type !== 'skills' });
|
|
@@ -143996,12 +144025,12 @@ function useGradebookData(type, org, username, page, search) {
|
|
|
143996
144025
|
const filtered = trimmed
|
|
143997
144026
|
? rows.filter((row) => row.name.toLowerCase().includes(trimmed.toLowerCase()))
|
|
143998
144027
|
: rows;
|
|
143999
|
-
const start = (page - 1) * PAGE_SIZE$
|
|
144028
|
+
const start = (page - 1) * PAGE_SIZE$a;
|
|
144000
144029
|
return {
|
|
144001
|
-
rows: filtered.slice(start, start + PAGE_SIZE$
|
|
144030
|
+
rows: filtered.slice(start, start + PAGE_SIZE$a),
|
|
144002
144031
|
total: filtered.length,
|
|
144003
144032
|
hasPrev: page > 1,
|
|
144004
|
-
hasNext: start + PAGE_SIZE$
|
|
144033
|
+
hasNext: start + PAGE_SIZE$a < filtered.length,
|
|
144005
144034
|
};
|
|
144006
144035
|
};
|
|
144007
144036
|
switch (type) {
|
|
@@ -144058,7 +144087,7 @@ function useGradebookData(type, org, username, page, search) {
|
|
|
144058
144087
|
rows,
|
|
144059
144088
|
total,
|
|
144060
144089
|
hasPrev: page > 1,
|
|
144061
|
-
hasNext: page * PAGE_SIZE$
|
|
144090
|
+
hasNext: page * PAGE_SIZE$a < total,
|
|
144062
144091
|
isLoading: credentialsQ.isLoading,
|
|
144063
144092
|
isFetching: credentialsQ.isFetching,
|
|
144064
144093
|
isError: credentialsQ.isError,
|
|
@@ -145383,13 +145412,18 @@ function DropdownMenuSubContent({ className, ...props }) {
|
|
|
145383
145412
|
return (jsx(SubContent2, { "data-slot": "dropdown-menu-sub-content", className: cn('bg-popover text-popover-foreground 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg', className), ...props }));
|
|
145384
145413
|
}
|
|
145385
145414
|
|
|
145386
|
-
function DeleteMemoryModal({ open, onOpenChange, onConfirm, onCancel, isDeleting, }) {
|
|
145415
|
+
function DeleteMemoryModal$1({ open, onOpenChange, onConfirm, onCancel, isDeleting, }) {
|
|
145387
145416
|
const t = useT();
|
|
145388
145417
|
return (jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxs(DialogContent, { className: "mx-4 max-w-md sm:mx-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { children: t('memoryTabDeleteMemoryModal.title') }) }), jsx("p", { className: "text-muted-foreground text-sm", children: t('memoryTabDeleteMemoryModal.confirmMessage') }), jsxs("div", { className: "mt-4 flex justify-end gap-2", children: [jsx(Button$1, { variant: "outline", onClick: onCancel, children: t('memoryTabDeleteMemoryModal.cancel') }), jsx(Button$1, { className: "ibl-button-primary", onClick: onConfirm, disabled: isDeleting, children: isDeleting
|
|
145389
145418
|
? t('memoryTabDeleteMemoryModal.deleting')
|
|
145390
145419
|
: t('memoryTabDeleteMemoryModal.delete') })] })] }) }));
|
|
145391
145420
|
}
|
|
145392
145421
|
|
|
145422
|
+
var deleteMemoryModal = /*#__PURE__*/Object.freeze({
|
|
145423
|
+
__proto__: null,
|
|
145424
|
+
DeleteMemoryModal: DeleteMemoryModal$1
|
|
145425
|
+
});
|
|
145426
|
+
|
|
145393
145427
|
const Pagination = ({ className, ...props }) => {
|
|
145394
145428
|
const t = useT();
|
|
145395
145429
|
return (jsx("nav", { role: "navigation", "aria-label": t('uiPagination.paginationNavLabel'), className: cn('mx-auto flex w-full justify-center', className), ...props }));
|
|
@@ -145497,7 +145531,7 @@ function MemoriesList({ memories, isLoading, emptyText, deletingId, onEdit, onDe
|
|
|
145497
145531
|
}
|
|
145498
145532
|
return (jsxs(Fragment$1, { children: [memories.length ? (jsx("div", { className: "space-y-3", "data-testid": "memories-list", children: memories.map((memory) => (jsxs("div", { "data-testid": "memory-row", className: "group flex items-start gap-3 rounded-lg border px-4 py-3", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx("div", { className: "flex-shrink-0 mt-0.5", children: memory.is_auto_generated ? (jsx(Bot, { className: "h-4 w-4 text-blue-500", "aria-label": t('memoryMemoryTab.autoGeneratedMemoryAriaLabel') })) : (jsx(User, { className: "h-4 w-4 text-gray-400", "aria-label": t('memoryMemoryTab.manuallyAddedMemoryAriaLabel') })) }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("p", { className: "text-sm text-gray-800 dark:text-gray-200", children: memory.content }), jsxs("p", { className: "text-xs text-gray-400 mt-1", children: [new Date(memory.created_at).toLocaleDateString(), memory.is_auto_generated && (jsx("span", { className: "ml-2 inline-flex items-center rounded-full bg-blue-50 px-1.5 py-0.5 text-[10px] font-medium text-blue-600", children: t('memoryMemoryTab.autoBadge') }))] })] }), deletingId === memory.id ? (jsx("div", { className: "mt-1 h-4 w-4 flex-shrink-0 animate-spin rounded-full border-2 border-gray-500 border-t-transparent" })) : (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsx(Button$1, { variant: "ghost", size: "sm", className: "h-6 w-6 flex-shrink-0 p-0 text-gray-600 hover:text-gray-900", "aria-label": t('memoryMemoryTab.actionsMenuAriaLabel', {
|
|
145499
145533
|
excerpt: memory.content.substring(0, 30),
|
|
145500
|
-
}), children: jsx(Ellipsis, { className: "h-4 w-4" }) }) }), jsxs(DropdownMenuContent, { align: "end", children: [jsxs(DropdownMenuItem, { onClick: () => onEdit(memory), children: [jsx(Pencil, { className: "mr-2 h-4 w-4" }), t('memoryMemoryTab.editAction')] }), jsxs(DropdownMenuItem, { className: "text-red-600 focus:text-red-700", onClick: () => setPendingDelete(memory), children: [jsx(Trash2, { className: "mr-2 h-4 w-4" }), t('memoryMemoryTab.deleteAction')] })] })] }))] }, `${'mentor_id' in memory ? memory.mentor_id : 'global'}-${memory.id}`))) })) : (jsx("div", { "data-testid": "memories-list-empty", className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: emptyText }) })), totalPages > 1 && (jsx(IblPagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: onPageChange, disabled: isLoading })), jsx(DeleteMemoryModal, { open: !!pendingDelete, onOpenChange: (open) => !open && setPendingDelete(null), onConfirm: confirmDelete, onCancel: () => setPendingDelete(null), isDeleting: !!pendingDelete && deletingId === pendingDelete.id })] }));
|
|
145534
|
+
}), children: jsx(Ellipsis, { className: "h-4 w-4" }) }) }), jsxs(DropdownMenuContent, { align: "end", children: [jsxs(DropdownMenuItem, { onClick: () => onEdit(memory), children: [jsx(Pencil, { className: "mr-2 h-4 w-4" }), t('memoryMemoryTab.editAction')] }), jsxs(DropdownMenuItem, { className: "text-red-600 focus:text-red-700", onClick: () => setPendingDelete(memory), children: [jsx(Trash2, { className: "mr-2 h-4 w-4" }), t('memoryMemoryTab.deleteAction')] })] })] }))] }, `${'mentor_id' in memory ? memory.mentor_id : 'global'}-${memory.id}`))) })) : (jsx("div", { "data-testid": "memories-list-empty", className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: emptyText }) })), totalPages > 1 && (jsx(IblPagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: onPageChange, disabled: isLoading })), jsx(DeleteMemoryModal$1, { open: !!pendingDelete, onOpenChange: (open) => !open && setPendingDelete(null), onConfirm: confirmDelete, onCancel: () => setPendingDelete(null), isDeleting: !!pendingDelete && deletingId === pendingDelete.id })] }));
|
|
145501
145535
|
}
|
|
145502
145536
|
|
|
145503
145537
|
const MEMORIES_PAGE_SIZE = 25;
|
|
@@ -184502,12 +184536,12 @@ function ReportHistory({ org, username, onDownload }) {
|
|
|
184502
184536
|
setDownloadingId(null);
|
|
184503
184537
|
}
|
|
184504
184538
|
};
|
|
184505
|
-
return (jsx("div", { className: "overflow-hidden rounded-md border", children: jsx("div", { className: "overflow-x-auto sm:mx-0", children: jsx("div", { className: "inline-block min-w-full align-middle", children: isLoading ? (jsx("div", { className: "flex w-full items-center justify-center py-10", children: jsx(Spinner, {}) })) : (jsxs(Table, { className: "min-w-full", children: [jsx(TableHeader, { children: jsxs(TableRow, { className: "bg-muted/50 border-b", children: [jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.statusColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.createdColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.filtersColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.expiresColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]" })] }) }), jsx(TableBody, { children: reports.length === 0 ? (jsx(TableRow, { children: jsx(TableCell, { colSpan: 5, className: "p-4 text-center text-[#646464]", children: t('chatHistoryReportHistory.empty') }) })) : (reports.map((report) => {
|
|
184539
|
+
return (jsx("div", { className: "overflow-hidden rounded-md border border-neutral-200", children: jsx("div", { className: "overflow-x-auto sm:mx-0", children: jsx("div", { className: "inline-block min-w-full align-middle", children: isLoading ? (jsx("div", { className: "flex w-full items-center justify-center py-10", children: jsx(Spinner, {}) })) : (jsxs(Table, { className: "min-w-full", children: [jsx(TableHeader, { children: jsxs(TableRow, { className: "bg-muted/50 border-b border-neutral-200", children: [jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.statusColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.createdColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.filtersColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: t('chatHistoryReportHistory.expiresColumn') }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]" })] }) }), jsx(TableBody, { children: reports.length === 0 ? (jsx(TableRow, { className: "border-neutral-200", children: jsx(TableCell, { colSpan: 5, className: "p-4 text-center text-[#646464]", children: t('chatHistoryReportHistory.empty') }) })) : (reports.map((report) => {
|
|
184506
184540
|
var _a, _b, _c, _d;
|
|
184507
184541
|
const state = (_a = report.state) !== null && _a !== void 0 ? _a : '';
|
|
184508
184542
|
const active = isActiveState$1(state);
|
|
184509
184543
|
const labelKey = (_b = STATE_LABEL_KEYS[state]) !== null && _b !== void 0 ? _b : 'statePending';
|
|
184510
|
-
return (jsxs(TableRow, { className: "border-b", children: [jsx(TableCell, { className: "p-3 whitespace-nowrap", children: jsxs(Badge, { variant: "outline", className: cn(active ? ACTIVE_BADGE_CLASSES : (_c = STATE_BADGE_CLASSES[state]) !== null && _c !== void 0 ? _c : ''), children: [active && (jsx(LoaderCircle, { className: "mr-1 h-3 w-3 animate-spin", "aria-hidden": "true" })), t(`chatHistoryReportHistory.${labelKey}`)] }) }),
|
|
184544
|
+
return (jsxs(TableRow, { className: "border-b border-neutral-200", children: [jsx(TableCell, { className: "p-3 whitespace-nowrap", children: jsxs(Badge, { variant: "outline", className: cn(active ? ACTIVE_BADGE_CLASSES : (_c = STATE_BADGE_CLASSES[state]) !== null && _c !== void 0 ? _c : ''), children: [active && (jsx(LoaderCircle, { className: "mr-1 h-3 w-3 animate-spin", "aria-hidden": "true" })), t(`chatHistoryReportHistory.${labelKey}`)] }) }), jsxs(TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: [timeAgo$2(report.created_at), report.owner && report.owner !== username && (jsx("div", { className: "text-xs text-gray-500", children: t('chatHistoryReportHistory.createdBy', { owner: report.owner }) }))] }), jsx(TableCell, { className: "max-w-[280px] truncate p-3 text-[#646464]", children: filterSummary(report, t) }), jsx(TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: state === 'completed' && report.expires ? timeAgo$2(report.expires) : '—' }), jsx(TableCell, { className: "p-3 text-right whitespace-nowrap", children: state === 'completed' && report.url && (jsxs(Button$1, { variant: "outline", size: "sm", className: "flex items-center gap-2 bg-transparent", onClick: () => handleDownload(report), disabled: downloadingId === report.report_id, children: [downloadingId === report.report_id ? (jsx(LoaderCircle, { className: "h-4 w-4 animate-spin", "aria-hidden": "true" })) : (jsx(Download, { className: "h-4 w-4", "aria-hidden": "true" })), t('chatHistoryReportHistory.download')] })) })] }, (_d = report.report_id) !== null && _d !== void 0 ? _d : report.created_at));
|
|
184511
184545
|
})) })] })) }) }) }));
|
|
184512
184546
|
}
|
|
184513
184547
|
|
|
@@ -184637,8 +184671,10 @@ function buildUserChatHistoryReportBody(filters, reportFormat = 'csv') {
|
|
|
184637
184671
|
}
|
|
184638
184672
|
/**
|
|
184639
184673
|
* Filter, pagination and data state for the profile History tab. All requests
|
|
184640
|
-
* are user-scoped (`my-chat-history*`): the backend
|
|
184641
|
-
*
|
|
184674
|
+
* are user-scoped (`my-chat-history*`): the backend serves the user's own
|
|
184675
|
+
* sessions to that user, to tenant admins, and to watchers of that user. Any
|
|
184676
|
+
* other caller — including a watcher on a user they don't watch — gets a 403,
|
|
184677
|
+
* surfaced here as `isForbidden`.
|
|
184642
184678
|
*/
|
|
184643
184679
|
function useUserChatHistory({ org, username }) {
|
|
184644
184680
|
var _a, _b, _c, _d;
|
|
@@ -184667,7 +184703,8 @@ function useUserChatHistory({ org, username }) {
|
|
|
184667
184703
|
return next;
|
|
184668
184704
|
}, [filters, page]);
|
|
184669
184705
|
const skip = !org || !username;
|
|
184670
|
-
const { data: history, isLoading, isFetching, isError, } = useGetUserChatHistoryQuery({ org, userId: username, params }, { skip });
|
|
184706
|
+
const { data: history, isLoading, isFetching, isError, error, } = useGetUserChatHistoryQuery({ org, userId: username, params }, { skip });
|
|
184707
|
+
const isForbidden = !!error && error.status === 403;
|
|
184671
184708
|
const { data: filterOptions } = useGetUserChatHistoryFilterQuery({
|
|
184672
184709
|
org,
|
|
184673
184710
|
userId: username,
|
|
@@ -184689,6 +184726,7 @@ function useUserChatHistory({ org, username }) {
|
|
|
184689
184726
|
isLoading,
|
|
184690
184727
|
isFetching,
|
|
184691
184728
|
isError,
|
|
184729
|
+
isForbidden,
|
|
184692
184730
|
filterOptions,
|
|
184693
184731
|
};
|
|
184694
184732
|
}
|
|
@@ -184860,7 +184898,7 @@ function ChatHistoryTab({ org, username }) {
|
|
|
184860
184898
|
const isMobile = useIsMobile();
|
|
184861
184899
|
const [selectedSession, setSelectedSession] = React__default.useState(null);
|
|
184862
184900
|
const [isPreviewModalOpen, setIsPreviewModalOpen] = React__default.useState(false);
|
|
184863
|
-
const { filters, setFilters, page, setPage, totalPages, sessions, isLoading, isFetching, isError, filterOptions, } = useUserChatHistory({ org, username });
|
|
184901
|
+
const { filters, setFilters, page, setPage, totalPages, sessions, isLoading, isFetching, isError, isForbidden, filterOptions, } = useUserChatHistory({ org, username });
|
|
184864
184902
|
const { startExport, downloadFromUrl, isExporting } = useChatHistoryExport({ org, username });
|
|
184865
184903
|
// The list payload identifies agents by unique_id only; resolve display
|
|
184866
184904
|
// names and avatars from agent search (plus whatever the payload carries).
|
|
@@ -184906,11 +184944,13 @@ function ChatHistoryTab({ org, username }) {
|
|
|
184906
184944
|
setIsPreviewModalOpen(true);
|
|
184907
184945
|
}
|
|
184908
184946
|
};
|
|
184909
|
-
return (jsxs(Tabs, { defaultValue: "conversations", className: "flex h-full min-h-0 flex-col gap-4", children: [jsxs(TabsList, { className: "w-fit flex-shrink-0", children: [jsx(TabsTrigger, { value: "conversations", children: t('chatHistoryChatHistoryTab.tabConversations') }), jsx(TabsTrigger, { value: "exports", children: t('chatHistoryChatHistoryTab.tabExports') })] }), jsxs(TabsContent, { value: "conversations", className: "mt-0 flex min-h-0 flex-1 flex-col gap-4 data-[state=inactive]:hidden", children: [jsx("div", { className: "flex-shrink-0 rounded-lg border p-4", children: jsxs("div", { className: "flex flex-col gap-3 lg:flex-row", children: [jsxs("div", { className: "flex flex-1 flex-wrap gap-3", children: [jsx(AgentFilterSelect, { tenantKey: org, username: username, value: filters.agent, onChange: (agent) => setFilters({ ...filters, agent }) }), jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", className: "flex h-9 items-center gap-2 bg-transparent font-normal whitespace-nowrap", children: [jsx(Calendar$1, { className: "h-4 w-4" }), ((_b = filters.dateRange) === null || _b === void 0 ? void 0 : _b.from) && ((_c = filters.dateRange) === null || _c === void 0 ? void 0 : _c.to)
|
|
184947
|
+
return (jsxs(Tabs, { defaultValue: "conversations", className: "flex h-full min-h-0 flex-col gap-4", children: [jsxs(TabsList, { className: "w-fit flex-shrink-0", children: [jsx(TabsTrigger, { value: "conversations", children: t('chatHistoryChatHistoryTab.tabConversations') }), jsx(TabsTrigger, { value: "exports", children: t('chatHistoryChatHistoryTab.tabExports') })] }), jsxs(TabsContent, { value: "conversations", className: "mt-0 flex min-h-0 flex-1 flex-col gap-4 data-[state=inactive]:hidden", children: [jsx("div", { className: "flex-shrink-0 rounded-lg border border-neutral-200 p-4", children: jsxs("div", { className: "flex flex-col gap-3 lg:flex-row", children: [jsxs("div", { className: "flex flex-1 flex-wrap gap-3", children: [jsx(AgentFilterSelect, { tenantKey: org, username: username, value: filters.agent, onChange: (agent) => setFilters({ ...filters, agent }) }), jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", className: "flex h-9 items-center gap-2 bg-transparent font-normal whitespace-nowrap", children: [jsx(Calendar$1, { className: "h-4 w-4" }), ((_b = filters.dateRange) === null || _b === void 0 ? void 0 : _b.from) && ((_c = filters.dateRange) === null || _c === void 0 ? void 0 : _c.to)
|
|
184910
184948
|
? `${format$1(filters.dateRange.from, 'MMM dd')} - ${format$1(filters.dateRange.to, 'MMM dd')}`
|
|
184911
|
-
: t('chatHistoryChatHistoryTab.pickDateRange')] }) }), jsx(PopoverContent, { className: "w-auto p-0", align: "start", portalled: false, children: jsx(Calendar, { mode: "range", selected: filters.dateRange, onSelect: (dateRange) => setFilters({ ...filters, dateRange }), numberOfMonths: 2, initialFocus: true }) })] }), jsxs(Select$1, { value: filters.sentiment || 'all', onValueChange: (value) => setFilters({ ...filters, sentiment: value === 'all' ? '' : value }), children: [jsx(SelectTrigger, { className: "w-40", "aria-label": t('chatHistoryChatHistoryTab.filterBySentiment'), children: jsx(SelectValue, { placeholder: t('chatHistoryChatHistoryTab.allSentiments') }) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: t('chatHistoryChatHistoryTab.allSentiments') }), sentimentOptions.map((sentiment) => (jsx(SelectItem, { value: sentiment, children: sentimentLabel(sentiment) }, sentiment)))] })] }), jsxs(Select$1, { value: filters.topic || 'all', onValueChange: (value) => setFilters({ ...filters, topic: value === 'all' ? '' : value }), children: [jsx(SelectTrigger, { className: "w-40", "aria-label": t('chatHistoryChatHistoryTab.filterByTopic'), children: jsx(SelectValue, { placeholder: t('chatHistoryChatHistoryTab.allTopics') }) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: t('chatHistoryChatHistoryTab.allTopics') }), ((_d = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.topics) !== null && _d !== void 0 ? _d : []).map((topic) => (jsx(SelectItem, { value: topic.name, children: topic.name }, topic.name)))] })] })] }), jsx("div", { className: "w-full lg:w-auto", children: jsxs(Button$1, { variant: "outline", onClick: () => startExport(buildUserChatHistoryReportBody(filters, 'csv')), disabled: isExporting, className: "flex h-9 w-full items-center justify-center gap-2 bg-transparent lg:w-auto", children: [jsx(Download, { className: "h-4 w-4" }), isExporting
|
|
184949
|
+
: t('chatHistoryChatHistoryTab.pickDateRange')] }) }), jsx(PopoverContent, { className: "w-auto p-0", align: "start", portalled: false, children: jsx(Calendar, { mode: "range", selected: filters.dateRange, onSelect: (dateRange) => setFilters({ ...filters, dateRange }), numberOfMonths: 2, initialFocus: true }) })] }), jsxs(Select$1, { value: filters.sentiment || 'all', onValueChange: (value) => setFilters({ ...filters, sentiment: value === 'all' ? '' : value }), children: [jsx(SelectTrigger, { className: "w-40", "aria-label": t('chatHistoryChatHistoryTab.filterBySentiment'), children: jsx(SelectValue, { placeholder: t('chatHistoryChatHistoryTab.allSentiments') }) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: t('chatHistoryChatHistoryTab.allSentiments') }), sentimentOptions.map((sentiment) => (jsx(SelectItem, { value: sentiment, children: sentimentLabel(sentiment) }, sentiment)))] })] }), jsxs(Select$1, { value: filters.topic || 'all', onValueChange: (value) => setFilters({ ...filters, topic: value === 'all' ? '' : value }), children: [jsx(SelectTrigger, { className: "w-40", "aria-label": t('chatHistoryChatHistoryTab.filterByTopic'), children: jsx(SelectValue, { placeholder: t('chatHistoryChatHistoryTab.allTopics') }) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: t('chatHistoryChatHistoryTab.allTopics') }), ((_d = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.topics) !== null && _d !== void 0 ? _d : []).map((topic) => (jsx(SelectItem, { value: topic.name, children: topic.name }, topic.name)))] })] })] }), jsx("div", { className: "w-full lg:w-auto", children: jsxs(Button$1, { variant: "outline", onClick: () => startExport(buildUserChatHistoryReportBody(filters, 'csv')), disabled: isExporting || isForbidden, className: "flex h-9 w-full items-center justify-center gap-2 bg-transparent lg:w-auto", children: [jsx(Download, { className: "h-4 w-4" }), isExporting
|
|
184912
184950
|
? t('chatHistoryChatHistoryTab.exporting')
|
|
184913
|
-
: t('chatHistoryChatHistoryTab.export')] }) })] }) }), isLoading && (jsx("div", { className: "flex w-full flex-1 items-center justify-center py-10", children: jsx(Spinner, {}) })), isError && !isLoading && (jsx("div", { className: "flex flex-1 flex-col items-center justify-center py-6", children: jsx("p", { className: "text-sm text-gray-600", children:
|
|
184951
|
+
: t('chatHistoryChatHistoryTab.export')] }) })] }) }), isLoading && (jsx("div", { className: "flex w-full flex-1 items-center justify-center py-10", children: jsx(Spinner, {}) })), isError && !isLoading && (jsx("div", { className: "flex flex-1 flex-col items-center justify-center py-6", children: jsx("p", { className: "text-sm text-gray-600", children: isForbidden
|
|
184952
|
+
? t('chatHistoryChatHistoryTab.forbidden')
|
|
184953
|
+
: t('chatHistoryChatHistoryTab.loadFailed') }) })), sessions.length === 0 && !isLoading && !isError && (jsx("div", { className: "flex flex-1 flex-col items-center justify-center py-6", children: jsx("p", { className: "text-sm text-gray-600", children: t('chatHistoryChatHistoryTab.noConversations') }) })), sessions.length > 0 && (jsxs("div", { className: "grid min-h-[320px] flex-1 grid-cols-1 gap-6 md:grid-cols-2", children: [jsxs("div", { className: "col-span-full flex min-h-0 flex-col gap-3 md:col-span-1", children: [jsx("div", { className: "scrollbar-hide min-h-0 flex-1 overflow-y-auto rounded-md border border-neutral-200", tabIndex: 0, role: "region", "aria-label": t('chatHistoryChatHistoryTab.conversationListLabel'), children: sessions.map((session) => {
|
|
184914
184954
|
var _a, _b, _c, _d, _e;
|
|
184915
184955
|
const firstMessage = normalizeMessages(session.messages)[0];
|
|
184916
184956
|
const title = stripMarkdown(session.title ||
|
|
@@ -184919,13 +184959,13 @@ function ChatHistoryTab({ org, username }) {
|
|
|
184919
184959
|
t('chatHistoryChatHistoryTab.conversation'));
|
|
184920
184960
|
const preview = stripMarkdown((_a = firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.ai) !== null && _a !== void 0 ? _a : '');
|
|
184921
184961
|
const sentiment = (_c = (_b = session.sentiment) === null || _b === void 0 ? void 0 : _b.toLowerCase()) !== null && _c !== void 0 ? _c : '';
|
|
184922
|
-
return (jsxs("div", { role: "button", tabIndex: 0, "data-testid": "history-conversation-row", "data-session-id": session.id, className: cn('flex cursor-pointer items-center justify-between border-b p-4 last:border-b-0', (selectedSession === null || selectedSession === void 0 ? void 0 : selectedSession.id) === session.id ? 'bg-gray-100' : 'hover:bg-gray-50'), onClick: () => handleConversationClick(session), onKeyDown: (event) => {
|
|
184962
|
+
return (jsxs("div", { role: "button", tabIndex: 0, "data-testid": "history-conversation-row", "data-session-id": session.id, className: cn('flex cursor-pointer items-center justify-between border-b border-neutral-200 p-4 last:border-b-0', (selectedSession === null || selectedSession === void 0 ? void 0 : selectedSession.id) === session.id ? 'bg-gray-100' : 'hover:bg-gray-50'), onClick: () => handleConversationClick(session), onKeyDown: (event) => {
|
|
184923
184963
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
184924
184964
|
event.preventDefault();
|
|
184925
184965
|
handleConversationClick(session);
|
|
184926
184966
|
}
|
|
184927
184967
|
}, children: [jsxs("div", { className: "w-full", children: [jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [jsxs("span", { className: "flex items-center gap-2 text-sm text-gray-600", children: [timeAgo$1(session.inserted_at), sentiment && (jsx(Badge, { variant: "outline", className: cn('font-normal', (_d = SENTIMENT_CLASSES[sentiment]) !== null && _d !== void 0 ? _d : SENTIMENT_CLASSES.neutral), children: sentimentLabel((_e = session.sentiment) !== null && _e !== void 0 ? _e : '') }))] }), jsx("span", { className: "max-w-[100px] truncate text-sm text-gray-900 sm:max-w-[200px]", children: resolveAgent(session).name })] }), jsx("div", { className: "font-medium text-gray-900", children: textTruncate(title, 50) }), preview && (jsx("p", { className: "line-clamp-1 text-sm text-gray-600", children: textTruncate(preview, 60) }))] }), jsx("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: jsx(ChevronRight, { className: "h-4 w-4" }) })] }, session.id));
|
|
184928
|
-
}) }), totalPages > 1 && (jsx("div", { className: "flex-shrink-0", children: jsx(IblPagination, { currentPage: page, totalPages: totalPages, onPageChange: setPage, disabled: isFetching || isLoading, disableNumberedButtons: isMobile }) }))] }), jsx("div", { className: "scrollbar-hide hidden min-h-0 flex-col overflow-y-auto rounded-lg border bg-white p-6 shadow-sm md:flex", tabIndex: 0, role: "region", "aria-label": t('chatHistoryChatHistoryTab.conversationPreviewLabel'), children: selectedSession ? (jsx(ConversationPreview, { org: org, username: username, session: selectedSession, agent: resolveAgent(selectedSession) })) : (jsx("div", { className: "flex h-full items-center justify-center text-gray-500", children: t('chatHistoryChatHistoryTab.selectPrompt') })) })] })), jsx(Dialog, { open: isPreviewModalOpen, onOpenChange: setIsPreviewModalOpen, children: jsxs(DialogContent, { className: "scrollbar-hide mx-auto max-h-[80vh] max-w-[90vw] overflow-x-hidden overflow-y-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { className: "text-lg font-semibold text-gray-900", children: selectedSession
|
|
184968
|
+
}) }), totalPages > 1 && (jsx("div", { className: "flex-shrink-0", children: jsx(IblPagination, { currentPage: page, totalPages: totalPages, onPageChange: setPage, disabled: isFetching || isLoading, disableNumberedButtons: isMobile }) }))] }), jsx("div", { className: "scrollbar-hide hidden min-h-0 flex-col overflow-y-auto rounded-lg border border-neutral-200 bg-white p-6 shadow-sm md:flex", tabIndex: 0, role: "region", "aria-label": t('chatHistoryChatHistoryTab.conversationPreviewLabel'), children: selectedSession ? (jsx(ConversationPreview, { org: org, username: username, session: selectedSession, agent: resolveAgent(selectedSession) })) : (jsx("div", { className: "flex h-full items-center justify-center text-gray-500", children: t('chatHistoryChatHistoryTab.selectPrompt') })) })] })), jsx(Dialog, { open: isPreviewModalOpen, onOpenChange: setIsPreviewModalOpen, children: jsxs(DialogContent, { className: "scrollbar-hide mx-auto max-h-[80vh] max-w-[90vw] overflow-x-hidden overflow-y-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { className: "text-lg font-semibold text-gray-900", children: selectedSession
|
|
184929
184969
|
? stripMarkdown(selectedSession.title || t('chatHistoryChatHistoryTab.conversation'))
|
|
184930
184970
|
: t('chatHistoryChatHistoryTab.conversation') }) }), jsx("div", { className: "mx-auto max-w-full overflow-x-hidden", children: selectedSession && (jsx(ConversationPreview, { org: org, username: username, session: selectedSession, agent: resolveAgent(selectedSession) })) })] }) })] }), jsx(TabsContent, { value: "exports", className: "mt-0 min-h-0 flex-1 overflow-y-auto data-[state=inactive]:hidden", children: jsx(ReportHistory, { org: org, username: username, onDownload: downloadFromUrl }) })] }));
|
|
184931
184971
|
}
|
|
@@ -184992,6 +185032,12 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
184992
185032
|
const isPurchasesEnabled = currentTenant === null || currentTenant === void 0 ? void 0 : currentTenant.enable_monetization;
|
|
184993
185033
|
const isGradebookEnabled = customization.showGradebookTab;
|
|
184994
185034
|
const isReadOnly = useIsProfilePreview(username);
|
|
185035
|
+
// The chat-history endpoints serve the user themselves, tenant admins and
|
|
185036
|
+
// watchers (for the users they watch), so the History tab stays on your own
|
|
185037
|
+
// profile and appears on someone else's only for admin/watcher viewers.
|
|
185038
|
+
const rbacPermissions = useSelector(selectRbacPermissions);
|
|
185039
|
+
const { currentTenant: viewerTenant } = useCurrentTenant();
|
|
185040
|
+
const isChatHistoryVisible = !isReadOnly || canViewOtherUsersChatHistory(rbacPermissions, viewerTenant);
|
|
184995
185041
|
const baseTabs = [
|
|
184996
185042
|
{ id: 'basic', label: t('profileIndex.tabBasic'), renderIcon: renderLucideIcon(User) },
|
|
184997
185043
|
{ id: 'social', label: t('profileIndex.tabSocial'), renderIcon: renderLucideIcon(Globe) },
|
|
@@ -185045,9 +185091,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
185045
185091
|
},
|
|
185046
185092
|
]
|
|
185047
185093
|
: []),
|
|
185048
|
-
|
|
185049
|
-
// sessions, so the tab is hidden when previewing someone else's profile.
|
|
185050
|
-
...(!isReadOnly
|
|
185094
|
+
...(isChatHistoryVisible
|
|
185051
185095
|
? [
|
|
185052
185096
|
{
|
|
185053
185097
|
id: 'chatHistory',
|
|
@@ -185233,7 +185277,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
185233
185277
|
var _a;
|
|
185234
185278
|
return (jsxs(Fragment$1, { children: [jsxs("div", { className: "relative mb-0", children: [jsx("div", { className: "absolute inset-y-0 left-4 flex items-center pointer-events-none", "aria-hidden": "true", children: jsx("div", { className: "bg-black text-white rounded w-8 h-8 flex items-center justify-center", children: jsx("span", { className: "font-bold text-sm", children: "X" }) }) }), jsx(Input, { id: "x", className: "w-full bg-gray-50 border-gray-200 focus:ring-blue-500 focus:border-blue-500 text-base py-3 pl-16 h-10", placeholder: t('profileIndex.placeholderX'), value: field.state.value, onChange: (e) => handleSocialLinkChange(e.target.value, field.handleChange, X_URL_PREFIX), disabled: socialForm.state.isSubmitting || isReadOnly })] }), jsx("p", { className: "text-red-500 dark:text-gray-400 text-sm", role: ((_a = field.state.meta.errors) === null || _a === void 0 ? void 0 : _a.length) ? 'alert' : undefined, "aria-live": "polite", children: field.state.meta.errors })] }));
|
|
185235
185279
|
},
|
|
185236
|
-
})] })] }) })), activeTab === 'education' && (jsxs(Tabs, { value: educationSubTab, onValueChange: setEducationSubTab, className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "education", children: t('profileIndex.tabEducation') }), jsx(TabsTrigger, { value: "credentials", children: t('gradebookGradebookTab.typeCredentials') }), jsx(TabsTrigger, { value: "skills", children: t('gradebookGradebookTab.typeSkills') })] }), headerAddButton] }), jsx(TabsContent, { value: "education", children: jsx(EducationTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "credentials", children: jsx(CredentialsList, { org: tenant, username: username }) }), jsx(TabsContent, { value: "skills", children: jsx(SkillsList, { org: tenant, username: username }) })] })), activeTab === 'gradebook' && jsx(GradebookTab, { org: tenant, username: username }), activeTab === 'experience' && (jsxs(Tabs, { value: experienceSubTab, onValueChange: setExperienceSubTab, className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "experience", children: t('profileIndex.tabExperience') }), jsx(TabsTrigger, { value: "resume", children: t('profileIndex.tabResume') })] }), headerAddButton] }), jsx(TabsContent, { value: "experience", children: jsx(ExperienceTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "resume", children: jsx(ResumeTab, { org: tenant, username: username }) })] })), activeTab === 'purchases' && jsx(PurchasesTab, { org: tenant, username: username }), activeTab === 'memory' && jsx(MemoryTab, { org: tenant, username: username }), activeTab === 'privacy' && jsx(ChatPrivacyTab, { org: tenant, username: username }),
|
|
185280
|
+
})] })] }) })), activeTab === 'education' && (jsxs(Tabs, { value: educationSubTab, onValueChange: setEducationSubTab, className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "education", children: t('profileIndex.tabEducation') }), jsx(TabsTrigger, { value: "credentials", children: t('gradebookGradebookTab.typeCredentials') }), jsx(TabsTrigger, { value: "skills", children: t('gradebookGradebookTab.typeSkills') })] }), headerAddButton] }), jsx(TabsContent, { value: "education", children: jsx(EducationTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "credentials", children: jsx(CredentialsList, { org: tenant, username: username }) }), jsx(TabsContent, { value: "skills", children: jsx(SkillsList, { org: tenant, username: username }) })] })), activeTab === 'gradebook' && jsx(GradebookTab, { org: tenant, username: username }), activeTab === 'experience' && (jsxs(Tabs, { value: experienceSubTab, onValueChange: setExperienceSubTab, className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "experience", children: t('profileIndex.tabExperience') }), jsx(TabsTrigger, { value: "resume", children: t('profileIndex.tabResume') })] }), headerAddButton] }), jsx(TabsContent, { value: "experience", children: jsx(ExperienceTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "resume", children: jsx(ResumeTab, { org: tenant, username: username }) })] })), activeTab === 'purchases' && jsx(PurchasesTab, { org: tenant, username: username }), activeTab === 'memory' && jsx(MemoryTab, { org: tenant, username: username }), activeTab === 'privacy' && jsx(ChatPrivacyTab, { org: tenant, username: username }), isChatHistoryVisible && activeTab === 'chatHistory' && (jsx(ChatHistoryTab, { org: tenant, username: username })), !isReadOnly && activeTab === 'security' && (jsx(Security, { app: currentSPA || '', email: (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '', platformKey: tenant, onAccountDeleted: onAccountDeleted })), activeTab === 'advanced' && localLLMProps && (jsx("div", { className: "space-y-6", children: jsx(LocalModelsContent, { isAvailable: localLLMProps.isAvailable, state: localLLMProps.state, ollamaStatus: localLLMProps.ollamaStatus, systemMemory: localLLMProps.systemMemory, isUsingFoundry: localLLMProps.isUsingFoundry, foundryModels: localLLMProps.foundryModels, selectedFoundryModel: localLLMProps.selectedFoundryModel, foundryStatus: localLLMProps.foundryStatus, onStartDownload: localLLMProps.onStartDownload, onCancelDownload: localLLMProps.onCancelDownload, onInstallOllama: localLLMProps.onInstallOllama, onStopManager: localLLMProps.onStopManager, onInstallFoundry: localLLMProps.onInstallFoundry, onCheckStatus: localLLMProps.onCheckStatus, onResetState: localLLMProps.onResetState, onSelectFoundryModel: localLLMProps.onSelectFoundryModel }) }))] }), !isReadOnly && ['basic', 'social'].includes(activeTab) && (jsx("div", { className: "flex-shrink-0 border-t border-gray-200 p-6 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex justify-end gap-3", children: [jsx(Button$1, { onClick: onClose, variant: "outline", children: t('profileIndex.buttonCancel') }), jsx(Button$1, { onClick: () => {
|
|
185237
185281
|
if (activeTab === 'basic') {
|
|
185238
185282
|
basicForm.handleSubmit();
|
|
185239
185283
|
}
|
|
@@ -186647,7 +186691,7 @@ const AdvancedPagination = ({ currentPage, totalPages, onPageChange, totalCount,
|
|
|
186647
186691
|
return (jsxs("div", { className: cn('flex items-center gap-2', showSummary ? 'justify-between' : 'justify-center', variant === 'footer' && 'border-t border-gray-200 bg-gray-50 px-3 py-3 sm:px-6 sm:py-4', className), children: [showSummary && (jsx("p", { className: "hidden text-sm text-gray-700 sm:block", children: t('advancePagination.showing', { from, to, totalCount, itemLabel }) })), jsxs("div", { className: "flex items-center justify-center gap-1 sm:gap-2", children: [jsx(Button$1, { variant: "outline", size: "sm", className: "hidden h-8 w-8 items-center justify-center rounded-md border-gray-300 bg-transparent p-0 hover:bg-gray-100 sm:flex", onClick: () => onPageChange(1), disabled: currentPage === 1, "aria-label": t('advancePagination.goToFirstPage'), children: jsx(ChevronFirst, { className: "h-4 w-4" }) }), jsxs(Button$1, { variant: "outline", size: "sm", className: "flex h-8 w-8 items-center justify-center rounded-md border-none bg-transparent px-2 text-xs hover:bg-gray-100 sm:border-gray-300 sm:p-0 sm:text-sm", onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1, "aria-label": t('advancePagination.goToPreviousPage'), children: [jsx(ChevronLeft, { className: "mr-1 h-4 w-4 sm:mr-0" }), jsx("span", { className: "sm:hidden", children: t('advancePagination.prev') })] }), jsxs("span", { className: "mx-1 px-2 text-xs text-gray-700 sm:mx-2 sm:text-sm", children: [jsxs("span", { className: "hidden sm:inline", children: [t('advancePagination.page'), " "] }), currentPage, " ", jsxs("span", { className: "hidden sm:inline", children: [t('advancePagination.of'), " "] }), jsxs("span", { className: "inline sm:hidden", children: [" ", t('advancePagination.mobileSeparator'), " "] }), totalPages] }), jsxs(Button$1, { variant: "outline", size: "sm", className: "flex h-8 w-8 items-center justify-center rounded-md border-none bg-transparent px-2 text-xs hover:bg-gray-100 sm:border-gray-300 sm:p-0 sm:text-sm", onClick: () => onPageChange(currentPage + 1), disabled: currentPage === totalPages, "aria-label": t('advancePagination.goToNextPage'), children: [jsx("span", { className: "sm:hidden", children: t('advancePagination.next') }), jsx(ChevronRight, { className: "ml-1 h-4 w-4 sm:ml-0" })] }), jsx(Button$1, { variant: "outline", size: "sm", className: "hidden h-8 w-8 items-center justify-center rounded-md border-gray-300 bg-transparent p-0 hover:bg-gray-100 sm:flex", onClick: () => onPageChange(totalPages), disabled: currentPage === totalPages, "aria-label": t('advancePagination.goToLastPage'), children: jsx(ChevronLast, { className: "h-4 w-4" }) })] })] }));
|
|
186648
186692
|
};
|
|
186649
186693
|
|
|
186650
|
-
const PAGE_SIZE$
|
|
186694
|
+
const PAGE_SIZE$9 = 10;
|
|
186651
186695
|
function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false, }) {
|
|
186652
186696
|
var _a, _b;
|
|
186653
186697
|
const t = useT();
|
|
@@ -186670,7 +186714,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
|
|
|
186670
186714
|
const isWatcher = isPureWatcher(rbacPermissions, currentTenant);
|
|
186671
186715
|
const { data: users, refetch: refetchPlatformUsers, isLoading: isLoadingPlatformUsers, } = usePlatformUsersQuery({
|
|
186672
186716
|
page,
|
|
186673
|
-
page_size: PAGE_SIZE$
|
|
186717
|
+
page_size: PAGE_SIZE$9,
|
|
186674
186718
|
platform_key: tenant,
|
|
186675
186719
|
platform_org: tenant,
|
|
186676
186720
|
query: debouncedSearchQuery,
|
|
@@ -186684,7 +186728,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
|
|
|
186684
186728
|
// TODO to use required_action: 'Ibl.Core/Users/read',
|
|
186685
186729
|
required_action: 'Ibl.Mentor/Memory/list',
|
|
186686
186730
|
page,
|
|
186687
|
-
page_size: PAGE_SIZE$
|
|
186731
|
+
page_size: PAGE_SIZE$9,
|
|
186688
186732
|
sort: 'name',
|
|
186689
186733
|
...(debouncedSearchQuery.includes('@')
|
|
186690
186734
|
? { email: debouncedSearchQuery }
|
|
@@ -186859,7 +186903,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
|
|
|
186859
186903
|
managed: user,
|
|
186860
186904
|
}));
|
|
186861
186905
|
const totalCount = (_b = (isWatcher ? accessibleUsers === null || accessibleUsers === void 0 ? void 0 : accessibleUsers.count : users === null || users === void 0 ? void 0 : users.count)) !== null && _b !== void 0 ? _b : 0;
|
|
186862
|
-
const totalPages = Math.ceil(totalCount / PAGE_SIZE$
|
|
186906
|
+
const totalPages = Math.ceil(totalCount / PAGE_SIZE$9);
|
|
186863
186907
|
return (jsxs("div", { className: "mt-4", children: [jsxs("div", { className: "flex justify-between items-center gap-1", children: [jsxs("div", { className: "relative mb-6 max-w-sm", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { type: "text", value: searchQuery, onChange: (event) => setQuerySearch(event.target.value), placeholder: t('tabsUserstab.searchPlaceholder'), className: "pl-10 pr-10 focus:ring-blue-500 focus:border-blue-500 h-[35px]", "aria-label": t('tabsUserstab.searchAriaLabel') }), searchQuery.length > 0 && (searchQuery !== debouncedSearchQuery || isLoading) && (jsx(LoaderCircle, { "data-testid": "search-spinner", className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] }), !isWatcher && (jsx("div", { className: "mb-6", children: jsx(Button$1, { className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white h-[35px]", onClick: onInviteClick, children: t('tabsUserstab.inviteButton') }) }))] }), isLoading ? (jsx("div", { className: "flex justify-center items-center h-64", children: jsx(Spinner, {}) })) : (jsxs(Fragment$1, { children: [jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: `px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 ${isWatcher ? 'w-full' : 'w-[41%]'}`, children: t('tabsUserstab.columnEmail') }), !isWatcher && (jsxs(Fragment$1, { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[16%]", children: t('tabsUserstab.columnRole') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[25%]", children: t('tabsUserstab.columnPolicies') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[18%]", children: t('tabsUserstab.columnStatus') })] }))] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [rows.map((row) => {
|
|
186864
186908
|
var _a;
|
|
186865
186909
|
// Only set on the admin path — see {@link UserRow}.
|
|
@@ -186890,7 +186934,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
|
|
|
186890
186934
|
})] }) })] }) }), jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsx(Switch, { checked: user.active, onCheckedChange: (checked) => handleUserStatusChange(user, checked), disabled: updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id), "aria-label": t('tabsUserstab.toggleStatusAriaLabel', {
|
|
186891
186935
|
name: user.name,
|
|
186892
186936
|
}), className: "cursor-pointer data-[state=checked]:bg-blue-500 disabled:cursor-not-allowed disabled:opacity-50" }) })] }))] }, row.key));
|
|
186893
|
-
}), rows.length === 0 && (jsx("tr", { children: jsx("td", { colSpan: isWatcher ? 2 : 5, className: "px-6 py-8 text-center text-gray-500 dark:text-gray-400", children: t('tabsUserstab.noUsersFound') }) }))] })] }) }), jsx(AdvancedPagination, { variant: "footer", className: "-mx-6 -mb-6 mt-4 rounded-b-lg", totalPages: totalPages, currentPage: page, onPageChange: (_page) => handlePageChange(_page), totalCount: totalCount, itemsPerPage: PAGE_SIZE$
|
|
186937
|
+
}), rows.length === 0 && (jsx("tr", { children: jsx("td", { colSpan: isWatcher ? 2 : 5, className: "px-6 py-8 text-center text-gray-500 dark:text-gray-400", children: t('tabsUserstab.noUsersFound') }) }))] })] }) }), jsx(AdvancedPagination, { variant: "footer", className: "-mx-6 -mb-6 mt-4 rounded-b-lg", totalPages: totalPages, currentPage: page, onPageChange: (_page) => handlePageChange(_page), totalCount: totalCount, itemsPerPage: PAGE_SIZE$9, itemLabel: "users" })] })), selectedUser && (jsx(Dialog, { open: !!selectedUser, onOpenChange: (open) => {
|
|
186894
186938
|
if (!open)
|
|
186895
186939
|
setSelectedUser(null);
|
|
186896
186940
|
}, children: jsxs(DialogContent, { autoFocus: false, className: "max-w-7xl w-[85vw] p-0 gap-0 overflow-hidden bg-white profile-component-dialog", style: { height: '85vh', display: 'flex', flexDirection: 'column' }, children: [jsx(DialogTitle, { className: "sr-only", children: t('tabsUserstab.profileDialogTitle') }), jsx(DialogDescription, { className: "sr-only", children: t('tabsUserstab.profileDialogDescription') }), jsx(Profile, { tenant: tenant, tenants: [], username: selectedUser.username, isAdmin: selectedUser.isAdmin, currentSPA: currentSpa, onClose: () => setSelectedUser(null), customization: {
|
|
@@ -188110,7 +188154,7 @@ function PoliciesTab({ tenant }) {
|
|
|
188110
188154
|
: t('tabsPoliciestab.createPolicy')] }) }) }), editing && (policyDetails === null || policyDetails === void 0 ? void 0 : policyDetails.is_internal) && (jsx(TooltipContent, { children: jsx("p", { children: t('tabsPoliciestab.cannotEditInternal') }) }))] }) })] })] }) }), jsx(ResourcePickerModal, { open: isResourcePickerOpen, onOpenChange: setIsResourcePickerOpen, tenant: tenant, onSelect: addPickedResource })] }));
|
|
188111
188155
|
}
|
|
188112
188156
|
|
|
188113
|
-
const PAGE_SIZE$
|
|
188157
|
+
const PAGE_SIZE$8 = 10;
|
|
188114
188158
|
function normalizeEvents(events) {
|
|
188115
188159
|
if (!events)
|
|
188116
188160
|
return [];
|
|
@@ -188159,8 +188203,8 @@ function AlertsTab$1({ tenant }) {
|
|
|
188159
188203
|
const { data: watchedGroupsData, isLoading, isError, refetch, } = useGetWatchedGroupsQuery({
|
|
188160
188204
|
params: {
|
|
188161
188205
|
platform_key: tenant,
|
|
188162
|
-
limit: PAGE_SIZE$
|
|
188163
|
-
offset: (page - 1) * PAGE_SIZE$
|
|
188206
|
+
limit: PAGE_SIZE$8,
|
|
188207
|
+
offset: (page - 1) * PAGE_SIZE$8,
|
|
188164
188208
|
},
|
|
188165
188209
|
});
|
|
188166
188210
|
const groups = useMemo(() => {
|
|
@@ -188173,7 +188217,7 @@ function AlertsTab$1({ tenant }) {
|
|
|
188173
188217
|
return results;
|
|
188174
188218
|
}, [watchedGroupsData, debouncedSearchQuery]);
|
|
188175
188219
|
const totalPages = watchedGroupsData
|
|
188176
|
-
? Math.max(1, Math.ceil(watchedGroupsData.count / PAGE_SIZE$
|
|
188220
|
+
? Math.max(1, Math.ceil(watchedGroupsData.count / PAGE_SIZE$8))
|
|
188177
188221
|
: 0;
|
|
188178
188222
|
const handlePageChange = async (newPage) => {
|
|
188179
188223
|
setPage(newPage);
|
|
@@ -188482,7 +188526,7 @@ function AlertsTab$1({ tenant }) {
|
|
|
188482
188526
|
setDeletingGroupId(null);
|
|
188483
188527
|
}
|
|
188484
188528
|
}
|
|
188485
|
-
return (jsxs("div", { className: "mt-4", children: [jsxs("div", { className: "flex mb-6 gap-2 flex-row items-center justify-between", children: [jsxs("div", { className: "relative max-w-sm w-full sm:w-auto", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: t('tabsAlertstab.searchAlertsPlaceholder'), "aria-label": t('tabsAlertstab.searchAlertsAriaLabel'), className: "pl-10 pr-10 focus:ring-blue-500 focus:border-blue-500 h-[35px]" }), isLoading && (jsx(LoaderCircle, { "data-testid": "search-spinner", className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] }), jsx("div", { className: "flex gap-2", children: jsx(Button$1, { onClick: openNew, "aria-label": t('tabsAlertstab.newAlertAriaLabel'), className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white h-[35px]", children: t('tabsAlertstab.newAlert') }) })] }), isLoading && (jsx("div", { className: "flex justify-center items-center h-64", children: jsx("div", { className: "py-8 text-center text-sm text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.loading') }) })), isError && (jsx("div", { className: "py-8 text-center text-sm text-red-500", children: t('tabsAlertstab.failedToLoadAlerts') })), !isLoading && !isError && (jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.columnName') }), jsx("th", { className: "px-6 py-3 text-right font-medium text-gray-500 dark:text-gray-400 w-[120px]" })] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [groups.map((g) => (jsxs("tr", { children: [jsx("td", { className: "px-6 py-4 text-gray-900 dark:text-gray-100 text-sm", children: g.name }), jsx("td", { className: "px-6 py-4", children: jsxs("div", { className: "flex gap-2 justify-end", children: [jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => openEdit(g), disabled: deletingGroupId === g.id, "aria-label": t('tabsAlertstab.editAlertAriaLabel', { name: g.name }), children: jsx(Pencil, { className: "h-4 w-4", "aria-hidden": "true" }) }), jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => onDelete(g), className: "text-red-600 hover:text-red-700", disabled: deletingGroupId === g.id, "aria-label": t('tabsAlertstab.deleteAlertAriaLabel', { name: g.name }), children: deletingGroupId === g.id ? (jsx(LoaderCircle, { className: "h-4 w-4 animate-spin", "aria-hidden": "true" })) : (jsx(Trash2, { className: "h-4 w-4", "aria-hidden": "true" })) })] }) })] }, g.id))), groups.length === 0 && (jsx("tr", { children: jsx("td", { colSpan: 2, className: "px-6 py-8 text-center text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.noAlertsFound') }) }))] })] }) })), !isLoading && !isError && (jsx(AdvancedPagination, { variant: "footer", className: "-mx-6 -mb-6 mt-4 rounded-b-lg", totalPages: totalPages, currentPage: page, onPageChange: (newPage) => handlePageChange(newPage), totalCount: watchedGroupsData === null || watchedGroupsData === void 0 ? void 0 : watchedGroupsData.count, itemsPerPage: PAGE_SIZE$
|
|
188529
|
+
return (jsxs("div", { className: "mt-4", children: [jsxs("div", { className: "flex mb-6 gap-2 flex-row items-center justify-between", children: [jsxs("div", { className: "relative max-w-sm w-full sm:w-auto", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: t('tabsAlertstab.searchAlertsPlaceholder'), "aria-label": t('tabsAlertstab.searchAlertsAriaLabel'), className: "pl-10 pr-10 focus:ring-blue-500 focus:border-blue-500 h-[35px]" }), isLoading && (jsx(LoaderCircle, { "data-testid": "search-spinner", className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] }), jsx("div", { className: "flex gap-2", children: jsx(Button$1, { onClick: openNew, "aria-label": t('tabsAlertstab.newAlertAriaLabel'), className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white h-[35px]", children: t('tabsAlertstab.newAlert') }) })] }), isLoading && (jsx("div", { className: "flex justify-center items-center h-64", children: jsx("div", { className: "py-8 text-center text-sm text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.loading') }) })), isError && (jsx("div", { className: "py-8 text-center text-sm text-red-500", children: t('tabsAlertstab.failedToLoadAlerts') })), !isLoading && !isError && (jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.columnName') }), jsx("th", { className: "px-6 py-3 text-right font-medium text-gray-500 dark:text-gray-400 w-[120px]" })] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [groups.map((g) => (jsxs("tr", { children: [jsx("td", { className: "px-6 py-4 text-gray-900 dark:text-gray-100 text-sm", children: g.name }), jsx("td", { className: "px-6 py-4", children: jsxs("div", { className: "flex gap-2 justify-end", children: [jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => openEdit(g), disabled: deletingGroupId === g.id, "aria-label": t('tabsAlertstab.editAlertAriaLabel', { name: g.name }), children: jsx(Pencil, { className: "h-4 w-4", "aria-hidden": "true" }) }), jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => onDelete(g), className: "text-red-600 hover:text-red-700", disabled: deletingGroupId === g.id, "aria-label": t('tabsAlertstab.deleteAlertAriaLabel', { name: g.name }), children: deletingGroupId === g.id ? (jsx(LoaderCircle, { className: "h-4 w-4 animate-spin", "aria-hidden": "true" })) : (jsx(Trash2, { className: "h-4 w-4", "aria-hidden": "true" })) })] }) })] }, g.id))), groups.length === 0 && (jsx("tr", { children: jsx("td", { colSpan: 2, className: "px-6 py-8 text-center text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.noAlertsFound') }) }))] })] }) })), !isLoading && !isError && (jsx(AdvancedPagination, { variant: "footer", className: "-mx-6 -mb-6 mt-4 rounded-b-lg", totalPages: totalPages, currentPage: page, onPageChange: (newPage) => handlePageChange(newPage), totalCount: watchedGroupsData === null || watchedGroupsData === void 0 ? void 0 : watchedGroupsData.count, itemsPerPage: PAGE_SIZE$8, itemLabel: "alerts" })), jsx(Dialog, { open: isOpen, onOpenChange: setIsOpen, children: jsxs(DialogContent, { "aria-describedby": undefined, className: "max-w-2xl max-h-[90vh] overflow-y-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { children: editingGroup ? t('tabsAlertstab.editAlert') : t('tabsAlertstab.newAlert') }) }), jsxs("div", { className: "space-y-5", children: [jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { htmlFor: "wg-name", children: t('tabsAlertstab.nameLabel') }), jsx(Input, { id: "wg-name", value: name, onChange: (e) => setName(e.target.value), placeholder: t('tabsAlertstab.enterAlertNamePlaceholder'), required: true })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { children: t('tabsAlertstab.watchedUsersLabel') }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t('tabsAlertstab.watchedUsersDescription') }), watchedUsers.length > 0 ? (jsx("div", { className: "space-y-2 max-h-48 overflow-y-auto border border-gray-200 dark:border-gray-700 rounded-md p-2", children: watchedUsers.map((user) => (jsxs("div", { className: "flex items-center justify-between bg-gray-50 dark:bg-gray-800 p-2 rounded-md", children: [jsxs("div", { className: "flex flex-col", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: user.name || user.username }), user.email && (jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: user.email }))] }), jsx(Button$1, { type: "button", variant: "ghost", size: "sm", onClick: () => removeWatchedUserDraft(user.id), className: "h-8 w-8 p-0 text-red-600 hover:text-red-700 hover:bg-red-50 dark:hover:bg-red-900/20", "aria-label": t('tabsAlertstab.removeWatchedUserAriaLabel', {
|
|
188486
188530
|
username: user.username,
|
|
188487
188531
|
}), children: jsx(X$1, { className: "h-4 w-4" }) })] }, user.id))) })) : (jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400 p-4 text-center border border-dashed border-gray-300 dark:border-gray-600 rounded-md", children: t('tabsAlertstab.noWatchedUsersAdded') })), jsxs("div", { className: "relative", children: [jsx(Input, { value: watchedUserSearch, onChange: (e) => {
|
|
188488
188532
|
setWatchedUserSearch(e.target.value);
|
|
@@ -189805,8 +189849,8 @@ function BlocksView({ platformKey, onBack, }) {
|
|
|
189805
189849
|
}
|
|
189806
189850
|
|
|
189807
189851
|
const FILTER_ORDER = ['all', ...APPLICATION_STATUSES];
|
|
189808
|
-
const PAGE_SIZE$
|
|
189809
|
-
const SEARCH_DEBOUNCE_MS$
|
|
189852
|
+
const PAGE_SIZE$7 = 20;
|
|
189853
|
+
const SEARCH_DEBOUNCE_MS$3 = 300;
|
|
189810
189854
|
/**
|
|
189811
189855
|
* The public application URL on the auth SPA for one form of a platform
|
|
189812
189856
|
* (`<auth-url>/applications/<platform-key>/<form-id>?redirect-to=<origin>`), or
|
|
@@ -189917,7 +189961,7 @@ function SubmissionsPipeline({ platformKey, form, onBack, onOpen, }) {
|
|
|
189917
189961
|
const timer = setTimeout(() => {
|
|
189918
189962
|
setDebouncedSearch(search.trim());
|
|
189919
189963
|
setDebouncedCandidateFilter(candidateFilter.trim());
|
|
189920
|
-
}, SEARCH_DEBOUNCE_MS$
|
|
189964
|
+
}, SEARCH_DEBOUNCE_MS$3);
|
|
189921
189965
|
return () => clearTimeout(timer);
|
|
189922
189966
|
}, [search, candidateFilter]);
|
|
189923
189967
|
// New filters restart paging.
|
|
@@ -189940,7 +189984,7 @@ function SubmissionsPipeline({ platformKey, form, onBack, onOpen, }) {
|
|
|
189940
189984
|
...(sort !== '-created' ? { sort } : {}),
|
|
189941
189985
|
...candidateParams,
|
|
189942
189986
|
page,
|
|
189943
|
-
page_size: PAGE_SIZE$
|
|
189987
|
+
page_size: PAGE_SIZE$7,
|
|
189944
189988
|
}, {
|
|
189945
189989
|
refetchOnMountOrArgChange: true,
|
|
189946
189990
|
});
|
|
@@ -189949,7 +189993,7 @@ function SubmissionsPipeline({ platformKey, form, onBack, onOpen, }) {
|
|
|
189949
189993
|
: [];
|
|
189950
189994
|
const rows = form ? allRows.filter((row) => row.form_id === form.id) : allRows;
|
|
189951
189995
|
const count = typeof (pipeline === null || pipeline === void 0 ? void 0 : pipeline.count) === 'number' ? pipeline.count : allRows.length;
|
|
189952
|
-
const totalPages = Math.max(1, Math.ceil(count / PAGE_SIZE$
|
|
189996
|
+
const totalPages = Math.max(1, Math.ceil(count / PAGE_SIZE$7));
|
|
189953
189997
|
const counts = statsCounts(stats);
|
|
189954
189998
|
const countFor = (key) => {
|
|
189955
189999
|
if (!stats)
|
|
@@ -189987,7 +190031,7 @@ function SubmissionsPipeline({ platformKey, form, onBack, onOpen, }) {
|
|
|
189987
190031
|
}) }) }), jsx("td", { className: "whitespace-nowrap px-6 py-4 text-sm text-gray-600 dark:text-gray-300", children: formatDate(row) }), jsx("td", { className: "px-6 py-4", children: jsx(Badge, { variant: "outline", className: approvalTone(row.status), children: STATUS_LABEL_KEYS[row.status]
|
|
189988
190032
|
? t(STATUS_LABEL_KEYS[row.status])
|
|
189989
190033
|
: row.status }) })] }, row.id));
|
|
189990
|
-
})) })] }) }), jsx(AdvancedPagination, { variant: "footer", className: "-mx-6 -mb-6 mt-4 rounded-b-lg", totalPages: totalPages, currentPage: page, onPageChange: (newPage) => setPage(newPage), totalCount: count, itemsPerPage: PAGE_SIZE$
|
|
190034
|
+
})) })] }) }), jsx(AdvancedPagination, { variant: "footer", className: "-mx-6 -mb-6 mt-4 rounded-b-lg", totalPages: totalPages, currentPage: page, onPageChange: (newPage) => setPage(newPage), totalCount: count, itemsPerPage: PAGE_SIZE$7, itemLabel: "applications" })] }))] }));
|
|
189991
190035
|
}
|
|
189992
190036
|
|
|
189993
190037
|
// The user-onboarding form contract: the schema an admin authors in the admin
|
|
@@ -195876,7 +195920,7 @@ function ItemSearchDropdown({ platformKey, onSelect, }) {
|
|
|
195876
195920
|
}, children: [jsx("div", { className: "flex-1 min-w-0", children: jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 block truncate", children: item.name }) }), jsx(Badge, { variant: "secondary", className: "text-xs shrink-0 capitalize", children: displayItemType(item.itemType) })] }, `${item.itemType}-${item.id}`)))) : isFetching ? (jsx("div", { className: "px-3 py-4 text-center text-sm text-gray-400", children: t('monetizationItemSearchDropdown.searching') })) : (jsx("div", { className: "px-3 py-4 text-center text-sm text-gray-400", children: t('monetizationItemSearchDropdown.noItemsFound') })) }))] }));
|
|
195877
195921
|
}
|
|
195878
195922
|
|
|
195879
|
-
const PAGE_SIZE$
|
|
195923
|
+
const PAGE_SIZE$6 = 8;
|
|
195880
195924
|
function PaywalledItemsList({ platformKey, onSelectItem, onAddCustomItem, }) {
|
|
195881
195925
|
const t = useT();
|
|
195882
195926
|
const [page, setPage] = useState(1);
|
|
@@ -195884,7 +195928,7 @@ function PaywalledItemsList({ platformKey, onSelectItem, onAddCustomItem, }) {
|
|
|
195884
195928
|
const { data: paywalls, isLoading } = useListPaywallsQuery({
|
|
195885
195929
|
platform_key: platformKey,
|
|
195886
195930
|
page,
|
|
195887
|
-
page_size: PAGE_SIZE$
|
|
195931
|
+
page_size: PAGE_SIZE$6,
|
|
195888
195932
|
...(statusFilter !== 'all' && { is_enabled: statusFilter === 'active' }),
|
|
195889
195933
|
}, { refetchOnMountOrArgChange: true });
|
|
195890
195934
|
return (jsxs("div", { className: "space-y-4", children: [jsx(Card, { className: "shadow-sm border", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", children: [jsx("h4", { className: "text-sm font-medium text-gray-700 dark:text-gray-300 mb-3", children: t('monetizationPaywalledItemsList.configureItemForSale') }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(ItemSearchDropdown, { platformKey: platformKey, onSelect: (itemType, uniqueId, name) => onSelectItem(itemType, uniqueId, name) }), jsx(Button$1, { variant: "outline", size: "icon", onClick: onAddCustomItem, className: "shrink-0 cursor-pointer", title: t('monetizationPaywalledItemsList.addCustomItemTitle'), children: jsx(Plus, { className: "h-4 w-4" }) })] })] }) }), jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsx("h4", { className: "text-sm font-medium text-gray-500", children: t('monetizationPaywalledItemsList.configuredItems') }), jsxs(Select$1, { value: statusFilter, onValueChange: (v) => {
|
|
@@ -195907,7 +195951,7 @@ function PaywalledItemsList({ platformKey, onSelectItem, onAddCustomItem, }) {
|
|
|
195907
195951
|
: 'bg-gray-100 text-gray-500 border-gray-200 hover:bg-gray-100', children: pw.is_enabled
|
|
195908
195952
|
? t('monetizationPaywalledItemsList.statusActive')
|
|
195909
195953
|
: t('monetizationPaywalledItemsList.statusDisabled') })] }) }, `${pw.item_type}-${pw.item_id}`));
|
|
195910
|
-
}), jsx(AdvancedPagination, { variant: "footer", className: "mt-2 rounded-lg border", currentPage: page, totalPages: Math.ceil(paywalls.count / PAGE_SIZE$
|
|
195954
|
+
}), jsx(AdvancedPagination, { variant: "footer", className: "mt-2 rounded-lg border", currentPage: page, totalPages: Math.ceil(paywalls.count / PAGE_SIZE$6), onPageChange: setPage, totalCount: paywalls.count, itemsPerPage: PAGE_SIZE$6, itemLabel: "items" })] })) : (jsx("p", { className: "text-sm text-gray-400 text-center py-6", children: statusFilter !== 'all'
|
|
195911
195955
|
? t('monetizationPaywalledItemsList.noFilteredItemsFound', { status: statusFilter })
|
|
195912
195956
|
: t('monetizationPaywalledItemsList.noItemsConfigured') }))] })] }));
|
|
195913
195957
|
}
|
|
@@ -196257,6 +196301,514 @@ function MonetizationTab({ platformKey, authURL }) {
|
|
|
196257
196301
|
return (jsxs("div", { className: "container mx-auto max-w-7xl !mt-0 space-y-6", children: [isOwner && jsx(StripeConnect, { platformKey: platformKey }), jsx(PaywallConfig, { platformKey: platformKey, authURL: authURL, disabled: !isStripeReady })] }));
|
|
196258
196302
|
}
|
|
196259
196303
|
|
|
196304
|
+
/** Matches the server-side cap on the global memories listing. */
|
|
196305
|
+
const PAGE_SIZE$5 = 25;
|
|
196306
|
+
/**
|
|
196307
|
+
* Popup for managing one user's global memories. Reads them the way the
|
|
196308
|
+
* profile preview does — the caller in the path, the managed user identified
|
|
196309
|
+
* by their id (username) in `user_id` — while writes address the managed
|
|
196310
|
+
* user's path directly, which the backend resolves for admin/RBAC callers.
|
|
196311
|
+
* The list itself is the same {@link MemoriesList} the profile Memory tab
|
|
196312
|
+
* renders.
|
|
196313
|
+
*/
|
|
196314
|
+
function UserMemoriesModal({ isOpen, onClose, tenantKey, adminUsername, user, }) {
|
|
196315
|
+
var _a, _b, _c;
|
|
196316
|
+
const t = useT();
|
|
196317
|
+
const [page, setPage] = useState(1);
|
|
196318
|
+
const [showAdd, setShowAdd] = useState(false);
|
|
196319
|
+
const [editingMemory, setEditingMemory] = useState(null);
|
|
196320
|
+
const [deletingId, setDeletingId] = useState(null);
|
|
196321
|
+
const { data: memoriesData, isLoading, error, } = useGetGlobalMemoriesQuery({
|
|
196322
|
+
org: tenantKey,
|
|
196323
|
+
userId: adminUsername,
|
|
196324
|
+
// `user_id` must be the managed user's id (username) — the backend does
|
|
196325
|
+
// not resolve emails here, so passing one returns an empty list.
|
|
196326
|
+
params: { page, page_size: PAGE_SIZE$5, user_id: user.username },
|
|
196327
|
+
});
|
|
196328
|
+
const memories = (_a = memoriesData === null || memoriesData === void 0 ? void 0 : memoriesData.results) !== null && _a !== void 0 ? _a : [];
|
|
196329
|
+
const totalPages = (memoriesData === null || memoriesData === void 0 ? void 0 : memoriesData.count) ? Math.ceil(memoriesData.count / PAGE_SIZE$5) : 0;
|
|
196330
|
+
const isForbidden = !!error && error.status === 403;
|
|
196331
|
+
// The managed user's capture/personalization toggles, addressed through
|
|
196332
|
+
// their path the way every admin write here is. Hidden unless they load.
|
|
196333
|
+
const { data: settings } = useGetUserMemorySettingsQuery({
|
|
196334
|
+
org: tenantKey,
|
|
196335
|
+
userId: user.username,
|
|
196336
|
+
});
|
|
196337
|
+
const [updateSettings, { isLoading: isUpdatingSettings }] = useUpdateUserMemorySettingsMutation();
|
|
196338
|
+
const handleToggleSetting = async (key, checked) => {
|
|
196339
|
+
try {
|
|
196340
|
+
await updateSettings({
|
|
196341
|
+
org: tenantKey,
|
|
196342
|
+
userId: user.username,
|
|
196343
|
+
settings: { [key]: checked },
|
|
196344
|
+
}).unwrap();
|
|
196345
|
+
toast.success(t('memoryMemoryTab.memorySettingUpdated'));
|
|
196346
|
+
}
|
|
196347
|
+
catch (_a) {
|
|
196348
|
+
toast.error(t('memoryMemoryTab.failedToUpdateMemorySetting'));
|
|
196349
|
+
}
|
|
196350
|
+
};
|
|
196351
|
+
const [deleteMemory] = useDeleteGlobalMemoryMutation();
|
|
196352
|
+
const handleDeleteMemory = async (memory) => {
|
|
196353
|
+
setDeletingId(memory.id);
|
|
196354
|
+
try {
|
|
196355
|
+
await deleteMemory({
|
|
196356
|
+
org: tenantKey,
|
|
196357
|
+
userId: user.username,
|
|
196358
|
+
memoryId: memory.id,
|
|
196359
|
+
}).unwrap();
|
|
196360
|
+
toast.success(t('memoryAdminUserMemoriesModal.memoryDeleted'));
|
|
196361
|
+
}
|
|
196362
|
+
catch (deleteError) {
|
|
196363
|
+
if ((deleteError === null || deleteError === void 0 ? void 0 : deleteError.status) === 403) {
|
|
196364
|
+
toast.error(t('memoryAdminTab.forbidden'));
|
|
196365
|
+
}
|
|
196366
|
+
else {
|
|
196367
|
+
toast.error(t('memoryAdminUserMemoriesModal.failedToDeleteMemory'));
|
|
196368
|
+
}
|
|
196369
|
+
}
|
|
196370
|
+
finally {
|
|
196371
|
+
setDeletingId(null);
|
|
196372
|
+
}
|
|
196373
|
+
};
|
|
196374
|
+
return (jsx(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose(), children: jsxs(DialogContent, { "data-testid": "user-memories-modal", "aria-label": "user-global-memories", className: "w-full max-w-3xl max-h-[90vh] overflow-y-auto", children: [jsxs(DialogHeader, { children: [jsxs(DialogTitle, { children: [t('memoryAdminUserMemoriesModal.title'), " \u2014 ", user.email || user.username] }), jsx(DialogDescription, { children: t('memoryAdminUserMemoriesModal.description') })] }), settings && (jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between rounded-lg border px-6 py-5", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsxs("div", { className: "flex-1 mr-4", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: t('memoryMemoryTab.autoCaptureLabelTitle') }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: t('memoryMemoryTab.autoCaptureLabelDesc') })] }), jsx(Switch, { checked: (_b = settings.auto_capture_enabled) !== null && _b !== void 0 ? _b : false, onCheckedChange: (checked) => handleToggleSetting('auto_capture_enabled', checked), disabled: isUpdatingSettings, "aria-label": t('memoryMemoryTab.autoCaptureAriaLabel', {
|
|
196375
|
+
state: settings.auto_capture_enabled
|
|
196376
|
+
? t('memoryMemoryTab.stateEnabled')
|
|
196377
|
+
: t('memoryMemoryTab.stateDisabled'),
|
|
196378
|
+
}), className: "cursor-pointer data-[state=checked]:bg-blue-500 flex-shrink-0" })] }), jsxs("div", { className: "flex items-center justify-between rounded-lg border px-6 py-5", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsxs("div", { className: "flex-1 mr-4", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: t('memoryMemoryTab.useMemoryLabelTitle') }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: t('memoryMemoryTab.useMemoryLabelDesc') })] }), jsx(Switch, { checked: (_c = settings.use_memory_in_responses) !== null && _c !== void 0 ? _c : false, onCheckedChange: (checked) => handleToggleSetting('use_memory_in_responses', checked), disabled: isUpdatingSettings, "aria-label": t('memoryMemoryTab.useMemoryAriaLabel', {
|
|
196379
|
+
state: settings.use_memory_in_responses
|
|
196380
|
+
? t('memoryMemoryTab.stateEnabled')
|
|
196381
|
+
: t('memoryMemoryTab.stateDisabled'),
|
|
196382
|
+
}), className: "cursor-pointer data-[state=checked]:bg-blue-500 flex-shrink-0" })] })] })), !isForbidden && (jsx("div", { className: "flex justify-end mb-4", children: jsxs(Button$1, { "data-testid": "user-memories-add", variant: "outline", size: "sm", onClick: () => setShowAdd(true), className: "text-xs", children: [jsx(Plus, { className: "h-3 w-3 mr-1" }), t('memoryAdminUserMemoriesModal.addMemoryButton')] }) })), isForbidden ? (jsx("div", { className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: t('memoryAdminUserMemoriesModal.forbidden') }) })) : error ? (jsx("div", { className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: t('memoryAdminUserMemoriesModal.failedToLoad') }) })) : (jsx(MemoriesList, { memories: memories, isLoading: isLoading, emptyText: t('memoryAdminUserMemoriesModal.noMemories'), deletingId: deletingId, onEdit: setEditingMemory, onDelete: handleDeleteMemory, totalPages: totalPages, currentPage: page, onPageChange: setPage })), jsx(AddMemoryDialog, { open: showAdd, onOpenChange: setShowAdd, org: tenantKey, username: user.username }), editingMemory && (jsx(EditMemoryDialog, { open: !!editingMemory, onOpenChange: (open) => !open && setEditingMemory(null), org: tenantKey, username: user.username, memory: editingMemory }))] }) }));
|
|
196383
|
+
}
|
|
196384
|
+
|
|
196385
|
+
const PAGE_SIZE$4 = 10;
|
|
196386
|
+
const SEARCH_DEBOUNCE_MS$2 = 300;
|
|
196387
|
+
/**
|
|
196388
|
+
* Tenant users table with server-side search. Opening a row shows that user's
|
|
196389
|
+
* global memories in a popup where the admin can manage them.
|
|
196390
|
+
*/
|
|
196391
|
+
function GlobalMemoriesSection({ tenantKey, username }) {
|
|
196392
|
+
var _a;
|
|
196393
|
+
const t = useT();
|
|
196394
|
+
const [page, setPage] = useState(1);
|
|
196395
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
196396
|
+
const [debouncedSearch, setDebouncedSearch] = useState(searchQuery);
|
|
196397
|
+
const [selectedUser, setSelectedUser] = useState(null);
|
|
196398
|
+
// Same debounce contract as the Management tab's user search: terms shorter
|
|
196399
|
+
// than three characters search as empty. Bailing out on an unchanged value
|
|
196400
|
+
// keeps the mount-time timer from resetting a page the user already turned.
|
|
196401
|
+
useEffect(() => {
|
|
196402
|
+
const handler = setTimeout(() => {
|
|
196403
|
+
setDebouncedSearch((previous) => {
|
|
196404
|
+
const next = searchQuery.length > 2 ? searchQuery : '';
|
|
196405
|
+
return previous === next ? previous : next;
|
|
196406
|
+
});
|
|
196407
|
+
}, SEARCH_DEBOUNCE_MS$2);
|
|
196408
|
+
return () => clearTimeout(handler);
|
|
196409
|
+
}, [searchQuery]);
|
|
196410
|
+
// A new search term invalidates the current page index.
|
|
196411
|
+
useEffect(() => {
|
|
196412
|
+
setPage(1);
|
|
196413
|
+
}, [debouncedSearch]);
|
|
196414
|
+
const { data, isLoading, isFetching, error } = usePlatformUsersQuery({
|
|
196415
|
+
platform_key: tenantKey,
|
|
196416
|
+
platform_org: tenantKey,
|
|
196417
|
+
page,
|
|
196418
|
+
page_size: PAGE_SIZE$4,
|
|
196419
|
+
query: debouncedSearch,
|
|
196420
|
+
return_policies: 'false',
|
|
196421
|
+
});
|
|
196422
|
+
const users = useMemo(() => {
|
|
196423
|
+
var _a;
|
|
196424
|
+
// `results` is a bare array unless policies were requested, in which case
|
|
196425
|
+
// the users sit under `results.data`.
|
|
196426
|
+
const results = data === null || data === void 0 ? void 0 : data.results;
|
|
196427
|
+
const platformUsers = Array.isArray(results)
|
|
196428
|
+
? results
|
|
196429
|
+
: ((_a = results === null || results === void 0 ? void 0 : results.data) !== null && _a !== void 0 ? _a : []);
|
|
196430
|
+
// A user without a username cannot be addressed by the memory endpoints.
|
|
196431
|
+
return platformUsers
|
|
196432
|
+
.filter((user) => !!user.username)
|
|
196433
|
+
.map((user) => ({
|
|
196434
|
+
username: user.username,
|
|
196435
|
+
name: user.name,
|
|
196436
|
+
email: user.email,
|
|
196437
|
+
}));
|
|
196438
|
+
}, [data]);
|
|
196439
|
+
const totalPages = Math.ceil(((_a = data === null || data === void 0 ? void 0 : data.count) !== null && _a !== void 0 ? _a : 0) / PAGE_SIZE$4);
|
|
196440
|
+
const isForbidden = !!error && error.status === 403;
|
|
196441
|
+
return (jsxs("div", { "data-testid": "memory-admin-global-section", children: [jsxs("div", { className: "relative mb-6 max-w-sm w-full sm:w-auto", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { "data-testid": "memory-admin-users-search", type: "text", value: searchQuery, onChange: (event) => setSearchQuery(event.target.value), placeholder: t('memoryAdminTab.searchUsersPlaceholder'), className: "pl-10 pr-10 focus:ring-blue-500 focus:border-blue-500 h-[35px]", "aria-label": t('memoryAdminTab.searchUsersAriaLabel') }), searchQuery.length > 0 && (searchQuery !== debouncedSearch || isFetching) && (jsx(LoaderCircle, { "data-testid": "user-search-spinner", className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] }), isForbidden ? (jsx("div", { className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: t('memoryAdminTab.forbidden') }) })) : isLoading ? (jsx("div", { className: "flex justify-center items-center h-64", children: jsx(Spinner, {}) })) : (jsxs(Fragment$1, { children: [jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[28%]", children: t('memoryAdminTab.nameColumn') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[26%]", children: t('memoryAdminTab.usernameColumn') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[30%]", children: t('memoryAdminTab.emailColumn') }), jsx("th", { className: "px-6 py-3 text-right font-medium text-gray-500 dark:text-gray-400 w-[16%]", children: t('memoryAdminTab.actionsColumn') })] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [users.map((user) => (jsxs("tr", { "data-testid": `memory-admin-user-row-${user.username}`, children: [jsx("td", { className: "px-6 py-4 text-gray-900 dark:text-gray-100 max-w-0", children: jsx("div", { className: "truncate font-medium", children: user.name || '—' }) }), jsx("td", { className: "px-6 py-4 text-gray-600 dark:text-gray-300 max-w-0", children: jsx("div", { className: "truncate", children: user.username }) }), jsx("td", { className: "px-6 py-4 text-gray-600 dark:text-gray-300 max-w-0", children: jsx("div", { className: "truncate", children: user.email || '—' }) }), jsx("td", { className: "px-6 py-4", children: jsx("div", { className: "flex justify-end gap-2", children: jsx(Button$1, { "data-testid": `memory-admin-user-view-${user.username}`, variant: "ghost", size: "sm", "aria-label": t('memoryAdminTab.viewMemoriesAriaLabel', {
|
|
196442
|
+
name: user.email || user.username,
|
|
196443
|
+
}), onClick: () => setSelectedUser(user), children: jsx(Eye, { className: "h-4 w-4" }) }) }) })] }, user.username))), users.length === 0 && (jsx("tr", { children: jsx("td", { colSpan: 4, className: "px-6 py-8 text-center text-gray-500 dark:text-gray-400", children: isFetching ? t('memoryAdminTab.loading') : t('memoryAdminTab.noUsersFound') }) }))] })] }) }), totalPages > 1 && (jsx("div", { className: "mt-6", children: jsx(IblPagination, { totalPages: totalPages, currentPage: page, onPageChange: setPage, disabled: isFetching }) }))] })), selectedUser && (jsx(UserMemoriesModal, { isOpen: !!selectedUser, onClose: () => setSelectedUser(null), tenantKey: tenantKey, adminUsername: username, user: selectedUser }))] }));
|
|
196444
|
+
}
|
|
196445
|
+
|
|
196446
|
+
const EditMemoryModal$1 = dynamic(() => Promise.resolve().then(function () { return editMemoryModal; }).then((module) => ({
|
|
196447
|
+
default: module.EditMemoryModal,
|
|
196448
|
+
})), { ssr: false });
|
|
196449
|
+
const AddMemoryModal$1 = dynamic(() => Promise.resolve().then(function () { return addMemoryModal; }).then((module) => ({
|
|
196450
|
+
default: module.AddMemoryModal,
|
|
196451
|
+
})), { ssr: false });
|
|
196452
|
+
const DeleteMemoryModal = dynamic(() => Promise.resolve().then(function () { return deleteMemoryModal; }).then((module) => ({
|
|
196453
|
+
default: module.DeleteMemoryModal,
|
|
196454
|
+
})), { ssr: false });
|
|
196455
|
+
const BulkDeleteMemoryModal$1 = dynamic(() => Promise.resolve().then(function () { return bulkDeleteMemoryModal; }).then((module) => ({
|
|
196456
|
+
default: module.BulkDeleteMemoryModal,
|
|
196457
|
+
})), { ssr: false });
|
|
196458
|
+
const ManageCategoriesModal$1 = dynamic(() => Promise.resolve().then(function () { return manageCategoriesModal; }).then((module) => ({
|
|
196459
|
+
default: module.ManageCategoriesModal,
|
|
196460
|
+
})), { ssr: false });
|
|
196461
|
+
const PAGE_SIZE$3 = 20;
|
|
196462
|
+
const SNAPSHOT_PAGE_SIZE = 1000;
|
|
196463
|
+
function ManageMemories({ tenantKey, username, mentorId }) {
|
|
196464
|
+
var _a, _b, _c, _d, _e;
|
|
196465
|
+
const t = useT();
|
|
196466
|
+
const [selectedLearner, setSelectedLearner] = useState('');
|
|
196467
|
+
const [dateRange, setDateRange] = useState(undefined);
|
|
196468
|
+
const [selectedCategorySlug, setSelectedCategorySlug] = useState('all');
|
|
196469
|
+
const [page, setPage] = useState(1);
|
|
196470
|
+
// Reset to page 1 whenever any filter changes — otherwise we could land on a
|
|
196471
|
+
// page index that no longer exists in the new result set.
|
|
196472
|
+
useEffect(() => {
|
|
196473
|
+
setPage(1);
|
|
196474
|
+
}, [selectedLearner, dateRange, selectedCategorySlug]);
|
|
196475
|
+
const listParams = useMemo(() => {
|
|
196476
|
+
const params = { page, page_size: PAGE_SIZE$3 };
|
|
196477
|
+
if (selectedLearner)
|
|
196478
|
+
params.email = selectedLearner;
|
|
196479
|
+
if (selectedCategorySlug !== 'all')
|
|
196480
|
+
params.category = selectedCategorySlug;
|
|
196481
|
+
if (dateRange === null || dateRange === void 0 ? void 0 : dateRange.from)
|
|
196482
|
+
params.start_date = format$1(dateRange.from, 'yyyy-MM-dd');
|
|
196483
|
+
if (dateRange === null || dateRange === void 0 ? void 0 : dateRange.to)
|
|
196484
|
+
params.end_date = format$1(dateRange.to, 'yyyy-MM-dd');
|
|
196485
|
+
return params;
|
|
196486
|
+
}, [page, selectedLearner, selectedCategorySlug, dateRange]);
|
|
196487
|
+
const { data: listResponse, isLoading: isLoadingMemories } = useGetMentorMemoriesListQuery({
|
|
196488
|
+
org: tenantKey,
|
|
196489
|
+
userId: username !== null && username !== void 0 ? username : '',
|
|
196490
|
+
mentorId,
|
|
196491
|
+
params: listParams,
|
|
196492
|
+
}, {
|
|
196493
|
+
skip: !tenantKey || !username || !mentorId,
|
|
196494
|
+
});
|
|
196495
|
+
const totalPages = Math.max(1, Math.ceil(((_a = listResponse === null || listResponse === void 0 ? void 0 : listResponse.count) !== null && _a !== void 0 ? _a : 0) / PAGE_SIZE$3));
|
|
196496
|
+
const { data: adminCategories } = useGetMemoryCategoriesAdminQuery({
|
|
196497
|
+
org: tenantKey,
|
|
196498
|
+
mentorId,
|
|
196499
|
+
}, {
|
|
196500
|
+
skip: !tenantKey || !mentorId,
|
|
196501
|
+
});
|
|
196502
|
+
const [deleteMentorMemory, { isLoading: isDeleting }] = useDeleteMentorMemoryMutation();
|
|
196503
|
+
const [updateMentorMemory, { isLoading: isEditing }] = useUpdateMentorMemoryMutation();
|
|
196504
|
+
const [createMentorMemory, { isLoading: isSaving }] = useCreateMentorMemoryMutation();
|
|
196505
|
+
// Flat list of memories on the current page, mapped into the local `Memory`
|
|
196506
|
+
// shape used by the rest of this component.
|
|
196507
|
+
const memories = useMemo(() => {
|
|
196508
|
+
if (!(listResponse === null || listResponse === void 0 ? void 0 : listResponse.results))
|
|
196509
|
+
return [];
|
|
196510
|
+
return listResponse.results.map((memory) => ({
|
|
196511
|
+
id: memory.id,
|
|
196512
|
+
content: memory.content,
|
|
196513
|
+
category: {
|
|
196514
|
+
id: memory.category.id,
|
|
196515
|
+
name: memory.category.name,
|
|
196516
|
+
slug: memory.category.slug,
|
|
196517
|
+
},
|
|
196518
|
+
email: memory.email,
|
|
196519
|
+
createdAt: memory.created_at,
|
|
196520
|
+
}));
|
|
196521
|
+
}, [listResponse]);
|
|
196522
|
+
// Unfiltered snapshot used to derive the learner dropdown and to source the
|
|
196523
|
+
// bulk-delete operation, which needs the full set of memories — not just the
|
|
196524
|
+
// current page.
|
|
196525
|
+
const { data: snapshotResponse } = useGetMentorMemoriesListQuery({
|
|
196526
|
+
org: tenantKey,
|
|
196527
|
+
userId: username !== null && username !== void 0 ? username : '',
|
|
196528
|
+
mentorId,
|
|
196529
|
+
params: { page: 1, page_size: SNAPSHOT_PAGE_SIZE },
|
|
196530
|
+
}, {
|
|
196531
|
+
skip: !tenantKey || !username || !mentorId,
|
|
196532
|
+
});
|
|
196533
|
+
const learners = useMemo(() => {
|
|
196534
|
+
if (!(snapshotResponse === null || snapshotResponse === void 0 ? void 0 : snapshotResponse.results))
|
|
196535
|
+
return [];
|
|
196536
|
+
const emailSet = new Set();
|
|
196537
|
+
snapshotResponse.results.forEach((m) => {
|
|
196538
|
+
if (m.email)
|
|
196539
|
+
emailSet.add(m.email);
|
|
196540
|
+
});
|
|
196541
|
+
return Array.from(emailSet).map((email) => ({ email }));
|
|
196542
|
+
}, [snapshotResponse]);
|
|
196543
|
+
const categories = useMemo(() => {
|
|
196544
|
+
if (adminCategories && adminCategories.length > 0) {
|
|
196545
|
+
return [
|
|
196546
|
+
{ id: 0, name: 'All', slug: 'all' },
|
|
196547
|
+
...adminCategories.map((cat) => ({
|
|
196548
|
+
id: cat.id,
|
|
196549
|
+
name: cat.name,
|
|
196550
|
+
slug: cat.slug,
|
|
196551
|
+
})),
|
|
196552
|
+
];
|
|
196553
|
+
}
|
|
196554
|
+
return [{ id: 0, name: 'All', slug: 'all' }];
|
|
196555
|
+
}, [adminCategories]);
|
|
196556
|
+
const [editingMemory, setEditingMemory] = useState(null);
|
|
196557
|
+
const [editContent, setEditContent] = useState('');
|
|
196558
|
+
const [editCategory, setEditCategory] = useState('');
|
|
196559
|
+
const [showDeleteConfirm, setShowDeleteConfirm] = useState(null);
|
|
196560
|
+
const [showAddMemory, setShowAddMemory] = useState(false);
|
|
196561
|
+
const [newMemoryContent, setNewMemoryContent] = useState('');
|
|
196562
|
+
const [newMemoryCategory, setNewMemoryCategory] = useState('');
|
|
196563
|
+
const [showMobileDropdown, setShowMobileDropdown] = useState(false);
|
|
196564
|
+
const [showBulkDeleteConfirm, setShowBulkDeleteConfirm] = useState(false);
|
|
196565
|
+
const [isBulkDeleting, setIsBulkDeleting] = useState(false);
|
|
196566
|
+
const [showManageCategories, setShowManageCategories] = useState(false);
|
|
196567
|
+
const selectedCategoryName = (_c = (_b = categories.find((c) => c.slug === selectedCategorySlug)) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : t('memoryTabManageMemories.all');
|
|
196568
|
+
const VISIBLE_CATEGORY_LIMIT = 6;
|
|
196569
|
+
const visibleCategories = categories.slice(0, VISIBLE_CATEGORY_LIMIT);
|
|
196570
|
+
const overflowCategories = categories.slice(VISIBLE_CATEGORY_LIMIT);
|
|
196571
|
+
const overflowSelected = overflowCategories.find((c) => c.slug === selectedCategorySlug);
|
|
196572
|
+
// Category is filtered server-side via the `category` query param now, so
|
|
196573
|
+
// `memories` already contains only the relevant entries for the page.
|
|
196574
|
+
const filteredMemories = memories;
|
|
196575
|
+
const handleDeleteMemory = async (id) => {
|
|
196576
|
+
if (!tenantKey || !username)
|
|
196577
|
+
return;
|
|
196578
|
+
try {
|
|
196579
|
+
await deleteMentorMemory({
|
|
196580
|
+
org: tenantKey,
|
|
196581
|
+
userId: username,
|
|
196582
|
+
mentorId,
|
|
196583
|
+
memoryId: id,
|
|
196584
|
+
}).unwrap();
|
|
196585
|
+
setShowDeleteConfirm(null);
|
|
196586
|
+
toast.success(t('memoryTabManageMemories.memoryDeletedSuccessfully'));
|
|
196587
|
+
}
|
|
196588
|
+
catch (error) {
|
|
196589
|
+
console.error('Failed to delete memory:', error);
|
|
196590
|
+
toast.error(t('memoryTabManageMemories.failedToDeleteMemory'));
|
|
196591
|
+
}
|
|
196592
|
+
};
|
|
196593
|
+
const handleBulkDelete = async () => {
|
|
196594
|
+
var _a;
|
|
196595
|
+
if (!tenantKey || !username)
|
|
196596
|
+
return;
|
|
196597
|
+
setIsBulkDeleting(true);
|
|
196598
|
+
try {
|
|
196599
|
+
// Source bulk-delete from the unfiltered snapshot — `memories` only holds
|
|
196600
|
+
// the current page, while bulk delete must remove every entry in the
|
|
196601
|
+
// selected category.
|
|
196602
|
+
const memoriesToDelete = ((_a = snapshotResponse === null || snapshotResponse === void 0 ? void 0 : snapshotResponse.results) !== null && _a !== void 0 ? _a : []).filter((memory) => memory.category.slug === selectedCategorySlug);
|
|
196603
|
+
await Promise.all(memoriesToDelete.map((memory) => deleteMentorMemory({
|
|
196604
|
+
org: tenantKey,
|
|
196605
|
+
userId: username,
|
|
196606
|
+
mentorId,
|
|
196607
|
+
memoryId: memory.id,
|
|
196608
|
+
}).unwrap()));
|
|
196609
|
+
toast.success(t('memoryTabManageMemories.allCategoryMemoriesDeleted', { category: selectedCategoryName }));
|
|
196610
|
+
setShowBulkDeleteConfirm(false);
|
|
196611
|
+
}
|
|
196612
|
+
catch (error) {
|
|
196613
|
+
console.error('Failed to delete memories:', error);
|
|
196614
|
+
toast.error(t('memoryTabManageMemories.failedToDeleteMemories'));
|
|
196615
|
+
}
|
|
196616
|
+
finally {
|
|
196617
|
+
setIsBulkDeleting(false);
|
|
196618
|
+
}
|
|
196619
|
+
};
|
|
196620
|
+
const startEdit = (memory) => {
|
|
196621
|
+
setEditingMemory(memory);
|
|
196622
|
+
setEditContent(memory.content);
|
|
196623
|
+
setEditCategory(memory.category.name);
|
|
196624
|
+
};
|
|
196625
|
+
const saveEdit = async () => {
|
|
196626
|
+
if (!editingMemory || !tenantKey || !username)
|
|
196627
|
+
return;
|
|
196628
|
+
try {
|
|
196629
|
+
const selectedCat = categories.find((c) => c.name === editCategory);
|
|
196630
|
+
const categoryChanged = !!selectedCat && selectedCat.slug !== editingMemory.category.slug;
|
|
196631
|
+
await updateMentorMemory({
|
|
196632
|
+
org: tenantKey,
|
|
196633
|
+
userId: username,
|
|
196634
|
+
mentorId,
|
|
196635
|
+
memoryId: editingMemory.id,
|
|
196636
|
+
data: {
|
|
196637
|
+
content: editContent,
|
|
196638
|
+
...(categoryChanged ? { category_slug: selectedCat.slug } : {}),
|
|
196639
|
+
},
|
|
196640
|
+
}).unwrap();
|
|
196641
|
+
toast.success(t('memoryTabManageMemories.memoryUpdatedSuccessfully'));
|
|
196642
|
+
// Follow the entry to its new category tab so the user doesn't lose
|
|
196643
|
+
// sight of it. Skip when viewing "All" — the entry is still visible.
|
|
196644
|
+
if (categoryChanged && selectedCategorySlug !== 'all') {
|
|
196645
|
+
setSelectedCategorySlug(selectedCat.slug);
|
|
196646
|
+
}
|
|
196647
|
+
setEditingMemory(null);
|
|
196648
|
+
setEditContent('');
|
|
196649
|
+
setEditCategory('');
|
|
196650
|
+
}
|
|
196651
|
+
catch (error) {
|
|
196652
|
+
console.error('Failed to update memory:', error);
|
|
196653
|
+
toast.error(t('memoryTabManageMemories.failedToUpdateMemory'));
|
|
196654
|
+
}
|
|
196655
|
+
};
|
|
196656
|
+
const cancelEdit = () => {
|
|
196657
|
+
setEditingMemory(null);
|
|
196658
|
+
setEditContent('');
|
|
196659
|
+
setEditCategory('');
|
|
196660
|
+
};
|
|
196661
|
+
const startAddMemory = () => {
|
|
196662
|
+
setShowAddMemory(true);
|
|
196663
|
+
setNewMemoryCategory(selectedCategoryName);
|
|
196664
|
+
};
|
|
196665
|
+
const saveNewMemory = async () => {
|
|
196666
|
+
var _a;
|
|
196667
|
+
if (!newMemoryContent.trim() || !tenantKey || !username)
|
|
196668
|
+
return;
|
|
196669
|
+
try {
|
|
196670
|
+
const selectedCat = categories.find((c) => c.name === newMemoryCategory);
|
|
196671
|
+
const categorySlug = (_a = selectedCat === null || selectedCat === void 0 ? void 0 : selectedCat.slug) !== null && _a !== void 0 ? _a : selectedCategorySlug;
|
|
196672
|
+
await createMentorMemory({
|
|
196673
|
+
org: tenantKey,
|
|
196674
|
+
userId: username,
|
|
196675
|
+
mentorId,
|
|
196676
|
+
data: {
|
|
196677
|
+
category_slug: categorySlug === 'all' ? 'general' : categorySlug,
|
|
196678
|
+
content: newMemoryContent.trim(),
|
|
196679
|
+
},
|
|
196680
|
+
}).unwrap();
|
|
196681
|
+
setShowAddMemory(false);
|
|
196682
|
+
setNewMemoryContent('');
|
|
196683
|
+
setNewMemoryCategory('');
|
|
196684
|
+
if (selectedCat) {
|
|
196685
|
+
setSelectedCategorySlug(selectedCat.slug);
|
|
196686
|
+
}
|
|
196687
|
+
toast.success(t('memoryTabManageMemories.memoryCreatedSuccessfully'));
|
|
196688
|
+
}
|
|
196689
|
+
catch (error) {
|
|
196690
|
+
console.error('Failed to create memory:', error);
|
|
196691
|
+
toast.error(t('memoryTabManageMemories.failedToCreateMemory'));
|
|
196692
|
+
}
|
|
196693
|
+
};
|
|
196694
|
+
const cancelAddMemory = () => {
|
|
196695
|
+
setShowAddMemory(false);
|
|
196696
|
+
setNewMemoryContent('');
|
|
196697
|
+
setNewMemoryCategory('');
|
|
196698
|
+
};
|
|
196699
|
+
const categoryNames = categories.map((c) => c.name);
|
|
196700
|
+
return (jsxs(Fragment$1, { children: [jsxs("div", { className: "space-y-6", children: [jsx("div", { className: "rounded-lg border p-4", children: jsxs("div", { className: "flex flex-col gap-3 lg:flex-row", children: [jsx("div", { className: "relative min-w-[200px] flex-1", children: jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-label": t('memoryTabManageMemories.searchForUser'), className: "w-full justify-between bg-transparent font-normal", children: [selectedLearner
|
|
196701
|
+
? ((_e = (_d = learners.find((learner) => learner.email === selectedLearner)) === null || _d === void 0 ? void 0 : _d.email) !== null && _e !== void 0 ? _e : selectedLearner)
|
|
196702
|
+
: t('memoryTabManageMemories.searchForUser'), jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] }) }), jsx(PopoverContent, { className: "w-full p-0", align: "start", children: jsxs(Command, { children: [jsx(CommandInput, { placeholder: t('memoryTabManageMemories.searchUsersPlaceholder') }), jsxs(CommandList, { children: [jsx(CommandEmpty, { children: t('memoryTabManageMemories.noUsersFound') }), jsxs(CommandGroup, { children: [jsxs(CommandItem, { value: "", onSelect: () => {
|
|
196703
|
+
setSelectedLearner('');
|
|
196704
|
+
}, children: [jsx(Check, { className: cn('mr-2 h-4 w-4', !selectedLearner ? 'opacity-100' : 'opacity-0') }), t('memoryTabManageMemories.allUsers')] }), learners.map((learner) => (jsxs(CommandItem, { value: learner.email, onSelect: () => {
|
|
196705
|
+
setSelectedLearner(learner.email);
|
|
196706
|
+
}, children: [jsx(Check, { className: cn('mr-2 h-4 w-4', selectedLearner === learner.email ? 'opacity-100' : 'opacity-0') }), jsx("div", { className: "flex flex-col", children: jsx("span", { className: "font-medium text-gray-700", children: learner.email }) })] }, learner.email)))] })] })] }) })] }) }), jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", className: "flex w-full items-center gap-2 bg-transparent font-normal whitespace-nowrap lg:w-auto", children: [jsx(Calendar$1, { className: "h-4 w-4" }), (dateRange === null || dateRange === void 0 ? void 0 : dateRange.from) && (dateRange === null || dateRange === void 0 ? void 0 : dateRange.to)
|
|
196707
|
+
? `${format$1(dateRange.from, 'MMM dd')} - ${format$1(dateRange.to, 'MMM dd')}`
|
|
196708
|
+
: t('memoryTabManageMemories.pickDateRange')] }) }), jsx(PopoverContent, { className: "w-auto p-0", align: "start", children: jsx(Calendar, { mode: "range", selected: dateRange, onSelect: setDateRange, numberOfMonths: 2, initialFocus: true }) })] })] }) }), jsx("div", { children: jsxs("div", { className: "flex items-center justify-between gap-4", children: [jsxs("div", { className: "scrollbar-none hidden flex-1 items-center space-x-8 overflow-x-auto sm:flex", children: [visibleCategories.map((category) => (jsxs("button", { onClick: () => setSelectedCategorySlug(category.slug), className: `relative px-1 py-2 text-sm font-medium whitespace-nowrap transition-colors ${selectedCategorySlug === category.slug
|
|
196709
|
+
? 'text-[#38A1E5]'
|
|
196710
|
+
: 'text-gray-600 hover:text-gray-900'}`, children: [category.name, selectedCategorySlug === category.slug && (jsx("div", { className: "absolute bottom-0 left-1/2 h-0.5 -translate-x-1/2 transform bg-[#38A1E5] transition-all duration-200", style: { width: `${category.name.length * 0.55}em` } }))] }, category.slug))), overflowCategories.length > 0 && (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsxs("button", { className: cn('relative flex items-center gap-1 px-1 py-2 text-sm font-medium whitespace-nowrap transition-colors', overflowSelected ? 'text-[#38A1E5]' : 'text-gray-600 hover:text-gray-900'), "aria-label": t('memoryTabManageMemories.moreCategories'), children: [overflowSelected ? overflowSelected.name : t('memoryTabManageMemories.more'), jsx(ChevronDown, { className: "h-3.5 w-3.5" }), overflowSelected && (jsx("div", { className: "absolute bottom-0 left-0 h-0.5 bg-[#38A1E5] transition-all duration-200", style: {
|
|
196711
|
+
width: `${overflowSelected.name.length * 0.55}em`,
|
|
196712
|
+
} }))] }) }), jsx(DropdownMenuContent, { align: "end", children: overflowCategories.map((category) => (jsx(DropdownMenuItem, { onClick: () => setSelectedCategorySlug(category.slug), className: selectedCategorySlug === category.slug ? 'bg-gray-100' : '', children: category.name }, category.slug))) })] }))] }), jsx("div", { className: "w-full py-2 sm:hidden", children: jsxs(DropdownMenu, { open: showMobileDropdown, onOpenChange: setShowMobileDropdown, children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", className: "w-full justify-between bg-transparent", children: [selectedCategoryName, jsx(ChevronDown, { className: "h-4 w-4" })] }) }), jsx(DropdownMenuContent, { className: "w-full", children: categories.map((category) => (jsx(DropdownMenuItem, { onClick: () => {
|
|
196713
|
+
setSelectedCategorySlug(category.slug);
|
|
196714
|
+
setShowMobileDropdown(false);
|
|
196715
|
+
}, className: selectedCategorySlug === category.slug ? 'bg-gray-100' : '', children: category.name }, category.slug))) })] }) }), jsxs(Button$1, { onClick: () => setShowManageCategories(true), size: "sm", variant: "outline", className: "shrink-0", "aria-label": t('memoryTabManageMemories.manageCategories'), children: [jsx(Tags, { className: "h-4 w-4 sm:mr-2" }), jsx("span", { className: "hidden sm:inline", children: t('memoryTabManageMemories.categories') })] }), jsxs(Button$1, { onClick: startAddMemory, size: "sm", className: "ibl-button-primary shrink-0", children: [jsx(Plus, { className: "mr-1 h-4 w-4 sm:mr-2" }), jsx("span", { className: "hidden sm:inline", children: t('memoryTabManageMemories.addMemory') }), jsx("span", { className: "sm:hidden", children: t('memoryTabManageMemories.add') })] })] }) }), jsx("div", { className: "space-y-3 px-1 sm:px-0", children: isLoadingMemories ? (jsx("div", { className: "py-8 text-center text-gray-600", children: jsx("p", { children: t('memoryTabManageMemories.loadingMemories') }) })) : (filteredMemories.map((memory) => {
|
|
196716
|
+
const timeAgo = memory.createdAt
|
|
196717
|
+
? formatDistanceToNow(new Date(memory.createdAt), {
|
|
196718
|
+
addSuffix: true,
|
|
196719
|
+
})
|
|
196720
|
+
: '';
|
|
196721
|
+
const displayUser = memory.email || t('memoryTabManageMemories.unknown');
|
|
196722
|
+
return (jsxs("div", { className: "flex items-start gap-3 rounded-lg border border-gray-200 bg-white p-3", children: [jsxs("div", { className: "flex-1", children: [(timeAgo || displayUser) && (jsxs("div", { className: "mb-2 flex items-center justify-between", children: [timeAgo && jsx("span", { className: "text-sm text-gray-600", children: timeAgo }), displayUser && (jsx("span", { className: "max-w-[100px] truncate text-sm text-gray-900 sm:max-w-[200px]", children: displayUser }))] })), jsx("div", { className: "text-sm leading-relaxed text-gray-900", children: memory.content })] }), jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsx(Button$1, { variant: "ghost", size: "sm", className: "h-6 w-6 flex-shrink-0 p-0 text-gray-600 hover:text-gray-900", children: jsx(Ellipsis, { className: "h-4 w-4" }) }) }), jsxs(DropdownMenuContent, { align: "end", children: [jsx(DropdownMenuItem, { onClick: () => startEdit(memory), children: t('memoryTabManageMemories.edit') }), jsx(DropdownMenuItem, { onClick: () => setShowDeleteConfirm(memory.id), children: t('memoryTabManageMemories.delete') })] })] })] }, memory.id));
|
|
196723
|
+
})) }), filteredMemories.length > 0 && selectedCategorySlug !== 'all' && (jsx("div", { className: "flex justify-end", children: jsx(Button$1, { variant: "outline", onClick: () => setShowBulkDeleteConfirm(true), children: t('memoryTabManageMemories.deleteAll') }) })), filteredMemories.length === 0 && !isLoadingMemories && (jsx("div", { className: "py-8 text-center text-gray-600", children: jsx("p", { children: t('memoryTabManageMemories.noSavedMemories') }) })), totalPages > 1 && (jsx("div", { className: "flex justify-center pt-2", children: jsx(IblPagination, { currentPage: page, totalPages: totalPages, onPageChange: setPage, disabled: isLoadingMemories }) }))] }), jsx(EditMemoryModal$1, { open: !!editingMemory, onOpenChange: (open) => !open && cancelEdit(), editContent: editContent, editCategory: editCategory, onContentChange: setEditContent, onCategoryChange: setEditCategory, onSave: saveEdit, onCancel: cancelEdit, categories: categoryNames, isSaving: isEditing }), jsx(AddMemoryModal$1, { open: showAddMemory, onOpenChange: (open) => !open && cancelAddMemory(), newMemoryContent: newMemoryContent, newMemoryCategory: newMemoryCategory, onContentChange: setNewMemoryContent, onCategoryChange: setNewMemoryCategory, onSave: saveNewMemory, onCancel: cancelAddMemory, categories: categoryNames, isSaving: isSaving }), jsx(DeleteMemoryModal, { open: !!showDeleteConfirm, onOpenChange: (open) => !open && setShowDeleteConfirm(null), onConfirm: () => showDeleteConfirm !== null && handleDeleteMemory(showDeleteConfirm), onCancel: () => setShowDeleteConfirm(null), isDeleting: isDeleting }), jsx(ManageCategoriesModal$1, { open: showManageCategories, onOpenChange: setShowManageCategories, tenantKey: tenantKey, mentorId: mentorId }), jsx(BulkDeleteMemoryModal$1, { open: showBulkDeleteConfirm, onOpenChange: setShowBulkDeleteConfirm, onConfirm: handleBulkDelete, onCancel: () => setShowBulkDeleteConfirm(false), isDeleting: isBulkDeleting, selectedCategory: selectedCategoryName })] }));
|
|
196724
|
+
}
|
|
196725
|
+
|
|
196726
|
+
/**
|
|
196727
|
+
* Popup hosting the same memory manager the agent settings modal renders —
|
|
196728
|
+
* learner/category/date filters and full CRUD included — for one agent.
|
|
196729
|
+
* Laid out like the Billing tab's agent-limits popup: a fixed divider header
|
|
196730
|
+
* and a body that scrolls vertically while the content fits the width.
|
|
196731
|
+
*/
|
|
196732
|
+
function AgentMemoriesModal({ isOpen, onClose, tenantKey, username, agent, }) {
|
|
196733
|
+
const t = useT();
|
|
196734
|
+
return (jsx(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose(), children: jsxs(DialogContent, { "data-testid": "agent-memories-modal", "aria-label": "agent-memories", className: "flex max-h-[90vh] w-[calc(100vw-2rem)] flex-col gap-0 overflow-hidden p-0 sm:max-w-4xl", children: [jsxs(DialogHeader, { className: "flex-shrink-0 border-b border-gray-200 px-6 py-4 pr-12", children: [jsx(DialogTitle, { className: "ibl-dialog-title", children: agent.name }), jsx(DialogDescription, { children: t('memoryAdminAgentMemoriesModal.description') })] }), jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-3 lg:p-4", children: jsx("div", { className: "space-y-8", children: jsx(ManageMemories, { tenantKey: tenantKey, username: username, mentorId: agent.unique_id }) }) })] }) }));
|
|
196735
|
+
}
|
|
196736
|
+
|
|
196737
|
+
const PAGE_SIZE$2 = 10;
|
|
196738
|
+
/**
|
|
196739
|
+
* Agents table filtered by the same agent autocomplete the Billing tab's
|
|
196740
|
+
* Agent Limits section uses. Opening a row shows that agent's memories in a
|
|
196741
|
+
* popup hosting the same manager the agent settings modal uses.
|
|
196742
|
+
*/
|
|
196743
|
+
function AgentMemoriesSection({ tenantKey, username }) {
|
|
196744
|
+
var _a;
|
|
196745
|
+
const t = useT();
|
|
196746
|
+
const [page, setPage] = useState(1);
|
|
196747
|
+
const [agentFilter, setAgentFilter] = useState(null);
|
|
196748
|
+
const [agentSearch, setAgentSearch] = useState('');
|
|
196749
|
+
const [debouncedAgentSearch] = a(agentSearch, 300);
|
|
196750
|
+
const [selectedAgent, setSelectedAgent] = useState(null);
|
|
196751
|
+
// A new filter invalidates the current page index.
|
|
196752
|
+
useEffect(() => {
|
|
196753
|
+
setPage(1);
|
|
196754
|
+
}, [agentFilter]);
|
|
196755
|
+
// Autocomplete options for the filter, fetched once two characters are in.
|
|
196756
|
+
const shouldSearchAgents = Boolean(tenantKey && debouncedAgentSearch.trim().length >= 2);
|
|
196757
|
+
const { data: searchResponse, isFetching: isSearchingAgents } = useGetMentorsQuery({ org: tenantKey, username, limit: 20, query: debouncedAgentSearch.trim() }, { skip: !shouldSearchAgents });
|
|
196758
|
+
const agentOptions = useMemo(() => {
|
|
196759
|
+
var _a;
|
|
196760
|
+
return ((_a = searchResponse === null || searchResponse === void 0 ? void 0 : searchResponse.results) !== null && _a !== void 0 ? _a : [])
|
|
196761
|
+
.filter((mentor) => Boolean(mentor.unique_id))
|
|
196762
|
+
.map((mentor) => ({
|
|
196763
|
+
value: mentor.unique_id,
|
|
196764
|
+
label: mentor.name || mentor.unique_id,
|
|
196765
|
+
}));
|
|
196766
|
+
}, [searchResponse]);
|
|
196767
|
+
const { data, isLoading, isFetching, error } = useGetMentorsQuery({
|
|
196768
|
+
org: tenantKey,
|
|
196769
|
+
username,
|
|
196770
|
+
limit: PAGE_SIZE$2,
|
|
196771
|
+
offset: (page - 1) * PAGE_SIZE$2,
|
|
196772
|
+
...(agentFilter ? { uniqueId: agentFilter.value } : {}),
|
|
196773
|
+
});
|
|
196774
|
+
const agents = ((_a = data === null || data === void 0 ? void 0 : data.results) !== null && _a !== void 0 ? _a : []);
|
|
196775
|
+
const totalPages = (data === null || data === void 0 ? void 0 : data.count) ? Math.ceil(data.count / PAGE_SIZE$2) : 0;
|
|
196776
|
+
const isForbidden = !!error && error.status === 403;
|
|
196777
|
+
return (jsxs("div", { "data-testid": "memory-admin-agent-section", children: [jsx("div", { className: "mb-6 max-w-sm", children: jsx(SearchSelect, { labels: {
|
|
196778
|
+
// No field label — the users tab's search carries none either.
|
|
196779
|
+
label: '',
|
|
196780
|
+
placeholder: t('memoryAdminTab.filter.placeholder'),
|
|
196781
|
+
typeToSearch: t('memoryAdminTab.filter.typeToSearch'),
|
|
196782
|
+
searching: t('memoryAdminTab.filter.searching'),
|
|
196783
|
+
noResults: t('memoryAdminTab.filter.noResults'),
|
|
196784
|
+
clear: t('memoryAdminTab.filter.clear'),
|
|
196785
|
+
}, selected: agentFilter, onSelect: (option) => {
|
|
196786
|
+
setAgentFilter(option);
|
|
196787
|
+
setAgentSearch('');
|
|
196788
|
+
}, onClear: () => setAgentFilter(null), searchTerm: agentSearch, onSearchTermChange: setAgentSearch, options: agentOptions, isLoading: isSearchingAgents, testId: "agent-memories-filter" }) }), isForbidden ? (jsx("div", { className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: t('memoryAdminTab.forbidden') }) })) : isLoading ? (jsx("div", { className: "flex justify-center items-center h-64", children: jsx(Spinner, {}) })) : (jsxs(Fragment$1, { children: [jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[32%]", children: t('memoryAdminTab.agentColumn') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[52%]", children: t('memoryAdminTab.descriptionColumn') }), jsx("th", { className: "px-6 py-3 text-right font-medium text-gray-500 dark:text-gray-400 w-[16%]", children: t('memoryAdminTab.actionsColumn') })] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [agents.map((agent) => (jsxs("tr", { "data-testid": `memory-admin-agent-row-${agent.unique_id}`, children: [jsx("td", { className: "px-6 py-4 text-gray-900 dark:text-gray-100 max-w-0", children: jsx("div", { className: "truncate font-medium", children: agent.name }) }), jsx("td", { className: "px-6 py-4 text-gray-600 dark:text-gray-300 max-w-0", children: jsx("div", { className: "truncate", children: agent.description || '—' }) }), jsx("td", { className: "px-6 py-4", children: jsx("div", { className: "flex justify-end gap-2", children: jsx(Button$1, { "data-testid": `memory-admin-agent-view-${agent.unique_id}`, variant: "ghost", size: "sm", "aria-label": t('memoryAdminTab.viewMemoriesAriaLabel', {
|
|
196789
|
+
name: agent.name,
|
|
196790
|
+
}), onClick: () => setSelectedAgent(agent), children: jsx(Eye, { className: "h-4 w-4" }) }) }) })] }, agent.unique_id))), agents.length === 0 && (jsx("tr", { children: jsx("td", { colSpan: 3, className: "px-6 py-8 text-center text-gray-500 dark:text-gray-400", children: isFetching ? t('memoryAdminTab.loading') : t('memoryAdminTab.noAgentsFound') }) }))] })] }) }), totalPages > 1 && (jsx("div", { className: "mt-6", children: jsx(IblPagination, { totalPages: totalPages, currentPage: page, onPageChange: setPage, disabled: isFetching }) }))] })), selectedAgent && (jsx(AgentMemoriesModal, { isOpen: !!selectedAgent, onClose: () => setSelectedAgent(null), tenantKey: tenantKey, username: username, agent: selectedAgent }))] }));
|
|
196791
|
+
}
|
|
196792
|
+
|
|
196793
|
+
/**
|
|
196794
|
+
* Tenant-settings Memory tab. Lets admins/RBAC-granted users manage other
|
|
196795
|
+
* users' global memories and per-agent memories from one place, mirroring the
|
|
196796
|
+
* Billing tab's sub-tab layout.
|
|
196797
|
+
*/
|
|
196798
|
+
function MemoryAdminTab({ tenantKey, username }) {
|
|
196799
|
+
const t = useT();
|
|
196800
|
+
// Same platform gate the profile memory tab applies: when memsearch is off
|
|
196801
|
+
// for the tenant there is nothing to manage.
|
|
196802
|
+
const { data: memsearchStatus, isLoading, isError, } = useGetMemsearchStatusQuery({ org: tenantKey, userId: username });
|
|
196803
|
+
if (isLoading) {
|
|
196804
|
+
return (jsxs("div", { className: "space-y-6", children: [jsx(Skeleton, { className: "h-10 w-full max-w-sm rounded-lg" }), jsx(Skeleton, { className: "h-40 w-full rounded-lg" })] }));
|
|
196805
|
+
}
|
|
196806
|
+
if (!isError && memsearchStatus && !memsearchStatus.enable_memsearch) {
|
|
196807
|
+
return (jsx("div", { className: "max-w-2xl", children: jsx("div", { className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: t('memoryAdminTab.featureDisabled') }) }) }));
|
|
196808
|
+
}
|
|
196809
|
+
return (jsxs(Tabs, { defaultValue: "global-memories", "aria-label": t('memoryAdminTab.tabsAriaLabel'), children: [jsxs(TabsList, { "aria-label": t('memoryAdminTab.tabsAriaLabel'), className: "max-w-full overflow-x-auto justify-start px-1", children: [jsx(TabsTrigger, { "data-testid": "memory-admin-sub-tab-global", value: "global-memories", children: t('memoryAdminTab.tabGlobalMemories') }), jsx(TabsTrigger, { "data-testid": "memory-admin-sub-tab-agent", value: "agent-memories", children: t('memoryAdminTab.tabAgentMemories') })] }), jsx(TabsContent, { className: "mt-4", value: "global-memories", children: jsx(GlobalMemoriesSection, { tenantKey: tenantKey, username: username }) }), jsx(TabsContent, { className: "mt-4", value: "agent-memories", children: jsx(AgentMemoriesSection, { tenantKey: tenantKey, username: username }) })] }));
|
|
196810
|
+
}
|
|
196811
|
+
|
|
196260
196812
|
// ::- Persistent data structure representing an ordered mapping from
|
|
196261
196813
|
// strings to values, with some convenient update methods.
|
|
196262
196814
|
function OrderedMap(content) {
|
|
@@ -235822,7 +236374,7 @@ function SlashSkillPicker({ skills, activeIndex, listboxId, onSelect, onActiveIn
|
|
|
235822
236374
|
onMouseDown: (e) => {
|
|
235823
236375
|
e.preventDefault();
|
|
235824
236376
|
onSelect(skill);
|
|
235825
|
-
}, children: jsxs("span", { className: "flex items-
|
|
236377
|
+
}, children: jsxs("span", { className: "flex items-start gap-2", children: [jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [jsx("span", { "data-testid": "slash-skill-picker-option-name", className: "text-sm font-medium break-words text-gray-800", children: skill.name }), jsxs("span", { "data-testid": "slash-skill-picker-option-slug", className: "text-xs break-all text-gray-400", children: ["/", skill.slug] })] }), skill.category && (jsx("span", { className: "shrink-0 rounded-full bg-gray-100 px-2 py-0.5 text-[0.625rem] text-gray-500", children: skill.category }))] }) }, skill.unique_id))), isFetchingMore && (jsxs("li", { role: "presentation", className: "flex items-center gap-2 px-3 py-2", "data-testid": "slash-skill-picker-loading-more", children: [jsx(LoaderCircle, { className: "h-4 w-4 animate-spin text-blue-500" }), jsx("span", { className: "text-xs text-gray-500", children: t('slashSkillPicker.loading') })] }))] }))] }));
|
|
235826
236378
|
}
|
|
235827
236379
|
|
|
235828
236380
|
/** Matches a composer value that is a single `/`-prefixed token (no whitespace). */
|
|
@@ -242467,6 +243019,175 @@ function PlatformNavbar({ left, modeSwitcher, search, privacyToggle, placements,
|
|
|
242467
243019
|
return (jsxs("nav", { className: cn('z-10 mb-4 flex h-16 items-center border-b border-[#D0E0FF] bg-white pr-4', className), children: [jsx("div", { className: "flex min-w-0 items-center overflow-hidden", children: left }), jsxs("div", { className: "ml-auto flex shrink-0 items-center gap-0 xl:gap-6", children: [search && (jsx("div", { className: "mr-2 flex items-center xl:mr-0", children: jsx(PlatformNavbarSearch, { ...search }) })), modeSwitcher && jsx("div", { className: "hidden items-center gap-2 xl:flex", children: modeSwitcher }), jsxs("div", { className: "flex items-center gap-2", children: [privacyToggle && visibleToLoggedInUsersOnly && (jsx(ChatPrivacyToggle, { org: privacyToggle.org, userId: privacyToggle.userId, mentor: privacyToggle.mentor, className: (_a = privacyToggle.className) !== null && _a !== void 0 ? _a : 'inline-flex max-md:[&>span]:hidden' })), placements && visibleToLoggedInUsersOnly && (jsx(PlacementExamsDropdown, { platformKey: placements.platformKey, onOpenPlacement: placements.onOpenPlacement, className: placements.className })), showCreditBalance && creditBalance && (jsx(CreditBalance, { tenant: creditBalance.tenantKey, enabled: true, redirectUrl: (_b = creditBalance.redirectUrl) !== null && _b !== void 0 ? _b : window.location.origin, mainPlatformKey: creditBalance.mainPlatformKey, currentUserEmail: creditBalance.currentUserEmail, username: creditBalance.username })), notifications && visibleToLoggedInUsersOnly && (jsx(NotificationDropdown, { org: notifications.org, userId: notifications.userId, isAdmin: notifications.isAdmin, onViewNotifications: notifications.onViewNotifications })), visibleToLoggedInUsersOnly && profile] }), !loggedIn && onLoginClick && (jsxs("div", { className: "flex gap-x-2", children: [jsx(Button$1, { className: "ibl-button-primary", onClick: onLoginClick, children: t('platformNavbar.logIn') }), jsx(Button$1, { onClick: onLoginClick, variant: "outline", children: t('platformNavbar.signUpForFree') })] }))] })] }));
|
|
242468
243020
|
}
|
|
242469
243021
|
|
|
243022
|
+
function EditMemoryModal({ open, onOpenChange, editContent, editCategory, onContentChange, onCategoryChange, onSave, onCancel, categories, isSaving, }) {
|
|
243023
|
+
const t = useT();
|
|
243024
|
+
return (jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxs(DialogContent, { className: "mx-4 max-w-2xl sm:mx-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { className: "text-gray-700", children: t('memoryTabEditMemoryModal.editMemory') }) }), jsxs("div", { className: "mt-4 space-y-4", children: [jsxs("div", { children: [jsx("label", { className: "text-sm font-medium text-gray-600", children: t('memoryTabEditMemoryModal.category') }), jsxs(Select$1, { value: editCategory, onValueChange: onCategoryChange, children: [jsx(SelectTrigger, { className: "mt-1", children: jsx(SelectValue, { placeholder: t('memoryTabEditMemoryModal.selectCategory') }) }), jsx(SelectContent, { children: categories
|
|
243025
|
+
.filter((cat) => cat !== 'All')
|
|
243026
|
+
.map((category) => (jsx(SelectItem, { value: category, children: category }, category))) })] })] }), jsxs("div", { children: [jsx("label", { className: "text-sm font-medium text-gray-600", children: t('memoryTabEditMemoryModal.memory') }), jsx(Textarea, { value: editContent, onChange: (e) => onContentChange(e.target.value), placeholder: t('memoryTabEditMemoryModal.enterMemoryContent'), className: "mt-1" }), jsx("p", { className: "mt-1 text-xs text-gray-500", children: editContent.trim().length < 10
|
|
243027
|
+
? t('memoryTabEditMemoryModal.charCountMinimum', {
|
|
243028
|
+
count: editContent.trim().length,
|
|
243029
|
+
})
|
|
243030
|
+
: t('memoryTabEditMemoryModal.charCount', { count: editContent.trim().length }) })] }), jsxs("div", { className: "flex justify-end gap-2", children: [jsx(Button$1, { variant: "outline", onClick: onCancel, children: t('memoryTabEditMemoryModal.cancel') }), jsx(Button$1, { onClick: onSave, className: "ibl-button-primary", disabled: editContent.trim().length < 10 || isSaving, children: isSaving ? t('memoryTabEditMemoryModal.saving') : t('memoryTabEditMemoryModal.save') })] })] })] }) }));
|
|
243031
|
+
}
|
|
243032
|
+
|
|
243033
|
+
var editMemoryModal = /*#__PURE__*/Object.freeze({
|
|
243034
|
+
__proto__: null,
|
|
243035
|
+
EditMemoryModal: EditMemoryModal
|
|
243036
|
+
});
|
|
243037
|
+
|
|
243038
|
+
function AddMemoryModal({ open, onOpenChange, newMemoryContent, newMemoryCategory, onContentChange, onCategoryChange, onSave, onCancel, categories, isSaving, }) {
|
|
243039
|
+
const t = useT();
|
|
243040
|
+
return (jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxs(DialogContent, { className: "mx-4 max-w-2xl sm:mx-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { className: "text-gray-700", children: t('memoryTabAddMemoryModal.addMemory') }) }), jsxs("div", { className: "mt-4 space-y-4", children: [jsxs("div", { children: [jsx("label", { className: "text-sm font-medium text-gray-600", children: t('memoryTabAddMemoryModal.category') }), jsxs(Select$1, { value: newMemoryCategory, onValueChange: onCategoryChange, children: [jsx(SelectTrigger, { className: "mt-1", children: jsx(SelectValue, { placeholder: t('memoryTabAddMemoryModal.selectCategory') }) }), jsx(SelectContent, { children: categories
|
|
243041
|
+
.filter((cat) => cat !== 'All')
|
|
243042
|
+
.map((category) => (jsx(SelectItem, { value: category, children: category }, category))) })] })] }), jsxs("div", { children: [jsx("label", { className: "text-sm font-medium text-gray-600", children: t('memoryTabAddMemoryModal.memory') }), jsx(Textarea, { value: newMemoryContent, onChange: (e) => onContentChange(e.target.value), placeholder: t('memoryTabAddMemoryModal.enterMemoryContent'), className: "mt-1" }), jsx("p", { className: "mt-1 text-xs text-gray-500", children: newMemoryContent.trim().length < 10
|
|
243043
|
+
? t('memoryTabAddMemoryModal.charactersMinimum', {
|
|
243044
|
+
count: newMemoryContent.trim().length,
|
|
243045
|
+
})
|
|
243046
|
+
: t('memoryTabAddMemoryModal.characters', {
|
|
243047
|
+
count: newMemoryContent.trim().length,
|
|
243048
|
+
}) })] }), jsxs("div", { className: "flex justify-end gap-2", children: [jsx(Button$1, { variant: "outline", onClick: onCancel, children: t('memoryTabAddMemoryModal.cancel') }), jsx(Button$1, { onClick: onSave, disabled: newMemoryContent.trim().length < 10 || isSaving, className: "ibl-button-primary", children: isSaving ? t('memoryTabAddMemoryModal.saving') : t('memoryTabAddMemoryModal.save') })] })] })] }) }));
|
|
243049
|
+
}
|
|
243050
|
+
|
|
243051
|
+
var addMemoryModal = /*#__PURE__*/Object.freeze({
|
|
243052
|
+
__proto__: null,
|
|
243053
|
+
AddMemoryModal: AddMemoryModal
|
|
243054
|
+
});
|
|
243055
|
+
|
|
243056
|
+
function BulkDeleteMemoryModal({ open, onOpenChange, onConfirm, onCancel, isDeleting, selectedCategory, }) {
|
|
243057
|
+
const isDeleteAll = selectedCategory === 'All';
|
|
243058
|
+
const getConfirmationText = () => {
|
|
243059
|
+
if (isDeleteAll) {
|
|
243060
|
+
return 'Are you sure you want to delete all memories? This action cannot be undone.';
|
|
243061
|
+
}
|
|
243062
|
+
return `Are you sure you want to delete all memories in the ${selectedCategory} category? This action cannot be undone.`;
|
|
243063
|
+
};
|
|
243064
|
+
const getTitle = () => {
|
|
243065
|
+
if (isDeleteAll) {
|
|
243066
|
+
return 'Delete All Memories';
|
|
243067
|
+
}
|
|
243068
|
+
return `Delete All ${selectedCategory} Memories`;
|
|
243069
|
+
};
|
|
243070
|
+
return (jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxs(DialogContent, { className: "mx-4 max-w-md sm:mx-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { children: getTitle() }) }), jsx("p", { className: "text-muted-foreground text-sm", children: getConfirmationText() }), jsxs("div", { className: "mt-4 flex justify-end gap-2", children: [jsx(Button$1, { variant: "outline", onClick: onCancel, disabled: isDeleting, children: "Cancel" }), jsx(Button$1, { className: "ibl-button-primary", onClick: onConfirm, disabled: isDeleting, children: isDeleting ? 'Deleting...' : 'Delete' })] })] }) }));
|
|
243071
|
+
}
|
|
243072
|
+
|
|
243073
|
+
var bulkDeleteMemoryModal = /*#__PURE__*/Object.freeze({
|
|
243074
|
+
__proto__: null,
|
|
243075
|
+
BulkDeleteMemoryModal: BulkDeleteMemoryModal
|
|
243076
|
+
});
|
|
243077
|
+
|
|
243078
|
+
const toSlug = (name) => name
|
|
243079
|
+
.trim()
|
|
243080
|
+
.toLowerCase()
|
|
243081
|
+
.replace(/[^a-z0-9]+/g, '_')
|
|
243082
|
+
.replace(/^_+|_+$/g, '');
|
|
243083
|
+
function ManageCategoriesModal({ open, onOpenChange, tenantKey, mentorId, }) {
|
|
243084
|
+
const t = useT();
|
|
243085
|
+
const { data: categories = [], isLoading } = useGetMemoryCategoriesAdminQuery({ org: tenantKey, mentorId }, { skip: !open || !tenantKey || !mentorId });
|
|
243086
|
+
const [createCategory, { isLoading: isCreating }] = useCreateMemoryCategoryMutation();
|
|
243087
|
+
const [updateCategory, { isLoading: isUpdating }] = useUpdateMemoryCategoryMutation();
|
|
243088
|
+
const [deleteCategory, { isLoading: isDeleting }] = useDeleteMemoryCategoryMutation();
|
|
243089
|
+
const [newName, setNewName] = useState('');
|
|
243090
|
+
const [editingId, setEditingId] = useState(null);
|
|
243091
|
+
const [editName, setEditName] = useState('');
|
|
243092
|
+
const [confirmDeleteId, setConfirmDeleteId] = useState(null);
|
|
243093
|
+
const handleCreate = async () => {
|
|
243094
|
+
const name = newName.trim();
|
|
243095
|
+
if (!name)
|
|
243096
|
+
return;
|
|
243097
|
+
try {
|
|
243098
|
+
await createCategory({
|
|
243099
|
+
org: tenantKey,
|
|
243100
|
+
mentorId,
|
|
243101
|
+
data: { name, slug: toSlug(name) },
|
|
243102
|
+
}).unwrap();
|
|
243103
|
+
setNewName('');
|
|
243104
|
+
toast.success(t('memoryTabManageCategoriesModal.categoryCreated'));
|
|
243105
|
+
}
|
|
243106
|
+
catch (error) {
|
|
243107
|
+
console.error('Failed to create category:', error);
|
|
243108
|
+
toast.error(t('memoryTabManageCategoriesModal.failedToCreateCategory'));
|
|
243109
|
+
}
|
|
243110
|
+
};
|
|
243111
|
+
const startEdit = (category) => {
|
|
243112
|
+
setEditingId(category.id);
|
|
243113
|
+
setEditName(category.name);
|
|
243114
|
+
};
|
|
243115
|
+
const cancelEdit = () => {
|
|
243116
|
+
setEditingId(null);
|
|
243117
|
+
setEditName('');
|
|
243118
|
+
};
|
|
243119
|
+
const saveEdit = async (categoryId) => {
|
|
243120
|
+
const name = editName.trim();
|
|
243121
|
+
if (!name)
|
|
243122
|
+
return;
|
|
243123
|
+
try {
|
|
243124
|
+
await updateCategory({
|
|
243125
|
+
org: tenantKey,
|
|
243126
|
+
mentorId,
|
|
243127
|
+
categoryId,
|
|
243128
|
+
data: { name },
|
|
243129
|
+
}).unwrap();
|
|
243130
|
+
cancelEdit();
|
|
243131
|
+
toast.success(t('memoryTabManageCategoriesModal.categoryUpdated'));
|
|
243132
|
+
}
|
|
243133
|
+
catch (error) {
|
|
243134
|
+
console.error('Failed to update category:', error);
|
|
243135
|
+
toast.error(t('memoryTabManageCategoriesModal.failedToUpdateCategory'));
|
|
243136
|
+
}
|
|
243137
|
+
};
|
|
243138
|
+
const handleDelete = async (categoryId) => {
|
|
243139
|
+
try {
|
|
243140
|
+
await deleteCategory({
|
|
243141
|
+
org: tenantKey,
|
|
243142
|
+
mentorId,
|
|
243143
|
+
categoryId,
|
|
243144
|
+
}).unwrap();
|
|
243145
|
+
setConfirmDeleteId(null);
|
|
243146
|
+
toast.success(t('memoryTabManageCategoriesModal.categoryDeleted'));
|
|
243147
|
+
}
|
|
243148
|
+
catch (error) {
|
|
243149
|
+
console.error('Failed to delete category:', error);
|
|
243150
|
+
toast.error(t('memoryTabManageCategoriesModal.failedToDeleteCategory'));
|
|
243151
|
+
}
|
|
243152
|
+
};
|
|
243153
|
+
return (jsx(Dialog, { open: open, onOpenChange: (next) => {
|
|
243154
|
+
if (!next) {
|
|
243155
|
+
cancelEdit();
|
|
243156
|
+
setConfirmDeleteId(null);
|
|
243157
|
+
setNewName('');
|
|
243158
|
+
}
|
|
243159
|
+
onOpenChange(next);
|
|
243160
|
+
}, children: jsxs(DialogContent, { className: "mx-4 max-w-md sm:mx-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { children: t('memoryTabManageCategoriesModal.manageCategories') }) }), jsxs("div", { className: "flex gap-2", children: [jsx(Input, { value: newName, onChange: (e) => setNewName(e.target.value), placeholder: t('memoryTabManageCategoriesModal.newCategoryNamePlaceholder'), onKeyDown: (e) => {
|
|
243161
|
+
if (e.key === 'Enter') {
|
|
243162
|
+
e.preventDefault();
|
|
243163
|
+
handleCreate();
|
|
243164
|
+
}
|
|
243165
|
+
} }), jsxs(Button$1, { className: "ibl-button-primary", onClick: handleCreate, disabled: !newName.trim() || isCreating, children: [jsx(Plus, { className: "mr-1 h-4 w-4" }), t('memoryTabManageCategoriesModal.add')] })] }), jsx("div", { className: "max-h-[320px] space-y-2 overflow-y-auto", children: isLoading ? (jsx("p", { className: "text-muted-foreground py-4 text-center text-sm", children: t('memoryTabManageCategoriesModal.loadingCategories') })) : categories.length === 0 ? (jsx("p", { className: "text-muted-foreground py-4 text-center text-sm", children: t('memoryTabManageCategoriesModal.noCategoriesYet') })) : (categories.map((category) => {
|
|
243166
|
+
const isEditing = editingId === category.id;
|
|
243167
|
+
const isConfirming = confirmDeleteId === category.id;
|
|
243168
|
+
return (jsx("div", { className: "flex items-center gap-2 rounded-lg border border-gray-200 bg-white p-2", children: isEditing ? (jsxs(Fragment$1, { children: [jsx(Input, { value: editName, onChange: (e) => setEditName(e.target.value), autoFocus: true, onKeyDown: (e) => {
|
|
243169
|
+
if (e.key === 'Enter') {
|
|
243170
|
+
e.preventDefault();
|
|
243171
|
+
saveEdit(category.id);
|
|
243172
|
+
}
|
|
243173
|
+
else if (e.key === 'Escape') {
|
|
243174
|
+
cancelEdit();
|
|
243175
|
+
}
|
|
243176
|
+
}, className: "h-8" }), jsx(Button$1, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0", onClick: () => saveEdit(category.id), disabled: !editName.trim() || isUpdating, "aria-label": t('memoryTabManageCategoriesModal.saveCategory'), children: jsx(Check, { className: "h-4 w-4" }) }), jsx(Button$1, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0", onClick: cancelEdit, "aria-label": t('memoryTabManageCategoriesModal.cancelEdit'), children: jsx(X$1, { className: "h-4 w-4" }) })] })) : isConfirming ? (jsxs(Fragment$1, { children: [jsx("span", { className: "flex-1 text-sm text-gray-900", children: t('memoryTabManageCategoriesModal.confirmDelete', { name: category.name }) }), jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => setConfirmDeleteId(null), children: t('memoryTabManageCategoriesModal.cancel') }), jsx(Button$1, { variant: "destructive", size: "sm", onClick: () => handleDelete(category.id), disabled: isDeleting, children: isDeleting
|
|
243177
|
+
? t('memoryTabManageCategoriesModal.deleting')
|
|
243178
|
+
: t('memoryTabManageCategoriesModal.delete') })] })) : (jsxs(Fragment$1, { children: [jsx("span", { className: "flex-1 text-sm text-gray-900", children: category.name }), jsx(Button$1, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0", onClick: () => startEdit(category), "aria-label": t('memoryTabManageCategoriesModal.editCategory', {
|
|
243179
|
+
name: category.name,
|
|
243180
|
+
}), children: jsx(Pencil, { className: "h-4 w-4" }) }), jsx(Button$1, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-red-600 hover:text-red-700", onClick: () => setConfirmDeleteId(category.id), "aria-label": t('memoryTabManageCategoriesModal.deleteCategory', {
|
|
243181
|
+
name: category.name,
|
|
243182
|
+
}), children: jsx(Trash2, { className: "h-4 w-4" }) })] })) }, category.id));
|
|
243183
|
+
})) }), jsx("div", { className: "mt-2 flex justify-end", children: jsx(Button$1, { variant: "outline", onClick: () => onOpenChange(false), children: t('memoryTabManageCategoriesModal.done') }) })] }) }));
|
|
243184
|
+
}
|
|
243185
|
+
|
|
243186
|
+
var manageCategoriesModal = /*#__PURE__*/Object.freeze({
|
|
243187
|
+
__proto__: null,
|
|
243188
|
+
ManageCategoriesModal: ManageCategoriesModal
|
|
243189
|
+
});
|
|
243190
|
+
|
|
242470
243191
|
const defaultValues = {
|
|
242471
243192
|
category: '',
|
|
242472
243193
|
prompt: '',
|
|
@@ -242839,5 +243560,5 @@ var trainOrDeleteModal = /*#__PURE__*/Object.freeze({
|
|
|
242839
243560
|
TrainOrDeleteModal: TrainOrDeleteModal
|
|
242840
243561
|
});
|
|
242841
243562
|
|
|
242842
|
-
export { ACCESS_COURSE_LABEL, ALL_CATEGORIES, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentSkills, AlertsTab, AnalyticsAgentPicker, AnalyticsAuditLogStats, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMemoryStats, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsPlatformAuditLog, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsScopeProvider, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, ApplyWizard, AuditLogChangesView, AuditLogJsonView, BUY_NOW_LABEL, BillingTab, CATALOGS, CREATE_AGENT_LABELS, CUA_DRIVER_REPO_URL, CUA_DRIVER_TAURI_COMMANDS, CUA_DRIVER_TAURI_EVENTS, CardInfoIcon, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChartLoading, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CredentialsList, CreditBalance, CustomDateRangePicker, CustomTooltip, DEFAULT_COWORK_REQUIRED_SIZE_GB, DEFAULT_LOCALE, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GradebookTab, GroupsFilterDropdown, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, LOCAL_LLM_CHANGED_EVENT, LOCAL_MODELS, Loader, LocalLLMTab, LocalModelsContent, LoginButton, MACOS_PERMISSIONS_COMMANDS, MEMORY_PAGE_SIZE, Markdown, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_FIELD_TYPES, ONBOARDING_SECTORS, OnboardingField, OnboardingShell, OnboardingWizard, PLATFORM_AUDIT_DEEP_PAGING_THRESHOLD, PLATFORM_AUDIT_PAGE_SIZE, PaywallModal, PlacementExam, PlacementExamsDropdown, PlatformAuditLogDetailSheet, PlatformNavbar, PlatformNavbarSearch, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RenameProjectModal, ResumeBox, ResumeTab, RichTextEditor, SUPPORTED_LOCALES, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, SkillsList, SlashSkillPicker, Spinner, StatCard, StepHeader, SummerNoteTextEditor, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolDialogs, TopBanner, USER_ONBOARDING_FORM_SLUG, USER_ONBOARDING_FORM_VERSION, USER_ONBOARDING_SUBMISSION_SLUG, UpgradePackageModal, UserAvatar, UserOnboardingWizard, Version, WebContainersI18nProvider, WorkflowSidebar, addBookmarksTab, availablePlacementExams, buildOnboardingAgentPath, buildUserOnboardingFormMetadata, buildUserOnboardingSubmissionMetadata, coerceOnboardingAgent, coerceOnboardingAgents, coerceUserOnboardingForm, emptyUserOnboardingForm, findLastResumeBlock, findOnboardingAgent, findSequentialParent, flattenVerticalBlocks, formatAuditTimestamp, formatTimeZoneLabel, getCatalog, getFirstAvailableUnit, getLocalLLMModel, getLocalLLMToolSupport, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, hasOnboardingContent, humanizeAuditToken, inBrowserPrint, inIframe, initialCuaDriverInstallState, initialModelDownloadState, isCoworkEnabled, isLocalLLMEnabled, isPlatformNavbarCreditBalanceVisible, isSlashCommandToken, isTauriApp, isValidLocale, isValidTimeZone, components as markdownComponents, modelSupportsCowork, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, readUserOnboardingForm, readUserOnboardingSubmission, readUserOnboardingSubmissions, resolveAuditTimeZone, resolveCreateAgentLabels, sanitizeCss, setCoworkEnabled, setLocalLLMEnabled, setLocalLLMModel, setLocalLLMToolSupport, smallestCoworkModel, useAnalyticsScope, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useCuaDriver, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLocalStorage, useMemory, useModelDownload, useMonetization, useOverview, usePlatformAuditLabels, usePlatformAuditLog, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useScopedMentorDbId, useScopedMentorId, useSelectedLocalModel, useSlashSkillPicker, useSlashSkills, useT, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers, useWebContainersI18n, useWebContainersLocale };
|
|
243563
|
+
export { ACCESS_COURSE_LABEL, ALL_CATEGORIES, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentSkills, AlertsTab, AnalyticsAgentPicker, AnalyticsAuditLogStats, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMemoryStats, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsPlatformAuditLog, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsScopeProvider, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, ApplyWizard, AuditLogChangesView, AuditLogJsonView, BUY_NOW_LABEL, BillingTab, CATALOGS, CREATE_AGENT_LABELS, CUA_DRIVER_REPO_URL, CUA_DRIVER_TAURI_COMMANDS, CUA_DRIVER_TAURI_EVENTS, CardInfoIcon, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChartLoading, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CredentialsList, CreditBalance, CustomDateRangePicker, CustomTooltip, DEFAULT_COWORK_REQUIRED_SIZE_GB, DEFAULT_LOCALE, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GradebookTab, GroupsFilterDropdown, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, LOCAL_LLM_CHANGED_EVENT, LOCAL_MODELS, Loader, LocalLLMTab, LocalModelsContent, LoginButton, MACOS_PERMISSIONS_COMMANDS, MEMORY_PAGE_SIZE, Markdown, MemoryAdminTab, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_FIELD_TYPES, ONBOARDING_SECTORS, OnboardingField, OnboardingShell, OnboardingWizard, PLATFORM_AUDIT_DEEP_PAGING_THRESHOLD, PLATFORM_AUDIT_PAGE_SIZE, PaywallModal, PlacementExam, PlacementExamsDropdown, PlatformAuditLogDetailSheet, PlatformNavbar, PlatformNavbarSearch, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RenameProjectModal, ResumeBox, ResumeTab, RichTextEditor, SUPPORTED_LOCALES, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, SkillsList, SlashSkillPicker, Spinner, StatCard, StepHeader, SummerNoteTextEditor, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolDialogs, TopBanner, USER_ONBOARDING_FORM_SLUG, USER_ONBOARDING_FORM_VERSION, USER_ONBOARDING_SUBMISSION_SLUG, UpgradePackageModal, UserAvatar, UserOnboardingWizard, Version, WebContainersI18nProvider, WorkflowSidebar, addBookmarksTab, availablePlacementExams, buildOnboardingAgentPath, buildUserOnboardingFormMetadata, buildUserOnboardingSubmissionMetadata, coerceOnboardingAgent, coerceOnboardingAgents, coerceUserOnboardingForm, emptyUserOnboardingForm, findLastResumeBlock, findOnboardingAgent, findSequentialParent, flattenVerticalBlocks, formatAuditTimestamp, formatTimeZoneLabel, getCatalog, getFirstAvailableUnit, getLocalLLMModel, getLocalLLMToolSupport, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, hasOnboardingContent, humanizeAuditToken, inBrowserPrint, inIframe, initialCuaDriverInstallState, initialModelDownloadState, isCoworkEnabled, isLocalLLMEnabled, isPlatformNavbarCreditBalanceVisible, isSlashCommandToken, isTauriApp, isValidLocale, isValidTimeZone, components as markdownComponents, modelSupportsCowork, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, readUserOnboardingForm, readUserOnboardingSubmission, readUserOnboardingSubmissions, resolveAuditTimeZone, resolveCreateAgentLabels, sanitizeCss, setCoworkEnabled, setLocalLLMEnabled, setLocalLLMModel, setLocalLLMToolSupport, smallestCoworkModel, useAnalyticsScope, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useCuaDriver, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLocalStorage, useMemory, useModelDownload, useMonetization, useOverview, usePlatformAuditLabels, usePlatformAuditLog, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useScopedMentorDbId, useScopedMentorId, useSelectedLocalModel, useSlashSkillPicker, useSlashSkills, useT, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers, useWebContainersI18n, useWebContainersLocale };
|
|
242843
243564
|
//# sourceMappingURL=index.esm.js.map
|