@iblai/iblai-js 1.26.4 → 1.26.6

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.
@@ -3,7 +3,7 @@ import React__default, { useRef, useEffect, useState, useCallback, useLayoutEffe
3
3
  import { useDispatch, useSelector } from 'react-redux';
4
4
  import { selectSessionId, selectActiveChatMessages, useCachedSessionId, chatActions, LOCAL_STORAGE_KEYS, TimeTracker, getInitials, useTenantMetadata, WithPermissions, useStripeUpgrade, openExternalUrl, CHAT_AREA_SIZE, isAlphaNumeric32, checkRbacPermission, getTimeAgo, REQUIRED_ACTIONS_FOR_GROUPS, formatRelativeTime as formatRelativeTime$2, ANONYMOUS_USERNAME, combineCSVData, redirectToAuthSpaJoinTenant, redirectToAuthSpa, getAuthSpaJoinUrl, useOS, selectNumberOfActiveChatMessages, useUsername, selectStreaming, isLoggedIn, TOOLS, isSafariBrowser, useShowAttachment, useShowVoiceCall, useShowVoiceRecorder, useMentorSettings, selectShowingSharedChat, selectRbacPermissions, useShowFreeTrialDialog, useEmbedMode, chatInputSliceSelectors, useResponsive, useAccessingPublicRoute, useVisitingTenant, useModelFileUploadCapabilities, useChatFileUpload, useVoiceChat, selectAttachedFiles, MENTOR_CHAT_DOCUMENTS_EXTENSIONS, removeFile, chatInputSliceActions, 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, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useDeleteGlobalMemoryMutation, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useUpdateUserRoleMutation, useUpdateUserStatusMutation, useUpdatePlatformUserRoleWithPoliciesMutation, usePlatformUsersQuery, isPoliciesResponse, platformApiSlice, featureTags, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation, useGetRbacGroupsQuery, usePlatformUserGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetRbacGroupDetailsQuery, useGetPlatformUserGroupDetailsQuery, useGetRbacPermissionsMutation, useGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetRbacActionsDefinitionQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetWatchedGroupsQuery, useCreateWatchedGroupMutation, useUpdateWatchedGroupMutation, useDeleteWatchedGroupMutation, useAddWatchedUserMutation, useRemoveWatchedUserMutation, useAddWatcherMutation, useUpdateWatcherMutation, useDeleteWatcherMutation, useGetWatchedUsersQuery, useGetWatchersQuery, WATCHER_NOTIFICATION_EVENTS, WATCHER_NOTIFICATION_EVENT_LABELS, useDeleteApiKeyMutation, useGetApiKeysQuery, useCreateApiKeyMutation, useCreateLLMCredentialMutation, useGetCredentialsSchemaQuery, useGetMaskedLLMCredentialsQuery, useGetLlmsQuery, useDeleteIntegrationCredentialMutation, useDeleteCredentialMutation, useCreateIntegrationCredentialMutation, useGetIntegrationCredentialsSchemaQuery, useGetMaskedIntegrationCredentialsQuery, useGetAccountBillingInfoQuery, useUpdateAutoRechargeInfoMutation, useTriggerAutoRechargeMutation, useCreateStripeCustomerPortalMutation, useSetPlatformConfigurationsMutation, useGetPlatformConfigurationsQuery, useUpdatePlatformMembershipMutation, useGetPlatformMembershipQuery, useGetCustomDomainsQuery, useCreateCustomDomainMutation, useDeleteCustomDomainMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, coreApiSlice, recommendationPromptTypeEnum, useGetRecommendedPromptsListQuery, useCreateRecommendedPromptMutation, useUpdateRecommendedPromptMutation, useDeleteRecommendedPromptMutation, useLazyGetPublicPlatformImageAssetFileUrlQuery, useUpdateTenantMetadataMutation, useCreatePlatformImageAssetMutation, useGetProviderConfigQuery, useCreateProviderConfigMutation, useDeleteProviderConfigMutation, useGetExternalMappingQuery, useGetCredentialsListQuery, useCreateExternalMappingMutation, useDeleteExternalMappingMutation, useGetMemsearchConfigQuery, useUpdateMemsearchConfigMutation, useGetCustomMentorsQuery, useGetStripeConnectStatusQuery, useStartStripeConnectOnboardingMutation, useLazyGetStripeConnectDashboardQuery, useGetAiSearchMentorsQuery, useListPaywallsQuery, useListPricesQuery, useCreatePriceMutation, useUpdatePriceMutation, useDeletePriceMutation, useGetPaywallConfigQuery, useEnablePaywallMutation, useUpdatePaywallMutation, useGetNotificationsCountQuery, useLazyGetNotificationsQuery, useMarkAllAsReadMutation, useCreateNotificationPreviewMutation, useSendNotificationMutation, useGetMentorsQuery, useUpdateTemplateMutation, useGetTemplateDetailsQuery, useGetTemplatesQuery, useLazyGetTemplateDetailsQuery, useToggleTemplateMutation, useGetTopicsStatsQuery, useGetUsersStatsQuery, useGetSessionStatsQuery, useGetTopicsDetailsStatsQuery, useGetAccessTimeHeatmapQuery, useGetUserDetailsStatsQuery, useGetTranscriptsConversationHeadlineQuery, useGetAverageRatingQuery, useGetFinancialStatsQuery, useGetDetailedFinancialStatsQuery, useGetTranscriptsMessagesDetailsQuery, useGetTranscriptsMessagesQuery, useGetReportDetailQuery, useLazyGetDownloadReportFromURLQuery, useGetMentorPublicSettingsQuery, useGetReportsQuery, useCreateReportMutation, useGetContentAnalyticsQuery, useGetContentAnalyticsDetailsQuery, useGetRevenueQuery, useListSubscribersQuery, useGetAuditLogsQuery, 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, useGetClawMentorConfigQuery, useGetClawInstancesQuery, useGetAgentConfigQuery, useUpdateClawMentorConfigMutation, useCreateClawMentorConfigMutation, useDeleteClawMentorConfigMutation, usePushClawConfigMutation, useCreateClawInstanceMutation, useDeleteClawInstanceMutation, useUpdateAgentConfigMutation, useHealthCheckClawInstanceMutation, useTestConnectivityClawInstanceMutation, useUpdateClawInstanceMutation, useGetAgentSkillsQuery, useGetMentorSkillAssignmentsQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation, useCreateCheckoutMutation, useGetUserProjectsQuery, useUpdateUserProjectMutation, useGetTrainingDocumentsQuery, useGetVectorDocumentsQuery, useGetMentorMemoriesListQuery, useGetMemoryCategoriesAdminQuery, useDeleteMentorMemoryMutation, useUpdateMentorMemoryMutation, useCreateMentorMemoryMutation, useLazyGetConnectedServiceAuthUrlQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorSettingsQuery, useEditMentorMutation, useGetMentorCategoriesQuery, useCreateMentorMutation, useUpdateUserPlatformMetadataMutation, 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, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useDeleteGlobalMemoryMutation, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useUpdateUserRoleMutation, useUpdateUserStatusMutation, useUpdatePlatformUserRoleWithPoliciesMutation, usePlatformUsersQuery, 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, useDeleteApiKeyMutation, useGetApiKeysQuery, useCreateApiKeyMutation, useCreateLLMCredentialMutation, useGetCredentialsSchemaQuery, useGetMaskedLLMCredentialsQuery, useGetLlmsQuery, useDeleteIntegrationCredentialMutation, useDeleteCredentialMutation, useCreateIntegrationCredentialMutation, useGetIntegrationCredentialsSchemaQuery, useGetMaskedIntegrationCredentialsQuery, useGetAccountBillingInfoQuery, useUpdateAutoRechargeInfoMutation, useTriggerAutoRechargeMutation, useCreateStripeCustomerPortalMutation, useSetPlatformConfigurationsMutation, useGetPlatformConfigurationsQuery, useUpdatePlatformMembershipMutation, useGetPlatformMembershipQuery, useGetCustomDomainsQuery, useCreateCustomDomainMutation, useDeleteCustomDomainMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, coreApiSlice, recommendationPromptTypeEnum, useGetRecommendedPromptsListQuery, useCreateRecommendedPromptMutation, useUpdateRecommendedPromptMutation, useDeleteRecommendedPromptMutation, useLazyGetPublicPlatformImageAssetFileUrlQuery, useUpdateTenantMetadataMutation, useCreatePlatformImageAssetMutation, useGetProviderConfigQuery, useCreateProviderConfigMutation, useDeleteProviderConfigMutation, useGetExternalMappingQuery, useGetCredentialsListQuery, useCreateExternalMappingMutation, useDeleteExternalMappingMutation, useGetMemsearchConfigQuery, useUpdateMemsearchConfigMutation, useGetCustomMentorsQuery, useGetStripeConnectStatusQuery, useStartStripeConnectOnboardingMutation, useLazyGetStripeConnectDashboardQuery, useGetAiSearchMentorsQuery, useListPaywallsQuery, useListPricesQuery, useCreatePriceMutation, useUpdatePriceMutation, useDeletePriceMutation, useGetPaywallConfigQuery, useEnablePaywallMutation, useUpdatePaywallMutation, useGetNotificationsCountQuery, useLazyGetNotificationsQuery, useMarkAllAsReadMutation, useCreateNotificationPreviewMutation, useSendNotificationMutation, useGetMentorsQuery, useUpdateTemplateMutation, useGetTemplateDetailsQuery, useGetTemplatesQuery, useLazyGetTemplateDetailsQuery, useToggleTemplateMutation, useGetTopicsStatsQuery, useGetUsersStatsQuery, useGetSessionStatsQuery, useGetTopicsDetailsStatsQuery, useGetAccessTimeHeatmapQuery, useGetUserDetailsStatsQuery, useGetTranscriptsConversationHeadlineQuery, useGetAverageRatingQuery, useGetFinancialStatsQuery, useGetDetailedFinancialStatsQuery, useGetTranscriptsMessagesDetailsQuery, useGetTranscriptsMessagesQuery, useGetReportDetailQuery, useLazyGetDownloadReportFromURLQuery, useGetMentorPublicSettingsQuery, useGetReportsQuery, useCreateReportMutation, useGetContentAnalyticsQuery, useGetContentAnalyticsDetailsQuery, useGetRevenueQuery, useListSubscribersQuery, useGetAuditLogsQuery, 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, useGetClawMentorConfigQuery, useGetClawInstancesQuery, useGetAgentConfigQuery, useUpdateClawMentorConfigMutation, useCreateClawMentorConfigMutation, useDeleteClawMentorConfigMutation, usePushClawConfigMutation, useCreateClawInstanceMutation, useDeleteClawInstanceMutation, useUpdateAgentConfigMutation, useHealthCheckClawInstanceMutation, useTestConnectivityClawInstanceMutation, useUpdateClawInstanceMutation, useGetAgentSkillsQuery, useGetMentorSkillAssignmentsQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation, useCreateCheckoutMutation, useGetUserProjectsQuery, useUpdateUserProjectMutation, useGetTrainingDocumentsQuery, useGetVectorDocumentsQuery, useGetMentorMemoriesListQuery, useGetMemoryCategoriesAdminQuery, useDeleteMentorMemoryMutation, useUpdateMentorMemoryMutation, useCreateMentorMemoryMutation, useLazyGetConnectedServiceAuthUrlQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorSettingsQuery, useEditMentorMutation, useGetMentorCategoriesQuery, useCreateMentorMutation, useUpdateUserPlatformMetadataMutation, useGetPromptCategoriesQuery, useCreatePromptMutation, useDeletePromptMutation, useGetPromptsSearchQuery, useUpdatePromptMutation, useDeleteTrainingDocumentMutation, useGetTrainingDocumentRetrainScheduleQuery, useCreateTrainingDocumentRetrainScheduleMutation } from '@iblai/data-layer';
7
7
  import { toast } from 'sonner';
8
8
  import { jsx, Fragment as Fragment$1, jsxs } from 'react/jsx-runtime';
9
9
  import * as ReactDOM from 'react-dom';
@@ -54758,7 +54758,7 @@ const createLucideIcon = (iconName, iconNode) => {
54758
54758
  */
54759
54759
 
54760
54760
 
54761
- const __iconNode$2b = [
54761
+ const __iconNode$2c = [
54762
54762
  [
54763
54763
  "path",
54764
54764
  {
@@ -54767,7 +54767,7 @@ const __iconNode$2b = [
54767
54767
  }
54768
54768
  ]
54769
54769
  ];
54770
- const Activity = createLucideIcon("activity", __iconNode$2b);
54770
+ const Activity = createLucideIcon("activity", __iconNode$2c);
54771
54771
 
54772
54772
  /**
54773
54773
  * @license lucide-react v0.528.0 - ISC
@@ -54777,12 +54777,12 @@ const Activity = createLucideIcon("activity", __iconNode$2b);
54777
54777
  */
54778
54778
 
54779
54779
 
54780
- const __iconNode$2a = [
54780
+ const __iconNode$2b = [
54781
54781
  ["path", { d: "M17 12H7", key: "16if0g" }],
54782
54782
  ["path", { d: "M19 18H5", key: "18s9l3" }],
54783
54783
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
54784
54784
  ];
54785
- const AlignCenter = createLucideIcon("align-center", __iconNode$2a);
54785
+ const AlignCenter = createLucideIcon("align-center", __iconNode$2b);
54786
54786
 
54787
54787
  /**
54788
54788
  * @license lucide-react v0.528.0 - ISC
@@ -54792,12 +54792,12 @@ const AlignCenter = createLucideIcon("align-center", __iconNode$2a);
54792
54792
  */
54793
54793
 
54794
54794
 
54795
- const __iconNode$29 = [
54795
+ const __iconNode$2a = [
54796
54796
  ["path", { d: "M15 12H3", key: "6jk70r" }],
54797
54797
  ["path", { d: "M17 18H3", key: "1amg6g" }],
54798
54798
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
54799
54799
  ];
54800
- const AlignLeft = createLucideIcon("align-left", __iconNode$29);
54800
+ const AlignLeft = createLucideIcon("align-left", __iconNode$2a);
54801
54801
 
54802
54802
  /**
54803
54803
  * @license lucide-react v0.528.0 - ISC
@@ -54807,12 +54807,12 @@ const AlignLeft = createLucideIcon("align-left", __iconNode$29);
54807
54807
  */
54808
54808
 
54809
54809
 
54810
- const __iconNode$28 = [
54810
+ const __iconNode$29 = [
54811
54811
  ["path", { d: "M21 12H9", key: "dn1m92" }],
54812
54812
  ["path", { d: "M21 18H7", key: "1ygte8" }],
54813
54813
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
54814
54814
  ];
54815
- const AlignRight = createLucideIcon("align-right", __iconNode$28);
54815
+ const AlignRight = createLucideIcon("align-right", __iconNode$29);
54816
54816
 
54817
54817
  /**
54818
54818
  * @license lucide-react v0.528.0 - ISC
@@ -54822,12 +54822,12 @@ const AlignRight = createLucideIcon("align-right", __iconNode$28);
54822
54822
  */
54823
54823
 
54824
54824
 
54825
- const __iconNode$27 = [
54825
+ const __iconNode$28 = [
54826
54826
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
54827
54827
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
54828
54828
  ["path", { d: "M10 12h4", key: "a56b0p" }]
54829
54829
  ];
54830
- const Archive = createLucideIcon("archive", __iconNode$27);
54830
+ const Archive = createLucideIcon("archive", __iconNode$28);
54831
54831
 
54832
54832
  /**
54833
54833
  * @license lucide-react v0.528.0 - ISC
@@ -54837,11 +54837,11 @@ const Archive = createLucideIcon("archive", __iconNode$27);
54837
54837
  */
54838
54838
 
54839
54839
 
54840
- const __iconNode$26 = [
54840
+ const __iconNode$27 = [
54841
54841
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
54842
54842
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
54843
54843
  ];
54844
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$26);
54844
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$27);
54845
54845
 
54846
54846
  /**
54847
54847
  * @license lucide-react v0.528.0 - ISC
@@ -54851,11 +54851,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$26);
54851
54851
  */
54852
54852
 
54853
54853
 
54854
- const __iconNode$25 = [
54854
+ const __iconNode$26 = [
54855
54855
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
54856
54856
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
54857
54857
  ];
54858
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$25);
54858
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$26);
54859
54859
 
54860
54860
  /**
54861
54861
  * @license lucide-react v0.528.0 - ISC
@@ -54865,7 +54865,7 @@ const ArrowUp = createLucideIcon("arrow-up", __iconNode$25);
54865
54865
  */
54866
54866
 
54867
54867
 
54868
- const __iconNode$24 = [
54868
+ const __iconNode$25 = [
54869
54869
  [
54870
54870
  "path",
54871
54871
  {
@@ -54875,7 +54875,7 @@ const __iconNode$24 = [
54875
54875
  ],
54876
54876
  ["circle", { cx: "12", cy: "8", r: "6", key: "1vp47v" }]
54877
54877
  ];
54878
- const Award = createLucideIcon("award", __iconNode$24);
54878
+ const Award = createLucideIcon("award", __iconNode$25);
54879
54879
 
54880
54880
  /**
54881
54881
  * @license lucide-react v0.528.0 - ISC
@@ -54885,11 +54885,11 @@ const Award = createLucideIcon("award", __iconNode$24);
54885
54885
  */
54886
54886
 
54887
54887
 
54888
- const __iconNode$23 = [
54888
+ const __iconNode$24 = [
54889
54889
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
54890
54890
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
54891
54891
  ];
54892
- const Ban = createLucideIcon("ban", __iconNode$23);
54892
+ const Ban = createLucideIcon("ban", __iconNode$24);
54893
54893
 
54894
54894
  /**
54895
54895
  * @license lucide-react v0.528.0 - ISC
@@ -54899,12 +54899,12 @@ const Ban = createLucideIcon("ban", __iconNode$23);
54899
54899
  */
54900
54900
 
54901
54901
 
54902
- const __iconNode$22 = [
54902
+ const __iconNode$23 = [
54903
54903
  ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
54904
54904
  ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
54905
54905
  ["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }]
54906
54906
  ];
54907
- const Banknote = createLucideIcon("banknote", __iconNode$22);
54907
+ const Banknote = createLucideIcon("banknote", __iconNode$23);
54908
54908
 
54909
54909
  /**
54910
54910
  * @license lucide-react v0.528.0 - ISC
@@ -54914,7 +54914,7 @@ const Banknote = createLucideIcon("banknote", __iconNode$22);
54914
54914
  */
54915
54915
 
54916
54916
 
54917
- const __iconNode$21 = [
54917
+ const __iconNode$22 = [
54918
54918
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
54919
54919
  ["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
54920
54920
  [
@@ -54926,7 +54926,7 @@ const __iconNode$21 = [
54926
54926
  ],
54927
54927
  ["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
54928
54928
  ];
54929
- const BellRing = createLucideIcon("bell-ring", __iconNode$21);
54929
+ const BellRing = createLucideIcon("bell-ring", __iconNode$22);
54930
54930
 
54931
54931
  /**
54932
54932
  * @license lucide-react v0.528.0 - ISC
@@ -54936,7 +54936,7 @@ const BellRing = createLucideIcon("bell-ring", __iconNode$21);
54936
54936
  */
54937
54937
 
54938
54938
 
54939
- const __iconNode$20 = [
54939
+ const __iconNode$21 = [
54940
54940
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
54941
54941
  [
54942
54942
  "path",
@@ -54946,7 +54946,7 @@ const __iconNode$20 = [
54946
54946
  }
54947
54947
  ]
54948
54948
  ];
54949
- const Bell = createLucideIcon("bell", __iconNode$20);
54949
+ const Bell = createLucideIcon("bell", __iconNode$21);
54950
54950
 
54951
54951
  /**
54952
54952
  * @license lucide-react v0.528.0 - ISC
@@ -54956,13 +54956,13 @@ const Bell = createLucideIcon("bell", __iconNode$20);
54956
54956
  */
54957
54957
 
54958
54958
 
54959
- const __iconNode$1$ = [
54959
+ const __iconNode$20 = [
54960
54960
  [
54961
54961
  "path",
54962
54962
  { 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" }
54963
54963
  ]
54964
54964
  ];
54965
- const Bold$1 = createLucideIcon("bold", __iconNode$1$);
54965
+ const Bold$1 = createLucideIcon("bold", __iconNode$20);
54966
54966
 
54967
54967
  /**
54968
54968
  * @license lucide-react v0.528.0 - ISC
@@ -54972,7 +54972,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$1$);
54972
54972
  */
54973
54973
 
54974
54974
 
54975
- const __iconNode$1_ = [
54975
+ const __iconNode$1$ = [
54976
54976
  ["path", { d: "M12 7v14", key: "1akyts" }],
54977
54977
  [
54978
54978
  "path",
@@ -54982,7 +54982,7 @@ const __iconNode$1_ = [
54982
54982
  }
54983
54983
  ]
54984
54984
  ];
54985
- const BookOpen = createLucideIcon("book-open", __iconNode$1_);
54985
+ const BookOpen = createLucideIcon("book-open", __iconNode$1$);
54986
54986
 
54987
54987
  /**
54988
54988
  * @license lucide-react v0.528.0 - ISC
@@ -54992,7 +54992,7 @@ const BookOpen = createLucideIcon("book-open", __iconNode$1_);
54992
54992
  */
54993
54993
 
54994
54994
 
54995
- const __iconNode$1Z = [
54995
+ const __iconNode$1_ = [
54996
54996
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
54997
54997
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
54998
54998
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -55000,7 +55000,7 @@ const __iconNode$1Z = [
55000
55000
  ["path", { d: "M15 13v2", key: "1xurst" }],
55001
55001
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
55002
55002
  ];
55003
- const Bot = createLucideIcon("bot", __iconNode$1Z);
55003
+ const Bot = createLucideIcon("bot", __iconNode$1_);
55004
55004
 
55005
55005
  /**
55006
55006
  * @license lucide-react v0.528.0 - ISC
@@ -55010,11 +55010,11 @@ const Bot = createLucideIcon("bot", __iconNode$1Z);
55010
55010
  */
55011
55011
 
55012
55012
 
55013
- const __iconNode$1Y = [
55013
+ const __iconNode$1Z = [
55014
55014
  ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
55015
55015
  ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
55016
55016
  ];
55017
- const Briefcase = createLucideIcon("briefcase", __iconNode$1Y);
55017
+ const Briefcase = createLucideIcon("briefcase", __iconNode$1Z);
55018
55018
 
55019
55019
  /**
55020
55020
  * @license lucide-react v0.528.0 - ISC
@@ -55024,7 +55024,7 @@ const Briefcase = createLucideIcon("briefcase", __iconNode$1Y);
55024
55024
  */
55025
55025
 
55026
55026
 
55027
- const __iconNode$1X = [
55027
+ const __iconNode$1Y = [
55028
55028
  ["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
55029
55029
  ["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
55030
55030
  ["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
@@ -55033,7 +55033,7 @@ const __iconNode$1X = [
55033
55033
  ["path", { d: "M10 14h4", key: "kelpxr" }],
55034
55034
  ["path", { d: "M10 18h4", key: "1ulq68" }]
55035
55035
  ];
55036
- const Building2 = createLucideIcon("building-2", __iconNode$1X);
55036
+ const Building2 = createLucideIcon("building-2", __iconNode$1Y);
55037
55037
 
55038
55038
  /**
55039
55039
  * @license lucide-react v0.528.0 - ISC
@@ -55043,13 +55043,13 @@ const Building2 = createLucideIcon("building-2", __iconNode$1X);
55043
55043
  */
55044
55044
 
55045
55045
 
55046
- const __iconNode$1W = [
55046
+ const __iconNode$1X = [
55047
55047
  ["path", { d: "M8 2v4", key: "1cmpym" }],
55048
55048
  ["path", { d: "M16 2v4", key: "4m81vk" }],
55049
55049
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
55050
55050
  ["path", { d: "M3 10h18", key: "8toen8" }]
55051
55051
  ];
55052
- const Calendar$1 = createLucideIcon("calendar", __iconNode$1W);
55052
+ const Calendar$1 = createLucideIcon("calendar", __iconNode$1X);
55053
55053
 
55054
55054
  /**
55055
55055
  * @license lucide-react v0.528.0 - ISC
@@ -55059,11 +55059,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$1W);
55059
55059
  */
55060
55060
 
55061
55061
 
55062
- const __iconNode$1V = [
55062
+ const __iconNode$1W = [
55063
55063
  ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
55064
55064
  ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
55065
55065
  ];
55066
- const CheckCheck = createLucideIcon("check-check", __iconNode$1V);
55066
+ const CheckCheck = createLucideIcon("check-check", __iconNode$1W);
55067
55067
 
55068
55068
  /**
55069
55069
  * @license lucide-react v0.528.0 - ISC
@@ -55073,8 +55073,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$1V);
55073
55073
  */
55074
55074
 
55075
55075
 
55076
- const __iconNode$1U = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
55077
- const Check = createLucideIcon("check", __iconNode$1U);
55076
+ const __iconNode$1V = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
55077
+ const Check = createLucideIcon("check", __iconNode$1V);
55078
55078
 
55079
55079
  /**
55080
55080
  * @license lucide-react v0.528.0 - ISC
@@ -55084,8 +55084,8 @@ const Check = createLucideIcon("check", __iconNode$1U);
55084
55084
  */
55085
55085
 
55086
55086
 
55087
- const __iconNode$1T = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
55088
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1T);
55087
+ const __iconNode$1U = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
55088
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1U);
55089
55089
 
55090
55090
  /**
55091
55091
  * @license lucide-react v0.528.0 - ISC
@@ -55095,11 +55095,11 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1T);
55095
55095
  */
55096
55096
 
55097
55097
 
55098
- const __iconNode$1S = [
55098
+ const __iconNode$1T = [
55099
55099
  ["path", { d: "m17 18-6-6 6-6", key: "1yerx2" }],
55100
55100
  ["path", { d: "M7 6v12", key: "1p53r6" }]
55101
55101
  ];
55102
- const ChevronFirst = createLucideIcon("chevron-first", __iconNode$1S);
55102
+ const ChevronFirst = createLucideIcon("chevron-first", __iconNode$1T);
55103
55103
 
55104
55104
  /**
55105
55105
  * @license lucide-react v0.528.0 - ISC
@@ -55109,11 +55109,11 @@ const ChevronFirst = createLucideIcon("chevron-first", __iconNode$1S);
55109
55109
  */
55110
55110
 
55111
55111
 
55112
- const __iconNode$1R = [
55112
+ const __iconNode$1S = [
55113
55113
  ["path", { d: "m7 18 6-6-6-6", key: "lwmzdw" }],
55114
55114
  ["path", { d: "M17 6v12", key: "1o0aio" }]
55115
55115
  ];
55116
- const ChevronLast = createLucideIcon("chevron-last", __iconNode$1R);
55116
+ const ChevronLast = createLucideIcon("chevron-last", __iconNode$1S);
55117
55117
 
55118
55118
  /**
55119
55119
  * @license lucide-react v0.528.0 - ISC
@@ -55123,8 +55123,8 @@ const ChevronLast = createLucideIcon("chevron-last", __iconNode$1R);
55123
55123
  */
55124
55124
 
55125
55125
 
55126
- const __iconNode$1Q = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
55127
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1Q);
55126
+ const __iconNode$1R = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
55127
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1R);
55128
55128
 
55129
55129
  /**
55130
55130
  * @license lucide-react v0.528.0 - ISC
@@ -55134,8 +55134,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1Q);
55134
55134
  */
55135
55135
 
55136
55136
 
55137
- const __iconNode$1P = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
55138
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1P);
55137
+ const __iconNode$1Q = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
55138
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1Q);
55139
55139
 
55140
55140
  /**
55141
55141
  * @license lucide-react v0.528.0 - ISC
@@ -55145,8 +55145,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1P);
55145
55145
  */
55146
55146
 
55147
55147
 
55148
- const __iconNode$1O = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
55149
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1O);
55148
+ const __iconNode$1P = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
55149
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1P);
55150
55150
 
55151
55151
  /**
55152
55152
  * @license lucide-react v0.528.0 - ISC
@@ -55156,11 +55156,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1O);
55156
55156
  */
55157
55157
 
55158
55158
 
55159
- const __iconNode$1N = [
55159
+ const __iconNode$1O = [
55160
55160
  ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
55161
55161
  ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
55162
55162
  ];
55163
- const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1N);
55163
+ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1O);
55164
55164
 
55165
55165
  /**
55166
55166
  * @license lucide-react v0.528.0 - ISC
@@ -55170,11 +55170,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1N);
55170
55170
  */
55171
55171
 
55172
55172
 
55173
- const __iconNode$1M = [
55173
+ const __iconNode$1N = [
55174
55174
  ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
55175
55175
  ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
55176
55176
  ];
55177
- const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1M);
55177
+ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1N);
55178
55178
 
55179
55179
  /**
55180
55180
  * @license lucide-react v0.528.0 - ISC
@@ -55184,11 +55184,11 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1M);
55184
55184
  */
55185
55185
 
55186
55186
 
55187
- const __iconNode$1L = [
55187
+ const __iconNode$1M = [
55188
55188
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
55189
55189
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
55190
55190
  ];
55191
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1L);
55191
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1M);
55192
55192
 
55193
55193
  /**
55194
55194
  * @license lucide-react v0.528.0 - ISC
@@ -55198,12 +55198,12 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1L);
55198
55198
  */
55199
55199
 
55200
55200
 
55201
- const __iconNode$1K = [
55201
+ const __iconNode$1L = [
55202
55202
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
55203
55203
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
55204
55204
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
55205
55205
  ];
55206
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$1K);
55206
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1L);
55207
55207
 
55208
55208
  /**
55209
55209
  * @license lucide-react v0.528.0 - ISC
@@ -55213,12 +55213,12 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1K);
55213
55213
  */
55214
55214
 
55215
55215
 
55216
- const __iconNode$1J = [
55216
+ const __iconNode$1K = [
55217
55217
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
55218
55218
  ["path", { d: "m16 12-4-4-4 4", key: "177agl" }],
55219
55219
  ["path", { d: "M12 16V8", key: "1sbj14" }]
55220
55220
  ];
55221
- const CircleArrowUp = createLucideIcon("circle-arrow-up", __iconNode$1J);
55221
+ const CircleArrowUp = createLucideIcon("circle-arrow-up", __iconNode$1K);
55222
55222
 
55223
55223
  /**
55224
55224
  * @license lucide-react v0.528.0 - ISC
@@ -55228,11 +55228,11 @@ const CircleArrowUp = createLucideIcon("circle-arrow-up", __iconNode$1J);
55228
55228
  */
55229
55229
 
55230
55230
 
55231
- const __iconNode$1I = [
55231
+ const __iconNode$1J = [
55232
55232
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
55233
55233
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
55234
55234
  ];
55235
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1I);
55235
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1J);
55236
55236
 
55237
55237
  /**
55238
55238
  * @license lucide-react v0.528.0 - ISC
@@ -55242,11 +55242,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1I);
55242
55242
  */
55243
55243
 
55244
55244
 
55245
- const __iconNode$1H = [
55245
+ const __iconNode$1I = [
55246
55246
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
55247
55247
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
55248
55248
  ];
55249
- const CircleCheck = createLucideIcon("circle-check", __iconNode$1H);
55249
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$1I);
55250
55250
 
55251
55251
  /**
55252
55252
  * @license lucide-react v0.528.0 - ISC
@@ -55256,11 +55256,11 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$1H);
55256
55256
  */
55257
55257
 
55258
55258
 
55259
- const __iconNode$1G = [
55259
+ const __iconNode$1H = [
55260
55260
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
55261
55261
  ["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }]
55262
55262
  ];
55263
- const CircleStop = createLucideIcon("circle-stop", __iconNode$1G);
55263
+ const CircleStop = createLucideIcon("circle-stop", __iconNode$1H);
55264
55264
 
55265
55265
  /**
55266
55266
  * @license lucide-react v0.528.0 - ISC
@@ -55270,12 +55270,12 @@ const CircleStop = createLucideIcon("circle-stop", __iconNode$1G);
55270
55270
  */
55271
55271
 
55272
55272
 
55273
- const __iconNode$1F = [
55273
+ const __iconNode$1G = [
55274
55274
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
55275
55275
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
55276
55276
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
55277
55277
  ];
55278
- const CircleX = createLucideIcon("circle-x", __iconNode$1F);
55278
+ const CircleX = createLucideIcon("circle-x", __iconNode$1G);
55279
55279
 
55280
55280
  /**
55281
55281
  * @license lucide-react v0.528.0 - ISC
@@ -55285,8 +55285,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$1F);
55285
55285
  */
55286
55286
 
55287
55287
 
55288
- const __iconNode$1E = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
55289
- const Circle = createLucideIcon("circle", __iconNode$1E);
55288
+ const __iconNode$1F = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
55289
+ const Circle = createLucideIcon("circle", __iconNode$1F);
55290
55290
 
55291
55291
  /**
55292
55292
  * @license lucide-react v0.528.0 - ISC
@@ -55296,11 +55296,11 @@ const Circle = createLucideIcon("circle", __iconNode$1E);
55296
55296
  */
55297
55297
 
55298
55298
 
55299
- const __iconNode$1D = [
55299
+ const __iconNode$1E = [
55300
55300
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
55301
55301
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
55302
55302
  ];
55303
- const Clock = createLucideIcon("clock", __iconNode$1D);
55303
+ const Clock = createLucideIcon("clock", __iconNode$1E);
55304
55304
 
55305
55305
  /**
55306
55306
  * @license lucide-react v0.528.0 - ISC
@@ -55310,10 +55310,10 @@ const Clock = createLucideIcon("clock", __iconNode$1D);
55310
55310
  */
55311
55311
 
55312
55312
 
55313
- const __iconNode$1C = [
55313
+ const __iconNode$1D = [
55314
55314
  ["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
55315
55315
  ];
55316
- const Cloud = createLucideIcon("cloud", __iconNode$1C);
55316
+ const Cloud = createLucideIcon("cloud", __iconNode$1D);
55317
55317
 
55318
55318
  /**
55319
55319
  * @license lucide-react v0.528.0 - ISC
@@ -55323,12 +55323,12 @@ const Cloud = createLucideIcon("cloud", __iconNode$1C);
55323
55323
  */
55324
55324
 
55325
55325
 
55326
- const __iconNode$1B = [
55326
+ const __iconNode$1C = [
55327
55327
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
55328
55328
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
55329
55329
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
55330
55330
  ];
55331
- const CodeXml = createLucideIcon("code-xml", __iconNode$1B);
55331
+ const CodeXml = createLucideIcon("code-xml", __iconNode$1C);
55332
55332
 
55333
55333
  /**
55334
55334
  * @license lucide-react v0.528.0 - ISC
@@ -55338,11 +55338,11 @@ const CodeXml = createLucideIcon("code-xml", __iconNode$1B);
55338
55338
  */
55339
55339
 
55340
55340
 
55341
- const __iconNode$1A = [
55341
+ const __iconNode$1B = [
55342
55342
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
55343
55343
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
55344
55344
  ];
55345
- const Code$1 = createLucideIcon("code", __iconNode$1A);
55345
+ const Code$1 = createLucideIcon("code", __iconNode$1B);
55346
55346
 
55347
55347
  /**
55348
55348
  * @license lucide-react v0.528.0 - ISC
@@ -55352,11 +55352,11 @@ const Code$1 = createLucideIcon("code", __iconNode$1A);
55352
55352
  */
55353
55353
 
55354
55354
 
55355
- const __iconNode$1z = [
55355
+ const __iconNode$1A = [
55356
55356
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
55357
55357
  ["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" }]
55358
55358
  ];
55359
- const Copy = createLucideIcon("copy", __iconNode$1z);
55359
+ const Copy = createLucideIcon("copy", __iconNode$1A);
55360
55360
 
55361
55361
  /**
55362
55362
  * @license lucide-react v0.528.0 - ISC
@@ -55366,11 +55366,11 @@ const Copy = createLucideIcon("copy", __iconNode$1z);
55366
55366
  */
55367
55367
 
55368
55368
 
55369
- const __iconNode$1y = [
55369
+ const __iconNode$1z = [
55370
55370
  ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
55371
55371
  ["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
55372
55372
  ];
55373
- const CreditCard = createLucideIcon("credit-card", __iconNode$1y);
55373
+ const CreditCard = createLucideIcon("credit-card", __iconNode$1z);
55374
55374
 
55375
55375
  /**
55376
55376
  * @license lucide-react v0.528.0 - ISC
@@ -55380,12 +55380,12 @@ const CreditCard = createLucideIcon("credit-card", __iconNode$1y);
55380
55380
  */
55381
55381
 
55382
55382
 
55383
- const __iconNode$1x = [
55383
+ const __iconNode$1y = [
55384
55384
  ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
55385
55385
  ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
55386
55386
  ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
55387
55387
  ];
55388
- const Database = createLucideIcon("database", __iconNode$1x);
55388
+ const Database = createLucideIcon("database", __iconNode$1y);
55389
55389
 
55390
55390
  /**
55391
55391
  * @license lucide-react v0.528.0 - ISC
@@ -55395,11 +55395,11 @@ const Database = createLucideIcon("database", __iconNode$1x);
55395
55395
  */
55396
55396
 
55397
55397
 
55398
- const __iconNode$1w = [
55398
+ const __iconNode$1x = [
55399
55399
  ["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }],
55400
55400
  ["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }]
55401
55401
  ];
55402
- const DollarSign = createLucideIcon("dollar-sign", __iconNode$1w);
55402
+ const DollarSign = createLucideIcon("dollar-sign", __iconNode$1x);
55403
55403
 
55404
55404
  /**
55405
55405
  * @license lucide-react v0.528.0 - ISC
@@ -55409,12 +55409,12 @@ const DollarSign = createLucideIcon("dollar-sign", __iconNode$1w);
55409
55409
  */
55410
55410
 
55411
55411
 
55412
- const __iconNode$1v = [
55412
+ const __iconNode$1w = [
55413
55413
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
55414
55414
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
55415
55415
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
55416
55416
  ];
55417
- const Download = createLucideIcon("download", __iconNode$1v);
55417
+ const Download = createLucideIcon("download", __iconNode$1w);
55418
55418
 
55419
55419
  /**
55420
55420
  * @license lucide-react v0.528.0 - ISC
@@ -55424,12 +55424,12 @@ const Download = createLucideIcon("download", __iconNode$1v);
55424
55424
  */
55425
55425
 
55426
55426
 
55427
- const __iconNode$1u = [
55427
+ const __iconNode$1v = [
55428
55428
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
55429
55429
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
55430
55430
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
55431
55431
  ];
55432
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1u);
55432
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1v);
55433
55433
 
55434
55434
  /**
55435
55435
  * @license lucide-react v0.528.0 - ISC
@@ -55439,12 +55439,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1u);
55439
55439
  */
55440
55440
 
55441
55441
 
55442
- const __iconNode$1t = [
55442
+ const __iconNode$1u = [
55443
55443
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
55444
55444
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
55445
55445
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
55446
55446
  ];
55447
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$1t);
55447
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$1u);
55448
55448
 
55449
55449
  /**
55450
55450
  * @license lucide-react v0.528.0 - ISC
@@ -55454,12 +55454,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$1t);
55454
55454
  */
55455
55455
 
55456
55456
 
55457
- const __iconNode$1s = [
55457
+ const __iconNode$1t = [
55458
55458
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
55459
55459
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
55460
55460
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
55461
55461
  ];
55462
- const ExternalLink = createLucideIcon("external-link", __iconNode$1s);
55462
+ const ExternalLink = createLucideIcon("external-link", __iconNode$1t);
55463
55463
 
55464
55464
  /**
55465
55465
  * @license lucide-react v0.528.0 - ISC
@@ -55469,7 +55469,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$1s);
55469
55469
  */
55470
55470
 
55471
55471
 
55472
- const __iconNode$1r = [
55472
+ const __iconNode$1s = [
55473
55473
  [
55474
55474
  "path",
55475
55475
  {
@@ -55487,7 +55487,7 @@ const __iconNode$1r = [
55487
55487
  ],
55488
55488
  ["path", { d: "m2 2 20 20", key: "1ooewy" }]
55489
55489
  ];
55490
- const EyeOff = createLucideIcon("eye-off", __iconNode$1r);
55490
+ const EyeOff = createLucideIcon("eye-off", __iconNode$1s);
55491
55491
 
55492
55492
  /**
55493
55493
  * @license lucide-react v0.528.0 - ISC
@@ -55497,7 +55497,7 @@ const EyeOff = createLucideIcon("eye-off", __iconNode$1r);
55497
55497
  */
55498
55498
 
55499
55499
 
55500
- const __iconNode$1q = [
55500
+ const __iconNode$1r = [
55501
55501
  [
55502
55502
  "path",
55503
55503
  {
@@ -55507,7 +55507,7 @@ const __iconNode$1q = [
55507
55507
  ],
55508
55508
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
55509
55509
  ];
55510
- const Eye = createLucideIcon("eye", __iconNode$1q);
55510
+ const Eye = createLucideIcon("eye", __iconNode$1r);
55511
55511
 
55512
55512
  /**
55513
55513
  * @license lucide-react v0.528.0 - ISC
@@ -55517,7 +55517,7 @@ const Eye = createLucideIcon("eye", __iconNode$1q);
55517
55517
  */
55518
55518
 
55519
55519
 
55520
- const __iconNode$1p = [
55520
+ const __iconNode$1q = [
55521
55521
  ["path", { d: "M10 12v-1", key: "v7bkov" }],
55522
55522
  ["path", { d: "M10 18v-2", key: "1cjy8d" }],
55523
55523
  ["path", { d: "M10 7V6", key: "dljcrl" }],
@@ -55528,7 +55528,7 @@ const __iconNode$1p = [
55528
55528
  ],
55529
55529
  ["circle", { cx: "10", cy: "20", r: "2", key: "1xzdoj" }]
55530
55530
  ];
55531
- const FileArchive = createLucideIcon("file-archive", __iconNode$1p);
55531
+ const FileArchive = createLucideIcon("file-archive", __iconNode$1q);
55532
55532
 
55533
55533
  /**
55534
55534
  * @license lucide-react v0.528.0 - ISC
@@ -55538,7 +55538,7 @@ const FileArchive = createLucideIcon("file-archive", __iconNode$1p);
55538
55538
  */
55539
55539
 
55540
55540
 
55541
- const __iconNode$1o = [
55541
+ const __iconNode$1p = [
55542
55542
  ["path", { d: "M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "rslqgf" }],
55543
55543
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55544
55544
  [
@@ -55549,7 +55549,7 @@ const __iconNode$1o = [
55549
55549
  }
55550
55550
  ]
55551
55551
  ];
55552
- const FileAudio = createLucideIcon("file-audio", __iconNode$1o);
55552
+ const FileAudio = createLucideIcon("file-audio", __iconNode$1p);
55553
55553
 
55554
55554
  /**
55555
55555
  * @license lucide-react v0.528.0 - ISC
@@ -55559,13 +55559,13 @@ const FileAudio = createLucideIcon("file-audio", __iconNode$1o);
55559
55559
  */
55560
55560
 
55561
55561
 
55562
- const __iconNode$1n = [
55562
+ const __iconNode$1o = [
55563
55563
  ["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
55564
55564
  ["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }],
55565
55565
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55566
55566
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }]
55567
55567
  ];
55568
- const FileCode = createLucideIcon("file-code", __iconNode$1n);
55568
+ const FileCode = createLucideIcon("file-code", __iconNode$1o);
55569
55569
 
55570
55570
  /**
55571
55571
  * @license lucide-react v0.528.0 - ISC
@@ -55575,13 +55575,13 @@ const FileCode = createLucideIcon("file-code", __iconNode$1n);
55575
55575
  */
55576
55576
 
55577
55577
 
55578
- const __iconNode$1m = [
55578
+ const __iconNode$1n = [
55579
55579
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
55580
55580
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55581
55581
  ["path", { d: "M12 18v-6", key: "17g6i2" }],
55582
55582
  ["path", { d: "m9 15 3 3 3-3", key: "1npd3o" }]
55583
55583
  ];
55584
- const FileDown = createLucideIcon("file-down", __iconNode$1m);
55584
+ const FileDown = createLucideIcon("file-down", __iconNode$1n);
55585
55585
 
55586
55586
  /**
55587
55587
  * @license lucide-react v0.528.0 - ISC
@@ -55591,13 +55591,13 @@ const FileDown = createLucideIcon("file-down", __iconNode$1m);
55591
55591
  */
55592
55592
 
55593
55593
 
55594
- const __iconNode$1l = [
55594
+ const __iconNode$1m = [
55595
55595
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
55596
55596
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55597
55597
  ["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
55598
55598
  ["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
55599
55599
  ];
55600
- const FileImage = createLucideIcon("file-image", __iconNode$1l);
55600
+ const FileImage = createLucideIcon("file-image", __iconNode$1m);
55601
55601
 
55602
55602
  /**
55603
55603
  * @license lucide-react v0.528.0 - ISC
@@ -55607,7 +55607,7 @@ const FileImage = createLucideIcon("file-image", __iconNode$1l);
55607
55607
  */
55608
55608
 
55609
55609
 
55610
- const __iconNode$1k = [
55610
+ const __iconNode$1l = [
55611
55611
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55612
55612
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
55613
55613
  [
@@ -55618,7 +55618,7 @@ const __iconNode$1k = [
55618
55618
  }
55619
55619
  ]
55620
55620
  ];
55621
- const FilePlay = createLucideIcon("file-play", __iconNode$1k);
55621
+ const FilePlay = createLucideIcon("file-play", __iconNode$1l);
55622
55622
 
55623
55623
  /**
55624
55624
  * @license lucide-react v0.528.0 - ISC
@@ -55628,7 +55628,7 @@ const FilePlay = createLucideIcon("file-play", __iconNode$1k);
55628
55628
  */
55629
55629
 
55630
55630
 
55631
- const __iconNode$1j = [
55631
+ const __iconNode$1k = [
55632
55632
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
55633
55633
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55634
55634
  ["path", { d: "M8 13h2", key: "yr2amv" }],
@@ -55636,7 +55636,7 @@ const __iconNode$1j = [
55636
55636
  ["path", { d: "M8 17h2", key: "2yhykz" }],
55637
55637
  ["path", { d: "M14 17h2", key: "10kma7" }]
55638
55638
  ];
55639
- const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1j);
55639
+ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1k);
55640
55640
 
55641
55641
  /**
55642
55642
  * @license lucide-react v0.528.0 - ISC
@@ -55646,14 +55646,14 @@ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1j);
55646
55646
  */
55647
55647
 
55648
55648
 
55649
- const __iconNode$1i = [
55649
+ const __iconNode$1j = [
55650
55650
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
55651
55651
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
55652
55652
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
55653
55653
  ["path", { d: "M16 13H8", key: "t4e002" }],
55654
55654
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
55655
55655
  ];
55656
- const FileText = createLucideIcon("file-text", __iconNode$1i);
55656
+ const FileText = createLucideIcon("file-text", __iconNode$1j);
55657
55657
 
55658
55658
  /**
55659
55659
  * @license lucide-react v0.528.0 - ISC
@@ -55663,11 +55663,39 @@ const FileText = createLucideIcon("file-text", __iconNode$1i);
55663
55663
  */
55664
55664
 
55665
55665
 
55666
- const __iconNode$1h = [
55666
+ const __iconNode$1i = [
55667
55667
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
55668
55668
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
55669
55669
  ];
55670
- const File$1 = createLucideIcon("file", __iconNode$1h);
55670
+ const File$1 = createLucideIcon("file", __iconNode$1i);
55671
+
55672
+ /**
55673
+ * @license lucide-react v0.528.0 - ISC
55674
+ *
55675
+ * This source code is licensed under the ISC license.
55676
+ * See the LICENSE file in the root directory of this source tree.
55677
+ */
55678
+
55679
+
55680
+ const __iconNode$1h = [
55681
+ [
55682
+ "path",
55683
+ {
55684
+ d: "M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",
55685
+ key: "hod4my"
55686
+ }
55687
+ ],
55688
+ [
55689
+ "path",
55690
+ {
55691
+ d: "M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",
55692
+ key: "w4yl2u"
55693
+ }
55694
+ ],
55695
+ ["path", { d: "M3 5a2 2 0 0 0 2 2h3", key: "f2jnh7" }],
55696
+ ["path", { d: "M3 3v13a2 2 0 0 0 2 2h3", key: "k8epm1" }]
55697
+ ];
55698
+ const FolderTree = createLucideIcon("folder-tree", __iconNode$1h);
55671
55699
 
55672
55700
  /**
55673
55701
  * @license lucide-react v0.528.0 - ISC
@@ -63281,6 +63309,28 @@ var resourceModalWebsiteCrawlModal$3 = {
63281
63309
  submit: "Submit",
63282
63310
  formBeingSubmitted: "Form is being submitted"
63283
63311
  };
63312
+ var resourcePicker$3 = {
63313
+ title: "Select Resource",
63314
+ description: "Browse the resource tree and pick the path to grant access to.",
63315
+ breadcrumbLabel: "Resource path breadcrumbs",
63316
+ breadcrumbRoot: "root",
63317
+ loading: "Loading resources…",
63318
+ loadFailed: "Failed to load resources",
63319
+ retry: "Retry",
63320
+ collectionsHeading: "Nested collections ({count})",
63321
+ noCollections: "No nested collections available",
63322
+ terminalBadge: "Grant target",
63323
+ terminalHint: "This collection can only be granted as a whole — individual items cannot be selected. Use \"Use this path\" to select it.",
63324
+ searchFieldLabel: "Search field",
63325
+ searchPlaceholder: "Search value (optional)",
63326
+ itemsHeading: "Items ({count}) — click to drill in",
63327
+ noItems: "No items found",
63328
+ searchFailed: "Failed to load items",
63329
+ currentPathLabel: "Selected resource path",
63330
+ stopHint: "You can stop at any level — the current path is a valid policy resource.",
63331
+ cancel: "Cancel",
63332
+ selectPath: "Use this path"
63333
+ };
63284
63334
  var retrievedDocumentsButton$3 = {
63285
63335
  title: "Retrieved Documents"
63286
63336
  };
@@ -63939,7 +63989,7 @@ var tabsPoliciestab$3 = {
63939
63989
  searchRolesPlaceholder: "Type to search roles...",
63940
63990
  fieldResources: "Resources",
63941
63991
  removeResourceLabel: "Remove resource {resource}",
63942
- resourceInputPlaceholder: "e.g., /platforms/{pk}/projects, /platforms/{pk}/mentors/*",
63992
+ resourceInputPlaceholder: "e.g., /projects, /mentors/*",
63943
63993
  addResourceLabel: "Add resource",
63944
63994
  resourceHint: "Press Enter or click + to add. Supports wildcards and path parameters",
63945
63995
  fieldUsers: "Users",
@@ -63958,7 +64008,9 @@ var tabsPoliciestab$3 = {
63958
64008
  policyCreated: "Policy created",
63959
64009
  operationFailed: "Operation failed",
63960
64010
  policyDeleted: "Policy deleted",
63961
- deleteFailed: "Delete failed"
64011
+ deleteFailed: "Delete failed",
64012
+ browseResources: "Browse",
64013
+ browseResourcesLabel: "Browse resources"
63962
64014
  };
63963
64015
  var tabsPrivacyTab$3 = {
63964
64016
  moreInfo: "More info",
@@ -65135,6 +65187,7 @@ var en = {
65135
65187
  resourceModalLocalFileUploadModal: resourceModalLocalFileUploadModal$3,
65136
65188
  resourceModalUrlUploadModal: resourceModalUrlUploadModal$3,
65137
65189
  resourceModalWebsiteCrawlModal: resourceModalWebsiteCrawlModal$3,
65190
+ resourcePicker: resourcePicker$3,
65138
65191
  retrievedDocumentsButton: retrievedDocumentsButton$3,
65139
65192
  richTextEditor: richTextEditor$3,
65140
65193
  safetyTabLabels: safetyTabLabels$3,
@@ -68885,6 +68938,28 @@ var resourceModalWebsiteCrawlModal$2 = {
68885
68938
  submit: "Soumettre",
68886
68939
  formBeingSubmitted: "Le formulaire est en cours d'envoi"
68887
68940
  };
68941
+ var resourcePicker$2 = {
68942
+ title: "Sélectionner une ressource",
68943
+ description: "Parcourez l'arborescence des ressources et choisissez le chemin auquel accorder l'accès.",
68944
+ breadcrumbLabel: "Fil d'Ariane du chemin de ressource",
68945
+ breadcrumbRoot: "racine",
68946
+ loading: "Chargement des ressources…",
68947
+ loadFailed: "Échec du chargement des ressources",
68948
+ retry: "Réessayer",
68949
+ collectionsHeading: "Collections imbriquées ({count})",
68950
+ noCollections: "Aucune collection imbriquée disponible",
68951
+ terminalBadge: "Cible de permission",
68952
+ terminalHint: "Cette collection ne peut être accordée que dans son ensemble — impossible de sélectionner des éléments individuels. Utilisez « Utiliser ce chemin » pour la sélectionner.",
68953
+ searchFieldLabel: "Champ de recherche",
68954
+ searchPlaceholder: "Valeur de recherche (facultatif)",
68955
+ itemsHeading: "Éléments ({count}) — cliquez pour explorer",
68956
+ noItems: "Aucun élément trouvé",
68957
+ searchFailed: "Échec du chargement des éléments",
68958
+ currentPathLabel: "Chemin de ressource sélectionné",
68959
+ stopHint: "Vous pouvez vous arrêter à n'importe quel niveau — le chemin actuel est une ressource de politique valide.",
68960
+ cancel: "Annuler",
68961
+ selectPath: "Utiliser ce chemin"
68962
+ };
68888
68963
  var retrievedDocumentsButton$2 = {
68889
68964
  title: "Documents récupérés"
68890
68965
  };
@@ -69543,7 +69618,7 @@ var tabsPoliciestab$2 = {
69543
69618
  searchRolesPlaceholder: "Taper pour rechercher des rôles...",
69544
69619
  fieldResources: "Ressources",
69545
69620
  removeResourceLabel: "Supprimer la ressource {resource}",
69546
- resourceInputPlaceholder: "ex. : /platforms/{pk}/projects, /platforms/{pk}/mentors/*",
69621
+ resourceInputPlaceholder: "ex. : /projects, /mentors/*",
69547
69622
  addResourceLabel: "Ajouter une ressource",
69548
69623
  resourceHint: "Appuyez sur Entrée ou cliquez sur + pour ajouter. Prend en charge les caractères génériques et les paramètres de chemin",
69549
69624
  fieldUsers: "Utilisateurs",
@@ -69562,7 +69637,9 @@ var tabsPoliciestab$2 = {
69562
69637
  policyCreated: "Politique créée",
69563
69638
  operationFailed: "Opération échouée",
69564
69639
  policyDeleted: "Politique supprimée",
69565
- deleteFailed: "Suppression échouée"
69640
+ deleteFailed: "Suppression échouée",
69641
+ browseResources: "Parcourir",
69642
+ browseResourcesLabel: "Parcourir les ressources"
69566
69643
  };
69567
69644
  var tabsPrivacyTab$2 = {
69568
69645
  moreInfo: "Plus d'informations",
@@ -70739,6 +70816,7 @@ var fr = {
70739
70816
  resourceModalLocalFileUploadModal: resourceModalLocalFileUploadModal$2,
70740
70817
  resourceModalUrlUploadModal: resourceModalUrlUploadModal$2,
70741
70818
  resourceModalWebsiteCrawlModal: resourceModalWebsiteCrawlModal$2,
70819
+ resourcePicker: resourcePicker$2,
70742
70820
  retrievedDocumentsButton: retrievedDocumentsButton$2,
70743
70821
  richTextEditor: richTextEditor$2,
70744
70822
  safetyTabLabels: safetyTabLabels$2,
@@ -74489,6 +74567,28 @@ var resourceModalWebsiteCrawlModal$1 = {
74489
74567
  submit: "Enviar",
74490
74568
  formBeingSubmitted: "El formulario se está enviando"
74491
74569
  };
74570
+ var resourcePicker$1 = {
74571
+ title: "Seleccionar recurso",
74572
+ description: "Explora el árbol de recursos y elige la ruta a la que conceder acceso.",
74573
+ breadcrumbLabel: "Ruta de navegación del recurso",
74574
+ breadcrumbRoot: "raíz",
74575
+ loading: "Cargando recursos…",
74576
+ loadFailed: "Error al cargar los recursos",
74577
+ retry: "Reintentar",
74578
+ collectionsHeading: "Colecciones anidadas ({count})",
74579
+ noCollections: "No hay colecciones anidadas disponibles",
74580
+ terminalBadge: "Objetivo de permiso",
74581
+ terminalHint: "Esta colección solo puede concederse en su totalidad — no se pueden seleccionar elementos individuales. Usa «Usar esta ruta» para seleccionarla.",
74582
+ searchFieldLabel: "Campo de búsqueda",
74583
+ searchPlaceholder: "Valor de búsqueda (opcional)",
74584
+ itemsHeading: "Elementos ({count}) — haz clic para explorar",
74585
+ noItems: "No se encontraron elementos",
74586
+ searchFailed: "Error al cargar los elementos",
74587
+ currentPathLabel: "Ruta de recurso seleccionada",
74588
+ stopHint: "Puedes detenerte en cualquier nivel — la ruta actual es un recurso de política válido.",
74589
+ cancel: "Cancelar",
74590
+ selectPath: "Usar esta ruta"
74591
+ };
74492
74592
  var retrievedDocumentsButton$1 = {
74493
74593
  title: "Documentos recuperados"
74494
74594
  };
@@ -75147,7 +75247,7 @@ var tabsPoliciestab$1 = {
75147
75247
  searchRolesPlaceholder: "Escriba para buscar roles...",
75148
75248
  fieldResources: "Recursos",
75149
75249
  removeResourceLabel: "Eliminar recurso {resource}",
75150
- resourceInputPlaceholder: "ej., /platforms/{pk}/projects, /platforms/{pk}/mentors/*",
75250
+ resourceInputPlaceholder: "e.j., /projects, /mentors/*",
75151
75251
  addResourceLabel: "Agregar recurso",
75152
75252
  resourceHint: "Presione Intro o haga clic en + para agregar. Compatible con comodines y parámetros de ruta",
75153
75253
  fieldUsers: "Usuarios",
@@ -75166,7 +75266,9 @@ var tabsPoliciestab$1 = {
75166
75266
  policyCreated: "Política creada",
75167
75267
  operationFailed: "Operación fallida",
75168
75268
  policyDeleted: "Política eliminada",
75169
- deleteFailed: "Error al eliminar"
75269
+ deleteFailed: "Error al eliminar",
75270
+ browseResources: "Explorar",
75271
+ browseResourcesLabel: "Explorar recursos"
75170
75272
  };
75171
75273
  var tabsPrivacyTab$1 = {
75172
75274
  moreInfo: "Más información",
@@ -76343,6 +76445,7 @@ var es = {
76343
76445
  resourceModalLocalFileUploadModal: resourceModalLocalFileUploadModal$1,
76344
76446
  resourceModalUrlUploadModal: resourceModalUrlUploadModal$1,
76345
76447
  resourceModalWebsiteCrawlModal: resourceModalWebsiteCrawlModal$1,
76448
+ resourcePicker: resourcePicker$1,
76346
76449
  retrievedDocumentsButton: retrievedDocumentsButton$1,
76347
76450
  richTextEditor: richTextEditor$1,
76348
76451
  safetyTabLabels: safetyTabLabels$1,
@@ -80093,6 +80196,28 @@ var resourceModalWebsiteCrawlModal = {
80093
80196
  submit: "提交",
80094
80197
  formBeingSubmitted: "表单正在提交"
80095
80198
  };
80199
+ var resourcePicker = {
80200
+ title: "选择资源",
80201
+ description: "浏览资源树并选择要授予访问权限的路径。",
80202
+ breadcrumbLabel: "资源路径导航",
80203
+ breadcrumbRoot: "根",
80204
+ loading: "正在加载资源…",
80205
+ loadFailed: "加载资源失败",
80206
+ retry: "重试",
80207
+ collectionsHeading: "嵌套集合({count})",
80208
+ noCollections: "没有可用的嵌套集合",
80209
+ terminalBadge: "授权目标",
80210
+ terminalHint: "此集合只能整体授权,无法选择其中的单个条目。请使用“使用此路径”进行选择。",
80211
+ searchFieldLabel: "搜索字段",
80212
+ searchPlaceholder: "搜索值(可选)",
80213
+ itemsHeading: "条目({count})— 点击深入",
80214
+ noItems: "未找到条目",
80215
+ searchFailed: "加载条目失败",
80216
+ currentPathLabel: "已选资源路径",
80217
+ stopHint: "您可以在任意层级停止 — 当前路径即为有效的策略资源。",
80218
+ cancel: "取消",
80219
+ selectPath: "使用此路径"
80220
+ };
80096
80221
  var retrievedDocumentsButton = {
80097
80222
  title: "已检索文档"
80098
80223
  };
@@ -80751,7 +80876,7 @@ var tabsPoliciestab = {
80751
80876
  searchRolesPlaceholder: "输入以搜索角色...",
80752
80877
  fieldResources: "资源",
80753
80878
  removeResourceLabel: "移除资源 {resource}",
80754
- resourceInputPlaceholder: "例如:/platforms/{pk}/projects, /platforms/{pk}/mentors/*",
80879
+ resourceInputPlaceholder: "例如:/projects, /mentors/*",
80755
80880
  addResourceLabel: "添加资源",
80756
80881
  resourceHint: "按 Enter 或点击 + 添加。支持通配符和路径参数",
80757
80882
  fieldUsers: "用户",
@@ -80770,7 +80895,9 @@ var tabsPoliciestab = {
80770
80895
  policyCreated: "策略已创建",
80771
80896
  operationFailed: "操作失败",
80772
80897
  policyDeleted: "策略已删除",
80773
- deleteFailed: "删除失败"
80898
+ deleteFailed: "删除失败",
80899
+ browseResources: "浏览",
80900
+ browseResourcesLabel: "浏览资源"
80774
80901
  };
80775
80902
  var tabsPrivacyTab = {
80776
80903
  moreInfo: "更多信息",
@@ -81947,6 +82074,7 @@ var zh = {
81947
82074
  resourceModalLocalFileUploadModal: resourceModalLocalFileUploadModal,
81948
82075
  resourceModalUrlUploadModal: resourceModalUrlUploadModal,
81949
82076
  resourceModalWebsiteCrawlModal: resourceModalWebsiteCrawlModal,
82077
+ resourcePicker: resourcePicker,
81950
82078
  retrievedDocumentsButton: retrievedDocumentsButton,
81951
82079
  richTextEditor: richTextEditor,
81952
82080
  safetyTabLabels: safetyTabLabels,
@@ -142632,6 +142760,76 @@ function RolesTab({ tenant }) {
142632
142760
  return (jsxs("div", { className: "mt-4", children: [jsxs("div", { className: "flex justify-between items-center gap-1 mb-6", children: [jsxs("div", { className: "relative 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, { value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: t('tabsRolestab.searchRolesPlaceholder'), "aria-label": t('tabsRolestab.searchRolesAriaLabel'), 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(Button$1, { onClick: openNew, "aria-label": t('tabsRolestab.newRoleAriaLabel'), className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white h-[35px]", children: t('tabsRolestab.newRoleButton') })] }), 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('tabsRolestab.loading') }) })), isError && (jsx("div", { className: "py-8 text-center text-sm text-red-500", children: t('tabsRolestab.failedToLoadRoles') })), !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('tabsRolestab.nameHeader') }), jsx("th", { className: "px-6 py-3 text-right font-medium text-gray-500 dark:text-gray-400 w-[100px]" })] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [roles.map((r) => (jsxs("tr", { children: [jsx("td", { className: "px-6 py-4 text-gray-900 dark:text-gray-100 text-sm", children: r.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(r), disabled: deletingRoleId === r.id, "aria-label": t('tabsRolestab.editRoleAriaLabel', { name: r.name }), children: jsx(Pencil, { className: "h-4 w-4", "aria-hidden": "true" }) }), jsx(TooltipProvider, { children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { asChild: true, children: jsx("span", { tabIndex: 0, children: jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => onDelete(r), className: "text-red-600 hover:text-red-700", disabled: deletingRoleId === r.id || r.is_internal, "aria-label": t('tabsRolestab.deleteRoleAriaLabel', { name: r.name }), children: deletingRoleId === r.id ? (jsx(LoaderCircle, { className: "h-4 w-4 animate-spin", "aria-hidden": "true" })) : (jsx(Trash2, { className: "h-4 w-4", "aria-hidden": "true" })) }) }) }), r.is_internal && (jsx(TooltipContent, { children: jsx("p", { children: t('tabsRolestab.cannotDeleteInternalRoles') }) }))] }) })] }) })] }, r.id))), roles.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('tabsRolestab.noRolesFound') }) }))] })] }) })), !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: data === null || data === void 0 ? void 0 : data.count, itemsPerPage: 10, itemLabel: "roles" })), 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: editing ? t('tabsRolestab.editRoleTitle') : t('tabsRolestab.newRoleTitle') }) }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { htmlFor: "r-name", children: t('tabsRolestab.roleNameLabel') }), jsx(Input, { id: "r-name", value: form.name, onChange: (e) => setForm({ ...form, name: e.target.value }), placeholder: t('tabsRolestab.enterRoleNamePlaceholder'), required: true })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { htmlFor: "r-actions", children: t('tabsRolestab.actionsLabel') }), jsxs("div", { className: "space-y-2", children: [actions.length > 0 && (jsx("div", { className: "flex flex-wrap gap-2 p-2 border border-gray-200 dark:border-gray-700 rounded-md bg-gray-50 dark:bg-gray-800", children: actions.map((action, index) => (jsxs(Badge, { variant: "secondary", className: "px-2 py-1 flex items-center gap-1 font-mono text-xs", children: [jsx("span", { children: action }), jsx("button", { type: "button", onClick: () => removeAction(action), className: "ml-1 hover:text-red-600", "aria-label": t('tabsRolestab.removeActionAriaLabel', { action }), children: jsx(X$1, { className: "h-3 w-3" }) })] }, index))) })), jsx(ActionsCombobox, { selected: actions, onSelect: addActionKey }), jsxs("div", { className: "flex gap-2", children: [jsx(Input, { id: "r-actions", value: actionInput, onChange: (e) => setActionInput(e.target.value), onKeyDown: handleActionKeyDown, placeholder: t('tabsRolestab.customActionPlaceholder'), className: "flex-1 font-mono text-sm" }), jsx(Button$1, { type: "button", variant: "outline", size: "sm", onClick: addAction, disabled: !actionInput.trim(), "aria-label": t('tabsRolestab.addActionAriaLabel'), children: jsx(Plus, { className: "h-4 w-4" }) })] }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t('tabsRolestab.actionsHelpText') })] })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { htmlFor: "r-data-actions", children: t('tabsRolestab.dataActionsLabel') }), jsxs("div", { className: "space-y-2", children: [dataActions.length > 0 && (jsx("div", { className: "flex flex-wrap gap-2 p-2 border border-gray-200 dark:border-gray-700 rounded-md bg-gray-50 dark:bg-gray-800", children: dataActions.map((action, index) => (jsxs(Badge, { variant: "secondary", className: "px-2 py-1 flex items-center gap-1 font-mono text-xs", children: [jsx("span", { children: action }), jsx("button", { type: "button", onClick: () => removeDataAction(action), className: "ml-1 hover:text-red-600", "aria-label": t('tabsRolestab.removeDataActionAriaLabel', { action }), children: jsx(X$1, { className: "h-3 w-3" }) })] }, index))) })), jsxs("div", { className: "flex gap-2", children: [jsx(Input, { id: "r-data-actions", value: dataActionInput, onChange: (e) => setDataActionInput(e.target.value), onKeyDown: handleDataActionKeyDown, placeholder: t('tabsRolestab.dataActionPlaceholder'), className: "flex-1 font-mono text-sm" }), jsx(Button$1, { type: "button", variant: "outline", size: "sm", onClick: addDataAction, disabled: !dataActionInput.trim(), "aria-label": t('tabsRolestab.addDataActionAriaLabel'), children: jsx(Plus, { className: "h-4 w-4" }) })] }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t('tabsRolestab.dataActionsHelpText') })] })] })] }), jsxs(DialogFooter, { className: "mt-6 gap-1.5", children: [jsx(Button$1, { variant: "outline", onClick: () => setIsOpen(false), children: t('tabsRolestab.cancel') }), jsx(TooltipProvider, { children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { asChild: true, children: jsx("span", { tabIndex: 0, className: "", children: jsx(Button$1, { onClick: onSubmit, disabled: !!editing && (roleDetails === null || roleDetails === void 0 ? void 0 : roleDetails.is_internal), className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white w-full", children: editing ? t('tabsRolestab.saveRole') : t('tabsRolestab.createRole') }) }) }), editing && (roleDetails === null || roleDetails === void 0 ? void 0 : roleDetails.is_internal) && (jsx(TooltipContent, { children: jsx("p", { children: t('tabsRolestab.cannotEditInternalRoles') }) }))] }) })] })] }) })] }));
142633
142761
  }
142634
142762
 
142763
+ /**
142764
+ * Walks the RBAC resource-discovery tree so users can build a policy resource
142765
+ * path interactively instead of typing it by hand. Starts at "/", renders
142766
+ * entity nodes as drill-down collection cards and collection nodes as a
142767
+ * searchable entity list, and lets the user confirm the current path at any
142768
+ * level (intermediate paths are valid policy targets).
142769
+ */
142770
+ function ResourcePickerModal({ open, onOpenChange, tenant, onSelect, }) {
142771
+ var _a, _b, _c, _d, _e, _f, _g;
142772
+ const t = useT();
142773
+ const [path, setPath] = useState('/');
142774
+ const [searchQp, setSearchQp] = useState(null);
142775
+ const [searchValue, setSearchValue] = useState('');
142776
+ const [debouncedSearchValue, setDebouncedSearchValue] = useState('');
142777
+ // Start from the root every time the picker is opened.
142778
+ useEffect(() => {
142779
+ if (open) {
142780
+ setPath('/');
142781
+ setSearchQp(null);
142782
+ setSearchValue('');
142783
+ setDebouncedSearchValue('');
142784
+ }
142785
+ }, [open]);
142786
+ // Search state belongs to a single collection node — clear it on navigation.
142787
+ useEffect(() => {
142788
+ setSearchQp(null);
142789
+ setSearchValue('');
142790
+ setDebouncedSearchValue('');
142791
+ }, [path]);
142792
+ useEffect(() => {
142793
+ const handler = setTimeout(() => setDebouncedSearchValue(searchValue.trim()), 300);
142794
+ return () => clearTimeout(handler);
142795
+ }, [searchValue]);
142796
+ const { currentData: node, isFetching: isDiscoveryLoading, isError: isDiscoveryError, refetch: refetchDiscovery, } = useGetRbacResourceDiscoveryQuery({ path, platformKey: tenant }, { skip: !open });
142797
+ const entityNode = (node === null || node === void 0 ? void 0 : node.node_type) === 'entity' ? node : null;
142798
+ const collectionNode = (node === null || node === void 0 ? void 0 : node.node_type) === 'collection' ? node : null;
142799
+ const effectiveSearchQp = (_c = (_a = searchQp !== null && searchQp !== void 0 ? searchQp : collectionNode === null || collectionNode === void 0 ? void 0 : collectionNode.default_search_qp) !== null && _a !== void 0 ? _a : (_b = collectionNode === null || collectionNode === void 0 ? void 0 : collectionNode.search_qps) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : null;
142800
+ // The backend may prefix list_url with the /dm gateway segment; the data
142801
+ // layer already targets the DM service base URL, so strip it.
142802
+ const listUrl = (_e = (_d = collectionNode === null || collectionNode === void 0 ? void 0 : collectionNode.list_url) === null || _d === void 0 ? void 0 : _d.replace(/^\/dm(?=\/)/, '')) !== null && _e !== void 0 ? _e : '';
142803
+ const { currentData: listData, isFetching: isListLoading, isError: isListError, } = useGetRbacResourceListQuery({
142804
+ listUrl,
142805
+ searchParams: effectiveSearchQp && debouncedSearchValue
142806
+ ? { [effectiveSearchQp]: debouncedSearchValue }
142807
+ : {},
142808
+ resultFields: (_f = collectionNode === null || collectionNode === void 0 ? void 0 : collectionNode.result_fields) !== null && _f !== void 0 ? _f : null,
142809
+ }, { skip: !open || !(collectionNode === null || collectionNode === void 0 ? void 0 : collectionNode.list_url) });
142810
+ // The path confirmed on select: prefer the server-echoed resource_path for
142811
+ // the loaded node, fall back to the client-built path while loading.
142812
+ const currentResourcePath = (_g = node === null || node === void 0 ? void 0 : node.resource_path) !== null && _g !== void 0 ? _g : path;
142813
+ // Breadcrumb prefixes: "/" then one crumb per segment ("/mentors/", "/mentors/6/", …).
142814
+ const crumbs = useMemo(() => {
142815
+ const segments = path.split('/').filter(Boolean);
142816
+ return segments.map((segment, index) => ({
142817
+ label: segment,
142818
+ path: `/${segments.slice(0, index + 1).join('/')}/`,
142819
+ }));
142820
+ }, [path]);
142821
+ function confirmSelection() {
142822
+ onSelect(currentResourcePath);
142823
+ onOpenChange(false);
142824
+ }
142825
+ return (jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxs(DialogContent, { className: "max-w-2xl max-h-[85vh] flex flex-col", children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { children: t('resourcePicker.title') }), jsx(DialogDescription, { children: t('resourcePicker.description') })] }), jsxs("nav", { "aria-label": t('resourcePicker.breadcrumbLabel'), className: "flex flex-wrap items-center gap-1", children: [jsxs(Button$1, { type: "button", variant: crumbs.length === 0 ? 'secondary' : 'ghost', size: "sm", className: "h-7 px-2 font-mono text-xs", onClick: () => setPath('/'), children: [t('resourcePicker.breadcrumbRoot'), " /"] }), crumbs.map((crumb, index) => (jsxs("span", { className: "flex items-center gap-1", children: [jsx(ChevronRight, { className: "h-3 w-3 text-gray-400", "aria-hidden": "true" }), jsxs(Button$1, { type: "button", variant: index === crumbs.length - 1 ? 'secondary' : 'ghost', size: "sm", className: "h-7 px-2 font-mono text-xs", onClick: () => setPath(crumb.path), children: [crumb.label, "/"] })] }, crumb.path)))] }), jsxs("div", { className: "flex-1 min-h-[200px] overflow-y-auto pr-1", children: [isDiscoveryLoading && (jsxs("div", { className: "flex justify-center items-center h-40", role: "status", children: [jsx(LoaderCircle, { className: "h-6 w-6 animate-spin text-gray-400", "aria-hidden": "true" }), jsx("span", { className: "sr-only", children: t('resourcePicker.loading') })] })), !isDiscoveryLoading && isDiscoveryError && (jsxs("div", { className: "py-8 text-center text-sm text-red-500 space-y-2", children: [jsx("p", { children: t('resourcePicker.loadFailed') }), jsx(Button$1, { type: "button", variant: "outline", size: "sm", onClick: () => refetchDiscovery(), children: t('resourcePicker.retry') })] })), !isDiscoveryLoading && entityNode && (jsxs("div", { className: "space-y-2", children: [jsx("p", { className: "text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400", children: t('resourcePicker.collectionsHeading', {
142826
+ count: entityNode.collections.length,
142827
+ }) }), entityNode.collections.length === 0 && (jsx("p", { className: "py-6 text-center text-sm text-gray-500 dark:text-gray-400", children: t('resourcePicker.noCollections') })), jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2", children: entityNode.collections.map((collection) => (jsxs("button", { type: "button", onClick: () => setPath(collection.path), className: "text-left p-3 min-w-0 border border-gray-200 dark:border-gray-700 rounded-md hover:border-blue-400 hover:bg-blue-50/50 dark:hover:bg-blue-900/10 transition-colors", children: [jsxs("span", { className: "flex items-center gap-2", children: [jsxs("span", { className: "font-mono text-sm font-medium text-blue-600 dark:text-blue-400", children: [collection.type, "/"] }), collection.collection_only && (jsxs(Badge, { variant: "secondary", className: "text-[10px] px-1.5 py-0 gap-1", children: [jsx(Lock, { className: "h-2.5 w-2.5", "aria-hidden": "true" }), t('resourcePicker.terminalBadge')] }))] }), jsx("span", { className: "block mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: collection.help })] }, collection.path))) })] })), !isDiscoveryLoading && collectionNode && !collectionNode.list_url && (jsx("div", { className: "py-8 px-4 text-center text-sm text-gray-600 dark:text-gray-300 border border-dashed border-gray-300 dark:border-gray-600 rounded-md", children: t('resourcePicker.terminalHint') })), !isDiscoveryLoading && collectionNode && collectionNode.list_url && (jsxs("div", { className: "space-y-3", children: [jsxs("div", { className: "flex gap-2", children: [collectionNode.search_qps.length > 0 && (jsxs(Select$1, { value: effectiveSearchQp !== null && effectiveSearchQp !== void 0 ? effectiveSearchQp : undefined, onValueChange: (value) => setSearchQp(value), children: [jsx(SelectTrigger, { className: "w-[160px] shrink-0", "aria-label": t('resourcePicker.searchFieldLabel'), children: jsx(SelectValue, {}) }), jsx(SelectContent, { children: collectionNode.search_qps.map((qp) => (jsx(SelectItem, { value: qp, children: qp }, qp))) })] })), jsxs("div", { className: "relative flex-1", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400", "aria-hidden": "true" }), jsx(Input, { value: searchValue, onChange: (e) => setSearchValue(e.target.value), placeholder: t('resourcePicker.searchPlaceholder'), "aria-label": t('resourcePicker.searchPlaceholder'), className: "pl-10" }), isListLoading && (jsx(LoaderCircle, { className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] })] }), isListError && (jsx("p", { className: "py-6 text-center text-sm text-red-500", children: t('resourcePicker.searchFailed') })), !isListError && listData && (jsxs("div", { className: "space-y-2", children: [jsx("p", { className: "text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400", children: t('resourcePicker.itemsHeading', { count: listData.items.length }) }), listData.items.length === 0 && !isListLoading && (jsx("p", { className: "py-6 text-center text-sm text-gray-500 dark:text-gray-400", children: t('resourcePicker.noItems') })), jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2", children: listData.items.map((item) => {
142828
+ var _a, _b;
142829
+ return (jsxs("button", { type: "button", onClick: () => setPath(`${collectionNode.resource_path}${item.pk}/`), className: "text-left p-3 min-w-0 border border-gray-200 dark:border-gray-700 rounded-md hover:border-blue-400 hover:bg-blue-50/50 dark:hover:bg-blue-900/10 transition-colors", children: [jsx("span", { title: item.name, className: "block truncate text-sm font-medium text-gray-900 dark:text-gray-100", children: item.name }), jsxs("span", { className: "block mt-0.5 font-mono text-xs text-gray-500 dark:text-gray-400", children: [(_b = (_a = collectionNode.result_fields) === null || _a === void 0 ? void 0 : _a.pk) !== null && _b !== void 0 ? _b : 'id', " = ", String(item.pk)] })] }, String(item.pk)));
142830
+ }) })] }))] }))] }), jsxs(DialogFooter, { className: "flex-col sm:flex-row sm:items-center gap-2 border-t border-gray-200 dark:border-gray-700 pt-4", children: [jsxs("div", { className: "flex-1 min-w-0 text-left", children: [jsx("p", { className: "text-[10px] font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400", children: t('resourcePicker.currentPathLabel') }), jsx("p", { className: "font-mono text-sm text-green-600 dark:text-green-400 truncate", children: currentResourcePath }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t('resourcePicker.stopHint') })] }), jsx(Button$1, { type: "button", variant: "outline", onClick: () => onOpenChange(false), children: t('resourcePicker.cancel') }), jsx(Button$1, { type: "button", onClick: confirmSelection, className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: t('resourcePicker.selectPath') })] })] }) }));
142831
+ }
142832
+
142635
142833
  function PoliciesTab({ tenant }) {
142636
142834
  const t = useT();
142637
142835
  const [page, setPage] = useState(1);
@@ -142683,6 +142881,7 @@ function PoliciesTab({ tenant }) {
142683
142881
  const [showUserSearch, setShowUserSearch] = useState(false);
142684
142882
  const [showGroupSearch, setShowGroupSearch] = useState(false);
142685
142883
  const [deletingPolicyId, setDeletingPolicyId] = useState(null);
142884
+ const [isResourcePickerOpen, setIsResourcePickerOpen] = useState(false);
142686
142885
  const { currentData: policyDetails } = useGetRbacPolicyDetailsQuery({ id: editingPolicyId, platform_key: tenant }, { skip: !editingPolicyId });
142687
142886
  // Debounce role search and query the roles endpoint with the search term
142688
142887
  useEffect(() => {
@@ -142812,6 +143011,11 @@ function PoliciesTab({ tenant }) {
142812
143011
  setResourceInput('');
142813
143012
  }
142814
143013
  }
143014
+ function addPickedResource(resourcePath) {
143015
+ if (!resources.includes(resourcePath)) {
143016
+ setResources((prev) => [...prev, resourcePath]);
143017
+ }
143018
+ }
142815
143019
  function removeResource(resource) {
142816
143020
  setResources(resources.filter((r) => r !== resource));
142817
143021
  }
@@ -142916,7 +143120,7 @@ function PoliciesTab({ tenant }) {
142916
143120
  setForm({ ...form, roleId: role.id, roleName: role.name });
142917
143121
  setRoleSearch('');
142918
143122
  setShowRoleSearch(false);
142919
- }, className: "w-full text-left px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 flex flex-col", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: role.name }), role.description && (jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: role.description }))] }, role.id))) }))] })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { htmlFor: "p-res", children: t('tabsPoliciestab.fieldResources') }), jsxs("div", { className: "space-y-2", children: [resources.length > 0 && (jsx("div", { className: "flex flex-wrap gap-2 p-2 border border-gray-200 dark:border-gray-700 rounded-md bg-gray-50 dark:bg-gray-800", children: resources.map((resource, index) => (jsxs(Badge, { variant: "secondary", className: "px-2 py-1 flex items-center gap-1 font-mono text-xs", children: [jsx("span", { children: resource }), jsx("button", { type: "button", onClick: () => removeResource(resource), className: "ml-1 hover:text-red-600", "aria-label": t('tabsPoliciestab.removeResourceLabel', { resource }), children: jsx(X$1, { className: "h-3 w-3" }) })] }, index))) })), jsxs("div", { className: "flex gap-2", children: [jsx(Input, { id: "p-res", value: resourceInput, onChange: (e) => setResourceInput(e.target.value), onKeyDown: handleResourceKeyDown, placeholder: t('tabsPoliciestab.resourceInputPlaceholder'), className: "flex-1 font-mono text-sm" }), jsx(Button$1, { type: "button", variant: "outline", size: "sm", onClick: addResource, disabled: !resourceInput.trim(), "aria-label": t('tabsPoliciestab.addResourceLabel'), children: jsx(Plus, { className: "h-4 w-4" }) })] }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t('tabsPoliciestab.resourceHint') })] })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { children: t('tabsPoliciestab.fieldUsers') }), jsxs("div", { className: "space-y-2", children: [selectedUsers.length > 0 ? (jsx("div", { className: "space-y-2 max-h-32 overflow-y-auto border border-gray-200 dark:border-gray-700 rounded-md p-2", children: selectedUsers.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 }), 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: () => removeUser(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('tabsPoliciestab.removeUserLabel', { name: user.name }), children: jsx(X$1, { className: "h-4 w-4" }) })] }, user.id))) })) : (jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400 p-3 text-center border border-dashed border-gray-300 dark:border-gray-600 rounded-md", children: t('tabsPoliciestab.noUsersAdded') })), jsxs("div", { className: "relative", children: [jsx(Input, { value: userSearch, onChange: (e) => {
143123
+ }, className: "w-full text-left px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 flex flex-col", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: role.name }), role.description && (jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: role.description }))] }, role.id))) }))] })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { htmlFor: "p-res", children: t('tabsPoliciestab.fieldResources') }), jsxs("div", { className: "space-y-2", children: [resources.length > 0 && (jsx("div", { className: "flex flex-wrap gap-2 p-2 border border-gray-200 dark:border-gray-700 rounded-md bg-gray-50 dark:bg-gray-800", children: resources.map((resource, index) => (jsxs(Badge, { variant: "secondary", className: "px-2 py-1 flex items-center gap-1 font-mono text-xs", children: [jsx("span", { children: resource }), jsx("button", { type: "button", onClick: () => removeResource(resource), className: "ml-1 hover:text-red-600", "aria-label": t('tabsPoliciestab.removeResourceLabel', { resource }), children: jsx(X$1, { className: "h-3 w-3" }) })] }, index))) })), jsxs("div", { className: "flex gap-2", children: [jsx(Input, { id: "p-res", value: resourceInput, onChange: (e) => setResourceInput(e.target.value), onKeyDown: handleResourceKeyDown, placeholder: t('tabsPoliciestab.resourceInputPlaceholder'), className: "flex-1 font-mono text-sm" }), jsx(Button$1, { type: "button", variant: "outline", size: "sm", onClick: addResource, disabled: !resourceInput.trim(), "aria-label": t('tabsPoliciestab.addResourceLabel'), children: jsx(Plus, { className: "h-4 w-4" }) }), jsxs(Button$1, { type: "button", variant: "outline", size: "sm", onClick: () => setIsResourcePickerOpen(true), "aria-label": t('tabsPoliciestab.browseResourcesLabel'), children: [jsx(FolderTree, { className: "h-4 w-4 mr-1", "aria-hidden": "true" }), t('tabsPoliciestab.browseResources')] })] }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t('tabsPoliciestab.resourceHint') })] })] }), jsxs("div", { className: "grid gap-1.5", children: [jsx(Label$2, { children: t('tabsPoliciestab.fieldUsers') }), jsxs("div", { className: "space-y-2", children: [selectedUsers.length > 0 ? (jsx("div", { className: "space-y-2 max-h-32 overflow-y-auto border border-gray-200 dark:border-gray-700 rounded-md p-2", children: selectedUsers.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 }), 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: () => removeUser(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('tabsPoliciestab.removeUserLabel', { name: user.name }), children: jsx(X$1, { className: "h-4 w-4" }) })] }, user.id))) })) : (jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400 p-3 text-center border border-dashed border-gray-300 dark:border-gray-600 rounded-md", children: t('tabsPoliciestab.noUsersAdded') })), jsxs("div", { className: "relative", children: [jsx(Input, { value: userSearch, onChange: (e) => {
142920
143124
  setUserSearch(e.target.value);
142921
143125
  setShowUserSearch(e.target.value.length > 0);
142922
143126
  }, onFocus: () => setShowUserSearch(userSearch.length > 0), placeholder: t('tabsPoliciestab.searchUsersPlaceholder') }), showUserSearch && availableUsers.length > 0 && (jsx("div", { className: "absolute top-full left-0 right-0 mt-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md shadow-lg max-h-48 overflow-y-auto z-50", children: availableUsers.map((user) => (jsxs("button", { type: "button", onClick: () => addUser({
@@ -142931,7 +143135,7 @@ function PoliciesTab({ tenant }) {
142931
143135
  name: group.name,
142932
143136
  }), className: "w-full text-left px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700", children: jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: group.name }) }, group.id))) }))] })] })] })] }), jsxs(DialogFooter, { className: "mt-6", children: [jsx(Button$1, { variant: "outline", onClick: () => setIsOpen(false), children: t('tabsPoliciestab.cancel') }), jsx(TooltipProvider, { children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { asChild: true, children: jsx("span", { tabIndex: 0, children: jsx(Button$1, { onClick: onSubmit, disabled: policyDetails === null || policyDetails === void 0 ? void 0 : policyDetails.is_internal, className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: editing
142933
143137
  ? t('tabsPoliciestab.savePolicy')
142934
- : t('tabsPoliciestab.createPolicy') }) }) }), editing && (policyDetails === null || policyDetails === void 0 ? void 0 : policyDetails.is_internal) && (jsx(TooltipContent, { children: jsx("p", { children: t('tabsPoliciestab.cannotEditInternal') }) }))] }) })] })] }) })] }));
143138
+ : 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 })] }));
142935
143139
  }
142936
143140
 
142937
143141
  const PAGE_SIZE$3 = 10;