@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, getInitials, useTenantMetadata, useCurrentTenant, selectRbacPermissions, 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';
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$2o = [
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$2o);
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$2n = [
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$2n);
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$2m = [
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$2m);
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$2l = [
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$2l);
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$2k = [
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$2k);
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$2j = [
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$2j);
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$2i = [
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$2i);
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$2h = [
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$2h);
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$2g = [
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$2g);
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$2f = [
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$2f);
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$2e = [
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$2e);
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$2d = [
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$2d);
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$2c = [
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$2c);
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$2b = [
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$2b);
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$2a = [
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$2a);
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$29 = [
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$29);
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$28 = [
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$28);
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$27 = [
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$27);
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$26 = [
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$26);
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$25 = [
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$25);
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$24 = [
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$24);
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$23 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
78160
- const Check = createLucideIcon("check", __iconNode$23);
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$22 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
78171
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$22);
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$21 = [
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$21);
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$20 = [
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$20);
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$1$ = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
78210
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1$);
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$1_ = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
78221
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1_);
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$1Z = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
78232
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1Z);
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$1Y = [
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$1Y);
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$1X = [
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$1X);
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$1W = [
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$1W);
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$1V = [
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$1V);
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$1U = [
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$1U);
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$1T = [
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$1T);
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$1S = [
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$1S);
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$1R = [
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$1R);
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$1Q = [
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$1Q);
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$1P = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
78371
- const Circle = createLucideIcon("circle", __iconNode$1P);
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$1O = [
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$1O);
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$1N = [
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$1N);
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$1M = [
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$1M);
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$1L = [
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$1L);
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$1K = [
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$1K);
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$1J = [
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$1J);
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$1I = [
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$1I);
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$1H = [
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$1H);
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$1G = [
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$1G);
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$1F = [
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$1F);
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$1E = [
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$1E);
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$1D = [
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$1D);
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$1C = [
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$1C);
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$1B = [
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$1B);
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$1A = [
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$1A);
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$1z = [
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$1z);
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$1y = [
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$1y);
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$1x = [
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$1x);
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$1w = [
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$1w);
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$1v = [
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$1v);
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$1u = [
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$1u);
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$1t = [
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$1t);
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$1s = [
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$1s);
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$1r = [
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$1r);
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$1q = [
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$1q);
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$1p = [
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$1p);
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$1o = [
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$1o);
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$1n = [
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$1n);
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$1m = [
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$1m);
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$1l = [
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$1l);
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$1k = [
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$1k);
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$1j = [
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$1j);
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$1i = [
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$1i);
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$1h = [
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$1h);
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$1g = [
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$1g);
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$1f = [
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$1f);
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$1e = [
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$1e);
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$1d = [
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$1d);
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$1c = [
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$1c);
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$1b = [
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$1b);
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$1a = [
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$1a);
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$19 = [
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$19);
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$18 = [
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$18);
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$17 = [
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$17);
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$16 = [
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$16);
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$15 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
79188
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$15);
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$14 = [
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$14);
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$13 = [
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$13);
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$12 = [
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$12);
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$11 = [
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$11);
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$10 = [
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$10);
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$Z = [
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$Z);
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$Y = [
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$Y);
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$X = [
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$X);
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$W = [
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$W);
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$V = [
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$V);
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$U = [
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$U);
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$T = [
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$T);
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$S = [
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$S);
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$R = [
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$R);
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$Q = [
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$Q);
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$P = [
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$P);
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$O = [
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$O);
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$N = [
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$N);
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$M = [
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$M);
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$L = [
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$L);
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$K = [
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$K);
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$J = [
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$J);
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$I = [
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$I);
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$H = [
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$H);
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$G = [
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$G);
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$F = [
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$F);
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$E = [
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$E);
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$D = [
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$D);
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$C = [
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$C);
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$B = [
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$B);
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$A = [
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$A);
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$z = [
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$z);
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$y = [
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$y);
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$x = [
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$x);
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$w = [
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$w);
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$v = [
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$v);
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$u = [
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$u);
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$t = [
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$t);
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$s = [
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$s);
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$r = [
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$r);
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$q = [
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$q);
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$p = [
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$p);
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$o = [
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$o);
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$6 = 8;
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$6,
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$6 }, { skip: type !== 'credentials', refetchOnMountOrArgChange: true });
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$6;
144028
+ const start = (page - 1) * PAGE_SIZE$a;
144000
144029
  return {
144001
- rows: filtered.slice(start, start + PAGE_SIZE$6),
144030
+ rows: filtered.slice(start, start + PAGE_SIZE$a),
144002
144031
  total: filtered.length,
144003
144032
  hasPrev: page > 1,
144004
- hasNext: start + PAGE_SIZE$6 < filtered.length,
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$6 < total,
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}`)] }) }), jsx(TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: timeAgo$2(report.created_at) }), 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));
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 only serves the
184641
- * authenticated user's own sessions, so no RBAC checks are involved.
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: 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", tabIndex: 0, role: "region", "aria-label": t('chatHistoryChatHistoryTab.conversationListLabel'), children: sessions.map((session) => {
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
- // The chat-history endpoints only serve the authenticated user's own
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 }), !isReadOnly && 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: () => {
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$5 = 10;
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$5,
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$5,
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$5);
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$5, itemLabel: "users" })] })), selectedUser && (jsx(Dialog, { open: !!selectedUser, onOpenChange: (open) => {
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$4 = 10;
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$4,
188163
- offset: (page - 1) * PAGE_SIZE$4,
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$4))
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$4, 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', {
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$3 = 20;
189809
- const SEARCH_DEBOUNCE_MS$2 = 300;
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$2);
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$3,
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$3));
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$3, itemLabel: "applications" })] }))] }));
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$2 = 8;
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$2,
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$2), onPageChange: setPage, totalCount: paywalls.count, itemsPerPage: PAGE_SIZE$2, itemLabel: "items" })] })) : (jsx("p", { className: "text-sm text-gray-400 text-center py-6", children: statusFilter !== 'all'
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-baseline gap-2", children: [jsx("span", { className: "text-sm font-medium text-gray-800", children: skill.name }), jsxs("span", { className: "text-xs text-gray-400", children: ["/", skill.slug] }), skill.category && (jsx("span", { className: "ml-auto 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') })] }))] }))] }));
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