@iblai/iblai-js 1.18.2 → 1.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data-layer/playwright/chat-privacy-helpers.d.ts +127 -0
- package/dist/data-layer/playwright/index.d.ts +3 -1
- package/dist/data-layer/playwright/privacy-tab-helpers.d.ts +6 -11
- package/dist/playwright/index.cjs +289 -36
- package/dist/playwright/index.cjs.map +1 -1
- package/dist/playwright/index.d.ts +135 -13
- package/dist/playwright/index.esm.js +268 -34
- package/dist/playwright/index.esm.js.map +1 -1
- package/dist/playwright/playwright/chat-privacy-helpers.d.ts +127 -0
- package/dist/playwright/playwright/index.d.ts +3 -1
- package/dist/playwright/playwright/privacy-tab-helpers.d.ts +6 -11
- package/dist/web-containers/playwright/chat-privacy-helpers.d.ts +127 -0
- package/dist/web-containers/playwright/index.d.ts +3 -1
- package/dist/web-containers/playwright/privacy-tab-helpers.d.ts +6 -11
- package/dist/web-containers/source/index.esm.js +1279 -616
- package/dist/web-containers/source/next/index.esm.js +9805 -8739
- package/dist/web-utils/playwright/chat-privacy-helpers.d.ts +127 -0
- package/dist/web-utils/playwright/index.d.ts +3 -1
- package/dist/web-utils/playwright/privacy-tab-helpers.d.ts +6 -11
- package/package.json +5 -5
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default, { useRef, useEffect, useState, useCallback, useLayoutEffect, forwardRef, createElement as createElement$1, useMemo, createContext, useReducer, useImperativeHandle, useContext, useId as useId$2, useDebugValue, isValidElement, Children, PureComponent, cloneElement, Component, lazy, Suspense } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
4
|
+
import { selectSessionId, selectActiveChatMessages, useCachedSessionId, chatActions, LOCAL_STORAGE_KEYS, TimeTracker, getInitials, useTenantMetadata, WithPermissions, useStripeUpgrade, 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
|
+
import { useGetTenantChatPrivacyConfigQuery, useGetChatPrivacyEffectiveQuery, useCreateSessionIdMutation, useUpdateSessionDisableChathistoryMutation, chatPrivacyApiSlice, 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, useCreateGlobalMemoryMutation, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useDeleteGlobalMemoryMutation, ChatPrivacyModeEnum, useGetUserChatPrivacySettingsQuery, useUpdateUserChatPrivacySettingsMutation, CHAT_PRIVACY_MODES, 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, useUpdateTenantChatPrivacyConfigMutation, 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, useGetReportsQuery, useCreateReportMutation, useGetMentorPublicSettingsQuery, useGetContentAnalyticsQuery, useGetContentAnalyticsDetailsQuery, useGetRevenueQuery, useListSubscribersQuery, useGetAuditLogsQuery, useLazyGetCourseMetaDataQuery, useLazyGetCourseCompletionOutlinesQuery, useLazyGetCourseEligibilityQuery, useLazyGetUserEnrolledCoursesQuery, useLazyGetUserAssignedCoursesQuery, useLazyGetUserCredentialsQuery, useLazyGetOverTimeActivityQuery, useLazyGetCatalogSearchQuery, useGetUserEarnedSkillsQuery, useGetUserReportedSkillsQuery, useGetUserDesiredSkillsQuery, 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, useGetPublicMentorsQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorSettingsQuery, useEditMentorMutation, useGetMentorCategoriesQuery, useCreateMentorMutation, useUpdateUserPlatformMetadataMutation, useGetPromptCategoriesQuery, useCreatePromptMutation, useDeletePromptMutation, useGetPromptsSearchQuery, useUpdatePromptMutation, useDeleteTrainingDocumentMutation, useGetTrainingDocumentRetrainScheduleQuery, useCreateTrainingDocumentRetrainScheduleMutation } from '@iblai/data-layer';
|
|
5
6
|
import { toast, Toaster as Toaster$1 } from 'sonner';
|
|
6
7
|
import { jsx, Fragment as Fragment$1, jsxs } from 'react/jsx-runtime';
|
|
7
8
|
import * as ReactDOM from 'react-dom';
|
|
8
9
|
import ReactDOM__default from 'react-dom';
|
|
9
10
|
import { z as z$1 } from 'zod';
|
|
10
|
-
import { useDispatch, useSelector } from 'react-redux';
|
|
11
11
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
12
12
|
import { createDialogScope } from '@radix-ui/react-dialog';
|
|
13
13
|
import { NotificationSourceTypeEnum, StateEnum, MentorVisibilityEnum, PromptVisibilityEnum } from '@iblai/iblai-api';
|
|
@@ -53,6 +53,146 @@ function useIframeMessageHandler({ handlers, allowedOrigins, defaultHandler, })
|
|
|
53
53
|
}, [allowedOrigins]);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
const DEFAULT_EFFECTIVE = {
|
|
57
|
+
mode: 'normal',
|
|
58
|
+
source: 'default',
|
|
59
|
+
is_locked: false,
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Convenience wrapper around the chat-privacy data-layer slice. Centralises
|
|
63
|
+
* the four moving parts the toggle component needs:
|
|
64
|
+
*
|
|
65
|
+
* 1. Whether the tenant has opted into user-controlled chat privacy
|
|
66
|
+
* (`allow_user_chat_privacy_control`).
|
|
67
|
+
* 2. The resolved effective mode for the current (tenant, agent, user,
|
|
68
|
+
* session) tuple — pulled live via `useGetChatPrivacyEffectiveQuery`.
|
|
69
|
+
* 3. A "start a private chat" action — POSTs `/sessions/` with
|
|
70
|
+
* `disable_chathistory: true`, then pushes the new id into the chat
|
|
71
|
+
* slice + localStorage cache so the rest of the SDK switches to it.
|
|
72
|
+
* 4. A mid-session disable action — POSTs `/sessions/{id}/disable-chathistory/`.
|
|
73
|
+
*
|
|
74
|
+
* Identity comes from args; live chat state (session id, message count)
|
|
75
|
+
* is read from the shared chat slice so the hook can target whichever
|
|
76
|
+
* session the rest of the SDK is currently driving.
|
|
77
|
+
*/
|
|
78
|
+
function useChatPrivacy({ org, userId, mentor, }) {
|
|
79
|
+
const dispatch = useDispatch();
|
|
80
|
+
const sessionId = useSelector(selectSessionId);
|
|
81
|
+
// Count USER messages only — assistant proactive prompts ("Hi, how can
|
|
82
|
+
// I help?") are sent into the chat slice before the user has done
|
|
83
|
+
// anything, so a naive `messages.length` would mis-classify an
|
|
84
|
+
// otherwise-empty conversation as mid-session and trigger the
|
|
85
|
+
// confirm dialog.
|
|
86
|
+
const activeMessages = useSelector(selectActiveChatMessages);
|
|
87
|
+
const messageCount = (activeMessages !== null && activeMessages !== void 0 ? activeMessages : []).filter((m) => (m === null || m === void 0 ? void 0 : m.role) === 'user').length;
|
|
88
|
+
// `useAdvancedChat` rehydrates the active session id from this cache on
|
|
89
|
+
// mount and on tab switches. Writing here keeps the Redux dispatch from
|
|
90
|
+
// being clobbered the moment the SDK's hydration effect runs again.
|
|
91
|
+
const [cachedSessionId, saveCachedSessionId] = useCachedSessionId();
|
|
92
|
+
const skipIdentity = !org || !userId;
|
|
93
|
+
const { data: tenantConfig } = useGetTenantChatPrivacyConfigQuery({ org: org !== null && org !== void 0 ? org : '', userId: userId !== null && userId !== void 0 ? userId : '' }, { skip: skipIdentity });
|
|
94
|
+
const featureEnabled = !!(tenantConfig === null || tenantConfig === void 0 ? void 0 : tenantConfig.allow_user_chat_privacy_control);
|
|
95
|
+
// Do NOT gate the effective query on featureEnabled — the mentor
|
|
96
|
+
// kill-switch (top of precedence) and a tenant flip that happens
|
|
97
|
+
// mid-private-chat both need the resolved effective mode to surface
|
|
98
|
+
// the locked pill. Gating on tenant alone would hide the highest-
|
|
99
|
+
// precedence privacy state and silently lose the indicator when the
|
|
100
|
+
// org toggles user-control off while the user is still in Private
|
|
101
|
+
// Mode at the backend.
|
|
102
|
+
const { data: effective, isUninitialized: effectiveIsUninitialized, isLoading: effectiveIsLoading, } = useGetChatPrivacyEffectiveQuery({
|
|
103
|
+
org: org !== null && org !== void 0 ? org : '',
|
|
104
|
+
userId: userId !== null && userId !== void 0 ? userId : '',
|
|
105
|
+
mentor,
|
|
106
|
+
session: sessionId,
|
|
107
|
+
}, { skip: skipIdentity });
|
|
108
|
+
// `isEffectiveReady` flips true the first time RTK Query lands data
|
|
109
|
+
// for the effective query. While it's false the toggle component
|
|
110
|
+
// should treat its derived `messageCount` / `effective.mode` as not
|
|
111
|
+
// yet trustworthy (initial mount race vs the chat-history hydration
|
|
112
|
+
// in useAdvancedChat — see the consumer's `handleClick` guard).
|
|
113
|
+
const isEffectiveReady = !effectiveIsUninitialized && !effectiveIsLoading;
|
|
114
|
+
const [createSession, { isLoading: isStartingPrivateChat }] = useCreateSessionIdMutation();
|
|
115
|
+
const [updateSessionDisable, { isLoading: isDisablingChatHistory }] = useUpdateSessionDisableChathistoryMutation();
|
|
116
|
+
// Internal: create a fresh session with the given `disable_chathistory`
|
|
117
|
+
// value and propagate the new id into the chat slice + localStorage
|
|
118
|
+
// cache the rest of the SDK reads from. Used by both startPrivateChat
|
|
119
|
+
// (disable=true) and startNormalChat (disable=false — the exit
|
|
120
|
+
// affordance from the empty-private state, since the backend rejects
|
|
121
|
+
// flipping an existing session from true → false).
|
|
122
|
+
const createSessionWithFlag = async (disableChathistory, label) => {
|
|
123
|
+
var _a;
|
|
124
|
+
if (!org || !userId || !mentor)
|
|
125
|
+
return undefined;
|
|
126
|
+
try {
|
|
127
|
+
// The published `@iblai/iblai-api` types lag the backend here:
|
|
128
|
+
// 1. `ChatSessionRequest` is missing `disable_chathistory`.
|
|
129
|
+
// 2. The `aiMentorOrgsUsersSessionsCreate` signature destructures
|
|
130
|
+
// `userId` but omits it from the args type.
|
|
131
|
+
// Both are accepted at runtime — the URL contains `{user_id}` and
|
|
132
|
+
// the body is forwarded verbatim. Cast to bypass until regenerated.
|
|
133
|
+
const args = {
|
|
134
|
+
org,
|
|
135
|
+
userId,
|
|
136
|
+
requestBody: { mentor, disable_chathistory: disableChathistory },
|
|
137
|
+
};
|
|
138
|
+
const response = (await createSession(args).unwrap());
|
|
139
|
+
const newSessionId = (_a = response === null || response === void 0 ? void 0 : response.session_id) !== null && _a !== void 0 ? _a : response === null || response === void 0 ? void 0 : response.id;
|
|
140
|
+
if (newSessionId) {
|
|
141
|
+
// Order matters: write the localStorage cache FIRST so the SDK's
|
|
142
|
+
// hydration effect re-dispatches `updateSessionIds(newSessionId)`
|
|
143
|
+
// instead of overwriting our dispatch with the previous cached id.
|
|
144
|
+
saveCachedSessionId({
|
|
145
|
+
...(cachedSessionId !== null && cachedSessionId !== void 0 ? cachedSessionId : {}),
|
|
146
|
+
[mentor]: newSessionId,
|
|
147
|
+
});
|
|
148
|
+
dispatch(chatActions.updateSessionIds(newSessionId));
|
|
149
|
+
// The createSession mutation lives on `sessionApiSlice` and so
|
|
150
|
+
// doesn't invalidate `ChatPrivacyEffective`. Manually invalidate
|
|
151
|
+
// so the effective query refetches against the fresh session and
|
|
152
|
+
// the toggle flips into the correct visual state.
|
|
153
|
+
dispatch(chatPrivacyApiSlice.util.invalidateTags(['ChatPrivacyEffective']));
|
|
154
|
+
}
|
|
155
|
+
return newSessionId;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error(`${label} failed`, error);
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const startPrivateChat = () => createSessionWithFlag(true, 'startPrivateChat');
|
|
163
|
+
const startNormalChat = () => createSessionWithFlag(false, 'startNormalChat');
|
|
164
|
+
const disableChatHistory = async (disable, sessionIdOverride) => {
|
|
165
|
+
const targetSession = sessionIdOverride !== null && sessionIdOverride !== void 0 ? sessionIdOverride : sessionId;
|
|
166
|
+
if (!org || !userId || !targetSession)
|
|
167
|
+
return false;
|
|
168
|
+
try {
|
|
169
|
+
await updateSessionDisable({
|
|
170
|
+
org,
|
|
171
|
+
userId,
|
|
172
|
+
sessionId: targetSession,
|
|
173
|
+
requestBody: { disable_chathistory: disable },
|
|
174
|
+
}).unwrap();
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
console.error('disableChatHistory failed', error);
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
featureEnabled,
|
|
184
|
+
effective: effective !== null && effective !== void 0 ? effective : DEFAULT_EFFECTIVE,
|
|
185
|
+
isEffectiveReady,
|
|
186
|
+
startNormalChat,
|
|
187
|
+
sessionId,
|
|
188
|
+
messageCount,
|
|
189
|
+
startPrivateChat,
|
|
190
|
+
disableChatHistory,
|
|
191
|
+
isStartingPrivateChat,
|
|
192
|
+
isDisablingChatHistory,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
|
|
56
196
|
function useTimeTracking(config = {}) {
|
|
57
197
|
const [timeTracking] = useTimeTrackingMutation();
|
|
58
198
|
const [tenantKey, setTenantKey] = useState('');
|
|
@@ -53209,7 +53349,7 @@ var ScrollDownButton = SelectScrollDownButton$1;
|
|
|
53209
53349
|
var Separator$3 = SelectSeparator$1;
|
|
53210
53350
|
|
|
53211
53351
|
/**
|
|
53212
|
-
* @license lucide-react v0.
|
|
53352
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53213
53353
|
*
|
|
53214
53354
|
* This source code is licensed under the ISC license.
|
|
53215
53355
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -53236,7 +53376,7 @@ const hasA11yProp = (props) => {
|
|
|
53236
53376
|
};
|
|
53237
53377
|
|
|
53238
53378
|
/**
|
|
53239
|
-
* @license lucide-react v0.
|
|
53379
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53240
53380
|
*
|
|
53241
53381
|
* This source code is licensed under the ISC license.
|
|
53242
53382
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -53255,7 +53395,7 @@ var defaultAttributes = {
|
|
|
53255
53395
|
};
|
|
53256
53396
|
|
|
53257
53397
|
/**
|
|
53258
|
-
* @license lucide-react v0.
|
|
53398
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53259
53399
|
*
|
|
53260
53400
|
* This source code is licensed under the ISC license.
|
|
53261
53401
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -53293,7 +53433,7 @@ const Icon$1 = forwardRef(
|
|
|
53293
53433
|
);
|
|
53294
53434
|
|
|
53295
53435
|
/**
|
|
53296
|
-
* @license lucide-react v0.
|
|
53436
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53297
53437
|
*
|
|
53298
53438
|
* This source code is licensed under the ISC license.
|
|
53299
53439
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -53318,14 +53458,14 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
53318
53458
|
};
|
|
53319
53459
|
|
|
53320
53460
|
/**
|
|
53321
|
-
* @license lucide-react v0.
|
|
53461
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53322
53462
|
*
|
|
53323
53463
|
* This source code is licensed under the ISC license.
|
|
53324
53464
|
* See the LICENSE file in the root directory of this source tree.
|
|
53325
53465
|
*/
|
|
53326
53466
|
|
|
53327
53467
|
|
|
53328
|
-
const __iconNode$
|
|
53468
|
+
const __iconNode$25 = [
|
|
53329
53469
|
[
|
|
53330
53470
|
"path",
|
|
53331
53471
|
{
|
|
@@ -53334,120 +53474,134 @@ const __iconNode$21 = [
|
|
|
53334
53474
|
}
|
|
53335
53475
|
]
|
|
53336
53476
|
];
|
|
53337
|
-
const Activity = createLucideIcon("activity", __iconNode$
|
|
53477
|
+
const Activity = createLucideIcon("activity", __iconNode$25);
|
|
53338
53478
|
|
|
53339
53479
|
/**
|
|
53340
|
-
* @license lucide-react v0.
|
|
53480
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53341
53481
|
*
|
|
53342
53482
|
* This source code is licensed under the ISC license.
|
|
53343
53483
|
* See the LICENSE file in the root directory of this source tree.
|
|
53344
53484
|
*/
|
|
53345
53485
|
|
|
53346
53486
|
|
|
53347
|
-
const __iconNode$
|
|
53487
|
+
const __iconNode$24 = [
|
|
53348
53488
|
["path", { d: "M17 12H7", key: "16if0g" }],
|
|
53349
53489
|
["path", { d: "M19 18H5", key: "18s9l3" }],
|
|
53350
53490
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
53351
53491
|
];
|
|
53352
|
-
const AlignCenter = createLucideIcon("align-center", __iconNode$
|
|
53492
|
+
const AlignCenter = createLucideIcon("align-center", __iconNode$24);
|
|
53353
53493
|
|
|
53354
53494
|
/**
|
|
53355
|
-
* @license lucide-react v0.
|
|
53495
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53356
53496
|
*
|
|
53357
53497
|
* This source code is licensed under the ISC license.
|
|
53358
53498
|
* See the LICENSE file in the root directory of this source tree.
|
|
53359
53499
|
*/
|
|
53360
53500
|
|
|
53361
53501
|
|
|
53362
|
-
const __iconNode$
|
|
53502
|
+
const __iconNode$23 = [
|
|
53363
53503
|
["path", { d: "M15 12H3", key: "6jk70r" }],
|
|
53364
53504
|
["path", { d: "M17 18H3", key: "1amg6g" }],
|
|
53365
53505
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
53366
53506
|
];
|
|
53367
|
-
const AlignLeft = createLucideIcon("align-left", __iconNode$
|
|
53507
|
+
const AlignLeft = createLucideIcon("align-left", __iconNode$23);
|
|
53368
53508
|
|
|
53369
53509
|
/**
|
|
53370
|
-
* @license lucide-react v0.
|
|
53510
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53371
53511
|
*
|
|
53372
53512
|
* This source code is licensed under the ISC license.
|
|
53373
53513
|
* See the LICENSE file in the root directory of this source tree.
|
|
53374
53514
|
*/
|
|
53375
53515
|
|
|
53376
53516
|
|
|
53377
|
-
const __iconNode$
|
|
53517
|
+
const __iconNode$22 = [
|
|
53378
53518
|
["path", { d: "M21 12H9", key: "dn1m92" }],
|
|
53379
53519
|
["path", { d: "M21 18H7", key: "1ygte8" }],
|
|
53380
53520
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
53381
53521
|
];
|
|
53382
|
-
const AlignRight = createLucideIcon("align-right", __iconNode$
|
|
53522
|
+
const AlignRight = createLucideIcon("align-right", __iconNode$22);
|
|
53383
53523
|
|
|
53384
53524
|
/**
|
|
53385
|
-
* @license lucide-react v0.
|
|
53525
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53386
53526
|
*
|
|
53387
53527
|
* This source code is licensed under the ISC license.
|
|
53388
53528
|
* See the LICENSE file in the root directory of this source tree.
|
|
53389
53529
|
*/
|
|
53390
53530
|
|
|
53391
53531
|
|
|
53392
|
-
const __iconNode$
|
|
53532
|
+
const __iconNode$21 = [
|
|
53393
53533
|
["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
|
|
53394
53534
|
["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
|
|
53395
53535
|
["path", { d: "M10 12h4", key: "a56b0p" }]
|
|
53396
53536
|
];
|
|
53397
|
-
const Archive = createLucideIcon("archive", __iconNode$
|
|
53537
|
+
const Archive = createLucideIcon("archive", __iconNode$21);
|
|
53398
53538
|
|
|
53399
53539
|
/**
|
|
53400
|
-
* @license lucide-react v0.
|
|
53540
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53401
53541
|
*
|
|
53402
53542
|
* This source code is licensed under the ISC license.
|
|
53403
53543
|
* See the LICENSE file in the root directory of this source tree.
|
|
53404
53544
|
*/
|
|
53405
53545
|
|
|
53406
53546
|
|
|
53407
|
-
const __iconNode$
|
|
53547
|
+
const __iconNode$20 = [
|
|
53408
53548
|
["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
|
|
53409
53549
|
["path", { d: "M19 12H5", key: "x3x0zl" }]
|
|
53410
53550
|
];
|
|
53411
|
-
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$
|
|
53551
|
+
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$20);
|
|
53412
53552
|
|
|
53413
53553
|
/**
|
|
53414
|
-
* @license lucide-react v0.
|
|
53554
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53415
53555
|
*
|
|
53416
53556
|
* This source code is licensed under the ISC license.
|
|
53417
53557
|
* See the LICENSE file in the root directory of this source tree.
|
|
53418
53558
|
*/
|
|
53419
53559
|
|
|
53420
53560
|
|
|
53421
|
-
const __iconNode$
|
|
53561
|
+
const __iconNode$1$ = [
|
|
53422
53562
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
53423
53563
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
53424
53564
|
];
|
|
53425
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
53565
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$1$);
|
|
53426
53566
|
|
|
53427
53567
|
/**
|
|
53428
|
-
* @license lucide-react v0.
|
|
53568
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53429
53569
|
*
|
|
53430
53570
|
* This source code is licensed under the ISC license.
|
|
53431
53571
|
* See the LICENSE file in the root directory of this source tree.
|
|
53432
53572
|
*/
|
|
53433
53573
|
|
|
53434
53574
|
|
|
53435
|
-
const __iconNode$
|
|
53575
|
+
const __iconNode$1_ = [
|
|
53576
|
+
["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
|
|
53577
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
53578
|
+
];
|
|
53579
|
+
const Ban = createLucideIcon("ban", __iconNode$1_);
|
|
53580
|
+
|
|
53581
|
+
/**
|
|
53582
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53583
|
+
*
|
|
53584
|
+
* This source code is licensed under the ISC license.
|
|
53585
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
53586
|
+
*/
|
|
53587
|
+
|
|
53588
|
+
|
|
53589
|
+
const __iconNode$1Z = [
|
|
53436
53590
|
["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
|
|
53437
53591
|
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
|
|
53438
53592
|
["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }]
|
|
53439
53593
|
];
|
|
53440
|
-
const Banknote = createLucideIcon("banknote", __iconNode$
|
|
53594
|
+
const Banknote = createLucideIcon("banknote", __iconNode$1Z);
|
|
53441
53595
|
|
|
53442
53596
|
/**
|
|
53443
|
-
* @license lucide-react v0.
|
|
53597
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53444
53598
|
*
|
|
53445
53599
|
* This source code is licensed under the ISC license.
|
|
53446
53600
|
* See the LICENSE file in the root directory of this source tree.
|
|
53447
53601
|
*/
|
|
53448
53602
|
|
|
53449
53603
|
|
|
53450
|
-
const __iconNode$
|
|
53604
|
+
const __iconNode$1Y = [
|
|
53451
53605
|
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
53452
53606
|
["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
|
|
53453
53607
|
[
|
|
@@ -53459,17 +53613,17 @@ const __iconNode$1V = [
|
|
|
53459
53613
|
],
|
|
53460
53614
|
["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
|
|
53461
53615
|
];
|
|
53462
|
-
const BellRing = createLucideIcon("bell-ring", __iconNode$
|
|
53616
|
+
const BellRing = createLucideIcon("bell-ring", __iconNode$1Y);
|
|
53463
53617
|
|
|
53464
53618
|
/**
|
|
53465
|
-
* @license lucide-react v0.
|
|
53619
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53466
53620
|
*
|
|
53467
53621
|
* This source code is licensed under the ISC license.
|
|
53468
53622
|
* See the LICENSE file in the root directory of this source tree.
|
|
53469
53623
|
*/
|
|
53470
53624
|
|
|
53471
53625
|
|
|
53472
|
-
const __iconNode$
|
|
53626
|
+
const __iconNode$1X = [
|
|
53473
53627
|
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
53474
53628
|
[
|
|
53475
53629
|
"path",
|
|
@@ -53479,33 +53633,33 @@ const __iconNode$1U = [
|
|
|
53479
53633
|
}
|
|
53480
53634
|
]
|
|
53481
53635
|
];
|
|
53482
|
-
const Bell = createLucideIcon("bell", __iconNode$
|
|
53636
|
+
const Bell = createLucideIcon("bell", __iconNode$1X);
|
|
53483
53637
|
|
|
53484
53638
|
/**
|
|
53485
|
-
* @license lucide-react v0.
|
|
53639
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53486
53640
|
*
|
|
53487
53641
|
* This source code is licensed under the ISC license.
|
|
53488
53642
|
* See the LICENSE file in the root directory of this source tree.
|
|
53489
53643
|
*/
|
|
53490
53644
|
|
|
53491
53645
|
|
|
53492
|
-
const __iconNode$
|
|
53646
|
+
const __iconNode$1W = [
|
|
53493
53647
|
[
|
|
53494
53648
|
"path",
|
|
53495
53649
|
{ 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" }
|
|
53496
53650
|
]
|
|
53497
53651
|
];
|
|
53498
|
-
const Bold$1 = createLucideIcon("bold", __iconNode$
|
|
53652
|
+
const Bold$1 = createLucideIcon("bold", __iconNode$1W);
|
|
53499
53653
|
|
|
53500
53654
|
/**
|
|
53501
|
-
* @license lucide-react v0.
|
|
53655
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53502
53656
|
*
|
|
53503
53657
|
* This source code is licensed under the ISC license.
|
|
53504
53658
|
* See the LICENSE file in the root directory of this source tree.
|
|
53505
53659
|
*/
|
|
53506
53660
|
|
|
53507
53661
|
|
|
53508
|
-
const __iconNode$
|
|
53662
|
+
const __iconNode$1V = [
|
|
53509
53663
|
["path", { d: "M12 7v14", key: "1akyts" }],
|
|
53510
53664
|
[
|
|
53511
53665
|
"path",
|
|
@@ -53515,17 +53669,17 @@ const __iconNode$1S = [
|
|
|
53515
53669
|
}
|
|
53516
53670
|
]
|
|
53517
53671
|
];
|
|
53518
|
-
const BookOpen = createLucideIcon("book-open", __iconNode$
|
|
53672
|
+
const BookOpen = createLucideIcon("book-open", __iconNode$1V);
|
|
53519
53673
|
|
|
53520
53674
|
/**
|
|
53521
|
-
* @license lucide-react v0.
|
|
53675
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53522
53676
|
*
|
|
53523
53677
|
* This source code is licensed under the ISC license.
|
|
53524
53678
|
* See the LICENSE file in the root directory of this source tree.
|
|
53525
53679
|
*/
|
|
53526
53680
|
|
|
53527
53681
|
|
|
53528
|
-
const __iconNode$
|
|
53682
|
+
const __iconNode$1U = [
|
|
53529
53683
|
["path", { d: "M12 8V4H8", key: "hb8ula" }],
|
|
53530
53684
|
["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
|
|
53531
53685
|
["path", { d: "M2 14h2", key: "vft8re" }],
|
|
@@ -53533,31 +53687,31 @@ const __iconNode$1R = [
|
|
|
53533
53687
|
["path", { d: "M15 13v2", key: "1xurst" }],
|
|
53534
53688
|
["path", { d: "M9 13v2", key: "rq6x2g" }]
|
|
53535
53689
|
];
|
|
53536
|
-
const Bot = createLucideIcon("bot", __iconNode$
|
|
53690
|
+
const Bot = createLucideIcon("bot", __iconNode$1U);
|
|
53537
53691
|
|
|
53538
53692
|
/**
|
|
53539
|
-
* @license lucide-react v0.
|
|
53693
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53540
53694
|
*
|
|
53541
53695
|
* This source code is licensed under the ISC license.
|
|
53542
53696
|
* See the LICENSE file in the root directory of this source tree.
|
|
53543
53697
|
*/
|
|
53544
53698
|
|
|
53545
53699
|
|
|
53546
|
-
const __iconNode$
|
|
53700
|
+
const __iconNode$1T = [
|
|
53547
53701
|
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
53548
53702
|
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
53549
53703
|
];
|
|
53550
|
-
const Briefcase = createLucideIcon("briefcase", __iconNode$
|
|
53704
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$1T);
|
|
53551
53705
|
|
|
53552
53706
|
/**
|
|
53553
|
-
* @license lucide-react v0.
|
|
53707
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53554
53708
|
*
|
|
53555
53709
|
* This source code is licensed under the ISC license.
|
|
53556
53710
|
* See the LICENSE file in the root directory of this source tree.
|
|
53557
53711
|
*/
|
|
53558
53712
|
|
|
53559
53713
|
|
|
53560
|
-
const __iconNode$
|
|
53714
|
+
const __iconNode$1S = [
|
|
53561
53715
|
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
53562
53716
|
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
53563
53717
|
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
@@ -53566,415 +53720,415 @@ const __iconNode$1P = [
|
|
|
53566
53720
|
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
53567
53721
|
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
53568
53722
|
];
|
|
53569
|
-
const Building2 = createLucideIcon("building-2", __iconNode$
|
|
53723
|
+
const Building2 = createLucideIcon("building-2", __iconNode$1S);
|
|
53570
53724
|
|
|
53571
53725
|
/**
|
|
53572
|
-
* @license lucide-react v0.
|
|
53726
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53573
53727
|
*
|
|
53574
53728
|
* This source code is licensed under the ISC license.
|
|
53575
53729
|
* See the LICENSE file in the root directory of this source tree.
|
|
53576
53730
|
*/
|
|
53577
53731
|
|
|
53578
53732
|
|
|
53579
|
-
const __iconNode$
|
|
53733
|
+
const __iconNode$1R = [
|
|
53580
53734
|
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
53581
53735
|
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
53582
53736
|
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
53583
53737
|
["path", { d: "M3 10h18", key: "8toen8" }]
|
|
53584
53738
|
];
|
|
53585
|
-
const Calendar$1 = createLucideIcon("calendar", __iconNode$
|
|
53739
|
+
const Calendar$1 = createLucideIcon("calendar", __iconNode$1R);
|
|
53586
53740
|
|
|
53587
53741
|
/**
|
|
53588
|
-
* @license lucide-react v0.
|
|
53742
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53589
53743
|
*
|
|
53590
53744
|
* This source code is licensed under the ISC license.
|
|
53591
53745
|
* See the LICENSE file in the root directory of this source tree.
|
|
53592
53746
|
*/
|
|
53593
53747
|
|
|
53594
53748
|
|
|
53595
|
-
const __iconNode$
|
|
53749
|
+
const __iconNode$1Q = [
|
|
53596
53750
|
["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
|
|
53597
53751
|
["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
|
|
53598
53752
|
];
|
|
53599
|
-
const CheckCheck = createLucideIcon("check-check", __iconNode$
|
|
53753
|
+
const CheckCheck = createLucideIcon("check-check", __iconNode$1Q);
|
|
53600
53754
|
|
|
53601
53755
|
/**
|
|
53602
|
-
* @license lucide-react v0.
|
|
53756
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53603
53757
|
*
|
|
53604
53758
|
* This source code is licensed under the ISC license.
|
|
53605
53759
|
* See the LICENSE file in the root directory of this source tree.
|
|
53606
53760
|
*/
|
|
53607
53761
|
|
|
53608
53762
|
|
|
53609
|
-
const __iconNode$
|
|
53610
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
53763
|
+
const __iconNode$1P = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
53764
|
+
const Check = createLucideIcon("check", __iconNode$1P);
|
|
53611
53765
|
|
|
53612
53766
|
/**
|
|
53613
|
-
* @license lucide-react v0.
|
|
53767
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53614
53768
|
*
|
|
53615
53769
|
* This source code is licensed under the ISC license.
|
|
53616
53770
|
* See the LICENSE file in the root directory of this source tree.
|
|
53617
53771
|
*/
|
|
53618
53772
|
|
|
53619
53773
|
|
|
53620
|
-
const __iconNode$
|
|
53621
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
53774
|
+
const __iconNode$1O = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
53775
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$1O);
|
|
53622
53776
|
|
|
53623
53777
|
/**
|
|
53624
|
-
* @license lucide-react v0.
|
|
53778
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53625
53779
|
*
|
|
53626
53780
|
* This source code is licensed under the ISC license.
|
|
53627
53781
|
* See the LICENSE file in the root directory of this source tree.
|
|
53628
53782
|
*/
|
|
53629
53783
|
|
|
53630
53784
|
|
|
53631
|
-
const __iconNode$
|
|
53785
|
+
const __iconNode$1N = [
|
|
53632
53786
|
["path", { d: "m17 18-6-6 6-6", key: "1yerx2" }],
|
|
53633
53787
|
["path", { d: "M7 6v12", key: "1p53r6" }]
|
|
53634
53788
|
];
|
|
53635
|
-
const ChevronFirst = createLucideIcon("chevron-first", __iconNode$
|
|
53789
|
+
const ChevronFirst = createLucideIcon("chevron-first", __iconNode$1N);
|
|
53636
53790
|
|
|
53637
53791
|
/**
|
|
53638
|
-
* @license lucide-react v0.
|
|
53792
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53639
53793
|
*
|
|
53640
53794
|
* This source code is licensed under the ISC license.
|
|
53641
53795
|
* See the LICENSE file in the root directory of this source tree.
|
|
53642
53796
|
*/
|
|
53643
53797
|
|
|
53644
53798
|
|
|
53645
|
-
const __iconNode$
|
|
53646
|
-
|
|
53799
|
+
const __iconNode$1M = [
|
|
53800
|
+
["path", { d: "m7 18 6-6-6-6", key: "lwmzdw" }],
|
|
53801
|
+
["path", { d: "M17 6v12", key: "1o0aio" }]
|
|
53802
|
+
];
|
|
53803
|
+
const ChevronLast = createLucideIcon("chevron-last", __iconNode$1M);
|
|
53647
53804
|
|
|
53648
53805
|
/**
|
|
53649
|
-
* @license lucide-react v0.
|
|
53806
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53650
53807
|
*
|
|
53651
53808
|
* This source code is licensed under the ISC license.
|
|
53652
53809
|
* See the LICENSE file in the root directory of this source tree.
|
|
53653
53810
|
*/
|
|
53654
53811
|
|
|
53655
53812
|
|
|
53656
|
-
const __iconNode$
|
|
53657
|
-
|
|
53658
|
-
["path", { d: "M17 6v12", key: "1o0aio" }]
|
|
53659
|
-
];
|
|
53660
|
-
const ChevronLast = createLucideIcon("chevron-last", __iconNode$1I);
|
|
53813
|
+
const __iconNode$1L = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
53814
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1L);
|
|
53661
53815
|
|
|
53662
53816
|
/**
|
|
53663
|
-
* @license lucide-react v0.
|
|
53817
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53664
53818
|
*
|
|
53665
53819
|
* This source code is licensed under the ISC license.
|
|
53666
53820
|
* See the LICENSE file in the root directory of this source tree.
|
|
53667
53821
|
*/
|
|
53668
53822
|
|
|
53669
53823
|
|
|
53670
|
-
const __iconNode$
|
|
53671
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
53824
|
+
const __iconNode$1K = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
53825
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$1K);
|
|
53672
53826
|
|
|
53673
53827
|
/**
|
|
53674
|
-
* @license lucide-react v0.
|
|
53828
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53675
53829
|
*
|
|
53676
53830
|
* This source code is licensed under the ISC license.
|
|
53677
53831
|
* See the LICENSE file in the root directory of this source tree.
|
|
53678
53832
|
*/
|
|
53679
53833
|
|
|
53680
53834
|
|
|
53681
|
-
const __iconNode$
|
|
53682
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
53835
|
+
const __iconNode$1J = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
53836
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$1J);
|
|
53683
53837
|
|
|
53684
53838
|
/**
|
|
53685
|
-
* @license lucide-react v0.
|
|
53839
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53686
53840
|
*
|
|
53687
53841
|
* This source code is licensed under the ISC license.
|
|
53688
53842
|
* See the LICENSE file in the root directory of this source tree.
|
|
53689
53843
|
*/
|
|
53690
53844
|
|
|
53691
53845
|
|
|
53692
|
-
const __iconNode$
|
|
53846
|
+
const __iconNode$1I = [
|
|
53693
53847
|
["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
|
|
53694
53848
|
["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
|
|
53695
53849
|
];
|
|
53696
|
-
const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$
|
|
53850
|
+
const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1I);
|
|
53697
53851
|
|
|
53698
53852
|
/**
|
|
53699
|
-
* @license lucide-react v0.
|
|
53853
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53700
53854
|
*
|
|
53701
53855
|
* This source code is licensed under the ISC license.
|
|
53702
53856
|
* See the LICENSE file in the root directory of this source tree.
|
|
53703
53857
|
*/
|
|
53704
53858
|
|
|
53705
53859
|
|
|
53706
|
-
const __iconNode$
|
|
53860
|
+
const __iconNode$1H = [
|
|
53707
53861
|
["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
|
|
53708
53862
|
["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
|
|
53709
53863
|
];
|
|
53710
|
-
const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$
|
|
53864
|
+
const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1H);
|
|
53711
53865
|
|
|
53712
53866
|
/**
|
|
53713
|
-
* @license lucide-react v0.
|
|
53867
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53714
53868
|
*
|
|
53715
53869
|
* This source code is licensed under the ISC license.
|
|
53716
53870
|
* See the LICENSE file in the root directory of this source tree.
|
|
53717
53871
|
*/
|
|
53718
53872
|
|
|
53719
53873
|
|
|
53720
|
-
const __iconNode$
|
|
53874
|
+
const __iconNode$1G = [
|
|
53721
53875
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
53722
53876
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
53723
53877
|
];
|
|
53724
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
53878
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1G);
|
|
53725
53879
|
|
|
53726
53880
|
/**
|
|
53727
|
-
* @license lucide-react v0.
|
|
53881
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53728
53882
|
*
|
|
53729
53883
|
* This source code is licensed under the ISC license.
|
|
53730
53884
|
* See the LICENSE file in the root directory of this source tree.
|
|
53731
53885
|
*/
|
|
53732
53886
|
|
|
53733
53887
|
|
|
53734
|
-
const __iconNode$
|
|
53888
|
+
const __iconNode$1F = [
|
|
53735
53889
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
53736
53890
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
53737
53891
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
53738
53892
|
];
|
|
53739
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
53893
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$1F);
|
|
53740
53894
|
|
|
53741
53895
|
/**
|
|
53742
|
-
* @license lucide-react v0.
|
|
53896
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53743
53897
|
*
|
|
53744
53898
|
* This source code is licensed under the ISC license.
|
|
53745
53899
|
* See the LICENSE file in the root directory of this source tree.
|
|
53746
53900
|
*/
|
|
53747
53901
|
|
|
53748
53902
|
|
|
53749
|
-
const __iconNode$
|
|
53903
|
+
const __iconNode$1E = [
|
|
53750
53904
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
53751
53905
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
53752
53906
|
];
|
|
53753
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
53907
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1E);
|
|
53754
53908
|
|
|
53755
53909
|
/**
|
|
53756
|
-
* @license lucide-react v0.
|
|
53910
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53757
53911
|
*
|
|
53758
53912
|
* This source code is licensed under the ISC license.
|
|
53759
53913
|
* See the LICENSE file in the root directory of this source tree.
|
|
53760
53914
|
*/
|
|
53761
53915
|
|
|
53762
53916
|
|
|
53763
|
-
const __iconNode$
|
|
53917
|
+
const __iconNode$1D = [
|
|
53764
53918
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
53765
53919
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
53766
53920
|
];
|
|
53767
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
53921
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$1D);
|
|
53768
53922
|
|
|
53769
53923
|
/**
|
|
53770
|
-
* @license lucide-react v0.
|
|
53924
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53771
53925
|
*
|
|
53772
53926
|
* This source code is licensed under the ISC license.
|
|
53773
53927
|
* See the LICENSE file in the root directory of this source tree.
|
|
53774
53928
|
*/
|
|
53775
53929
|
|
|
53776
53930
|
|
|
53777
|
-
const __iconNode$
|
|
53931
|
+
const __iconNode$1C = [
|
|
53778
53932
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
53779
53933
|
["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }]
|
|
53780
53934
|
];
|
|
53781
|
-
const CircleStop = createLucideIcon("circle-stop", __iconNode$
|
|
53935
|
+
const CircleStop = createLucideIcon("circle-stop", __iconNode$1C);
|
|
53782
53936
|
|
|
53783
53937
|
/**
|
|
53784
|
-
* @license lucide-react v0.
|
|
53938
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53785
53939
|
*
|
|
53786
53940
|
* This source code is licensed under the ISC license.
|
|
53787
53941
|
* See the LICENSE file in the root directory of this source tree.
|
|
53788
53942
|
*/
|
|
53789
53943
|
|
|
53790
53944
|
|
|
53791
|
-
const __iconNode$
|
|
53945
|
+
const __iconNode$1B = [
|
|
53792
53946
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
53793
53947
|
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
53794
53948
|
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
53795
53949
|
];
|
|
53796
|
-
const CircleX = createLucideIcon("circle-x", __iconNode$
|
|
53950
|
+
const CircleX = createLucideIcon("circle-x", __iconNode$1B);
|
|
53797
53951
|
|
|
53798
53952
|
/**
|
|
53799
|
-
* @license lucide-react v0.
|
|
53953
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53800
53954
|
*
|
|
53801
53955
|
* This source code is licensed under the ISC license.
|
|
53802
53956
|
* See the LICENSE file in the root directory of this source tree.
|
|
53803
53957
|
*/
|
|
53804
53958
|
|
|
53805
53959
|
|
|
53806
|
-
const __iconNode$
|
|
53807
|
-
const Circle = createLucideIcon("circle", __iconNode$
|
|
53960
|
+
const __iconNode$1A = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
53961
|
+
const Circle = createLucideIcon("circle", __iconNode$1A);
|
|
53808
53962
|
|
|
53809
53963
|
/**
|
|
53810
|
-
* @license lucide-react v0.
|
|
53964
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53811
53965
|
*
|
|
53812
53966
|
* This source code is licensed under the ISC license.
|
|
53813
53967
|
* See the LICENSE file in the root directory of this source tree.
|
|
53814
53968
|
*/
|
|
53815
53969
|
|
|
53816
53970
|
|
|
53817
|
-
const __iconNode$
|
|
53818
|
-
["
|
|
53819
|
-
["
|
|
53971
|
+
const __iconNode$1z = [
|
|
53972
|
+
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
|
|
53973
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
53820
53974
|
];
|
|
53821
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
53975
|
+
const Clock = createLucideIcon("clock", __iconNode$1z);
|
|
53822
53976
|
|
|
53823
53977
|
/**
|
|
53824
|
-
* @license lucide-react v0.
|
|
53978
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53825
53979
|
*
|
|
53826
53980
|
* This source code is licensed under the ISC license.
|
|
53827
53981
|
* See the LICENSE file in the root directory of this source tree.
|
|
53828
53982
|
*/
|
|
53829
53983
|
|
|
53830
53984
|
|
|
53831
|
-
const __iconNode$
|
|
53985
|
+
const __iconNode$1y = [
|
|
53832
53986
|
["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
|
|
53833
53987
|
["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
|
|
53834
53988
|
["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
|
|
53835
53989
|
];
|
|
53836
|
-
const CodeXml = createLucideIcon("code-xml", __iconNode$
|
|
53990
|
+
const CodeXml = createLucideIcon("code-xml", __iconNode$1y);
|
|
53837
53991
|
|
|
53838
53992
|
/**
|
|
53839
|
-
* @license lucide-react v0.
|
|
53993
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53840
53994
|
*
|
|
53841
53995
|
* This source code is licensed under the ISC license.
|
|
53842
53996
|
* See the LICENSE file in the root directory of this source tree.
|
|
53843
53997
|
*/
|
|
53844
53998
|
|
|
53845
53999
|
|
|
53846
|
-
const __iconNode$
|
|
53847
|
-
["
|
|
53848
|
-
["
|
|
54000
|
+
const __iconNode$1x = [
|
|
54001
|
+
["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
|
|
54002
|
+
["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
|
|
53849
54003
|
];
|
|
53850
|
-
const Code$1 = createLucideIcon("code", __iconNode$
|
|
54004
|
+
const Code$1 = createLucideIcon("code", __iconNode$1x);
|
|
53851
54005
|
|
|
53852
54006
|
/**
|
|
53853
|
-
* @license lucide-react v0.
|
|
54007
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53854
54008
|
*
|
|
53855
54009
|
* This source code is licensed under the ISC license.
|
|
53856
54010
|
* See the LICENSE file in the root directory of this source tree.
|
|
53857
54011
|
*/
|
|
53858
54012
|
|
|
53859
54013
|
|
|
53860
|
-
const __iconNode$
|
|
54014
|
+
const __iconNode$1w = [
|
|
53861
54015
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
53862
54016
|
["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" }]
|
|
53863
54017
|
];
|
|
53864
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
54018
|
+
const Copy = createLucideIcon("copy", __iconNode$1w);
|
|
53865
54019
|
|
|
53866
54020
|
/**
|
|
53867
|
-
* @license lucide-react v0.
|
|
54021
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53868
54022
|
*
|
|
53869
54023
|
* This source code is licensed under the ISC license.
|
|
53870
54024
|
* See the LICENSE file in the root directory of this source tree.
|
|
53871
54025
|
*/
|
|
53872
54026
|
|
|
53873
54027
|
|
|
53874
|
-
const __iconNode$
|
|
54028
|
+
const __iconNode$1v = [
|
|
53875
54029
|
["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
|
|
53876
54030
|
["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
|
|
53877
54031
|
];
|
|
53878
|
-
const CreditCard = createLucideIcon("credit-card", __iconNode$
|
|
54032
|
+
const CreditCard = createLucideIcon("credit-card", __iconNode$1v);
|
|
53879
54033
|
|
|
53880
54034
|
/**
|
|
53881
|
-
* @license lucide-react v0.
|
|
54035
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53882
54036
|
*
|
|
53883
54037
|
* This source code is licensed under the ISC license.
|
|
53884
54038
|
* See the LICENSE file in the root directory of this source tree.
|
|
53885
54039
|
*/
|
|
53886
54040
|
|
|
53887
54041
|
|
|
53888
|
-
const __iconNode$
|
|
54042
|
+
const __iconNode$1u = [
|
|
53889
54043
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
53890
54044
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
53891
54045
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
53892
54046
|
];
|
|
53893
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
54047
|
+
const Database = createLucideIcon("database", __iconNode$1u);
|
|
53894
54048
|
|
|
53895
54049
|
/**
|
|
53896
|
-
* @license lucide-react v0.
|
|
54050
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53897
54051
|
*
|
|
53898
54052
|
* This source code is licensed under the ISC license.
|
|
53899
54053
|
* See the LICENSE file in the root directory of this source tree.
|
|
53900
54054
|
*/
|
|
53901
54055
|
|
|
53902
54056
|
|
|
53903
|
-
const __iconNode$
|
|
54057
|
+
const __iconNode$1t = [
|
|
53904
54058
|
["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }],
|
|
53905
54059
|
["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }]
|
|
53906
54060
|
];
|
|
53907
|
-
const DollarSign = createLucideIcon("dollar-sign", __iconNode$
|
|
54061
|
+
const DollarSign = createLucideIcon("dollar-sign", __iconNode$1t);
|
|
53908
54062
|
|
|
53909
54063
|
/**
|
|
53910
|
-
* @license lucide-react v0.
|
|
54064
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53911
54065
|
*
|
|
53912
54066
|
* This source code is licensed under the ISC license.
|
|
53913
54067
|
* See the LICENSE file in the root directory of this source tree.
|
|
53914
54068
|
*/
|
|
53915
54069
|
|
|
53916
54070
|
|
|
53917
|
-
const __iconNode$
|
|
54071
|
+
const __iconNode$1s = [
|
|
54072
|
+
["path", { d: "M12 15V3", key: "m9g1x1" }],
|
|
53918
54073
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
53919
|
-
["
|
|
53920
|
-
["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }]
|
|
54074
|
+
["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
|
|
53921
54075
|
];
|
|
53922
|
-
const Download = createLucideIcon("download", __iconNode$
|
|
54076
|
+
const Download = createLucideIcon("download", __iconNode$1s);
|
|
53923
54077
|
|
|
53924
54078
|
/**
|
|
53925
|
-
* @license lucide-react v0.
|
|
54079
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53926
54080
|
*
|
|
53927
54081
|
* This source code is licensed under the ISC license.
|
|
53928
54082
|
* See the LICENSE file in the root directory of this source tree.
|
|
53929
54083
|
*/
|
|
53930
54084
|
|
|
53931
54085
|
|
|
53932
|
-
const __iconNode$
|
|
54086
|
+
const __iconNode$1r = [
|
|
53933
54087
|
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
53934
54088
|
["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
|
|
53935
54089
|
["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
|
|
53936
54090
|
];
|
|
53937
|
-
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$
|
|
54091
|
+
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1r);
|
|
53938
54092
|
|
|
53939
54093
|
/**
|
|
53940
|
-
* @license lucide-react v0.
|
|
54094
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53941
54095
|
*
|
|
53942
54096
|
* This source code is licensed under the ISC license.
|
|
53943
54097
|
* See the LICENSE file in the root directory of this source tree.
|
|
53944
54098
|
*/
|
|
53945
54099
|
|
|
53946
54100
|
|
|
53947
|
-
const __iconNode$
|
|
54101
|
+
const __iconNode$1q = [
|
|
53948
54102
|
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
53949
54103
|
["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
|
|
53950
54104
|
["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
|
|
53951
54105
|
];
|
|
53952
|
-
const Ellipsis = createLucideIcon("ellipsis", __iconNode$
|
|
54106
|
+
const Ellipsis = createLucideIcon("ellipsis", __iconNode$1q);
|
|
53953
54107
|
|
|
53954
54108
|
/**
|
|
53955
|
-
* @license lucide-react v0.
|
|
54109
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53956
54110
|
*
|
|
53957
54111
|
* This source code is licensed under the ISC license.
|
|
53958
54112
|
* See the LICENSE file in the root directory of this source tree.
|
|
53959
54113
|
*/
|
|
53960
54114
|
|
|
53961
54115
|
|
|
53962
|
-
const __iconNode$
|
|
54116
|
+
const __iconNode$1p = [
|
|
53963
54117
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
53964
54118
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
53965
54119
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
53966
54120
|
];
|
|
53967
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
54121
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$1p);
|
|
53968
54122
|
|
|
53969
54123
|
/**
|
|
53970
|
-
* @license lucide-react v0.
|
|
54124
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53971
54125
|
*
|
|
53972
54126
|
* This source code is licensed under the ISC license.
|
|
53973
54127
|
* See the LICENSE file in the root directory of this source tree.
|
|
53974
54128
|
*/
|
|
53975
54129
|
|
|
53976
54130
|
|
|
53977
|
-
const __iconNode$
|
|
54131
|
+
const __iconNode$1o = [
|
|
53978
54132
|
[
|
|
53979
54133
|
"path",
|
|
53980
54134
|
{
|
|
@@ -53992,17 +54146,17 @@ const __iconNode$1l = [
|
|
|
53992
54146
|
],
|
|
53993
54147
|
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
53994
54148
|
];
|
|
53995
|
-
const EyeOff = createLucideIcon("eye-off", __iconNode$
|
|
54149
|
+
const EyeOff = createLucideIcon("eye-off", __iconNode$1o);
|
|
53996
54150
|
|
|
53997
54151
|
/**
|
|
53998
|
-
* @license lucide-react v0.
|
|
54152
|
+
* @license lucide-react v0.528.0 - ISC
|
|
53999
54153
|
*
|
|
54000
54154
|
* This source code is licensed under the ISC license.
|
|
54001
54155
|
* See the LICENSE file in the root directory of this source tree.
|
|
54002
54156
|
*/
|
|
54003
54157
|
|
|
54004
54158
|
|
|
54005
|
-
const __iconNode$
|
|
54159
|
+
const __iconNode$1n = [
|
|
54006
54160
|
[
|
|
54007
54161
|
"path",
|
|
54008
54162
|
{
|
|
@@ -54012,17 +54166,17 @@ const __iconNode$1k = [
|
|
|
54012
54166
|
],
|
|
54013
54167
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
54014
54168
|
];
|
|
54015
|
-
const Eye = createLucideIcon("eye", __iconNode$
|
|
54169
|
+
const Eye = createLucideIcon("eye", __iconNode$1n);
|
|
54016
54170
|
|
|
54017
54171
|
/**
|
|
54018
|
-
* @license lucide-react v0.
|
|
54172
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54019
54173
|
*
|
|
54020
54174
|
* This source code is licensed under the ISC license.
|
|
54021
54175
|
* See the LICENSE file in the root directory of this source tree.
|
|
54022
54176
|
*/
|
|
54023
54177
|
|
|
54024
54178
|
|
|
54025
|
-
const __iconNode$
|
|
54179
|
+
const __iconNode$1m = [
|
|
54026
54180
|
["path", { d: "M10 12v-1", key: "v7bkov" }],
|
|
54027
54181
|
["path", { d: "M10 18v-2", key: "1cjy8d" }],
|
|
54028
54182
|
["path", { d: "M10 7V6", key: "dljcrl" }],
|
|
@@ -54033,17 +54187,17 @@ const __iconNode$1j = [
|
|
|
54033
54187
|
],
|
|
54034
54188
|
["circle", { cx: "10", cy: "20", r: "2", key: "1xzdoj" }]
|
|
54035
54189
|
];
|
|
54036
|
-
const FileArchive = createLucideIcon("file-archive", __iconNode$
|
|
54190
|
+
const FileArchive = createLucideIcon("file-archive", __iconNode$1m);
|
|
54037
54191
|
|
|
54038
54192
|
/**
|
|
54039
|
-
* @license lucide-react v0.
|
|
54193
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54040
54194
|
*
|
|
54041
54195
|
* This source code is licensed under the ISC license.
|
|
54042
54196
|
* See the LICENSE file in the root directory of this source tree.
|
|
54043
54197
|
*/
|
|
54044
54198
|
|
|
54045
54199
|
|
|
54046
|
-
const __iconNode$
|
|
54200
|
+
const __iconNode$1l = [
|
|
54047
54201
|
["path", { d: "M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "rslqgf" }],
|
|
54048
54202
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54049
54203
|
[
|
|
@@ -54054,177 +54208,183 @@ const __iconNode$1i = [
|
|
|
54054
54208
|
}
|
|
54055
54209
|
]
|
|
54056
54210
|
];
|
|
54057
|
-
const FileAudio = createLucideIcon("file-audio", __iconNode$
|
|
54211
|
+
const FileAudio = createLucideIcon("file-audio", __iconNode$1l);
|
|
54058
54212
|
|
|
54059
54213
|
/**
|
|
54060
|
-
* @license lucide-react v0.
|
|
54214
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54061
54215
|
*
|
|
54062
54216
|
* This source code is licensed under the ISC license.
|
|
54063
54217
|
* See the LICENSE file in the root directory of this source tree.
|
|
54064
54218
|
*/
|
|
54065
54219
|
|
|
54066
54220
|
|
|
54067
|
-
const __iconNode$
|
|
54221
|
+
const __iconNode$1k = [
|
|
54068
54222
|
["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
|
|
54069
54223
|
["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }],
|
|
54070
54224
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54071
54225
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }]
|
|
54072
54226
|
];
|
|
54073
|
-
const FileCode = createLucideIcon("file-code", __iconNode$
|
|
54227
|
+
const FileCode = createLucideIcon("file-code", __iconNode$1k);
|
|
54074
54228
|
|
|
54075
54229
|
/**
|
|
54076
|
-
* @license lucide-react v0.
|
|
54230
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54077
54231
|
*
|
|
54078
54232
|
* This source code is licensed under the ISC license.
|
|
54079
54233
|
* See the LICENSE file in the root directory of this source tree.
|
|
54080
54234
|
*/
|
|
54081
54235
|
|
|
54082
54236
|
|
|
54083
|
-
const __iconNode$
|
|
54237
|
+
const __iconNode$1j = [
|
|
54084
54238
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
54085
54239
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54086
54240
|
["path", { d: "M12 18v-6", key: "17g6i2" }],
|
|
54087
54241
|
["path", { d: "m9 15 3 3 3-3", key: "1npd3o" }]
|
|
54088
54242
|
];
|
|
54089
|
-
const FileDown = createLucideIcon("file-down", __iconNode$
|
|
54243
|
+
const FileDown = createLucideIcon("file-down", __iconNode$1j);
|
|
54090
54244
|
|
|
54091
54245
|
/**
|
|
54092
|
-
* @license lucide-react v0.
|
|
54246
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54093
54247
|
*
|
|
54094
54248
|
* This source code is licensed under the ISC license.
|
|
54095
54249
|
* See the LICENSE file in the root directory of this source tree.
|
|
54096
54250
|
*/
|
|
54097
54251
|
|
|
54098
54252
|
|
|
54099
|
-
const __iconNode$
|
|
54253
|
+
const __iconNode$1i = [
|
|
54100
54254
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
54101
54255
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54102
54256
|
["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
|
|
54103
54257
|
["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
|
|
54104
54258
|
];
|
|
54105
|
-
const FileImage = createLucideIcon("file-image", __iconNode$
|
|
54259
|
+
const FileImage = createLucideIcon("file-image", __iconNode$1i);
|
|
54106
54260
|
|
|
54107
54261
|
/**
|
|
54108
|
-
* @license lucide-react v0.
|
|
54262
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54109
54263
|
*
|
|
54110
54264
|
* This source code is licensed under the ISC license.
|
|
54111
54265
|
* See the LICENSE file in the root directory of this source tree.
|
|
54112
54266
|
*/
|
|
54113
54267
|
|
|
54114
54268
|
|
|
54115
|
-
const __iconNode$
|
|
54116
|
-
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
54269
|
+
const __iconNode$1h = [
|
|
54117
54270
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54118
|
-
["path", { d: "
|
|
54119
|
-
[
|
|
54120
|
-
|
|
54121
|
-
|
|
54271
|
+
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
|
|
54272
|
+
[
|
|
54273
|
+
"path",
|
|
54274
|
+
{
|
|
54275
|
+
d: "M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z",
|
|
54276
|
+
key: "1tzo1f"
|
|
54277
|
+
}
|
|
54278
|
+
]
|
|
54122
54279
|
];
|
|
54123
|
-
const
|
|
54280
|
+
const FilePlay = createLucideIcon("file-play", __iconNode$1h);
|
|
54124
54281
|
|
|
54125
54282
|
/**
|
|
54126
|
-
* @license lucide-react v0.
|
|
54283
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54127
54284
|
*
|
|
54128
54285
|
* This source code is licensed under the ISC license.
|
|
54129
54286
|
* See the LICENSE file in the root directory of this source tree.
|
|
54130
54287
|
*/
|
|
54131
54288
|
|
|
54132
54289
|
|
|
54133
|
-
const __iconNode$
|
|
54290
|
+
const __iconNode$1g = [
|
|
54134
54291
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
54135
54292
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54136
|
-
["path", { d: "
|
|
54137
|
-
["path", { d: "
|
|
54138
|
-
["path", { d: "
|
|
54293
|
+
["path", { d: "M8 13h2", key: "yr2amv" }],
|
|
54294
|
+
["path", { d: "M14 13h2", key: "un5t4a" }],
|
|
54295
|
+
["path", { d: "M8 17h2", key: "2yhykz" }],
|
|
54296
|
+
["path", { d: "M14 17h2", key: "10kma7" }]
|
|
54139
54297
|
];
|
|
54140
|
-
const
|
|
54298
|
+
const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1g);
|
|
54141
54299
|
|
|
54142
54300
|
/**
|
|
54143
|
-
* @license lucide-react v0.
|
|
54301
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54144
54302
|
*
|
|
54145
54303
|
* This source code is licensed under the ISC license.
|
|
54146
54304
|
* See the LICENSE file in the root directory of this source tree.
|
|
54147
54305
|
*/
|
|
54148
54306
|
|
|
54149
54307
|
|
|
54150
|
-
const __iconNode$
|
|
54308
|
+
const __iconNode$1f = [
|
|
54151
54309
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
54152
54310
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
54153
|
-
["path", { d: "
|
|
54311
|
+
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
54312
|
+
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
54313
|
+
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
54154
54314
|
];
|
|
54155
|
-
const
|
|
54315
|
+
const FileText = createLucideIcon("file-text", __iconNode$1f);
|
|
54156
54316
|
|
|
54157
54317
|
/**
|
|
54158
|
-
* @license lucide-react v0.
|
|
54318
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54159
54319
|
*
|
|
54160
54320
|
* This source code is licensed under the ISC license.
|
|
54161
54321
|
* See the LICENSE file in the root directory of this source tree.
|
|
54162
54322
|
*/
|
|
54163
54323
|
|
|
54164
54324
|
|
|
54165
|
-
const __iconNode$
|
|
54325
|
+
const __iconNode$1e = [
|
|
54166
54326
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
54167
54327
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
|
|
54168
54328
|
];
|
|
54169
|
-
const File$1 = createLucideIcon("file", __iconNode$
|
|
54329
|
+
const File$1 = createLucideIcon("file", __iconNode$1e);
|
|
54170
54330
|
|
|
54171
54331
|
/**
|
|
54172
|
-
* @license lucide-react v0.
|
|
54332
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54173
54333
|
*
|
|
54174
54334
|
* This source code is licensed under the ISC license.
|
|
54175
54335
|
* See the LICENSE file in the root directory of this source tree.
|
|
54176
54336
|
*/
|
|
54177
54337
|
|
|
54178
54338
|
|
|
54179
|
-
const __iconNode$
|
|
54339
|
+
const __iconNode$1d = [
|
|
54180
54340
|
["path", { d: "m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8", key: "15492f" }],
|
|
54181
54341
|
["path", { d: "m16 16 6-6", key: "vzrcl6" }],
|
|
54182
54342
|
["path", { d: "m8 8 6-6", key: "18bi4p" }],
|
|
54183
54343
|
["path", { d: "m9 7 8 8", key: "5jnvq1" }],
|
|
54184
54344
|
["path", { d: "m21 11-8-8", key: "z4y7zo" }]
|
|
54185
54345
|
];
|
|
54186
|
-
const Gavel = createLucideIcon("gavel", __iconNode$
|
|
54346
|
+
const Gavel = createLucideIcon("gavel", __iconNode$1d);
|
|
54187
54347
|
|
|
54188
54348
|
/**
|
|
54189
|
-
* @license lucide-react v0.
|
|
54349
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54190
54350
|
*
|
|
54191
54351
|
* This source code is licensed under the ISC license.
|
|
54192
54352
|
* See the LICENSE file in the root directory of this source tree.
|
|
54193
54353
|
*/
|
|
54194
54354
|
|
|
54195
54355
|
|
|
54196
|
-
const __iconNode$
|
|
54356
|
+
const __iconNode$1c = [
|
|
54197
54357
|
["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
|
|
54198
54358
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
54199
54359
|
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
|
|
54200
54360
|
["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
|
|
54201
54361
|
];
|
|
54202
|
-
const GitBranch = createLucideIcon("git-branch", __iconNode$
|
|
54362
|
+
const GitBranch = createLucideIcon("git-branch", __iconNode$1c);
|
|
54203
54363
|
|
|
54204
54364
|
/**
|
|
54205
|
-
* @license lucide-react v0.
|
|
54365
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54206
54366
|
*
|
|
54207
54367
|
* This source code is licensed under the ISC license.
|
|
54208
54368
|
* See the LICENSE file in the root directory of this source tree.
|
|
54209
54369
|
*/
|
|
54210
54370
|
|
|
54211
54371
|
|
|
54212
|
-
const __iconNode$
|
|
54372
|
+
const __iconNode$1b = [
|
|
54213
54373
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
54214
54374
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
54215
54375
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
54216
54376
|
];
|
|
54217
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
54377
|
+
const Globe = createLucideIcon("globe", __iconNode$1b);
|
|
54218
54378
|
|
|
54219
54379
|
/**
|
|
54220
|
-
* @license lucide-react v0.
|
|
54380
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54221
54381
|
*
|
|
54222
54382
|
* This source code is licensed under the ISC license.
|
|
54223
54383
|
* See the LICENSE file in the root directory of this source tree.
|
|
54224
54384
|
*/
|
|
54225
54385
|
|
|
54226
54386
|
|
|
54227
|
-
const __iconNode$
|
|
54387
|
+
const __iconNode$1a = [
|
|
54228
54388
|
[
|
|
54229
54389
|
"path",
|
|
54230
54390
|
{
|
|
@@ -54235,111 +54395,134 @@ const __iconNode$17 = [
|
|
|
54235
54395
|
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
54236
54396
|
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
54237
54397
|
];
|
|
54238
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$
|
|
54398
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$1a);
|
|
54239
54399
|
|
|
54240
54400
|
/**
|
|
54241
|
-
* @license lucide-react v0.
|
|
54401
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54242
54402
|
*
|
|
54243
54403
|
* This source code is licensed under the ISC license.
|
|
54244
54404
|
* See the LICENSE file in the root directory of this source tree.
|
|
54245
54405
|
*/
|
|
54246
54406
|
|
|
54247
54407
|
|
|
54248
|
-
const __iconNode$
|
|
54408
|
+
const __iconNode$19 = [
|
|
54409
|
+
["path", { d: "M14 18a2 2 0 0 0-4 0", key: "1v8fkw" }],
|
|
54410
|
+
[
|
|
54411
|
+
"path",
|
|
54412
|
+
{
|
|
54413
|
+
d: "m19 11-2.11-6.657a2 2 0 0 0-2.752-1.148l-1.276.61A2 2 0 0 1 12 4H8.5a2 2 0 0 0-1.925 1.456L5 11",
|
|
54414
|
+
key: "1fkr7p"
|
|
54415
|
+
}
|
|
54416
|
+
],
|
|
54417
|
+
["path", { d: "M2 11h20", key: "3eubbj" }],
|
|
54418
|
+
["circle", { cx: "17", cy: "18", r: "3", key: "82mm0e" }],
|
|
54419
|
+
["circle", { cx: "7", cy: "18", r: "3", key: "lvkj7j" }]
|
|
54420
|
+
];
|
|
54421
|
+
const HatGlasses = createLucideIcon("hat-glasses", __iconNode$19);
|
|
54422
|
+
|
|
54423
|
+
/**
|
|
54424
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54425
|
+
*
|
|
54426
|
+
* This source code is licensed under the ISC license.
|
|
54427
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
54428
|
+
*/
|
|
54429
|
+
|
|
54430
|
+
|
|
54431
|
+
const __iconNode$18 = [
|
|
54249
54432
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
54250
54433
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
54251
54434
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
54252
54435
|
["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
|
|
54253
54436
|
];
|
|
54254
|
-
const Heading1 = createLucideIcon("heading-1", __iconNode$
|
|
54437
|
+
const Heading1 = createLucideIcon("heading-1", __iconNode$18);
|
|
54255
54438
|
|
|
54256
54439
|
/**
|
|
54257
|
-
* @license lucide-react v0.
|
|
54440
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54258
54441
|
*
|
|
54259
54442
|
* This source code is licensed under the ISC license.
|
|
54260
54443
|
* See the LICENSE file in the root directory of this source tree.
|
|
54261
54444
|
*/
|
|
54262
54445
|
|
|
54263
54446
|
|
|
54264
|
-
const __iconNode$
|
|
54447
|
+
const __iconNode$17 = [
|
|
54265
54448
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
54266
54449
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
54267
54450
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
54268
54451
|
["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
|
|
54269
54452
|
];
|
|
54270
|
-
const Heading2 = createLucideIcon("heading-2", __iconNode$
|
|
54453
|
+
const Heading2 = createLucideIcon("heading-2", __iconNode$17);
|
|
54271
54454
|
|
|
54272
54455
|
/**
|
|
54273
|
-
* @license lucide-react v0.
|
|
54456
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54274
54457
|
*
|
|
54275
54458
|
* This source code is licensed under the ISC license.
|
|
54276
54459
|
* See the LICENSE file in the root directory of this source tree.
|
|
54277
54460
|
*/
|
|
54278
54461
|
|
|
54279
54462
|
|
|
54280
|
-
const __iconNode$
|
|
54463
|
+
const __iconNode$16 = [
|
|
54281
54464
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
54282
54465
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
54283
54466
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
54284
54467
|
["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
|
|
54285
54468
|
["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
|
|
54286
54469
|
];
|
|
54287
|
-
const Heading3 = createLucideIcon("heading-3", __iconNode$
|
|
54470
|
+
const Heading3 = createLucideIcon("heading-3", __iconNode$16);
|
|
54288
54471
|
|
|
54289
54472
|
/**
|
|
54290
|
-
* @license lucide-react v0.
|
|
54473
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54291
54474
|
*
|
|
54292
54475
|
* This source code is licensed under the ISC license.
|
|
54293
54476
|
* See the LICENSE file in the root directory of this source tree.
|
|
54294
54477
|
*/
|
|
54295
54478
|
|
|
54296
54479
|
|
|
54297
|
-
const __iconNode$
|
|
54480
|
+
const __iconNode$15 = [
|
|
54298
54481
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
54299
54482
|
["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
|
|
54300
54483
|
["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
|
|
54301
54484
|
];
|
|
54302
|
-
const Image$3 = createLucideIcon("image", __iconNode$
|
|
54485
|
+
const Image$3 = createLucideIcon("image", __iconNode$15);
|
|
54303
54486
|
|
|
54304
54487
|
/**
|
|
54305
|
-
* @license lucide-react v0.
|
|
54488
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54306
54489
|
*
|
|
54307
54490
|
* This source code is licensed under the ISC license.
|
|
54308
54491
|
* See the LICENSE file in the root directory of this source tree.
|
|
54309
54492
|
*/
|
|
54310
54493
|
|
|
54311
54494
|
|
|
54312
|
-
const __iconNode$
|
|
54495
|
+
const __iconNode$14 = [
|
|
54313
54496
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
54314
54497
|
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
54315
54498
|
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
54316
54499
|
];
|
|
54317
|
-
const Info$3 = createLucideIcon("info", __iconNode$
|
|
54500
|
+
const Info$3 = createLucideIcon("info", __iconNode$14);
|
|
54318
54501
|
|
|
54319
54502
|
/**
|
|
54320
|
-
* @license lucide-react v0.
|
|
54503
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54321
54504
|
*
|
|
54322
54505
|
* This source code is licensed under the ISC license.
|
|
54323
54506
|
* See the LICENSE file in the root directory of this source tree.
|
|
54324
54507
|
*/
|
|
54325
54508
|
|
|
54326
54509
|
|
|
54327
|
-
const __iconNode$
|
|
54510
|
+
const __iconNode$13 = [
|
|
54328
54511
|
["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
|
|
54329
54512
|
["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
|
|
54330
54513
|
["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
|
|
54331
54514
|
];
|
|
54332
|
-
const Italic$1 = createLucideIcon("italic", __iconNode$
|
|
54515
|
+
const Italic$1 = createLucideIcon("italic", __iconNode$13);
|
|
54333
54516
|
|
|
54334
54517
|
/**
|
|
54335
|
-
* @license lucide-react v0.
|
|
54518
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54336
54519
|
*
|
|
54337
54520
|
* This source code is licensed under the ISC license.
|
|
54338
54521
|
* See the LICENSE file in the root directory of this source tree.
|
|
54339
54522
|
*/
|
|
54340
54523
|
|
|
54341
54524
|
|
|
54342
|
-
const __iconNode$
|
|
54525
|
+
const __iconNode$12 = [
|
|
54343
54526
|
[
|
|
54344
54527
|
"path",
|
|
54345
54528
|
{
|
|
@@ -54349,64 +54532,70 @@ const __iconNode$10 = [
|
|
|
54349
54532
|
],
|
|
54350
54533
|
["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }]
|
|
54351
54534
|
];
|
|
54352
|
-
const KeyRound = createLucideIcon("key-round", __iconNode$
|
|
54535
|
+
const KeyRound = createLucideIcon("key-round", __iconNode$12);
|
|
54353
54536
|
|
|
54354
54537
|
/**
|
|
54355
|
-
* @license lucide-react v0.
|
|
54538
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54356
54539
|
*
|
|
54357
54540
|
* This source code is licensed under the ISC license.
|
|
54358
54541
|
* See the LICENSE file in the root directory of this source tree.
|
|
54359
54542
|
*/
|
|
54360
54543
|
|
|
54361
54544
|
|
|
54362
|
-
const __iconNode
|
|
54363
|
-
["
|
|
54364
|
-
[
|
|
54365
|
-
|
|
54366
|
-
|
|
54367
|
-
|
|
54368
|
-
|
|
54545
|
+
const __iconNode$11 = [
|
|
54546
|
+
["path", { d: "M10 18v-7", key: "wt116b" }],
|
|
54547
|
+
[
|
|
54548
|
+
"path",
|
|
54549
|
+
{
|
|
54550
|
+
d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z",
|
|
54551
|
+
key: "1m329m"
|
|
54552
|
+
}
|
|
54553
|
+
],
|
|
54554
|
+
["path", { d: "M14 18v-7", key: "vav6t3" }],
|
|
54555
|
+
["path", { d: "M18 18v-7", key: "aexdmj" }],
|
|
54556
|
+
["path", { d: "M3 22h18", key: "8prr45" }],
|
|
54557
|
+
["path", { d: "M6 18v-7", key: "1ivflk" }]
|
|
54369
54558
|
];
|
|
54370
|
-
const Landmark = createLucideIcon("landmark", __iconNode
|
|
54559
|
+
const Landmark = createLucideIcon("landmark", __iconNode$11);
|
|
54371
54560
|
|
|
54372
54561
|
/**
|
|
54373
|
-
* @license lucide-react v0.
|
|
54562
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54374
54563
|
*
|
|
54375
54564
|
* This source code is licensed under the ISC license.
|
|
54376
54565
|
* See the LICENSE file in the root directory of this source tree.
|
|
54377
54566
|
*/
|
|
54378
54567
|
|
|
54379
54568
|
|
|
54380
|
-
const __iconNode$
|
|
54569
|
+
const __iconNode$10 = [
|
|
54381
54570
|
["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
|
|
54382
54571
|
["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
|
|
54383
54572
|
["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
|
|
54384
54573
|
];
|
|
54385
|
-
const Link2 = createLucideIcon("link-2", __iconNode$
|
|
54574
|
+
const Link2 = createLucideIcon("link-2", __iconNode$10);
|
|
54386
54575
|
|
|
54387
54576
|
/**
|
|
54388
|
-
* @license lucide-react v0.
|
|
54577
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54389
54578
|
*
|
|
54390
54579
|
* This source code is licensed under the ISC license.
|
|
54391
54580
|
* See the LICENSE file in the root directory of this source tree.
|
|
54392
54581
|
*/
|
|
54393
54582
|
|
|
54394
54583
|
|
|
54395
|
-
const __iconNode
|
|
54584
|
+
const __iconNode$$ = [
|
|
54396
54585
|
["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
|
|
54397
54586
|
["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
|
|
54398
54587
|
];
|
|
54399
|
-
const Link$1 = createLucideIcon("link", __iconNode
|
|
54588
|
+
const Link$1 = createLucideIcon("link", __iconNode$$);
|
|
54400
54589
|
|
|
54401
54590
|
/**
|
|
54402
|
-
* @license lucide-react v0.
|
|
54591
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54403
54592
|
*
|
|
54404
54593
|
* This source code is licensed under the ISC license.
|
|
54405
54594
|
* See the LICENSE file in the root directory of this source tree.
|
|
54406
54595
|
*/
|
|
54407
54596
|
|
|
54408
54597
|
|
|
54409
|
-
const __iconNode$
|
|
54598
|
+
const __iconNode$_ = [
|
|
54410
54599
|
["path", { d: "M10 12h11", key: "6m4ad9" }],
|
|
54411
54600
|
["path", { d: "M10 18h11", key: "11hvi2" }],
|
|
54412
54601
|
["path", { d: "M10 6h11", key: "c7qv1k" }],
|
|
@@ -54414,17 +54603,17 @@ const __iconNode$Y = [
|
|
|
54414
54603
|
["path", { d: "M4 6h1v4", key: "cnovpq" }],
|
|
54415
54604
|
["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
|
|
54416
54605
|
];
|
|
54417
|
-
const ListOrdered = createLucideIcon("list-ordered", __iconNode$
|
|
54606
|
+
const ListOrdered = createLucideIcon("list-ordered", __iconNode$_);
|
|
54418
54607
|
|
|
54419
54608
|
/**
|
|
54420
|
-
* @license lucide-react v0.
|
|
54609
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54421
54610
|
*
|
|
54422
54611
|
* This source code is licensed under the ISC license.
|
|
54423
54612
|
* See the LICENSE file in the root directory of this source tree.
|
|
54424
54613
|
*/
|
|
54425
54614
|
|
|
54426
54615
|
|
|
54427
|
-
const __iconNode$
|
|
54616
|
+
const __iconNode$Z = [
|
|
54428
54617
|
["path", { d: "M3 12h.01", key: "nlz23k" }],
|
|
54429
54618
|
["path", { d: "M3 18h.01", key: "1tta3j" }],
|
|
54430
54619
|
["path", { d: "M3 6h.01", key: "1rqtza" }],
|
|
@@ -54432,110 +54621,123 @@ const __iconNode$X = [
|
|
|
54432
54621
|
["path", { d: "M8 18h13", key: "1lx6n3" }],
|
|
54433
54622
|
["path", { d: "M8 6h13", key: "ik3vkj" }]
|
|
54434
54623
|
];
|
|
54435
|
-
const List$1 = createLucideIcon("list", __iconNode$
|
|
54624
|
+
const List$1 = createLucideIcon("list", __iconNode$Z);
|
|
54436
54625
|
|
|
54437
54626
|
/**
|
|
54438
|
-
* @license lucide-react v0.
|
|
54627
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54439
54628
|
*
|
|
54440
54629
|
* This source code is licensed under the ISC license.
|
|
54441
54630
|
* See the LICENSE file in the root directory of this source tree.
|
|
54442
54631
|
*/
|
|
54443
54632
|
|
|
54444
54633
|
|
|
54445
|
-
const __iconNode$
|
|
54446
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
54634
|
+
const __iconNode$Y = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
54635
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$Y);
|
|
54447
54636
|
|
|
54448
54637
|
/**
|
|
54449
|
-
* @license lucide-react v0.
|
|
54638
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54450
54639
|
*
|
|
54451
54640
|
* This source code is licensed under the ISC license.
|
|
54452
54641
|
* See the LICENSE file in the root directory of this source tree.
|
|
54453
54642
|
*/
|
|
54454
54643
|
|
|
54455
54644
|
|
|
54456
|
-
const __iconNode$
|
|
54645
|
+
const __iconNode$X = [
|
|
54646
|
+
["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
|
|
54647
|
+
["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
|
|
54648
|
+
];
|
|
54649
|
+
const Lock = createLucideIcon("lock", __iconNode$X);
|
|
54650
|
+
|
|
54651
|
+
/**
|
|
54652
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54653
|
+
*
|
|
54654
|
+
* This source code is licensed under the ISC license.
|
|
54655
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
54656
|
+
*/
|
|
54657
|
+
|
|
54658
|
+
|
|
54659
|
+
const __iconNode$W = [
|
|
54457
54660
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
54458
54661
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
54459
54662
|
];
|
|
54460
|
-
const Mail = createLucideIcon("mail", __iconNode$
|
|
54663
|
+
const Mail = createLucideIcon("mail", __iconNode$W);
|
|
54461
54664
|
|
|
54462
54665
|
/**
|
|
54463
|
-
* @license lucide-react v0.
|
|
54666
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54464
54667
|
*
|
|
54465
54668
|
* This source code is licensed under the ISC license.
|
|
54466
54669
|
* See the LICENSE file in the root directory of this source tree.
|
|
54467
54670
|
*/
|
|
54468
54671
|
|
|
54469
54672
|
|
|
54470
|
-
const __iconNode$
|
|
54673
|
+
const __iconNode$V = [
|
|
54471
54674
|
["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }]
|
|
54472
54675
|
];
|
|
54473
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$
|
|
54676
|
+
const MessageSquare = createLucideIcon("message-square", __iconNode$V);
|
|
54474
54677
|
|
|
54475
54678
|
/**
|
|
54476
|
-
* @license lucide-react v0.
|
|
54679
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54477
54680
|
*
|
|
54478
54681
|
* This source code is licensed under the ISC license.
|
|
54479
54682
|
* See the LICENSE file in the root directory of this source tree.
|
|
54480
54683
|
*/
|
|
54481
54684
|
|
|
54482
54685
|
|
|
54483
|
-
const __iconNode$
|
|
54484
|
-
["path", { d: "M12
|
|
54686
|
+
const __iconNode$U = [
|
|
54687
|
+
["path", { d: "M12 19v3", key: "npa21l" }],
|
|
54485
54688
|
["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }],
|
|
54486
|
-
["
|
|
54689
|
+
["rect", { x: "9", y: "2", width: "6", height: "13", rx: "3", key: "s6n7sd" }]
|
|
54487
54690
|
];
|
|
54488
|
-
const Mic = createLucideIcon("mic", __iconNode$
|
|
54691
|
+
const Mic = createLucideIcon("mic", __iconNode$U);
|
|
54489
54692
|
|
|
54490
54693
|
/**
|
|
54491
|
-
* @license lucide-react v0.
|
|
54694
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54492
54695
|
*
|
|
54493
54696
|
* This source code is licensed under the ISC license.
|
|
54494
54697
|
* See the LICENSE file in the root directory of this source tree.
|
|
54495
54698
|
*/
|
|
54496
54699
|
|
|
54497
54700
|
|
|
54498
|
-
const __iconNode$
|
|
54499
|
-
["path", { d: "M13.234 20.252 21 12.3", key: "1cbrk9" }],
|
|
54701
|
+
const __iconNode$T = [
|
|
54500
54702
|
[
|
|
54501
54703
|
"path",
|
|
54502
54704
|
{
|
|
54503
|
-
d: "m16 6-8.414 8.586a2 2 0 0 0
|
|
54504
|
-
key: "
|
|
54705
|
+
d: "m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",
|
|
54706
|
+
key: "1miecu"
|
|
54505
54707
|
}
|
|
54506
54708
|
]
|
|
54507
54709
|
];
|
|
54508
|
-
const Paperclip = createLucideIcon("paperclip", __iconNode$
|
|
54710
|
+
const Paperclip = createLucideIcon("paperclip", __iconNode$T);
|
|
54509
54711
|
|
|
54510
54712
|
/**
|
|
54511
|
-
* @license lucide-react v0.
|
|
54713
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54512
54714
|
*
|
|
54513
54715
|
* This source code is licensed under the ISC license.
|
|
54514
54716
|
* See the LICENSE file in the root directory of this source tree.
|
|
54515
54717
|
*/
|
|
54516
54718
|
|
|
54517
54719
|
|
|
54518
|
-
const __iconNode$
|
|
54519
|
-
["path", { d: "
|
|
54720
|
+
const __iconNode$S = [
|
|
54721
|
+
["path", { d: "M13 21h8", key: "1jsn5i" }],
|
|
54520
54722
|
[
|
|
54521
54723
|
"path",
|
|
54522
54724
|
{
|
|
54523
|
-
d: "
|
|
54524
|
-
key: "
|
|
54725
|
+
d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
|
|
54726
|
+
key: "1a8usu"
|
|
54525
54727
|
}
|
|
54526
54728
|
]
|
|
54527
54729
|
];
|
|
54528
|
-
const PenLine = createLucideIcon("pen-line", __iconNode$
|
|
54730
|
+
const PenLine = createLucideIcon("pen-line", __iconNode$S);
|
|
54529
54731
|
|
|
54530
54732
|
/**
|
|
54531
|
-
* @license lucide-react v0.
|
|
54733
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54532
54734
|
*
|
|
54533
54735
|
* This source code is licensed under the ISC license.
|
|
54534
54736
|
* See the LICENSE file in the root directory of this source tree.
|
|
54535
54737
|
*/
|
|
54536
54738
|
|
|
54537
54739
|
|
|
54538
|
-
const __iconNode$
|
|
54740
|
+
const __iconNode$R = [
|
|
54539
54741
|
[
|
|
54540
54742
|
"path",
|
|
54541
54743
|
{
|
|
@@ -54544,17 +54746,17 @@ const __iconNode$Q = [
|
|
|
54544
54746
|
}
|
|
54545
54747
|
]
|
|
54546
54748
|
];
|
|
54547
|
-
const Pen = createLucideIcon("pen", __iconNode$
|
|
54749
|
+
const Pen = createLucideIcon("pen", __iconNode$R);
|
|
54548
54750
|
|
|
54549
54751
|
/**
|
|
54550
|
-
* @license lucide-react v0.
|
|
54752
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54551
54753
|
*
|
|
54552
54754
|
* This source code is licensed under the ISC license.
|
|
54553
54755
|
* See the LICENSE file in the root directory of this source tree.
|
|
54554
54756
|
*/
|
|
54555
54757
|
|
|
54556
54758
|
|
|
54557
|
-
const __iconNode$
|
|
54759
|
+
const __iconNode$Q = [
|
|
54558
54760
|
[
|
|
54559
54761
|
"path",
|
|
54560
54762
|
{
|
|
@@ -54564,57 +54766,65 @@ const __iconNode$P = [
|
|
|
54564
54766
|
],
|
|
54565
54767
|
["path", { d: "m15 5 4 4", key: "1mk7zo" }]
|
|
54566
54768
|
];
|
|
54567
|
-
const Pencil = createLucideIcon("pencil", __iconNode$
|
|
54769
|
+
const Pencil = createLucideIcon("pencil", __iconNode$Q);
|
|
54568
54770
|
|
|
54569
54771
|
/**
|
|
54570
|
-
* @license lucide-react v0.
|
|
54772
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54571
54773
|
*
|
|
54572
54774
|
* This source code is licensed under the ISC license.
|
|
54573
54775
|
* See the LICENSE file in the root directory of this source tree.
|
|
54574
54776
|
*/
|
|
54575
54777
|
|
|
54576
54778
|
|
|
54577
|
-
const __iconNode$
|
|
54578
|
-
|
|
54779
|
+
const __iconNode$P = [
|
|
54780
|
+
[
|
|
54781
|
+
"path",
|
|
54782
|
+
{
|
|
54783
|
+
d: "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",
|
|
54784
|
+
key: "10ikf1"
|
|
54785
|
+
}
|
|
54786
|
+
]
|
|
54787
|
+
];
|
|
54788
|
+
const Play = createLucideIcon("play", __iconNode$P);
|
|
54579
54789
|
|
|
54580
54790
|
/**
|
|
54581
|
-
* @license lucide-react v0.
|
|
54791
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54582
54792
|
*
|
|
54583
54793
|
* This source code is licensed under the ISC license.
|
|
54584
54794
|
* See the LICENSE file in the root directory of this source tree.
|
|
54585
54795
|
*/
|
|
54586
54796
|
|
|
54587
54797
|
|
|
54588
|
-
const __iconNode$
|
|
54798
|
+
const __iconNode$O = [
|
|
54589
54799
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
54590
54800
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
54591
54801
|
];
|
|
54592
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
54802
|
+
const Plus = createLucideIcon("plus", __iconNode$O);
|
|
54593
54803
|
|
|
54594
54804
|
/**
|
|
54595
|
-
* @license lucide-react v0.
|
|
54805
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54596
54806
|
*
|
|
54597
54807
|
* This source code is licensed under the ISC license.
|
|
54598
54808
|
* See the LICENSE file in the root directory of this source tree.
|
|
54599
54809
|
*/
|
|
54600
54810
|
|
|
54601
54811
|
|
|
54602
|
-
const __iconNode$
|
|
54812
|
+
const __iconNode$N = [
|
|
54603
54813
|
["path", { d: "M2 3h20", key: "91anmk" }],
|
|
54604
54814
|
["path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3", key: "2k9sn8" }],
|
|
54605
54815
|
["path", { d: "m7 21 5-5 5 5", key: "bip4we" }]
|
|
54606
54816
|
];
|
|
54607
|
-
const Presentation = createLucideIcon("presentation", __iconNode$
|
|
54817
|
+
const Presentation = createLucideIcon("presentation", __iconNode$N);
|
|
54608
54818
|
|
|
54609
54819
|
/**
|
|
54610
|
-
* @license lucide-react v0.
|
|
54820
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54611
54821
|
*
|
|
54612
54822
|
* This source code is licensed under the ISC license.
|
|
54613
54823
|
* See the LICENSE file in the root directory of this source tree.
|
|
54614
54824
|
*/
|
|
54615
54825
|
|
|
54616
54826
|
|
|
54617
|
-
const __iconNode$
|
|
54827
|
+
const __iconNode$M = [
|
|
54618
54828
|
[
|
|
54619
54829
|
"path",
|
|
54620
54830
|
{
|
|
@@ -54623,17 +54833,17 @@ const __iconNode$L = [
|
|
|
54623
54833
|
}
|
|
54624
54834
|
]
|
|
54625
54835
|
];
|
|
54626
|
-
const Puzzle = createLucideIcon("puzzle", __iconNode$
|
|
54836
|
+
const Puzzle = createLucideIcon("puzzle", __iconNode$M);
|
|
54627
54837
|
|
|
54628
54838
|
/**
|
|
54629
|
-
* @license lucide-react v0.
|
|
54839
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54630
54840
|
*
|
|
54631
54841
|
* This source code is licensed under the ISC license.
|
|
54632
54842
|
* See the LICENSE file in the root directory of this source tree.
|
|
54633
54843
|
*/
|
|
54634
54844
|
|
|
54635
54845
|
|
|
54636
|
-
const __iconNode$
|
|
54846
|
+
const __iconNode$L = [
|
|
54637
54847
|
[
|
|
54638
54848
|
"path",
|
|
54639
54849
|
{
|
|
@@ -54649,94 +54859,94 @@ const __iconNode$K = [
|
|
|
54649
54859
|
}
|
|
54650
54860
|
]
|
|
54651
54861
|
];
|
|
54652
|
-
const Quote = createLucideIcon("quote", __iconNode$
|
|
54862
|
+
const Quote = createLucideIcon("quote", __iconNode$L);
|
|
54653
54863
|
|
|
54654
54864
|
/**
|
|
54655
|
-
* @license lucide-react v0.
|
|
54865
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54656
54866
|
*
|
|
54657
54867
|
* This source code is licensed under the ISC license.
|
|
54658
54868
|
* See the LICENSE file in the root directory of this source tree.
|
|
54659
54869
|
*/
|
|
54660
54870
|
|
|
54661
54871
|
|
|
54662
|
-
const __iconNode$
|
|
54663
|
-
["path", { d: "
|
|
54664
|
-
["path", { d: "
|
|
54665
|
-
["
|
|
54666
|
-
["path", { d: "
|
|
54667
|
-
["
|
|
54872
|
+
const __iconNode$K = [
|
|
54873
|
+
["path", { d: "M16.247 7.761a6 6 0 0 1 0 8.478", key: "1fwjs5" }],
|
|
54874
|
+
["path", { d: "M19.075 4.933a10 10 0 0 1 0 14.134", key: "ehdyv1" }],
|
|
54875
|
+
["path", { d: "M4.925 19.067a10 10 0 0 1 0-14.134", key: "1q22gi" }],
|
|
54876
|
+
["path", { d: "M7.753 16.239a6 6 0 0 1 0-8.478", key: "r2q7qm" }],
|
|
54877
|
+
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }]
|
|
54668
54878
|
];
|
|
54669
|
-
const Radio$1 = createLucideIcon("radio", __iconNode$
|
|
54879
|
+
const Radio$1 = createLucideIcon("radio", __iconNode$K);
|
|
54670
54880
|
|
|
54671
54881
|
/**
|
|
54672
|
-
* @license lucide-react v0.
|
|
54882
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54673
54883
|
*
|
|
54674
54884
|
* This source code is licensed under the ISC license.
|
|
54675
54885
|
* See the LICENSE file in the root directory of this source tree.
|
|
54676
54886
|
*/
|
|
54677
54887
|
|
|
54678
54888
|
|
|
54679
|
-
const __iconNode$
|
|
54889
|
+
const __iconNode$J = [
|
|
54680
54890
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
54681
54891
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
54682
54892
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
54683
54893
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
54684
54894
|
];
|
|
54685
|
-
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$
|
|
54895
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$J);
|
|
54686
54896
|
|
|
54687
54897
|
/**
|
|
54688
|
-
* @license lucide-react v0.
|
|
54898
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54689
54899
|
*
|
|
54690
54900
|
* This source code is licensed under the ISC license.
|
|
54691
54901
|
* See the LICENSE file in the root directory of this source tree.
|
|
54692
54902
|
*/
|
|
54693
54903
|
|
|
54694
54904
|
|
|
54695
|
-
const __iconNode$
|
|
54905
|
+
const __iconNode$I = [
|
|
54696
54906
|
["path", { d: "m17 2 4 4-4 4", key: "nntrym" }],
|
|
54697
54907
|
["path", { d: "M3 11v-1a4 4 0 0 1 4-4h14", key: "84bu3i" }],
|
|
54698
54908
|
["path", { d: "m7 22-4-4 4-4", key: "1wqhfi" }],
|
|
54699
54909
|
["path", { d: "M21 13v1a4 4 0 0 1-4 4H3", key: "1rx37r" }]
|
|
54700
54910
|
];
|
|
54701
|
-
const Repeat = createLucideIcon("repeat", __iconNode$
|
|
54911
|
+
const Repeat = createLucideIcon("repeat", __iconNode$I);
|
|
54702
54912
|
|
|
54703
54913
|
/**
|
|
54704
|
-
* @license lucide-react v0.
|
|
54914
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54705
54915
|
*
|
|
54706
54916
|
* This source code is licensed under the ISC license.
|
|
54707
54917
|
* See the LICENSE file in the root directory of this source tree.
|
|
54708
54918
|
*/
|
|
54709
54919
|
|
|
54710
54920
|
|
|
54711
|
-
const __iconNode$
|
|
54921
|
+
const __iconNode$H = [
|
|
54712
54922
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
54713
54923
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }]
|
|
54714
54924
|
];
|
|
54715
|
-
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$
|
|
54925
|
+
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$H);
|
|
54716
54926
|
|
|
54717
54927
|
/**
|
|
54718
|
-
* @license lucide-react v0.
|
|
54928
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54719
54929
|
*
|
|
54720
54930
|
* This source code is licensed under the ISC license.
|
|
54721
54931
|
* See the LICENSE file in the root directory of this source tree.
|
|
54722
54932
|
*/
|
|
54723
54933
|
|
|
54724
54934
|
|
|
54725
|
-
const __iconNode$
|
|
54935
|
+
const __iconNode$G = [
|
|
54726
54936
|
["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
|
|
54727
54937
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }]
|
|
54728
54938
|
];
|
|
54729
|
-
const RotateCw = createLucideIcon("rotate-cw", __iconNode$
|
|
54939
|
+
const RotateCw = createLucideIcon("rotate-cw", __iconNode$G);
|
|
54730
54940
|
|
|
54731
54941
|
/**
|
|
54732
|
-
* @license lucide-react v0.
|
|
54942
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54733
54943
|
*
|
|
54734
54944
|
* This source code is licensed under the ISC license.
|
|
54735
54945
|
* See the LICENSE file in the root directory of this source tree.
|
|
54736
54946
|
*/
|
|
54737
54947
|
|
|
54738
54948
|
|
|
54739
|
-
const __iconNode$
|
|
54949
|
+
const __iconNode$F = [
|
|
54740
54950
|
[
|
|
54741
54951
|
"path",
|
|
54742
54952
|
{
|
|
@@ -54747,17 +54957,17 @@ const __iconNode$E = [
|
|
|
54747
54957
|
["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
|
|
54748
54958
|
["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
|
|
54749
54959
|
];
|
|
54750
|
-
const Save = createLucideIcon("save", __iconNode$
|
|
54960
|
+
const Save = createLucideIcon("save", __iconNode$F);
|
|
54751
54961
|
|
|
54752
54962
|
/**
|
|
54753
|
-
* @license lucide-react v0.
|
|
54963
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54754
54964
|
*
|
|
54755
54965
|
* This source code is licensed under the ISC license.
|
|
54756
54966
|
* See the LICENSE file in the root directory of this source tree.
|
|
54757
54967
|
*/
|
|
54758
54968
|
|
|
54759
54969
|
|
|
54760
|
-
const __iconNode$
|
|
54970
|
+
const __iconNode$E = [
|
|
54761
54971
|
["path", { d: "M14 22v-4a2 2 0 1 0-4 0v4", key: "hhkicm" }],
|
|
54762
54972
|
[
|
|
54763
54973
|
"path",
|
|
@@ -54771,34 +54981,34 @@ const __iconNode$D = [
|
|
|
54771
54981
|
["path", { d: "M6 5v17", key: "1xfsm0" }],
|
|
54772
54982
|
["circle", { cx: "12", cy: "9", r: "2", key: "1092wv" }]
|
|
54773
54983
|
];
|
|
54774
|
-
const School = createLucideIcon("school", __iconNode$
|
|
54984
|
+
const School = createLucideIcon("school", __iconNode$E);
|
|
54775
54985
|
|
|
54776
54986
|
/**
|
|
54777
|
-
* @license lucide-react v0.
|
|
54987
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54778
54988
|
*
|
|
54779
54989
|
* This source code is licensed under the ISC license.
|
|
54780
54990
|
* See the LICENSE file in the root directory of this source tree.
|
|
54781
54991
|
*/
|
|
54782
54992
|
|
|
54783
54993
|
|
|
54784
|
-
const __iconNode$
|
|
54994
|
+
const __iconNode$D = [
|
|
54785
54995
|
["path", { d: "M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3", key: "i8wdob" }],
|
|
54786
54996
|
["path", { d: "M8 21h8", key: "1ev6f3" }],
|
|
54787
54997
|
["path", { d: "M12 17v4", key: "1riwvh" }],
|
|
54788
54998
|
["path", { d: "m17 8 5-5", key: "fqif7o" }],
|
|
54789
54999
|
["path", { d: "M17 3h5v5", key: "1o3tu8" }]
|
|
54790
55000
|
];
|
|
54791
|
-
const ScreenShare = createLucideIcon("screen-share", __iconNode$
|
|
55001
|
+
const ScreenShare = createLucideIcon("screen-share", __iconNode$D);
|
|
54792
55002
|
|
|
54793
55003
|
/**
|
|
54794
|
-
* @license lucide-react v0.
|
|
55004
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54795
55005
|
*
|
|
54796
55006
|
* This source code is licensed under the ISC license.
|
|
54797
55007
|
* See the LICENSE file in the root directory of this source tree.
|
|
54798
55008
|
*/
|
|
54799
55009
|
|
|
54800
55010
|
|
|
54801
|
-
const __iconNode$
|
|
55011
|
+
const __iconNode$C = [
|
|
54802
55012
|
["path", { d: "M15 12h-5", key: "r7krc0" }],
|
|
54803
55013
|
["path", { d: "M15 8h-5", key: "1khuty" }],
|
|
54804
55014
|
["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
|
|
@@ -54810,31 +55020,31 @@ const __iconNode$B = [
|
|
|
54810
55020
|
}
|
|
54811
55021
|
]
|
|
54812
55022
|
];
|
|
54813
|
-
const ScrollText = createLucideIcon("scroll-text", __iconNode$
|
|
55023
|
+
const ScrollText = createLucideIcon("scroll-text", __iconNode$C);
|
|
54814
55024
|
|
|
54815
55025
|
/**
|
|
54816
|
-
* @license lucide-react v0.
|
|
55026
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54817
55027
|
*
|
|
54818
55028
|
* This source code is licensed under the ISC license.
|
|
54819
55029
|
* See the LICENSE file in the root directory of this source tree.
|
|
54820
55030
|
*/
|
|
54821
55031
|
|
|
54822
55032
|
|
|
54823
|
-
const __iconNode$
|
|
55033
|
+
const __iconNode$B = [
|
|
54824
55034
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
54825
55035
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
54826
55036
|
];
|
|
54827
|
-
const Search = createLucideIcon("search", __iconNode$
|
|
55037
|
+
const Search = createLucideIcon("search", __iconNode$B);
|
|
54828
55038
|
|
|
54829
55039
|
/**
|
|
54830
|
-
* @license lucide-react v0.
|
|
55040
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54831
55041
|
*
|
|
54832
55042
|
* This source code is licensed under the ISC license.
|
|
54833
55043
|
* See the LICENSE file in the root directory of this source tree.
|
|
54834
55044
|
*/
|
|
54835
55045
|
|
|
54836
55046
|
|
|
54837
|
-
const __iconNode$
|
|
55047
|
+
const __iconNode$A = [
|
|
54838
55048
|
[
|
|
54839
55049
|
"path",
|
|
54840
55050
|
{
|
|
@@ -54844,33 +55054,33 @@ const __iconNode$z = [
|
|
|
54844
55054
|
],
|
|
54845
55055
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
54846
55056
|
];
|
|
54847
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
55057
|
+
const Send = createLucideIcon("send", __iconNode$A);
|
|
54848
55058
|
|
|
54849
55059
|
/**
|
|
54850
|
-
* @license lucide-react v0.
|
|
55060
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54851
55061
|
*
|
|
54852
55062
|
* This source code is licensed under the ISC license.
|
|
54853
55063
|
* See the LICENSE file in the root directory of this source tree.
|
|
54854
55064
|
*/
|
|
54855
55065
|
|
|
54856
55066
|
|
|
54857
|
-
const __iconNode$
|
|
54858
|
-
["path", { d: "M20 7h-9", key: "3s1dr2" }],
|
|
55067
|
+
const __iconNode$z = [
|
|
54859
55068
|
["path", { d: "M14 17H5", key: "gfn3mx" }],
|
|
55069
|
+
["path", { d: "M19 7h-9", key: "6i9tg" }],
|
|
54860
55070
|
["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }],
|
|
54861
55071
|
["circle", { cx: "7", cy: "7", r: "3", key: "dfmy0x" }]
|
|
54862
55072
|
];
|
|
54863
|
-
const Settings2 = createLucideIcon("settings-2", __iconNode$
|
|
55073
|
+
const Settings2 = createLucideIcon("settings-2", __iconNode$z);
|
|
54864
55074
|
|
|
54865
55075
|
/**
|
|
54866
|
-
* @license lucide-react v0.
|
|
55076
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54867
55077
|
*
|
|
54868
55078
|
* This source code is licensed under the ISC license.
|
|
54869
55079
|
* See the LICENSE file in the root directory of this source tree.
|
|
54870
55080
|
*/
|
|
54871
55081
|
|
|
54872
55082
|
|
|
54873
|
-
const __iconNode$
|
|
55083
|
+
const __iconNode$y = [
|
|
54874
55084
|
[
|
|
54875
55085
|
"path",
|
|
54876
55086
|
{
|
|
@@ -54880,34 +55090,34 @@ const __iconNode$x = [
|
|
|
54880
55090
|
],
|
|
54881
55091
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
54882
55092
|
];
|
|
54883
|
-
const Settings = createLucideIcon("settings", __iconNode$
|
|
55093
|
+
const Settings = createLucideIcon("settings", __iconNode$y);
|
|
54884
55094
|
|
|
54885
55095
|
/**
|
|
54886
|
-
* @license lucide-react v0.
|
|
55096
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54887
55097
|
*
|
|
54888
55098
|
* This source code is licensed under the ISC license.
|
|
54889
55099
|
* See the LICENSE file in the root directory of this source tree.
|
|
54890
55100
|
*/
|
|
54891
55101
|
|
|
54892
55102
|
|
|
54893
|
-
const __iconNode$
|
|
55103
|
+
const __iconNode$x = [
|
|
54894
55104
|
["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
|
|
54895
55105
|
["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
|
|
54896
55106
|
["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
|
|
54897
55107
|
["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
|
|
54898
55108
|
["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
|
|
54899
55109
|
];
|
|
54900
|
-
const Share2 = createLucideIcon("share-2", __iconNode$
|
|
55110
|
+
const Share2 = createLucideIcon("share-2", __iconNode$x);
|
|
54901
55111
|
|
|
54902
55112
|
/**
|
|
54903
|
-
* @license lucide-react v0.
|
|
55113
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54904
55114
|
*
|
|
54905
55115
|
* This source code is licensed under the ISC license.
|
|
54906
55116
|
* See the LICENSE file in the root directory of this source tree.
|
|
54907
55117
|
*/
|
|
54908
55118
|
|
|
54909
55119
|
|
|
54910
|
-
const __iconNode$
|
|
55120
|
+
const __iconNode$w = [
|
|
54911
55121
|
[
|
|
54912
55122
|
"path",
|
|
54913
55123
|
{
|
|
@@ -54916,86 +55126,91 @@ const __iconNode$v = [
|
|
|
54916
55126
|
}
|
|
54917
55127
|
]
|
|
54918
55128
|
];
|
|
54919
|
-
const Shield = createLucideIcon("shield", __iconNode$
|
|
55129
|
+
const Shield = createLucideIcon("shield", __iconNode$w);
|
|
54920
55130
|
|
|
54921
55131
|
/**
|
|
54922
|
-
* @license lucide-react v0.
|
|
55132
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54923
55133
|
*
|
|
54924
55134
|
* This source code is licensed under the ISC license.
|
|
54925
55135
|
* See the LICENSE file in the root directory of this source tree.
|
|
54926
55136
|
*/
|
|
54927
55137
|
|
|
54928
55138
|
|
|
54929
|
-
const __iconNode$
|
|
54930
|
-
["path", { d: "
|
|
54931
|
-
["path", { d: "M3
|
|
54932
|
-
[
|
|
55139
|
+
const __iconNode$v = [
|
|
55140
|
+
["path", { d: "M16 10a4 4 0 0 1-8 0", key: "1ltviw" }],
|
|
55141
|
+
["path", { d: "M3.103 6.034h17.794", key: "awc11p" }],
|
|
55142
|
+
[
|
|
55143
|
+
"path",
|
|
55144
|
+
{
|
|
55145
|
+
d: "M3.4 5.467a2 2 0 0 0-.4 1.2V20a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6.667a2 2 0 0 0-.4-1.2l-2-2.667A2 2 0 0 0 17 2H7a2 2 0 0 0-1.6.8z",
|
|
55146
|
+
key: "o988cm"
|
|
55147
|
+
}
|
|
55148
|
+
]
|
|
54933
55149
|
];
|
|
54934
|
-
const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$
|
|
55150
|
+
const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$v);
|
|
54935
55151
|
|
|
54936
55152
|
/**
|
|
54937
|
-
* @license lucide-react v0.
|
|
55153
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54938
55154
|
*
|
|
54939
55155
|
* This source code is licensed under the ISC license.
|
|
54940
55156
|
* See the LICENSE file in the root directory of this source tree.
|
|
54941
55157
|
*/
|
|
54942
55158
|
|
|
54943
55159
|
|
|
54944
|
-
const __iconNode$
|
|
55160
|
+
const __iconNode$u = [
|
|
54945
55161
|
["path", { d: "m18 14 4 4-4 4", key: "10pe0f" }],
|
|
54946
55162
|
["path", { d: "m18 2 4 4-4 4", key: "pucp1d" }],
|
|
54947
55163
|
["path", { d: "M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22", key: "1ailkh" }],
|
|
54948
55164
|
["path", { d: "M2 6h1.972a4 4 0 0 1 3.6 2.2", key: "km57vx" }],
|
|
54949
55165
|
["path", { d: "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45", key: "os18l9" }]
|
|
54950
55166
|
];
|
|
54951
|
-
const Shuffle = createLucideIcon("shuffle", __iconNode$
|
|
55167
|
+
const Shuffle = createLucideIcon("shuffle", __iconNode$u);
|
|
54952
55168
|
|
|
54953
55169
|
/**
|
|
54954
|
-
* @license lucide-react v0.
|
|
55170
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54955
55171
|
*
|
|
54956
55172
|
* This source code is licensed under the ISC license.
|
|
54957
55173
|
* See the LICENSE file in the root directory of this source tree.
|
|
54958
55174
|
*/
|
|
54959
55175
|
|
|
54960
55176
|
|
|
54961
|
-
const __iconNode$
|
|
55177
|
+
const __iconNode$t = [
|
|
54962
55178
|
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
54963
55179
|
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
54964
55180
|
];
|
|
54965
|
-
const Smartphone = createLucideIcon("smartphone", __iconNode$
|
|
55181
|
+
const Smartphone = createLucideIcon("smartphone", __iconNode$t);
|
|
54966
55182
|
|
|
54967
55183
|
/**
|
|
54968
|
-
* @license lucide-react v0.
|
|
55184
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54969
55185
|
*
|
|
54970
55186
|
* This source code is licensed under the ISC license.
|
|
54971
55187
|
* See the LICENSE file in the root directory of this source tree.
|
|
54972
55188
|
*/
|
|
54973
55189
|
|
|
54974
55190
|
|
|
54975
|
-
const __iconNode$
|
|
55191
|
+
const __iconNode$s = [
|
|
54976
55192
|
[
|
|
54977
55193
|
"path",
|
|
54978
55194
|
{
|
|
54979
|
-
d: "
|
|
54980
|
-
key: "
|
|
55195
|
+
d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
|
|
55196
|
+
key: "1s2grr"
|
|
54981
55197
|
}
|
|
54982
55198
|
],
|
|
54983
|
-
["path", { d: "M20
|
|
54984
|
-
["path", { d: "M22
|
|
54985
|
-
["
|
|
54986
|
-
["path", { d: "M5 18H3", key: "zchphs" }]
|
|
55199
|
+
["path", { d: "M20 2v4", key: "1rf3ol" }],
|
|
55200
|
+
["path", { d: "M22 4h-4", key: "gwowj6" }],
|
|
55201
|
+
["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
|
|
54987
55202
|
];
|
|
54988
|
-
const Sparkles = createLucideIcon("sparkles", __iconNode$
|
|
55203
|
+
const Sparkles = createLucideIcon("sparkles", __iconNode$s);
|
|
54989
55204
|
|
|
54990
55205
|
/**
|
|
54991
|
-
* @license lucide-react v0.
|
|
55206
|
+
* @license lucide-react v0.528.0 - ISC
|
|
54992
55207
|
*
|
|
54993
55208
|
* This source code is licensed under the ISC license.
|
|
54994
55209
|
* See the LICENSE file in the root directory of this source tree.
|
|
54995
55210
|
*/
|
|
54996
55211
|
|
|
54997
55212
|
|
|
54998
|
-
const __iconNode$
|
|
55213
|
+
const __iconNode$r = [
|
|
54999
55214
|
["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
|
|
55000
55215
|
[
|
|
55001
55216
|
"path",
|
|
@@ -55005,30 +55220,30 @@ const __iconNode$q = [
|
|
|
55005
55220
|
}
|
|
55006
55221
|
]
|
|
55007
55222
|
];
|
|
55008
|
-
const SquarePen = createLucideIcon("square-pen", __iconNode$
|
|
55223
|
+
const SquarePen = createLucideIcon("square-pen", __iconNode$r);
|
|
55009
55224
|
|
|
55010
55225
|
/**
|
|
55011
|
-
* @license lucide-react v0.
|
|
55226
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55012
55227
|
*
|
|
55013
55228
|
* This source code is licensed under the ISC license.
|
|
55014
55229
|
* See the LICENSE file in the root directory of this source tree.
|
|
55015
55230
|
*/
|
|
55016
55231
|
|
|
55017
55232
|
|
|
55018
|
-
const __iconNode$
|
|
55233
|
+
const __iconNode$q = [
|
|
55019
55234
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
|
|
55020
55235
|
];
|
|
55021
|
-
const Square$1 = createLucideIcon("square", __iconNode$
|
|
55236
|
+
const Square$1 = createLucideIcon("square", __iconNode$q);
|
|
55022
55237
|
|
|
55023
55238
|
/**
|
|
55024
|
-
* @license lucide-react v0.
|
|
55239
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55025
55240
|
*
|
|
55026
55241
|
* This source code is licensed under the ISC license.
|
|
55027
55242
|
* See the LICENSE file in the root directory of this source tree.
|
|
55028
55243
|
*/
|
|
55029
55244
|
|
|
55030
55245
|
|
|
55031
|
-
const __iconNode$
|
|
55246
|
+
const __iconNode$p = [
|
|
55032
55247
|
[
|
|
55033
55248
|
"path",
|
|
55034
55249
|
{
|
|
@@ -55037,34 +55252,34 @@ const __iconNode$o = [
|
|
|
55037
55252
|
}
|
|
55038
55253
|
]
|
|
55039
55254
|
];
|
|
55040
|
-
const Star$1 = createLucideIcon("star", __iconNode$
|
|
55255
|
+
const Star$1 = createLucideIcon("star", __iconNode$p);
|
|
55041
55256
|
|
|
55042
55257
|
/**
|
|
55043
|
-
* @license lucide-react v0.
|
|
55258
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55044
55259
|
*
|
|
55045
55260
|
* This source code is licensed under the ISC license.
|
|
55046
55261
|
* See the LICENSE file in the root directory of this source tree.
|
|
55047
55262
|
*/
|
|
55048
55263
|
|
|
55049
55264
|
|
|
55050
|
-
const __iconNode$
|
|
55265
|
+
const __iconNode$o = [
|
|
55051
55266
|
["path", { d: "M11 2v2", key: "1539x4" }],
|
|
55052
55267
|
["path", { d: "M5 2v2", key: "1yf1q8" }],
|
|
55053
55268
|
["path", { d: "M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1", key: "rb5t3r" }],
|
|
55054
55269
|
["path", { d: "M8 15a6 6 0 0 0 12 0v-3", key: "x18d4x" }],
|
|
55055
55270
|
["circle", { cx: "20", cy: "10", r: "2", key: "ts1r5v" }]
|
|
55056
55271
|
];
|
|
55057
|
-
const Stethoscope = createLucideIcon("stethoscope", __iconNode$
|
|
55272
|
+
const Stethoscope = createLucideIcon("stethoscope", __iconNode$o);
|
|
55058
55273
|
|
|
55059
55274
|
/**
|
|
55060
|
-
* @license lucide-react v0.
|
|
55275
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55061
55276
|
*
|
|
55062
55277
|
* This source code is licensed under the ISC license.
|
|
55063
55278
|
* See the LICENSE file in the root directory of this source tree.
|
|
55064
55279
|
*/
|
|
55065
55280
|
|
|
55066
55281
|
|
|
55067
|
-
const __iconNode$
|
|
55282
|
+
const __iconNode$n = [
|
|
55068
55283
|
["path", { d: "m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7", key: "ztvudi" }],
|
|
55069
55284
|
["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }],
|
|
55070
55285
|
["path", { d: "M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4", key: "2ebpfo" }],
|
|
@@ -55077,17 +55292,17 @@ const __iconNode$m = [
|
|
|
55077
55292
|
}
|
|
55078
55293
|
]
|
|
55079
55294
|
];
|
|
55080
|
-
const Store$1 = createLucideIcon("store", __iconNode$
|
|
55295
|
+
const Store$1 = createLucideIcon("store", __iconNode$n);
|
|
55081
55296
|
|
|
55082
55297
|
/**
|
|
55083
|
-
* @license lucide-react v0.
|
|
55298
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55084
55299
|
*
|
|
55085
55300
|
* This source code is licensed under the ISC license.
|
|
55086
55301
|
* See the LICENSE file in the root directory of this source tree.
|
|
55087
55302
|
*/
|
|
55088
55303
|
|
|
55089
55304
|
|
|
55090
|
-
const __iconNode$
|
|
55305
|
+
const __iconNode$m = [
|
|
55091
55306
|
[
|
|
55092
55307
|
"path",
|
|
55093
55308
|
{
|
|
@@ -55097,31 +55312,31 @@ const __iconNode$l = [
|
|
|
55097
55312
|
],
|
|
55098
55313
|
["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]
|
|
55099
55314
|
];
|
|
55100
|
-
const Tag = createLucideIcon("tag", __iconNode$
|
|
55315
|
+
const Tag = createLucideIcon("tag", __iconNode$m);
|
|
55101
55316
|
|
|
55102
55317
|
/**
|
|
55103
|
-
* @license lucide-react v0.
|
|
55318
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55104
55319
|
*
|
|
55105
55320
|
* This source code is licensed under the ISC license.
|
|
55106
55321
|
* See the LICENSE file in the root directory of this source tree.
|
|
55107
55322
|
*/
|
|
55108
55323
|
|
|
55109
55324
|
|
|
55110
|
-
const __iconNode$
|
|
55111
|
-
["
|
|
55112
|
-
["
|
|
55325
|
+
const __iconNode$l = [
|
|
55326
|
+
["path", { d: "M12 19h8", key: "baeox8" }],
|
|
55327
|
+
["path", { d: "m4 17 6-6-6-6", key: "1yngyt" }]
|
|
55113
55328
|
];
|
|
55114
|
-
const Terminal = createLucideIcon("terminal", __iconNode$
|
|
55329
|
+
const Terminal = createLucideIcon("terminal", __iconNode$l);
|
|
55115
55330
|
|
|
55116
55331
|
/**
|
|
55117
|
-
* @license lucide-react v0.
|
|
55332
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55118
55333
|
*
|
|
55119
55334
|
* This source code is licensed under the ISC license.
|
|
55120
55335
|
* See the LICENSE file in the root directory of this source tree.
|
|
55121
55336
|
*/
|
|
55122
55337
|
|
|
55123
55338
|
|
|
55124
|
-
const __iconNode$
|
|
55339
|
+
const __iconNode$k = [
|
|
55125
55340
|
["path", { d: "M17 14V2", key: "8ymqnk" }],
|
|
55126
55341
|
[
|
|
55127
55342
|
"path",
|
|
@@ -55131,17 +55346,17 @@ const __iconNode$j = [
|
|
|
55131
55346
|
}
|
|
55132
55347
|
]
|
|
55133
55348
|
];
|
|
55134
|
-
const ThumbsDown = createLucideIcon("thumbs-down", __iconNode$
|
|
55349
|
+
const ThumbsDown = createLucideIcon("thumbs-down", __iconNode$k);
|
|
55135
55350
|
|
|
55136
55351
|
/**
|
|
55137
|
-
* @license lucide-react v0.
|
|
55352
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55138
55353
|
*
|
|
55139
55354
|
* This source code is licensed under the ISC license.
|
|
55140
55355
|
* See the LICENSE file in the root directory of this source tree.
|
|
55141
55356
|
*/
|
|
55142
55357
|
|
|
55143
55358
|
|
|
55144
|
-
const __iconNode$
|
|
55359
|
+
const __iconNode$j = [
|
|
55145
55360
|
["path", { d: "M7 10v12", key: "1qc93n" }],
|
|
55146
55361
|
[
|
|
55147
55362
|
"path",
|
|
@@ -55151,49 +55366,49 @@ const __iconNode$i = [
|
|
|
55151
55366
|
}
|
|
55152
55367
|
]
|
|
55153
55368
|
];
|
|
55154
|
-
const ThumbsUp = createLucideIcon("thumbs-up", __iconNode$
|
|
55369
|
+
const ThumbsUp = createLucideIcon("thumbs-up", __iconNode$j);
|
|
55155
55370
|
|
|
55156
55371
|
/**
|
|
55157
|
-
* @license lucide-react v0.
|
|
55372
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55158
55373
|
*
|
|
55159
55374
|
* This source code is licensed under the ISC license.
|
|
55160
55375
|
* See the LICENSE file in the root directory of this source tree.
|
|
55161
55376
|
*/
|
|
55162
55377
|
|
|
55163
55378
|
|
|
55164
|
-
const __iconNode$
|
|
55379
|
+
const __iconNode$i = [
|
|
55380
|
+
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
55381
|
+
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
55382
|
+
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
55165
55383
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
55166
|
-
["path", { d: "
|
|
55167
|
-
["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }],
|
|
55168
|
-
["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }],
|
|
55169
|
-
["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]
|
|
55384
|
+
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
55170
55385
|
];
|
|
55171
|
-
const Trash2 = createLucideIcon("trash-2", __iconNode$
|
|
55386
|
+
const Trash2 = createLucideIcon("trash-2", __iconNode$i);
|
|
55172
55387
|
|
|
55173
55388
|
/**
|
|
55174
|
-
* @license lucide-react v0.
|
|
55389
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55175
55390
|
*
|
|
55176
55391
|
* This source code is licensed under the ISC license.
|
|
55177
55392
|
* See the LICENSE file in the root directory of this source tree.
|
|
55178
55393
|
*/
|
|
55179
55394
|
|
|
55180
55395
|
|
|
55181
|
-
const __iconNode$
|
|
55396
|
+
const __iconNode$h = [
|
|
55397
|
+
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
55182
55398
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
55183
|
-
["path", { d: "
|
|
55184
|
-
["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }]
|
|
55399
|
+
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
55185
55400
|
];
|
|
55186
|
-
const Trash = createLucideIcon("trash", __iconNode$
|
|
55401
|
+
const Trash = createLucideIcon("trash", __iconNode$h);
|
|
55187
55402
|
|
|
55188
55403
|
/**
|
|
55189
|
-
* @license lucide-react v0.
|
|
55404
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55190
55405
|
*
|
|
55191
55406
|
* This source code is licensed under the ISC license.
|
|
55192
55407
|
* See the LICENSE file in the root directory of this source tree.
|
|
55193
55408
|
*/
|
|
55194
55409
|
|
|
55195
55410
|
|
|
55196
|
-
const __iconNode$
|
|
55411
|
+
const __iconNode$g = [
|
|
55197
55412
|
[
|
|
55198
55413
|
"path",
|
|
55199
55414
|
{
|
|
@@ -55204,61 +55419,61 @@ const __iconNode$f = [
|
|
|
55204
55419
|
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
55205
55420
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
55206
55421
|
];
|
|
55207
|
-
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$
|
|
55422
|
+
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$g);
|
|
55208
55423
|
|
|
55209
55424
|
/**
|
|
55210
|
-
* @license lucide-react v0.
|
|
55425
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55211
55426
|
*
|
|
55212
55427
|
* This source code is licensed under the ISC license.
|
|
55213
55428
|
* See the LICENSE file in the root directory of this source tree.
|
|
55214
55429
|
*/
|
|
55215
55430
|
|
|
55216
55431
|
|
|
55217
|
-
const __iconNode$
|
|
55432
|
+
const __iconNode$f = [
|
|
55218
55433
|
["path", { d: "M6 4v6a6 6 0 0 0 12 0V4", key: "9kb039" }],
|
|
55219
55434
|
["line", { x1: "4", x2: "20", y1: "20", y2: "20", key: "nun2al" }]
|
|
55220
55435
|
];
|
|
55221
|
-
const Underline$1 = createLucideIcon("underline", __iconNode$
|
|
55436
|
+
const Underline$1 = createLucideIcon("underline", __iconNode$f);
|
|
55222
55437
|
|
|
55223
55438
|
/**
|
|
55224
|
-
* @license lucide-react v0.
|
|
55439
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55225
55440
|
*
|
|
55226
55441
|
* This source code is licensed under the ISC license.
|
|
55227
55442
|
* See the LICENSE file in the root directory of this source tree.
|
|
55228
55443
|
*/
|
|
55229
55444
|
|
|
55230
55445
|
|
|
55231
|
-
const __iconNode$
|
|
55232
|
-
["path", { d: "
|
|
55233
|
-
["
|
|
55234
|
-
["
|
|
55446
|
+
const __iconNode$e = [
|
|
55447
|
+
["path", { d: "M12 3v12", key: "1x0j5s" }],
|
|
55448
|
+
["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
|
|
55449
|
+
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
|
|
55235
55450
|
];
|
|
55236
|
-
const Upload = createLucideIcon("upload", __iconNode$
|
|
55451
|
+
const Upload = createLucideIcon("upload", __iconNode$e);
|
|
55237
55452
|
|
|
55238
55453
|
/**
|
|
55239
|
-
* @license lucide-react v0.
|
|
55454
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55240
55455
|
*
|
|
55241
55456
|
* This source code is licensed under the ISC license.
|
|
55242
55457
|
* See the LICENSE file in the root directory of this source tree.
|
|
55243
55458
|
*/
|
|
55244
55459
|
|
|
55245
55460
|
|
|
55246
|
-
const __iconNode$
|
|
55461
|
+
const __iconNode$d = [
|
|
55462
|
+
["path", { d: "m16 11 2 2 4-4", key: "9rsbq5" }],
|
|
55247
55463
|
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
55248
|
-
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
55249
|
-
["polyline", { points: "16 11 18 13 22 9", key: "1pwet4" }]
|
|
55464
|
+
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
55250
55465
|
];
|
|
55251
|
-
const UserCheck = createLucideIcon("user-check", __iconNode$
|
|
55466
|
+
const UserCheck = createLucideIcon("user-check", __iconNode$d);
|
|
55252
55467
|
|
|
55253
55468
|
/**
|
|
55254
|
-
* @license lucide-react v0.
|
|
55469
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55255
55470
|
*
|
|
55256
55471
|
* This source code is licensed under the ISC license.
|
|
55257
55472
|
* See the LICENSE file in the root directory of this source tree.
|
|
55258
55473
|
*/
|
|
55259
55474
|
|
|
55260
55475
|
|
|
55261
|
-
const __iconNode$
|
|
55476
|
+
const __iconNode$c = [
|
|
55262
55477
|
["path", { d: "M10 15H6a4 4 0 0 0-4 4v2", key: "1nfge6" }],
|
|
55263
55478
|
["path", { d: "m14.305 16.53.923-.382", key: "1itpsq" }],
|
|
55264
55479
|
["path", { d: "m15.228 13.852-.923-.383", key: "eplpkm" }],
|
|
@@ -55271,10 +55486,26 @@ const __iconNode$b = [
|
|
|
55271
55486
|
["circle", { cx: "18", cy: "15", r: "3", key: "gjjjvw" }],
|
|
55272
55487
|
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
55273
55488
|
];
|
|
55274
|
-
const UserCog = createLucideIcon("user-cog", __iconNode$
|
|
55489
|
+
const UserCog = createLucideIcon("user-cog", __iconNode$c);
|
|
55490
|
+
|
|
55491
|
+
/**
|
|
55492
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55493
|
+
*
|
|
55494
|
+
* This source code is licensed under the ISC license.
|
|
55495
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
55496
|
+
*/
|
|
55497
|
+
|
|
55498
|
+
|
|
55499
|
+
const __iconNode$b = [
|
|
55500
|
+
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
55501
|
+
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }],
|
|
55502
|
+
["line", { x1: "17", x2: "22", y1: "8", y2: "13", key: "3nzzx3" }],
|
|
55503
|
+
["line", { x1: "22", x2: "17", y1: "8", y2: "13", key: "1swrse" }]
|
|
55504
|
+
];
|
|
55505
|
+
const UserX = createLucideIcon("user-x", __iconNode$b);
|
|
55275
55506
|
|
|
55276
55507
|
/**
|
|
55277
|
-
* @license lucide-react v0.
|
|
55508
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55278
55509
|
*
|
|
55279
55510
|
* This source code is licensed under the ISC license.
|
|
55280
55511
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55288,7 +55519,7 @@ const __iconNode$a = [
|
|
|
55288
55519
|
const User = createLucideIcon("user", __iconNode$a);
|
|
55289
55520
|
|
|
55290
55521
|
/**
|
|
55291
|
-
* @license lucide-react v0.
|
|
55522
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55292
55523
|
*
|
|
55293
55524
|
* This source code is licensed under the ISC license.
|
|
55294
55525
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55303,7 +55534,7 @@ const __iconNode$9 = [
|
|
|
55303
55534
|
const UsersRound = createLucideIcon("users-round", __iconNode$9);
|
|
55304
55535
|
|
|
55305
55536
|
/**
|
|
55306
|
-
* @license lucide-react v0.
|
|
55537
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55307
55538
|
*
|
|
55308
55539
|
* This source code is licensed under the ISC license.
|
|
55309
55540
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55319,7 +55550,7 @@ const __iconNode$8 = [
|
|
|
55319
55550
|
const Users = createLucideIcon("users", __iconNode$8);
|
|
55320
55551
|
|
|
55321
55552
|
/**
|
|
55322
|
-
* @license lucide-react v0.
|
|
55553
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55323
55554
|
*
|
|
55324
55555
|
* This source code is licensed under the ISC license.
|
|
55325
55556
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55335,7 +55566,7 @@ const __iconNode$7 = [
|
|
|
55335
55566
|
const Variable = createLucideIcon("variable", __iconNode$7);
|
|
55336
55567
|
|
|
55337
55568
|
/**
|
|
55338
|
-
* @license lucide-react v0.
|
|
55569
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55339
55570
|
*
|
|
55340
55571
|
* This source code is licensed under the ISC license.
|
|
55341
55572
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55355,7 +55586,7 @@ const __iconNode$6 = [
|
|
|
55355
55586
|
const Wallet = createLucideIcon("wallet", __iconNode$6);
|
|
55356
55587
|
|
|
55357
55588
|
/**
|
|
55358
|
-
* @license lucide-react v0.
|
|
55589
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55359
55590
|
*
|
|
55360
55591
|
* This source code is licensed under the ISC license.
|
|
55361
55592
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55381,7 +55612,7 @@ const __iconNode$5 = [
|
|
|
55381
55612
|
const WandSparkles = createLucideIcon("wand-sparkles", __iconNode$5);
|
|
55382
55613
|
|
|
55383
55614
|
/**
|
|
55384
|
-
* @license lucide-react v0.
|
|
55615
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55385
55616
|
*
|
|
55386
55617
|
* This source code is licensed under the ISC license.
|
|
55387
55618
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55400,7 +55631,7 @@ const __iconNode$4 = [
|
|
|
55400
55631
|
const Wrench = createLucideIcon("wrench", __iconNode$4);
|
|
55401
55632
|
|
|
55402
55633
|
/**
|
|
55403
|
-
* @license lucide-react v0.
|
|
55634
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55404
55635
|
*
|
|
55405
55636
|
* This source code is licensed under the ISC license.
|
|
55406
55637
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55414,7 +55645,7 @@ const __iconNode$3 = [
|
|
|
55414
55645
|
const X$1 = createLucideIcon("x", __iconNode$3);
|
|
55415
55646
|
|
|
55416
55647
|
/**
|
|
55417
|
-
* @license lucide-react v0.
|
|
55648
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55418
55649
|
*
|
|
55419
55650
|
* This source code is licensed under the ISC license.
|
|
55420
55651
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55433,7 +55664,7 @@ const __iconNode$2 = [
|
|
|
55433
55664
|
const Zap = createLucideIcon("zap", __iconNode$2);
|
|
55434
55665
|
|
|
55435
55666
|
/**
|
|
55436
|
-
* @license lucide-react v0.
|
|
55667
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55437
55668
|
*
|
|
55438
55669
|
* This source code is licensed under the ISC license.
|
|
55439
55670
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -55449,7 +55680,7 @@ const __iconNode$1 = [
|
|
|
55449
55680
|
const ZoomIn = createLucideIcon("zoom-in", __iconNode$1);
|
|
55450
55681
|
|
|
55451
55682
|
/**
|
|
55452
|
-
* @license lucide-react v0.
|
|
55683
|
+
* @license lucide-react v0.528.0 - ISC
|
|
55453
55684
|
*
|
|
55454
55685
|
* This source code is licensed under the ISC license.
|
|
55455
55686
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -86655,11 +86886,87 @@ function MemoryTab({ org, username }) {
|
|
|
86655
86886
|
return (jsxs("div", { className: "max-w-2xl space-y-8", children: [jsxs("div", { className: "space-y-4", children: [jsx("h4", { className: "text-sm font-semibold text-gray-700 dark:text-gray-300 tracking-wide", children: "Memory & Personalization" }), jsxs("div", { className: "flex items-center justify-between rounded-lg border px-6 py-5", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsxs("div", { className: "flex-1 mr-4", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: "Allow AI to learn from our conversations" }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: "When enabled, the AI will remember useful information from your chats to provide better assistance." })] }), jsx(Switch, { checked: (_a = settings === null || settings === void 0 ? void 0 : settings.auto_capture_enabled) !== null && _a !== void 0 ? _a : false, onCheckedChange: (checked) => handleToggleSetting('auto_capture_enabled', checked), disabled: isUpdatingSettings, "aria-label": `Auto memory capture ${(settings === null || settings === void 0 ? void 0 : settings.auto_capture_enabled) ? 'enabled' : 'disabled'}`, className: "cursor-pointer data-[state=checked]:bg-blue-500 flex-shrink-0" })] }), jsxs("div", { className: "flex items-center justify-between rounded-lg border px-6 py-5", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsxs("div", { className: "flex-1 mr-4", children: [jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: "Use my saved information in responses" }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: "When enabled, the AI will use what it knows about you to personalize responses." })] }), jsx(Switch, { checked: (_b = settings === null || settings === void 0 ? void 0 : settings.use_memory_in_responses) !== null && _b !== void 0 ? _b : false, onCheckedChange: (checked) => handleToggleSetting('use_memory_in_responses', checked), disabled: isUpdatingSettings, "aria-label": `Use memory in responses ${(settings === null || settings === void 0 ? void 0 : settings.use_memory_in_responses) ? 'enabled' : 'disabled'}`, className: "cursor-pointer data-[state=checked]:bg-blue-500 flex-shrink-0" })] })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsx("h4", { className: "text-sm font-semibold text-gray-700 dark:text-gray-300 tracking-wide", children: "My Memories" }), jsxs(Button$1, { variant: "outline", size: "sm", onClick: () => setIsAddDialogOpen(true), className: "text-xs", children: [jsx(Plus, { className: "h-3 w-3 mr-1" }), "Add Memory"] })] }), isLoadingMemories ? (jsx("div", { className: "space-y-3", children: [1, 2, 3].map((i) => (jsx(Skeleton, { className: "h-16 w-full rounded-lg" }, i))) })) : ((_c = memoriesData === null || memoriesData === void 0 ? void 0 : memoriesData.results) === null || _c === void 0 ? void 0 : _c.length) ? (jsx("div", { className: "space-y-3", children: memoriesData.results.map((memory) => (jsxs("div", { className: "group flex items-start gap-3 rounded-lg border px-4 py-3", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx("div", { className: "flex-shrink-0 mt-0.5", children: memory.is_auto_generated ? (jsx(Bot, { className: "h-4 w-4 text-blue-500", "aria-label": "Auto-generated memory" })) : (jsx(User, { className: "h-4 w-4 text-gray-400", "aria-label": "Manually added memory" })) }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("p", { className: "text-sm text-gray-800 dark:text-gray-200", children: memory.content }), jsxs("p", { className: "text-xs text-gray-400 mt-1", children: [new Date(memory.created_at).toLocaleDateString(), memory.is_auto_generated && (jsx("span", { className: "ml-2 inline-flex items-center rounded-full bg-blue-50 px-1.5 py-0.5 text-[10px] font-medium text-blue-600", children: "auto" }))] })] }), jsx("button", { type: "button", onClick: () => handleDeleteMemory(memory.id), disabled: deletingId === memory.id, className: "flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity p-1 rounded hover:bg-gray-100 text-gray-400 hover:text-gray-600 focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-300", "aria-label": `Delete memory: ${memory.content.substring(0, 30)}`, children: deletingId === memory.id ? (jsx("div", { className: "w-4 h-4 border-2 border-gray-500 border-t-transparent rounded-full animate-spin" })) : (jsx(Trash2, { className: "h-4 w-4" })) })] }, memory.id))) })) : (jsx("div", { className: "rounded-lg border px-6 py-8 text-center", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("p", { className: "text-sm text-gray-500", children: "No memories yet. The AI will start remembering information from your conversations, or you can add memories manually." }) })), totalPages > 1 && (jsx(IblPagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: setCurrentPage, disabled: isLoadingMemories }))] }), jsx(AddMemoryDialog, { open: isAddDialogOpen, onOpenChange: setIsAddDialogOpen, org: org, username: username })] }));
|
|
86656
86887
|
}
|
|
86657
86888
|
|
|
86889
|
+
// One entry per chat-privacy mode. `description` is read inline on each
|
|
86890
|
+
// card so the user sees what every option means without an extra
|
|
86891
|
+
// "How each mode works" section.
|
|
86892
|
+
const MODE_COPY = {
|
|
86893
|
+
[ChatPrivacyModeEnum.NORMAL]: {
|
|
86894
|
+
label: 'Normal',
|
|
86895
|
+
description: 'Conversations are saved to your history and linked to your account. Agents use prior turns in the same conversation for context.',
|
|
86896
|
+
icon: FileText,
|
|
86897
|
+
},
|
|
86898
|
+
[ChatPrivacyModeEnum.ANONYMIZED]: {
|
|
86899
|
+
label: 'Anonymized',
|
|
86900
|
+
description: 'Conversations are saved for AI context but stripped of identifying account info. Agents still use prior turns in the same conversation.',
|
|
86901
|
+
icon: UserX,
|
|
86902
|
+
},
|
|
86903
|
+
[ChatPrivacyModeEnum.DISABLED]: {
|
|
86904
|
+
label: 'Disabled',
|
|
86905
|
+
description: "Nothing is recorded. Every message is a single-turn Q&A — agents can't reference earlier messages, even within the same conversation.",
|
|
86906
|
+
icon: Ban,
|
|
86907
|
+
},
|
|
86908
|
+
};
|
|
86909
|
+
function ChatPrivacyTab({ org, username }) {
|
|
86910
|
+
var _a;
|
|
86911
|
+
const { data, isLoading } = useGetUserChatPrivacySettingsQuery({ org, userId: username }, { skip: !org || !username });
|
|
86912
|
+
const [updateSettings, { isLoading: isUpdating }] = useUpdateUserChatPrivacySettingsMutation();
|
|
86913
|
+
const serverMode = (_a = data === null || data === void 0 ? void 0 : data.chat_privacy_mode) !== null && _a !== void 0 ? _a : ChatPrivacyModeEnum.NORMAL;
|
|
86914
|
+
const [pending, setPending] = useState(serverMode);
|
|
86915
|
+
useEffect(() => {
|
|
86916
|
+
setPending(serverMode);
|
|
86917
|
+
}, [serverMode]);
|
|
86918
|
+
const handleSelect = async (mode) => {
|
|
86919
|
+
if (mode === pending)
|
|
86920
|
+
return;
|
|
86921
|
+
const previous = pending;
|
|
86922
|
+
setPending(mode);
|
|
86923
|
+
try {
|
|
86924
|
+
await updateSettings({
|
|
86925
|
+
org,
|
|
86926
|
+
userId: username,
|
|
86927
|
+
requestBody: { chat_privacy_mode: mode },
|
|
86928
|
+
}).unwrap();
|
|
86929
|
+
toast.success('Default Private Mode updated');
|
|
86930
|
+
}
|
|
86931
|
+
catch (error) {
|
|
86932
|
+
console.error(JSON.stringify(error));
|
|
86933
|
+
setPending(previous);
|
|
86934
|
+
toast.error('Failed to update default Private Mode');
|
|
86935
|
+
}
|
|
86936
|
+
};
|
|
86937
|
+
if (isLoading) {
|
|
86938
|
+
return (jsxs("div", { className: "max-w-2xl space-y-4", children: [jsx(Skeleton, { className: "h-5 w-40" }), jsx("div", { className: "space-y-3", children: [1, 2, 3].map((i) => (jsx(Skeleton, { className: "h-24 w-full rounded-lg" }, i))) })] }));
|
|
86939
|
+
}
|
|
86940
|
+
// Radio-card pattern — mirrors the bordered-row idiom used elsewhere
|
|
86941
|
+
// in profile tabs (the memory-tab switch rows are the closest cousin).
|
|
86942
|
+
// Each card carries its mode name + description inline so the user
|
|
86943
|
+
// never has to read a separate "what does this option mean" section.
|
|
86944
|
+
//
|
|
86945
|
+
// The cards are styled as a radio group but we deliberately do NOT
|
|
86946
|
+
// declare `role="radiogroup"` / `role="radio"`: the WAI-ARIA APG for
|
|
86947
|
+
// radiogroups requires arrow-key navigation + a roving tabindex which
|
|
86948
|
+
// we'd have to wire by hand, and the user value of that is low when
|
|
86949
|
+
// tab-into-each-card already works. Use `aria-pressed` on each card
|
|
86950
|
+
// (the toggle-button contract) so screen readers still announce the
|
|
86951
|
+
// selected option.
|
|
86952
|
+
return (jsxs("div", { className: "max-w-2xl space-y-4", "data-testid": "chat-privacy-tab-body", children: [jsxs("div", { children: [jsx("h4", { className: "text-sm font-semibold text-gray-700 dark:text-gray-300 tracking-wide", children: "Default Private Mode" }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: "Choose how conversations with AI agents are recorded by default. You can switch any individual chat into Private Mode from the chat header \u2014 and an agent or your organization can override this for specific conversations." })] }), jsx("div", { className: "space-y-3", children: CHAT_PRIVACY_MODES.map((mode) => {
|
|
86953
|
+
const { label, description, icon: Icon } = MODE_COPY[mode];
|
|
86954
|
+
const isSelected = pending === mode;
|
|
86955
|
+
return (jsxs("button", { type: "button", "aria-pressed": isSelected, "data-testid": `chat-privacy-mode-${mode}`, "data-state": isSelected ? 'selected' : 'unselected', onClick: () => void handleSelect(mode), disabled: isUpdating, className: cn('w-full flex items-start gap-3 rounded-lg border px-5 py-4 text-left transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2', 'disabled:cursor-not-allowed disabled:opacity-60', isSelected
|
|
86956
|
+
? 'border-blue-500 bg-blue-50/40 dark:bg-blue-950/20'
|
|
86957
|
+
: 'border-gray-200 hover:bg-gray-50 dark:border-gray-800 dark:hover:bg-gray-800/40'), children: [jsx(Icon, { className: cn('h-5 w-5 mt-0.5 flex-shrink-0', isSelected
|
|
86958
|
+
? 'text-blue-600 dark:text-blue-400'
|
|
86959
|
+
: 'text-gray-400 dark:text-gray-500'), "aria-hidden": "true" }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("div", { className: "flex items-center gap-2", children: jsx("span", { className: cn('text-sm font-medium', isSelected
|
|
86960
|
+
? 'text-blue-900 dark:text-blue-100'
|
|
86961
|
+
: 'text-gray-900 dark:text-gray-100'), children: label }) }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: description })] }), jsx("span", { "aria-hidden": "true", className: cn('h-5 w-5 flex items-center justify-center rounded-full border-2 flex-shrink-0 mt-0.5 transition-colors', isSelected ? 'border-blue-500 bg-blue-500' : 'border-gray-300 dark:border-gray-600'), children: isSelected && jsx(Check, { className: "h-3 w-3 text-white", strokeWidth: 3 }) })] }, mode));
|
|
86962
|
+
}) })] }));
|
|
86963
|
+
}
|
|
86964
|
+
|
|
86658
86965
|
const renderLucideIcon = (Icon) => function RenderedIcon(props) {
|
|
86659
86966
|
return jsx(Icon, { ...props });
|
|
86660
86967
|
};
|
|
86661
86968
|
function Profile({ tenant, username, tenants, onClose, customization = {}, isAdmin = false, targetTab = 'basic', onAccountDeleted, enableMemoryTab = false, localLLMProps, }) {
|
|
86662
|
-
var _a, _b, _c, _d;
|
|
86969
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
86663
86970
|
console.log('[Profile] localLLMProps received:', {
|
|
86664
86971
|
isAvailable: localLLMProps === null || localLLMProps === void 0 ? void 0 : localLLMProps.isAvailable,
|
|
86665
86972
|
foundryStatus: localLLMProps === null || localLLMProps === void 0 ? void 0 : localLLMProps.foundryStatus,
|
|
@@ -86677,6 +86984,10 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
86677
86984
|
});
|
|
86678
86985
|
// Show memory tab if enabled for this platform AND memsearch is enabled (or status API is unavailable)
|
|
86679
86986
|
const isMemoryEnabled = enableMemoryTab && (isMemsearchStatusError || ((_a = memsearchStatus === null || memsearchStatus === void 0 ? void 0 : memsearchStatus.enable_memsearch) !== null && _a !== void 0 ? _a : false));
|
|
86987
|
+
// The Private Mode tab only appears when the tenant has opted into user-controlled
|
|
86988
|
+
// chat privacy. Backend returns { allow_user_chat_privacy_control: boolean }.
|
|
86989
|
+
const { data: chatPrivacyConfig } = useGetTenantChatPrivacyConfigQuery({ org: tenant, userId: username }, { skip: !tenant || !username });
|
|
86990
|
+
const isChatPrivacyEnabled = !!(chatPrivacyConfig === null || chatPrivacyConfig === void 0 ? void 0 : chatPrivacyConfig.allow_user_chat_privacy_control);
|
|
86680
86991
|
const currentTenant = tenants.find((t) => t.key === tenant);
|
|
86681
86992
|
const isPurchasesEnabled = currentTenant === null || currentTenant === void 0 ? void 0 : currentTenant.enable_monetization;
|
|
86682
86993
|
const baseTabs = [
|
|
@@ -86691,6 +87002,12 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
86691
87002
|
...(isMemoryEnabled
|
|
86692
87003
|
? [{ id: 'memory', label: 'Memory', renderIcon: renderLucideIcon(Archive) }]
|
|
86693
87004
|
: []),
|
|
87005
|
+
// id stays as 'privacy' so callers passing `targetTab='privacy'` and
|
|
87006
|
+
// any test selectors targeting #panel-privacy keep working. Only
|
|
87007
|
+
// the user-visible `label` changed to "Private Mode".
|
|
87008
|
+
...(isChatPrivacyEnabled
|
|
87009
|
+
? [{ id: 'privacy', label: 'Private Mode', renderIcon: renderLucideIcon(Lock) }]
|
|
87010
|
+
: []),
|
|
86694
87011
|
{ id: 'security', label: 'Security', renderIcon: renderLucideIcon(Shield) },
|
|
86695
87012
|
];
|
|
86696
87013
|
// Add Advanced tab only when in Tauri app (localLLMProps is provided and available)
|
|
@@ -86744,11 +87061,12 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
86744
87061
|
}, children: [jsxs("div", { className: "flex flex-col items-center justify-center py-8 px-6 border-b border-gray-200 dark:border-gray-700 flex-shrink-0", children: [isUserMetadataEdxLoading || isUploadingProfileImage ? (jsx(Skeleton, { className: "h-20 w-20 mb-6 rounded-full", "aria-label": "Loading profile image" })) : (jsxs("button", { type: "button", className: "relative w-20 h-20 mb-6 cursor-pointer group rounded-full focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2", onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), onClick: handleAvatarClick, "aria-label": "Upload profile picture", children: [jsxs(Avatar, { className: "h-20 w-20", children: [((_b = userMetadataEdx === null || userMetadataEdx === void 0 ? void 0 : userMetadataEdx.profile_image) === null || _b === void 0 ? void 0 : _b.has_image) ? (jsx(AvatarImage, { src: (_c = userMetadataEdx === null || userMetadataEdx === void 0 ? void 0 : userMetadataEdx.profile_image) === null || _c === void 0 ? void 0 : _c.image_url_full, alt: "Profile picture", className: "rounded-full object-cover w-full h-full group-hover:opacity-80 transition-opacity" })) : customization.useGravatarPicFallback ? (jsx(Gravatar$1, { className: "w-full h-full rounded-full object-cover group-hover:opacity-80 transition-opacity", email: userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email, size: 80, alt: "Profile picture from Gravatar" })) : (jsx(Fragment$1, {})), jsx(AvatarFallback, { className: cn('bg-blue-800 text-white text-xl rounded-full', customization.useGravatarPicFallback &&
|
|
86745
87062
|
!((_d = userMetadataEdx === null || userMetadataEdx === void 0 ? void 0 : userMetadataEdx.profile_image) === null || _d === void 0 ? void 0 : _d.image_url_full)
|
|
86746
87063
|
? 'hidden'
|
|
86747
|
-
: ''), children: getInitials((userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.name) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.username) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '') })] }), isHovering && (jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-800 rounded-full border-4 border-white/20", "aria-hidden": "true", children: jsx("span", { className: "text-white text-xs font-medium text-center px-2", children: "Upload" }) })), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", onChange: handleFileUpload, className: "hidden", "aria-label": "Choose profile picture to upload", tabIndex: -1 })] })),
|
|
87064
|
+
: ''), children: getInitials((userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.name) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.username) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '') })] }), isHovering && (jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-800 rounded-full border-4 border-white/20", "aria-hidden": "true", children: jsx("span", { className: "text-white text-xs font-medium text-center px-2", children: "Upload" }) })), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", onChange: handleFileUpload, className: "hidden", "aria-label": "Choose profile picture to upload", tabIndex: -1 })] })), jsx("h2", { className: "text-base font-semibold text-gray-900 dark:text-gray-100 text-center mb-4 break-all px-2", title: userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email, children: userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email }), jsxs("div", { className: "flex justify-center space-x-3", children: [jsxs("div", { className: "bg-blue-100 text-blue-700 px-2 py-1 rounded font-medium flex items-center text-sm", children: [jsx(RoleIcon, { className: "h-4 w-4 mr-2", "aria-hidden": "true" }), jsx("span", { children: isAdmin ? 'Admin' : 'User' })] }), customization.showPlatformName && (jsx("div", { className: "bg-gray-100 text-gray-600 px-4 py-2 rounded text-xs font-medium", children: tenant.toUpperCase() }))] })] }), jsx("nav", { className: "flex-1 overflow-y-auto", style: { minHeight: 0 }, "aria-label": "Profile tabs", children: jsx("div", { className: "p-4", children: jsx("div", { className: "flex flex-col space-y-2", role: "tablist", "aria-orientation": "vertical", children: TABS.map((tab) => (jsxs("button", { role: "tab", "aria-selected": activeTab === tab.id, "aria-controls": `${tab.id}-tabpanel`, id: `${tab.id}-tab`, onClick: () => setActiveTab(tab.id), className: `w-full justify-start px-4 py-3 text-left rounded-lg transition-all flex items-center text-base ${activeTab === tab.id
|
|
86748
87065
|
? 'bg-blue-50 text-blue-700 font-medium'
|
|
86749
87066
|
: 'hover:bg-gray-50 text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-gray-100'}`, children: [jsx(tab.renderIcon, { className: "h-5 w-5 mr-3 flex-shrink-0", "aria-hidden": "true" }), jsx("span", { className: "truncate", children: tab.label })] }, tab.id))) }) }) })] }), jsx("nav", { className: "lg:hidden", "aria-label": "Profile tabs mobile", children: jsx("div", { className: "w-full justify-start px-6 py-2 bg-white border-b border-gray-200 rounded-none h-auto overflow-x-auto", children: jsx("div", { className: "flex space-x-2", role: "tablist", "aria-orientation": "horizontal", children: TABS.map((tab) => (jsxs("button", { role: "tab", "aria-selected": activeTab === tab.id, "aria-controls": `${tab.id}-tabpanel`, id: `${tab.id}-tab-mobile`, onClick: () => setActiveTab(tab.id), className: `flex items-center gap-2 px-3 py-2 rounded-lg whitespace-nowrap text-sm transition-all ${activeTab === tab.id
|
|
86750
87067
|
? 'bg-blue-50 text-blue-600 font-medium'
|
|
86751
|
-
: 'text-gray-600 hover:bg-gray-50'}`, children: [jsx(tab.renderIcon, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("span", { className: "hidden sm:inline", children: tab.label }), jsx("span", { className: "sm:hidden", children: tab.label })] }, tab.id))) }) }) }), jsxs("div", { className: "flex-1 flex flex-col overflow-hidden", style: { height: '100%' }, children: [jsx("div", { className: "hidden lg:block flex-shrink-0 p-6 border-b border-gray-200 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2
|
|
87068
|
+
: 'text-gray-600 hover:bg-gray-50'}`, children: [jsx(tab.renderIcon, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("span", { className: "hidden sm:inline", children: tab.label }), jsx("span", { className: "sm:hidden", children: tab.label })] }, tab.id))) }) }) }), jsxs("div", { className: "flex-1 flex flex-col overflow-hidden", style: { height: '100%' }, children: [jsx("div", { className: "hidden lg:block flex-shrink-0 p-6 border-b border-gray-200 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2", children: (_f = (_e = TABS.find((t) => t.id === activeTab)) === null || _e === void 0 ? void 0 : _e.label) !== null && _f !== void 0 ? _f : activeTab }), jsxs("p", { className: "text-gray-600 dark:text-gray-400 text-sm", children: [activeTab === 'basic' && 'Manage your basic account information and preferences.', activeTab === 'social' && 'Connect and manage your social media accounts.', activeTab === 'education' && 'Review and update your academic achievements.', activeTab === 'experience' && 'Keep your professional journey up to date.', activeTab === 'resume' && 'Upload and preview your most recent resume.', activeTab === 'purchases' && 'View and manage your subscriptions and purchases.', activeTab === 'memory' && 'Manage what the AI remembers about you.', activeTab === 'privacy' &&
|
|
87069
|
+
'Set your default Private Mode and review what each option does to your conversations with AI agents.', activeTab === 'security' && 'Update your security settings and password.', activeTab === 'advanced' && 'Manage your advanced settings.'] })] }), (activeTab === 'education' ||
|
|
86752
87070
|
activeTab === 'experience' ||
|
|
86753
87071
|
activeTab === 'resume') && (jsx(Button$1, { size: "icon", onClick: activeTab === 'education'
|
|
86754
87072
|
? handleAddEducation
|
|
@@ -86757,8 +87075,9 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
86757
87075
|
: handleAddResume, className: "text-gray-700 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white mr-4", "aria-label": `Add ${activeTab}`, children: activeTab === 'resume' ? (jsx(Upload, { className: "h-4 w-4" })) : (jsx(Plus, { className: "h-4 w-4" })) }))] }) }), jsxs("div", { className: "flex-1 p-6 space-y-6", style: {
|
|
86758
87076
|
overflowY: 'auto',
|
|
86759
87077
|
overflowX: 'hidden',
|
|
86760
|
-
}, role: "tabpanel", id: `${activeTab}-tabpanel`, "aria-labelledby": `${activeTab}-tab`, tabIndex: 0, children: [jsx("div", { className: "lg:hidden mb-6", children: jsxs("div", { className: "flex flex-row items-center sm:justify-between gap-3", children: [jsxs("div", { children: [jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2
|
|
86761
|
-
'Manage your basic account information and preferences.', activeTab === 'social' && 'Connect and manage your social media accounts.', activeTab === 'education' && 'Review and update your academic achievements.', activeTab === 'experience' && 'Keep your professional journey up to date.', activeTab === 'resume' && 'Upload and preview your most recent resume.', activeTab === 'memory' && 'Manage what the AI remembers about you.', activeTab === '
|
|
87078
|
+
}, role: "tabpanel", id: `${activeTab}-tabpanel`, "aria-labelledby": `${activeTab}-tab`, tabIndex: 0, children: [jsx("div", { className: "lg:hidden mb-6", children: jsxs("div", { className: "flex flex-row items-center sm:justify-between gap-3", children: [jsxs("div", { children: [jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2", children: (_h = (_g = TABS.find((t) => t.id === activeTab)) === null || _g === void 0 ? void 0 : _g.label) !== null && _h !== void 0 ? _h : activeTab }), jsxs("p", { className: "text-gray-600 dark:text-gray-400 text-sm", children: [activeTab === 'basic' &&
|
|
87079
|
+
'Manage your basic account information and preferences.', activeTab === 'social' && 'Connect and manage your social media accounts.', activeTab === 'education' && 'Review and update your academic achievements.', activeTab === 'experience' && 'Keep your professional journey up to date.', activeTab === 'resume' && 'Upload and preview your most recent resume.', activeTab === 'memory' && 'Manage what the AI remembers about you.', activeTab === 'privacy' &&
|
|
87080
|
+
'Set your default Private Mode and review what each option does to your conversations with AI agents.', activeTab === 'security' && 'Update your security settings and password.', activeTab === 'advanced' && 'Manage your advanced settings.'] })] }), (activeTab === 'education' ||
|
|
86762
87081
|
activeTab === 'experience' ||
|
|
86763
87082
|
activeTab === 'resume') && (jsx(Button$1
|
|
86764
87083
|
//variant="outline"
|
|
@@ -86835,7 +87154,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
86835
87154
|
var _a;
|
|
86836
87155
|
return (jsxs(Fragment$1, { children: [jsxs("div", { className: "relative mb-0", children: [jsx("div", { className: "absolute inset-y-0 left-4 flex items-center pointer-events-none", "aria-hidden": "true", children: jsx("div", { className: "bg-black text-white rounded w-8 h-8 flex items-center justify-center", children: jsx("span", { className: "font-bold text-sm", children: "X" }) }) }), jsx(Input, { id: "x", className: "w-full bg-gray-50 border-gray-200 focus:ring-blue-500 focus:border-blue-500 text-base py-3 pl-16 h-10", placeholder: "X", value: field.state.value, onChange: (e) => handleSocialLinkChange(e.target.value, field.handleChange, X_URL_PREFIX), disabled: socialForm.state.isSubmitting })] }), jsx("p", { className: "text-red-500 dark:text-gray-400 text-sm", role: ((_a = field.state.meta.errors) === null || _a === void 0 ? void 0 : _a.length) ? 'alert' : undefined, "aria-live": "polite", children: field.state.meta.errors })] }));
|
|
86837
87156
|
},
|
|
86838
|
-
})] })] }) })), activeTab === 'education' && jsx(EducationTab, { org: tenant, username: username }), activeTab === 'experience' && jsx(ExperienceTab, { org: tenant, username: username }), activeTab === 'resume' && jsx(ResumeTab, { org: tenant, username: username }), activeTab === 'purchases' && jsx(PurchasesTab, { org: tenant, username: username }), activeTab === 'memory' && jsx(MemoryTab, { org: tenant, username: username }), activeTab === 'security' && (jsx(Security, { email: userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email, onAccountDeleted: onAccountDeleted })), activeTab === 'advanced' && localLLMProps && (jsx(LocalLLMTab, { isAvailable: localLLMProps.isAvailable, state: localLLMProps.state, ollamaStatus: localLLMProps.ollamaStatus, isUsingFoundry: localLLMProps.isUsingFoundry, foundryModels: localLLMProps.foundryModels, selectedFoundryModel: localLLMProps.selectedFoundryModel, foundryStatus: localLLMProps.foundryStatus, onStartDownload: localLLMProps.onStartDownload, onCancelDownload: localLLMProps.onCancelDownload, onInstallOllama: localLLMProps.onInstallOllama, onInstallFoundry: localLLMProps.onInstallFoundry, onCheckStatus: localLLMProps.onCheckStatus, onResetState: localLLMProps.onResetState, onSelectFoundryModel: localLLMProps.onSelectFoundryModel }))] }), ['basic', 'social'].includes(activeTab) && (jsx("div", { className: "flex-shrink-0 border-t border-gray-200 p-6 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex justify-end gap-3", children: [jsx(Button$1, { onClick: onClose, variant: "outline", children: "Cancel" }), jsx(Button$1, { onClick: () => {
|
|
87157
|
+
})] })] }) })), activeTab === 'education' && jsx(EducationTab, { org: tenant, username: username }), activeTab === 'experience' && jsx(ExperienceTab, { org: tenant, username: username }), activeTab === 'resume' && jsx(ResumeTab, { org: tenant, username: username }), activeTab === 'purchases' && jsx(PurchasesTab, { org: tenant, username: username }), activeTab === 'memory' && jsx(MemoryTab, { org: tenant, username: username }), activeTab === 'privacy' && jsx(ChatPrivacyTab, { org: tenant, username: username }), activeTab === 'security' && (jsx(Security, { email: userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email, onAccountDeleted: onAccountDeleted })), activeTab === 'advanced' && localLLMProps && (jsx(LocalLLMTab, { isAvailable: localLLMProps.isAvailable, state: localLLMProps.state, ollamaStatus: localLLMProps.ollamaStatus, isUsingFoundry: localLLMProps.isUsingFoundry, foundryModels: localLLMProps.foundryModels, selectedFoundryModel: localLLMProps.selectedFoundryModel, foundryStatus: localLLMProps.foundryStatus, onStartDownload: localLLMProps.onStartDownload, onCancelDownload: localLLMProps.onCancelDownload, onInstallOllama: localLLMProps.onInstallOllama, onInstallFoundry: localLLMProps.onInstallFoundry, onCheckStatus: localLLMProps.onCheckStatus, onResetState: localLLMProps.onResetState, onSelectFoundryModel: localLLMProps.onSelectFoundryModel }))] }), ['basic', 'social'].includes(activeTab) && (jsx("div", { className: "flex-shrink-0 border-t border-gray-200 p-6 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex justify-end gap-3", children: [jsx(Button$1, { onClick: onClose, variant: "outline", children: "Cancel" }), jsx(Button$1, { onClick: () => {
|
|
86839
87158
|
if (activeTab === 'basic') {
|
|
86840
87159
|
basicForm.handleSubmit();
|
|
86841
87160
|
}
|
|
@@ -96918,6 +97237,47 @@ const MemsearchConfigContent = ({ platformKey, userId }) => {
|
|
|
96918
97237
|
return (jsxs("div", { className: "flex items-center justify-between rounded-lg border px-6 py-6", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm font-medium text-[#646464]", children: "Memory System" }), jsx(TooltipProvider, { children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { "aria-label": "More info about memory system", className: "hidden sm:block", children: jsx(Info$3, { className: "h-4 w-4 text-gray-400" }) }), jsx(TooltipContent, { className: "rounded-lg bg-gray-700 px-3 py-2 text-sm font-medium whitespace-nowrap text-white shadow-sm transition-opacity duration-300 z-50", children: jsx("p", { children: "Enable the AI memory system for this platform. Disabling will stop all memory capture and usage." }) })] }) })] }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Switch, { checked: (_a = memsearchConfig === null || memsearchConfig === void 0 ? void 0 : memsearchConfig.enable_memsearch) !== null && _a !== void 0 ? _a : false, onCheckedChange: handleToggleMemsearch, disabled: isUpdating, "aria-label": `Memory system ${(memsearchConfig === null || memsearchConfig === void 0 ? void 0 : memsearchConfig.enable_memsearch) ? 'enabled' : 'disabled'}`, className: "cursor-pointer data-[state=checked]:bg-blue-500" }), isUpdating && (jsx("div", { className: "w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }))] })] }));
|
|
96919
97238
|
};
|
|
96920
97239
|
|
|
97240
|
+
/**
|
|
97241
|
+
* Tier 2 of the chat-privacy feature: the tenant-wide gate.
|
|
97242
|
+
*
|
|
97243
|
+
* When this is off, user-level `chat_privacy_mode` and any per-session
|
|
97244
|
+
* disable_chathistory flag are ignored — every chat is logged normally.
|
|
97245
|
+
* Visible on the Advanced settings tab; the underlying PATCH is gated to
|
|
97246
|
+
* tenant admins by the backend (403 for non-admins).
|
|
97247
|
+
*
|
|
97248
|
+
* The endpoint is keyed by `{user_id}` in the path even though the value
|
|
97249
|
+
* is tenant-wide; we pass the current user as the path param.
|
|
97250
|
+
*/
|
|
97251
|
+
const ChatPrivacyContent = ({ platformKey, username }) => {
|
|
97252
|
+
const { data: config, isLoading: isLoadingConfig } = useGetTenantChatPrivacyConfigQuery({ org: platformKey, userId: username }, { skip: !platformKey || !username });
|
|
97253
|
+
const [updateConfig, { isLoading: isUpdating }] = useUpdateTenantChatPrivacyConfigMutation();
|
|
97254
|
+
const allowed = !!(config === null || config === void 0 ? void 0 : config.allow_user_chat_privacy_control);
|
|
97255
|
+
const handleToggle = async (checked) => {
|
|
97256
|
+
try {
|
|
97257
|
+
await updateConfig({
|
|
97258
|
+
org: platformKey,
|
|
97259
|
+
userId: username,
|
|
97260
|
+
requestBody: { allow_user_chat_privacy_control: checked },
|
|
97261
|
+
}).unwrap();
|
|
97262
|
+
toast.success('Chat privacy setting updated successfully');
|
|
97263
|
+
}
|
|
97264
|
+
catch (error) {
|
|
97265
|
+
console.error(JSON.stringify(error));
|
|
97266
|
+
const status = error === null || error === void 0 ? void 0 : error.status;
|
|
97267
|
+
if (status === 403) {
|
|
97268
|
+
toast.error('Only tenant admins can change this setting');
|
|
97269
|
+
}
|
|
97270
|
+
else {
|
|
97271
|
+
toast.error('Failed to update chat privacy setting');
|
|
97272
|
+
}
|
|
97273
|
+
}
|
|
97274
|
+
};
|
|
97275
|
+
if (isLoadingConfig) {
|
|
97276
|
+
return (jsx("div", { className: "rounded-lg border px-6 py-6", style: { borderColor: 'oklch(.922 0 0)' }, children: jsx("div", { className: "animate-pulse", children: jsxs("div", { className: "flex items-center justify-between", children: [jsx("div", { className: "h-4 bg-gray-200 rounded w-1/3" }), jsx("div", { className: "h-6 w-11 bg-gray-200 rounded" })] }) }) }));
|
|
97277
|
+
}
|
|
97278
|
+
return (jsxs("div", { "data-testid": "tenant-chat-privacy-row", className: "flex items-center justify-between rounded-lg border px-6 py-6", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm font-medium text-[#646464]", children: "Allow users to control chat privacy" }), jsx(TooltipProvider, { children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { "aria-label": "More info about chat privacy control", className: "hidden sm:block", children: jsx(Info$3, { className: "h-4 w-4 text-gray-400" }) }), jsx(TooltipContent, { className: "rounded-lg bg-gray-700 px-3 py-2 text-sm font-medium text-white shadow-sm transition-opacity duration-300 z-50 max-w-xs", children: jsx("p", { children: "Let users pick between Normal, Anonymized, and Disabled chat history modes. When off, all chats are logged regardless of user or per-session preferences." }) })] }) })] }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Switch, { checked: allowed, onCheckedChange: handleToggle, disabled: isUpdating, "aria-label": `User chat privacy control ${allowed ? 'enabled' : 'disabled'}`, "data-testid": "tenant-chat-privacy-switch", className: "cursor-pointer data-[state=checked]:bg-blue-500" }), isUpdating && (jsx("div", { className: "w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }))] })] }));
|
|
97279
|
+
};
|
|
97280
|
+
|
|
96921
97281
|
function StringSettingInput({ value, defaultValue, disabled, onSave, }) {
|
|
96922
97282
|
const [localValue, setLocalValue] = useState(value || defaultValue);
|
|
96923
97283
|
const debounceRef = useRef(null);
|
|
@@ -97154,7 +97514,7 @@ function AdvancedTab({ platformKey, username, currentSPA, authURL, currentPlatfo
|
|
|
97154
97514
|
await handleToggleSetting(metadataItem.slug, currentValue);
|
|
97155
97515
|
}, disabled: isUpdatingTenantMetadata, "aria-label": `${metadataItem.label} ${currentValue ? 'enabled' : 'disabled'}`, className: "cursor-pointer data-[state=checked]:bg-blue-500" }), isUpdatingTenantMetadata && (jsx("div", { className: "w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }))] })) })] }, metadataItem.slug));
|
|
97156
97516
|
}) })] }, spa)));
|
|
97157
|
-
})()), jsx(StartScreenContent, { platformKey: platformKey, currentSPA: currentSPA }), jsx(ContentViewWrapper, { currentSPA: currentSPA, spas: ['mentor'], children: jsx(ChatAreaWidth, { chatAreaSize: metadata === null || metadata === void 0 ? void 0 : metadata.chat_area_size, isUpdating: isUpdatingTenantMetadata, onUpdate: handleChatAreaSizeUpdate, onError: handleChatAreaSizeError }) }), jsx(AuthSpaCustomizationContent, { platformKey: platformKey, currentSPA: currentSPA }), jsx(AdvancedCssContent, { platformKey: platformKey, currentSPA: currentSPA || '' }), jsx(RecommendationSystemPromptsContent, { platformKey: platformKey, currentSPA: currentSPA }), jsx(StudentMentorCreationContent, { platformKey: platformKey }), jsx(MemsearchConfigContent, { platformKey: platformKey, userId: username }), jsx(PlatformMembershipContent, { platformKey: platformKey, authURL: authURL }), jsx(CustomDomainsContent, { platformKey: platformKey, currentSPA: currentSPA || '', currentPlatformBaseDomain: currentPlatformBaseDomain || '' }), jsx(SmtpContent, { platformKey: platformKey }), (currentSPA === null || currentSPA === void 0 ? void 0 : currentSPA.includes('skills')) && (jsxs(Fragment$1, { children: [jsx(ProviderConfigContent, { platformKey: platformKey, username: username }), jsx(ExternalMappingContent, { platformKey: platformKey, username: username })] }))] }) }));
|
|
97517
|
+
})()), jsx(StartScreenContent, { platformKey: platformKey, currentSPA: currentSPA }), jsx(ContentViewWrapper, { currentSPA: currentSPA, spas: ['mentor'], children: jsx(ChatAreaWidth, { chatAreaSize: metadata === null || metadata === void 0 ? void 0 : metadata.chat_area_size, isUpdating: isUpdatingTenantMetadata, onUpdate: handleChatAreaSizeUpdate, onError: handleChatAreaSizeError }) }), jsx(AuthSpaCustomizationContent, { platformKey: platformKey, currentSPA: currentSPA }), jsx(AdvancedCssContent, { platformKey: platformKey, currentSPA: currentSPA || '' }), jsx(RecommendationSystemPromptsContent, { platformKey: platformKey, currentSPA: currentSPA }), jsx(StudentMentorCreationContent, { platformKey: platformKey }), jsx(ChatPrivacyContent, { platformKey: platformKey, username: username }), jsx(MemsearchConfigContent, { platformKey: platformKey, userId: username }), jsx(PlatformMembershipContent, { platformKey: platformKey, authURL: authURL }), jsx(CustomDomainsContent, { platformKey: platformKey, currentSPA: currentSPA || '', currentPlatformBaseDomain: currentPlatformBaseDomain || '' }), jsx(SmtpContent, { platformKey: platformKey }), (currentSPA === null || currentSPA === void 0 ? void 0 : currentSPA.includes('skills')) && (jsxs(Fragment$1, { children: [jsx(ProviderConfigContent, { platformKey: platformKey, username: username }), jsx(ExternalMappingContent, { platformKey: platformKey, username: username })] }))] }) }));
|
|
97158
97518
|
}
|
|
97159
97519
|
|
|
97160
97520
|
function StripeConnect({ platformKey }) {
|
|
@@ -129254,6 +129614,476 @@ function NotificationDisplay({ org, userId, isAdmin = false, selectedNotificatio
|
|
|
129254
129614
|
} }), jsx(Dialog, { open: isMobileModalOpen, onOpenChange: setIsMobileModalOpen, children: jsx(DialogContent, { className: "max-h-[85vh] overflow-y-auto max-w-[95vw]", children: selectedNotification && (jsxs(Fragment$1, { children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { className: "text-xl font-semibold text-gray-900 pr-6", children: selectedNotification.title }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500 pt-2", children: [jsx(Clock, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("time", { dateTime: selectedNotification.timestamp.toISOString(), children: format$1(selectedNotification.timestamp, "MMMM d, yyyy 'at' h:mm a") })] })] }), jsx("div", { className: "prose prose-sm max-w-none text-gray-700 mt-4", dangerouslySetInnerHTML: { __html: sanitizeHtml(selectedNotification.body) }, "aria-labelledby": "mobile-notification-title" })] })) }) })] }));
|
|
129255
129615
|
}
|
|
129256
129616
|
|
|
129617
|
+
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
129618
|
+
// @__NO_SIDE_EFFECTS__
|
|
129619
|
+
function createSlottable(ownerName) {
|
|
129620
|
+
const Slottable2 = ({ children }) => {
|
|
129621
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children });
|
|
129622
|
+
};
|
|
129623
|
+
Slottable2.displayName = `${ownerName}.Slottable`;
|
|
129624
|
+
Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
|
|
129625
|
+
return Slottable2;
|
|
129626
|
+
}
|
|
129627
|
+
|
|
129628
|
+
var ROOT_NAME = "AlertDialog";
|
|
129629
|
+
var [createAlertDialogContext, createAlertDialogScope] = createContextScope$1(ROOT_NAME, [
|
|
129630
|
+
createDialogScope
|
|
129631
|
+
]);
|
|
129632
|
+
var useDialogScope = createDialogScope();
|
|
129633
|
+
var AlertDialog$1 = (props) => {
|
|
129634
|
+
const { __scopeAlertDialog, ...alertDialogProps } = props;
|
|
129635
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129636
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...dialogScope, ...alertDialogProps, modal: true });
|
|
129637
|
+
};
|
|
129638
|
+
AlertDialog$1.displayName = ROOT_NAME;
|
|
129639
|
+
var TRIGGER_NAME = "AlertDialogTrigger";
|
|
129640
|
+
var AlertDialogTrigger = React.forwardRef(
|
|
129641
|
+
(props, forwardedRef) => {
|
|
129642
|
+
const { __scopeAlertDialog, ...triggerProps } = props;
|
|
129643
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129644
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ...dialogScope, ...triggerProps, ref: forwardedRef });
|
|
129645
|
+
}
|
|
129646
|
+
);
|
|
129647
|
+
AlertDialogTrigger.displayName = TRIGGER_NAME;
|
|
129648
|
+
var PORTAL_NAME = "AlertDialogPortal";
|
|
129649
|
+
var AlertDialogPortal$1 = (props) => {
|
|
129650
|
+
const { __scopeAlertDialog, ...portalProps } = props;
|
|
129651
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129652
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { ...dialogScope, ...portalProps });
|
|
129653
|
+
};
|
|
129654
|
+
AlertDialogPortal$1.displayName = PORTAL_NAME;
|
|
129655
|
+
var OVERLAY_NAME = "AlertDialogOverlay";
|
|
129656
|
+
var AlertDialogOverlay$1 = React.forwardRef(
|
|
129657
|
+
(props, forwardedRef) => {
|
|
129658
|
+
const { __scopeAlertDialog, ...overlayProps } = props;
|
|
129659
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129660
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { ...dialogScope, ...overlayProps, ref: forwardedRef });
|
|
129661
|
+
}
|
|
129662
|
+
);
|
|
129663
|
+
AlertDialogOverlay$1.displayName = OVERLAY_NAME;
|
|
129664
|
+
var CONTENT_NAME = "AlertDialogContent";
|
|
129665
|
+
var [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME);
|
|
129666
|
+
var Slottable = createSlottable("AlertDialogContent");
|
|
129667
|
+
var AlertDialogContent$1 = React.forwardRef(
|
|
129668
|
+
(props, forwardedRef) => {
|
|
129669
|
+
const { __scopeAlertDialog, children, ...contentProps } = props;
|
|
129670
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129671
|
+
const contentRef = React.useRef(null);
|
|
129672
|
+
const composedRefs = useComposedRefs$1(forwardedRef, contentRef);
|
|
129673
|
+
const cancelRef = React.useRef(null);
|
|
129674
|
+
return /* @__PURE__ */ jsx(
|
|
129675
|
+
DialogPrimitive.WarningProvider,
|
|
129676
|
+
{
|
|
129677
|
+
contentName: CONTENT_NAME,
|
|
129678
|
+
titleName: TITLE_NAME,
|
|
129679
|
+
docsSlug: "alert-dialog",
|
|
129680
|
+
children: /* @__PURE__ */ jsx(AlertDialogContentProvider, { scope: __scopeAlertDialog, cancelRef, children: /* @__PURE__ */ jsxs(
|
|
129681
|
+
DialogPrimitive.Content,
|
|
129682
|
+
{
|
|
129683
|
+
role: "alertdialog",
|
|
129684
|
+
...dialogScope,
|
|
129685
|
+
...contentProps,
|
|
129686
|
+
ref: composedRefs,
|
|
129687
|
+
onOpenAutoFocus: composeEventHandlers$2(contentProps.onOpenAutoFocus, (event) => {
|
|
129688
|
+
event.preventDefault();
|
|
129689
|
+
cancelRef.current?.focus({ preventScroll: true });
|
|
129690
|
+
}),
|
|
129691
|
+
onPointerDownOutside: (event) => event.preventDefault(),
|
|
129692
|
+
onInteractOutside: (event) => event.preventDefault(),
|
|
129693
|
+
children: [
|
|
129694
|
+
/* @__PURE__ */ jsx(Slottable, { children }),
|
|
129695
|
+
/* @__PURE__ */ jsx(DescriptionWarning, { contentRef })
|
|
129696
|
+
]
|
|
129697
|
+
}
|
|
129698
|
+
) })
|
|
129699
|
+
}
|
|
129700
|
+
);
|
|
129701
|
+
}
|
|
129702
|
+
);
|
|
129703
|
+
AlertDialogContent$1.displayName = CONTENT_NAME;
|
|
129704
|
+
var TITLE_NAME = "AlertDialogTitle";
|
|
129705
|
+
var AlertDialogTitle$1 = React.forwardRef(
|
|
129706
|
+
(props, forwardedRef) => {
|
|
129707
|
+
const { __scopeAlertDialog, ...titleProps } = props;
|
|
129708
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129709
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ...dialogScope, ...titleProps, ref: forwardedRef });
|
|
129710
|
+
}
|
|
129711
|
+
);
|
|
129712
|
+
AlertDialogTitle$1.displayName = TITLE_NAME;
|
|
129713
|
+
var DESCRIPTION_NAME = "AlertDialogDescription";
|
|
129714
|
+
var AlertDialogDescription$1 = React.forwardRef((props, forwardedRef) => {
|
|
129715
|
+
const { __scopeAlertDialog, ...descriptionProps } = props;
|
|
129716
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129717
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Description, { ...dialogScope, ...descriptionProps, ref: forwardedRef });
|
|
129718
|
+
});
|
|
129719
|
+
AlertDialogDescription$1.displayName = DESCRIPTION_NAME;
|
|
129720
|
+
var ACTION_NAME = "AlertDialogAction";
|
|
129721
|
+
var AlertDialogAction$1 = React.forwardRef(
|
|
129722
|
+
(props, forwardedRef) => {
|
|
129723
|
+
const { __scopeAlertDialog, ...actionProps } = props;
|
|
129724
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129725
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...actionProps, ref: forwardedRef });
|
|
129726
|
+
}
|
|
129727
|
+
);
|
|
129728
|
+
AlertDialogAction$1.displayName = ACTION_NAME;
|
|
129729
|
+
var CANCEL_NAME = "AlertDialogCancel";
|
|
129730
|
+
var AlertDialogCancel$1 = React.forwardRef(
|
|
129731
|
+
(props, forwardedRef) => {
|
|
129732
|
+
const { __scopeAlertDialog, ...cancelProps } = props;
|
|
129733
|
+
const { cancelRef } = useAlertDialogContentContext(CANCEL_NAME, __scopeAlertDialog);
|
|
129734
|
+
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
129735
|
+
const ref = useComposedRefs$1(forwardedRef, cancelRef);
|
|
129736
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...cancelProps, ref });
|
|
129737
|
+
}
|
|
129738
|
+
);
|
|
129739
|
+
AlertDialogCancel$1.displayName = CANCEL_NAME;
|
|
129740
|
+
var DescriptionWarning = ({ contentRef }) => {
|
|
129741
|
+
const MESSAGE = `\`${CONTENT_NAME}\` requires a description for the component to be accessible for screen reader users.
|
|
129742
|
+
|
|
129743
|
+
You can add a description to the \`${CONTENT_NAME}\` by passing a \`${DESCRIPTION_NAME}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
|
|
129744
|
+
|
|
129745
|
+
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${CONTENT_NAME}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
|
|
129746
|
+
|
|
129747
|
+
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;
|
|
129748
|
+
React.useEffect(() => {
|
|
129749
|
+
const hasDescription = document.getElementById(
|
|
129750
|
+
contentRef.current?.getAttribute("aria-describedby")
|
|
129751
|
+
);
|
|
129752
|
+
if (!hasDescription) console.warn(MESSAGE);
|
|
129753
|
+
}, [MESSAGE, contentRef]);
|
|
129754
|
+
return null;
|
|
129755
|
+
};
|
|
129756
|
+
var Root2 = AlertDialog$1;
|
|
129757
|
+
var Portal2 = AlertDialogPortal$1;
|
|
129758
|
+
var Overlay2 = AlertDialogOverlay$1;
|
|
129759
|
+
var Content2 = AlertDialogContent$1;
|
|
129760
|
+
var Action = AlertDialogAction$1;
|
|
129761
|
+
var Cancel = AlertDialogCancel$1;
|
|
129762
|
+
var Title2 = AlertDialogTitle$1;
|
|
129763
|
+
var Description2 = AlertDialogDescription$1;
|
|
129764
|
+
|
|
129765
|
+
const AlertDialog = Root2;
|
|
129766
|
+
const AlertDialogPortal = Portal2;
|
|
129767
|
+
const AlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (jsx(Overlay2, { className: cn('data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80', className), ...props, ref: ref })));
|
|
129768
|
+
AlertDialogOverlay.displayName = Overlay2.displayName;
|
|
129769
|
+
const AlertDialogContent = React.forwardRef(({ className, ...props }, ref) => (jsxs(AlertDialogPortal, { children: [jsx(AlertDialogOverlay, {}), jsx(Content2, { ref: ref, className: cn('bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg', className), ...props })] })));
|
|
129770
|
+
AlertDialogContent.displayName = Content2.displayName;
|
|
129771
|
+
const AlertDialogHeader = ({ className, ...props }) => (jsx("div", { className: cn('flex flex-col space-y-2 text-center sm:text-left', className), ...props }));
|
|
129772
|
+
AlertDialogHeader.displayName = 'AlertDialogHeader';
|
|
129773
|
+
const AlertDialogFooter = ({ className, ...props }) => (jsx("div", { className: cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
|
|
129774
|
+
AlertDialogFooter.displayName = 'AlertDialogFooter';
|
|
129775
|
+
const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => (jsx(Title2, { ref: ref, className: cn('text-lg font-semibold', className), ...props })));
|
|
129776
|
+
AlertDialogTitle.displayName = Title2.displayName;
|
|
129777
|
+
const AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => (jsx(Description2, { ref: ref, className: cn('text-muted-foreground text-sm', className), ...props })));
|
|
129778
|
+
AlertDialogDescription.displayName = Description2.displayName;
|
|
129779
|
+
const AlertDialogAction = React.forwardRef(({ className, ...props }, ref) => (jsx(Action, { ref: ref, className: cn(buttonVariants(), className), ...props })));
|
|
129780
|
+
AlertDialogAction.displayName = Action.displayName;
|
|
129781
|
+
const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => (jsx(Cancel, { ref: ref, className: cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className), ...props })));
|
|
129782
|
+
AlertDialogCancel.displayName = Cancel.displayName;
|
|
129783
|
+
|
|
129784
|
+
/**
|
|
129785
|
+
* **Private mode** toggle for the platform nav-bar. A single pill that
|
|
129786
|
+
* collapses to an icon-only chip when off, and expands with a cool
|
|
129787
|
+
* animation to icon + "Private Mode" label when on. Per the chat-
|
|
129788
|
+
* privacy spec the toggle is *one-way*: enabling cannot be undone for
|
|
129789
|
+
* the active session — to leave Private Mode the user starts a fresh
|
|
129790
|
+
* conversation.
|
|
129791
|
+
*
|
|
129792
|
+
* Three click paths cover every enable scenario:
|
|
129793
|
+
*
|
|
129794
|
+
* 1. Empty conversation, normal mode — click → `POST /sessions/` with
|
|
129795
|
+
* `disable_chathistory: true`. No confirm; the chat hasn't started.
|
|
129796
|
+
* The button morphs into the pill on success.
|
|
129797
|
+
* 2. After-send, normal mode — click → AlertDialog explaining the
|
|
129798
|
+
* one-way nature → on confirm, `POST /sessions/{id}/disable-chathistory/`.
|
|
129799
|
+
* The session is removed from the user's history list and the
|
|
129800
|
+
* button morphs into the locked pill.
|
|
129801
|
+
* 3. Already in Private Mode (any source — user-initiated, session,
|
|
129802
|
+
* agent kill-switch, tenant gate) — button is rendered as the
|
|
129803
|
+
* locked pill. No click action. To leave Private Mode the user
|
|
129804
|
+
* opens a new conversation (handled outside this component).
|
|
129805
|
+
*
|
|
129806
|
+
* Source-aware tooltip explains *why* the pill is locked when the
|
|
129807
|
+
* lock comes from a tier above the user (mentor / tenant), so the
|
|
129808
|
+
* user understands the affordance rather than seeing a dead button.
|
|
129809
|
+
*/
|
|
129810
|
+
function ChatPrivacyToggle({ org, userId, mentor, className, }) {
|
|
129811
|
+
const [confirmOpen, setConfirmOpen] = React__default.useState(false);
|
|
129812
|
+
// Symmetric optimistic flags bridging the window between a mutation
|
|
129813
|
+
// succeeding and `effective.mode` flipping server-side. Without
|
|
129814
|
+
// them the button briefly snaps back to the stale server value —
|
|
129815
|
+
// RTK Query's tag invalidation only schedules a refetch, so until
|
|
129816
|
+
// the network round-trip resolves the cache still holds the old
|
|
129817
|
+
// mode. `optimisticPrivate` covers the enable transitions (off → on);
|
|
129818
|
+
// `optimisticNormal` covers the exit transition from the empty +
|
|
129819
|
+
// user-initiated private state (on → off via startNormalChat).
|
|
129820
|
+
// Without `optimisticNormal`, a quick second tap after exit would
|
|
129821
|
+
// see `serverPrivate` still true → re-enter the exit branch and
|
|
129822
|
+
// create a SECOND normal session instead of re-enabling.
|
|
129823
|
+
const [optimisticPrivate, setOptimisticPrivate] = React__default.useState(false);
|
|
129824
|
+
const [optimisticNormal, setOptimisticNormal] = React__default.useState(false);
|
|
129825
|
+
// Synchronous in-flight guards — refs because React state updates
|
|
129826
|
+
// aren't flushed before the next click handler can fire.
|
|
129827
|
+
// `clickInFlightRef` covers both empty-conversation branches (enable
|
|
129828
|
+
// via startPrivateChat AND exit via startNormalChat) — the two
|
|
129829
|
+
// branches are mutually exclusive at runtime (one needs `isPrivate`
|
|
129830
|
+
// false, the other true), so sharing a single ref is safe and keeps
|
|
129831
|
+
// the click handler from queueing two POSTs in a double-tap.
|
|
129832
|
+
// `confirmInFlightRef` covers the AlertDialog confirm separately so a
|
|
129833
|
+
// double-click on "Enable Private Mode" can't queue two
|
|
129834
|
+
// disable-chathistory POSTs.
|
|
129835
|
+
const clickInFlightRef = React__default.useRef(false);
|
|
129836
|
+
const confirmInFlightRef = React__default.useRef(false);
|
|
129837
|
+
const { featureEnabled, effective, isEffectiveReady, messageCount, startPrivateChat, startNormalChat, disableChatHistory, isStartingPrivateChat, isDisablingChatHistory, } = useChatPrivacy({ org, userId, mentor });
|
|
129838
|
+
const serverPrivate = effective.mode === 'disabled';
|
|
129839
|
+
// `optimisticNormal` wins over a stale `serverPrivate` so a fast
|
|
129840
|
+
// re-tap after exit sees the right state. `optimisticPrivate` wins
|
|
129841
|
+
// over a stale normal so a fast re-tap after enable sees on.
|
|
129842
|
+
const isPrivate = (serverPrivate && !optimisticNormal) || optimisticPrivate;
|
|
129843
|
+
const hasMessages = messageCount > 0;
|
|
129844
|
+
const isBusy = isStartingPrivateChat || isDisablingChatHistory;
|
|
129845
|
+
// While the effective query is still in flight, both `serverPrivate`
|
|
129846
|
+
// and `hasMessages` can be transiently wrong (effective falls back to
|
|
129847
|
+
// DEFAULT_EFFECTIVE.normal; the chat slice may not have hydrated the
|
|
129848
|
+
// active conversation's messages yet). Treat the toggle as
|
|
129849
|
+
// not-yet-actionable until the first effective resolution lands so
|
|
129850
|
+
// a fast click doesn't start a brand-new private session on top of
|
|
129851
|
+
// the in-flight load.
|
|
129852
|
+
const isReady = isEffectiveReady;
|
|
129853
|
+
// Once the server confirms Private Mode, drop optimisticPrivate so
|
|
129854
|
+
// we're not double-driving the UI from two sources.
|
|
129855
|
+
React__default.useEffect(() => {
|
|
129856
|
+
if (serverPrivate && optimisticPrivate)
|
|
129857
|
+
setOptimisticPrivate(false);
|
|
129858
|
+
}, [serverPrivate, optimisticPrivate]);
|
|
129859
|
+
// Mirror: once the server confirms normal (no longer reports
|
|
129860
|
+
// `disabled`), drop optimisticNormal.
|
|
129861
|
+
React__default.useEffect(() => {
|
|
129862
|
+
if (!serverPrivate && optimisticNormal)
|
|
129863
|
+
setOptimisticNormal(false);
|
|
129864
|
+
}, [serverPrivate, optimisticNormal]);
|
|
129865
|
+
// Belt-and-braces: clear both flags whenever the agent changes. If
|
|
129866
|
+
// we mounted in Private Mode for one agent then navigate to another,
|
|
129867
|
+
// neither optimistic state should bleed across.
|
|
129868
|
+
React__default.useEffect(() => {
|
|
129869
|
+
setOptimisticPrivate(false);
|
|
129870
|
+
setOptimisticNormal(false);
|
|
129871
|
+
}, [mentor]);
|
|
129872
|
+
// Failsafes — if the effective-query refetch never confirms the
|
|
129873
|
+
// expected mode (network failure, backend race, stale cache), we
|
|
129874
|
+
// don't want to render a permanent locked pill or a permanently-off
|
|
129875
|
+
// button the user can't recover from. Time out each optimistic flag
|
|
129876
|
+
// after a generous window and trust the server-side state.
|
|
129877
|
+
React__default.useEffect(() => {
|
|
129878
|
+
if (!optimisticPrivate)
|
|
129879
|
+
return;
|
|
129880
|
+
const id = setTimeout(() => setOptimisticPrivate(false), 10000);
|
|
129881
|
+
return () => clearTimeout(id);
|
|
129882
|
+
}, [optimisticPrivate]);
|
|
129883
|
+
React__default.useEffect(() => {
|
|
129884
|
+
if (!optimisticNormal)
|
|
129885
|
+
return;
|
|
129886
|
+
const id = setTimeout(() => setOptimisticNormal(false), 10000);
|
|
129887
|
+
return () => clearTimeout(id);
|
|
129888
|
+
}, [optimisticNormal]);
|
|
129889
|
+
// Render gate: hide when identity is missing, and when the tenant gate
|
|
129890
|
+
// is off AND we're not currently in Private Mode. If the gate flips
|
|
129891
|
+
// off while the user is mid-private-chat we keep showing the locked
|
|
129892
|
+
// pill — the session is still private at the backend, so the status
|
|
129893
|
+
// indicator should stay visible until they leave the conversation.
|
|
129894
|
+
if (!org || !mentor || !userId)
|
|
129895
|
+
return null;
|
|
129896
|
+
if (!featureEnabled && !isPrivate)
|
|
129897
|
+
return null;
|
|
129898
|
+
// State machine — `messageCount` counts USER-AUTHORED messages only, so a
|
|
129899
|
+
// proactive greeting from the agent doesn't push the user into the
|
|
129900
|
+
// mid-conversation branch.
|
|
129901
|
+
// 1. NORMAL + no user messages → tap enables Private Mode by
|
|
129902
|
+
// creating a fresh private session. No modal.
|
|
129903
|
+
// 2. PRIVATE + no user messages → tap exits by creating a fresh
|
|
129904
|
+
// *normal* session (the backend's one-way door rejects flipping
|
|
129905
|
+
// an existing session true → false, so start a new one instead).
|
|
129906
|
+
// No modal.
|
|
129907
|
+
// 3. NORMAL + has user messages → tap opens the confirm dialog,
|
|
129908
|
+
// then POSTs disable-chathistory true on confirm. One-way.
|
|
129909
|
+
// 4. PRIVATE + has user messages → button locked. Only way out is
|
|
129910
|
+
// to start a new conversation from a separate affordance.
|
|
129911
|
+
// 5. PRIVATE + `is_locked` (mentor kill-switch) → button locked.
|
|
129912
|
+
const handleClick = async () => {
|
|
129913
|
+
if (isBusy || !isReady)
|
|
129914
|
+
return;
|
|
129915
|
+
if (isPrivate) {
|
|
129916
|
+
// Agent kill-switch or post-send: no user action possible.
|
|
129917
|
+
if (effective.is_locked || hasMessages)
|
|
129918
|
+
return;
|
|
129919
|
+
// Empty + user-initiated private → start a fresh NORMAL session.
|
|
129920
|
+
// The backend's one-way door rejects flipping an existing session
|
|
129921
|
+
// from `disable_chathistory: true → false` with 400, so the only
|
|
129922
|
+
// valid exit is to create a new session without the flag set.
|
|
129923
|
+
if (clickInFlightRef.current)
|
|
129924
|
+
return;
|
|
129925
|
+
clickInFlightRef.current = true;
|
|
129926
|
+
// Optimistically overlay the stale-private server state so the
|
|
129927
|
+
// gradient drops immediately AND a fast re-tap to re-enable takes
|
|
129928
|
+
// the enable branch (not a second accidental startNormalChat).
|
|
129929
|
+
setOptimisticNormal(true);
|
|
129930
|
+
try {
|
|
129931
|
+
const newId = await startNormalChat();
|
|
129932
|
+
if (newId) {
|
|
129933
|
+
toast.success('Private Mode is off.');
|
|
129934
|
+
}
|
|
129935
|
+
else {
|
|
129936
|
+
setOptimisticNormal(false);
|
|
129937
|
+
toast.error('Could not turn Private Mode off. Please try again.');
|
|
129938
|
+
}
|
|
129939
|
+
}
|
|
129940
|
+
finally {
|
|
129941
|
+
clickInFlightRef.current = false;
|
|
129942
|
+
}
|
|
129943
|
+
return;
|
|
129944
|
+
}
|
|
129945
|
+
if (!hasMessages) {
|
|
129946
|
+
if (clickInFlightRef.current)
|
|
129947
|
+
return;
|
|
129948
|
+
clickInFlightRef.current = true;
|
|
129949
|
+
// Optimistically flip so the pill expands before the request
|
|
129950
|
+
// resolves — closes the racy re-click window between mutation
|
|
129951
|
+
// success and effective-query refetch.
|
|
129952
|
+
setOptimisticPrivate(true);
|
|
129953
|
+
try {
|
|
129954
|
+
const newId = await startPrivateChat();
|
|
129955
|
+
if (newId) {
|
|
129956
|
+
toast.success("Private Mode is on. This chat won't be saved to history or used for memory.");
|
|
129957
|
+
}
|
|
129958
|
+
else {
|
|
129959
|
+
setOptimisticPrivate(false);
|
|
129960
|
+
toast.error('Could not enable Private Mode. Please try again.');
|
|
129961
|
+
}
|
|
129962
|
+
}
|
|
129963
|
+
finally {
|
|
129964
|
+
clickInFlightRef.current = false;
|
|
129965
|
+
}
|
|
129966
|
+
return;
|
|
129967
|
+
}
|
|
129968
|
+
// Mid-conversation: explain the one-way consequence first.
|
|
129969
|
+
setConfirmOpen(true);
|
|
129970
|
+
};
|
|
129971
|
+
const handleConfirmMidSession = async () => {
|
|
129972
|
+
if (confirmInFlightRef.current)
|
|
129973
|
+
return;
|
|
129974
|
+
// If the effective mode flipped to private between dialog open and
|
|
129975
|
+
// confirm (e.g. tenant gate change), dismiss the dialog quietly —
|
|
129976
|
+
// no need to POST against a session that's already private.
|
|
129977
|
+
if (isPrivate) {
|
|
129978
|
+
setConfirmOpen(false);
|
|
129979
|
+
return;
|
|
129980
|
+
}
|
|
129981
|
+
confirmInFlightRef.current = true;
|
|
129982
|
+
setOptimisticPrivate(true);
|
|
129983
|
+
try {
|
|
129984
|
+
const ok = await disableChatHistory(true);
|
|
129985
|
+
setConfirmOpen(false);
|
|
129986
|
+
if (ok) {
|
|
129987
|
+
toast.success('Private Mode is on. This conversation has been removed from your history.');
|
|
129988
|
+
}
|
|
129989
|
+
else {
|
|
129990
|
+
setOptimisticPrivate(false);
|
|
129991
|
+
toast.error('Failed to enable Private Mode. Please try again.');
|
|
129992
|
+
}
|
|
129993
|
+
}
|
|
129994
|
+
finally {
|
|
129995
|
+
confirmInFlightRef.current = false;
|
|
129996
|
+
}
|
|
129997
|
+
};
|
|
129998
|
+
// Tooltip + aria-label vary by *why* the button is in its current
|
|
129999
|
+
// state. `effective.source` tells us which tier won the precedence
|
|
130000
|
+
// resolution — mentor (agent kill-switch), tenant (org gate), user
|
|
130001
|
+
// (global pref), session (this chat is private), or default (no
|
|
130002
|
+
// override is winning, i.e. normal mode).
|
|
130003
|
+
//
|
|
130004
|
+
// Native `disabled` is reserved for the transient `isBusy` window so
|
|
130005
|
+
// it never blocks Radix Tooltip's pointer events on the locked pill.
|
|
130006
|
+
// For locked states we use `aria-disabled` so focus, hover, and the
|
|
130007
|
+
// source-aware tooltip still work — the button is still interactive
|
|
130008
|
+
// and the onClick handler no-ops at the top.
|
|
130009
|
+
const isAgentLocked = isPrivate && effective.is_locked;
|
|
130010
|
+
const isPostSendLocked = isPrivate && hasMessages && !effective.is_locked;
|
|
130011
|
+
const ariaDisabled = isBusy || !isReady || isAgentLocked || isPostSendLocked;
|
|
130012
|
+
const ariaLabel = isBusy
|
|
130013
|
+
? 'Working…'
|
|
130014
|
+
: isAgentLocked
|
|
130015
|
+
? 'Private Mode is locked on by this agent. No chat history is recorded.'
|
|
130016
|
+
: isPostSendLocked
|
|
130017
|
+
? "Private Mode is on for this conversation. This chat isn't saved or used for memory."
|
|
130018
|
+
: isPrivate
|
|
130019
|
+
? 'Turn off Private Mode for this chat.'
|
|
130020
|
+
: hasMessages
|
|
130021
|
+
? 'Turn on Private Mode for this conversation. This cannot be undone.'
|
|
130022
|
+
: "Turn on Private Mode. This chat won't be saved to history or used for memory.";
|
|
130023
|
+
// Tooltip is verbose — it has room to explain *why* the lock came
|
|
130024
|
+
// from where it did, and what the user would gain by toggling when
|
|
130025
|
+
// it's still actionable.
|
|
130026
|
+
const tooltipText = isBusy
|
|
130027
|
+
? 'Working…'
|
|
130028
|
+
: isAgentLocked
|
|
130029
|
+
? effective.source === 'mentor'
|
|
130030
|
+
? "This agent always runs in Private Mode — no chat history or memory is kept for conversations with it."
|
|
130031
|
+
: effective.source === 'tenant'
|
|
130032
|
+
? "Your organization has Private Mode enabled by default — no chat history or memory is kept."
|
|
130033
|
+
: "Private Mode is locked on — no chat history or memory is kept."
|
|
130034
|
+
: isPostSendLocked
|
|
130035
|
+
? "Private Mode is on for this conversation — this chat isn't saved or used for memory. Start a new chat to leave Private Mode."
|
|
130036
|
+
: isPrivate
|
|
130037
|
+
? 'Turn off Private Mode — your next chat will be saved to history again.'
|
|
130038
|
+
: hasMessages
|
|
130039
|
+
? "Turn on Private Mode for the rest of this conversation. Once on, you can't turn it off — start a new chat to resume saving history."
|
|
130040
|
+
: "Turn on Private Mode — this chat won't be saved to history or used for memory.";
|
|
130041
|
+
return (jsxs(Fragment$1, { children: [jsx(TooltipProvider, { delayDuration: 150, children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { asChild: true, children: jsxs("button", { type: "button", onClick: () => void handleClick(),
|
|
130042
|
+
// Native `disabled` only for the in-flight window — see the
|
|
130043
|
+
// comment block above `ariaDisabled`. Reserving `disabled`
|
|
130044
|
+
// for `isBusy` keeps Radix Tooltip pointer events alive on
|
|
130045
|
+
// the locked pill so the source-aware tooltip can render.
|
|
130046
|
+
disabled: isBusy, "aria-disabled": ariaDisabled || undefined, "aria-label": ariaLabel, "aria-pressed": isPrivate, "data-testid": "chat-privacy-toggle", "data-state": isPrivate ? 'on' : 'off', "data-source": effective.source, className: cn(
|
|
130047
|
+
// `min-w-10` keeps the off state a 40×40 square matching
|
|
130048
|
+
// Bell + CreditCard. When Private Mode turns on, the
|
|
130049
|
+
// label content pushes the button past the minimum so it
|
|
130050
|
+
// grows smoothly into the labeled pill — transitions on
|
|
130051
|
+
// background, color, padding, gap, AND the inner span's
|
|
130052
|
+
// max-width/opacity finish the morph.
|
|
130053
|
+
'hidden h-10 min-w-10 items-center justify-center overflow-hidden rounded-md text-sm font-medium ring-offset-background transition-[background-color,color,padding,gap] duration-300 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-60 [&_svg]:size-4 [&_svg]:shrink-0 md:inline-flex',
|
|
130054
|
+
// Brand gradient lives on Tailwind named colors so the
|
|
130055
|
+
// light end (`blue-400`) is darker than the previous
|
|
130056
|
+
// `#93C5FD` and white reads at AA contrast.
|
|
130057
|
+
// `hover:from-blue-700 hover:to-blue-500` darkens the
|
|
130058
|
+
// gradient one stop on hover — opposite direction of an
|
|
130059
|
+
// `opacity-90` dim, which would have hurt text
|
|
130060
|
+
// readability further. Text-shadow + icon drop-shadow
|
|
130061
|
+
// stay for extra definition on the lighter half.
|
|
130062
|
+
isPrivate
|
|
130063
|
+
? 'gap-2 px-3 font-semibold text-white bg-gradient-to-r from-blue-600 to-blue-400 hover:from-blue-700 hover:to-blue-500 [text-shadow:0_1px_2px_rgba(0,0,0,0.35)] [&_svg]:[filter:drop-shadow(0_1px_1px_rgba(0,0,0,0.4))]'
|
|
130064
|
+
: 'gap-0 bg-transparent px-0 hover:bg-accent', isBusy && 'opacity-60', (isAgentLocked || isPostSendLocked) && 'cursor-default', className), children: [isBusy ? (jsx(LoaderCircle, { "aria-hidden": "true", focusable: false, className: cn('h-6 w-6 animate-spin', !isPrivate && 'text-[#646464]') })) : (
|
|
130065
|
+
// Same className shape as Bell and CreditCard. `h-6 w-6`
|
|
130066
|
+
// is declared for parity but the bare-button's
|
|
130067
|
+
// `[&_svg]:size-4` wins on specificity (same way
|
|
130068
|
+
// Button's CVA wins for Bell + CreditCard) so all three
|
|
130069
|
+
// icons render at 16px. `text-[#646464]` stays on the
|
|
130070
|
+
// icon directly so hover doesn't change its color, then
|
|
130071
|
+
// drops when the gradient takes over.
|
|
130072
|
+
jsx(HatGlasses, { "aria-hidden": "true", focusable: false, className: cn('h-6 w-6', !isPrivate && 'text-[#646464]') })), jsx("span", { "aria-hidden": !isPrivate, className: cn('leading-none whitespace-nowrap transition-[max-width,opacity,transform] duration-300 ease-out', isPrivate
|
|
130073
|
+
? 'max-w-[9rem] translate-x-0 opacity-100'
|
|
130074
|
+
: 'max-w-0 -translate-x-1 opacity-0'), children: "Private Mode" })] }) }), jsx(TooltipContent, { side: "bottom", className: "ibl-tooltip-content", children: tooltipText })] }) }), jsx(AlertDialog, { open: confirmOpen, onOpenChange: setConfirmOpen, children: jsxs(AlertDialogContent, { "data-testid": "chat-privacy-confirm-dialog", children: [jsxs(AlertDialogHeader, { children: [jsx(AlertDialogTitle, { children: "Enable Private Mode for this chat?" }), jsxs(AlertDialogDescription, { children: ["This conversation will be removed from your history and the assistant will stop using earlier turns from it. ", jsx("strong", { children: "Once on, you can't turn Private Mode off for this chat" }), " \u2014 start a new conversation if you want history saved again."] })] }), jsxs(AlertDialogFooter, { children: [jsx(AlertDialogCancel, { disabled: isDisablingChatHistory, "data-testid": "chat-privacy-confirm-cancel", children: "Cancel" }), jsx(AlertDialogAction, { onClick: (event) => {
|
|
130075
|
+
event.preventDefault();
|
|
130076
|
+
void handleConfirmMidSession();
|
|
130077
|
+
}, disabled: isDisablingChatHistory, "data-testid": "chat-privacy-confirm-action",
|
|
130078
|
+
// Same brand gradient + same `text-shadow` / icon
|
|
130079
|
+
// `drop-shadow` a11y treatment as the active pill, for
|
|
130080
|
+
// visual continuity AND so the white "Enable Private Mode"
|
|
130081
|
+
// label survives the gradient's light end at AA contrast.
|
|
130082
|
+
// Hover deepens the gradient one stop (not opacity-dim) so
|
|
130083
|
+
// text readability improves under the cursor.
|
|
130084
|
+
className: "text-white font-semibold bg-gradient-to-r from-blue-600 to-blue-400 hover:from-blue-700 hover:to-blue-500 [text-shadow:0_1px_2px_rgba(0,0,0,0.35)] [&_svg]:[filter:drop-shadow(0_1px_1px_rgba(0,0,0,0.4))]", children: isDisablingChatHistory ? (jsxs(Fragment$1, { children: [jsx(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), "Enabling\u2026"] })) : ('Enable Private Mode') })] })] }) })] }));
|
|
130085
|
+
}
|
|
130086
|
+
|
|
129257
130087
|
/**
|
|
129258
130088
|
* Checks if `value` is classified as an `Array` object.
|
|
129259
130089
|
*
|
|
@@ -192732,7 +193562,7 @@ function AnalyticsCourseDetail({ tenantKey, mentorId, selectedMentorId, courseId
|
|
|
192732
193562
|
mentorId: currentMentorId,
|
|
192733
193563
|
courseId,
|
|
192734
193564
|
});
|
|
192735
|
-
return (jsxs("div", { className: "space-y-8", children: [onBack && (jsxs(Button$1, { variant: "ghost", onClick: onBack, className: "mb-4", "aria-label": "Go back to courses list", children: [jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Back to Courses"] })), courseName && (jsx("div", { className: "mb-4", children: jsx("h2", { className: "text-2xl font-semibold text-gray-900", children: courseName }) })), jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-4 mb-6", children: [jsx(StatCard, { loading: isLoading, title: "Active Enrollments", value: courseDetailStats.active_enrollments, percentage: courseDetailStats.active_enrollments_percentage }), jsx(StatCard, { loading: isLoading, title: "Completed Enrollments", value: courseDetailStats.completed_enrollments, percentage: courseDetailStats.completed_enrollments_percentage }), jsx(StatCard, { loading: isLoading, title: "Time Spent", value: formatTimeSpent$1(courseDetailStats.time_spent), percentage: courseDetailStats.time_spent_percentage })] }), jsx("div", { className: "grid grid-cols-1 gap-6", children: jsx(Card, { className: "w-full bg-white shadow-xs", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Course enrollments table", children: [jsx("h3", { className: "text-base font-medium text-gray-700 mb-4", children: "Enrolled Users" }), ((_a = courseEnrollments === null || courseEnrollments === void 0 ? void 0 : courseEnrollments.enrollments) === null || _a === void 0 ? void 0 : _a.length) && courseEnrollments.enrollments.length > 0 ? (jsx("div", { className: "overflow-x-auto", children: jsxs(Table, { children: [jsx(TableHeader, { children: jsxs(TableRow, { children: [jsx(TableHead, { className: "text-left", children: "Name" }), jsx(TableHead, { className: "text-left", children: "Email" }), jsx(TableHead, { className: "text-right", children: "Time Spent" }), jsx(TableHead, { className: "text-right", children: "Progress" }), jsx(TableHead, { className: "text-right", children: "Grade" }), jsx(TableHead, { className: "text-right", children: "Last Active On" })] }) }), jsx(TableBody, { children: courseEnrollments.enrollments.map((enrollment, index) => (jsxs(TableRow, { children: [jsx(TableCell, { className: "font-medium", children: enrollment.name }), jsx(TableCell, { className: "text-muted-foreground", children: enrollment.email }), jsx(TableCell, { className: "text-right", children: formatTimeSpent$1(enrollment.time_spent) }), jsxs(TableCell, { className: "text-right", children: [enrollment.progress, "%"] }), jsx(TableCell, { className: "text-right", children: typeof enrollment.grade === 'number'
|
|
193565
|
+
return (jsxs("div", { className: "space-y-8", children: [onBack && (jsxs(Button$1, { variant: "ghost", onClick: onBack, className: "mb-4", "aria-label": "Go back to courses list", children: [jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Back to Courses"] })), courseName && (jsx("div", { className: "mb-4", children: jsx("h2", { className: "text-2xl font-semibold text-gray-900", children: courseName }) })), jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-4 mb-6", children: [jsx(StatCard, { loading: isLoading, title: "Active Enrollments", value: courseDetailStats.active_enrollments, percentage: courseDetailStats.active_enrollments_percentage }), jsx(StatCard, { loading: isLoading, title: "Completed Enrollments", value: courseDetailStats.completed_enrollments, percentage: courseDetailStats.completed_enrollments_percentage }), jsx(StatCard, { loading: isLoading, title: "Time Spent", value: formatTimeSpent$1(courseDetailStats.time_spent), percentage: courseDetailStats.time_spent_percentage })] }), jsx("div", { className: "grid grid-cols-1 gap-6", children: jsx(Card, { className: "w-full bg-white shadow-xs", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Course enrollments table", children: [jsx("h3", { className: "text-base font-medium text-gray-700 mb-4", children: "Enrolled Users" }), ((_a = courseEnrollments === null || courseEnrollments === void 0 ? void 0 : courseEnrollments.enrollments) === null || _a === void 0 ? void 0 : _a.length) && courseEnrollments.enrollments.length > 0 ? (jsx("div", { className: "rounded-md overflow-x-auto", style: { borderColor: 'oklch(.922 0 0)', borderWidth: '1px' }, children: jsxs(Table, { children: [jsx(TableHeader, { children: jsxs(TableRow, { className: "h-[48px]", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx(TableHead, { className: "text-left", children: "Name" }), jsx(TableHead, { className: "text-left", children: "Email" }), jsx(TableHead, { className: "text-right", children: "Time Spent" }), jsx(TableHead, { className: "text-right", children: "Progress" }), jsx(TableHead, { className: "text-right", children: "Grade" }), jsx(TableHead, { className: "text-right", children: "Last Active On" })] }) }), jsx(TableBody, { children: courseEnrollments.enrollments.map((enrollment, index) => (jsxs(TableRow, { className: `h-[48px] ${index % 2 === 0 ? 'bg-gray-50' : ''}`, style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx(TableCell, { className: "font-medium", children: enrollment.name }), jsx(TableCell, { className: "text-muted-foreground", children: enrollment.email }), jsx(TableCell, { className: "text-right", children: formatTimeSpent$1(enrollment.time_spent) }), jsxs(TableCell, { className: "text-right", children: [enrollment.progress, "%"] }), jsx(TableCell, { className: "text-right", children: typeof enrollment.grade === 'number'
|
|
192736
193566
|
? enrollment.grade.toFixed(1)
|
|
192737
193567
|
: enrollment.grade }), jsx(TableCell, { className: "text-right", children: new Date(enrollment.last_active_on).toLocaleDateString() })] }, index))) })] }) })) : (jsx(EmptyStats, { title: "No enrollments available" }))] }) }) })] }));
|
|
192738
193568
|
}
|
|
@@ -193021,7 +193851,7 @@ function AnalyticsProgramDetail({ tenantKey, mentorId, selectedMentorId, program
|
|
|
193021
193851
|
programId,
|
|
193022
193852
|
});
|
|
193023
193853
|
return (jsxs("div", { className: "space-y-8", children: [onBack && (jsxs(Button$1, { variant: "ghost", onClick: onBack, className: "mb-4", "aria-label": "Go back to programs list", children: [jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Back to Programs"] })), programName && (jsx("div", { className: "mb-4", children: jsx("h2", { className: "text-2xl font-semibold text-gray-900", children: programName }) })), jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-4 mb-6", children: [jsx(StatCard, { loading: isLoading, title: "Active Users", value: programDetailStats.active_users, percentage: programDetailStats.active_users_percentage }), jsx(StatCard, { loading: isLoading, title: "Enrollments", value: programDetailStats.enrollments, percentage: programDetailStats.enrollments_percentage }), jsx(StatCard, { loading: isLoading, title: "Time Spent", value: formatTimeSpent(programDetailStats.time_spent) })] }), jsx("div", { className: "grid grid-cols-1 gap-6", children: jsx(Card, { className: "w-full bg-white shadow-xs", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Program enrollments table", children: [jsx("h3", { className: "text-base font-medium text-gray-700 mb-4", children: "Enrolled Users" }), ((_a = programEnrollments === null || programEnrollments === void 0 ? void 0 : programEnrollments.enrollments) === null || _a === void 0 ? void 0 : _a.length) &&
|
|
193024
|
-
programEnrollments.enrollments.length > 0 ? (jsx("div", { className: "overflow-x-auto", children: jsxs(Table, { children: [jsx(TableHeader, { children: jsxs(TableRow, { children: [jsx(TableHead, { className: "text-left", children: "Name" }), jsx(TableHead, { className: "text-left", children: "Email" }), jsx(TableHead, { className: "text-right", children: "Time Spent" }), jsx(TableHead, { className: "text-right", children: "Progress" }), jsx(TableHead, { className: "text-right", children: "Grade" }), jsx(TableHead, { className: "text-right", children: "Last Active On" })] }) }), jsx(TableBody, { children: programEnrollments.enrollments.map((enrollment, index) => (jsxs(TableRow, { children: [jsx(TableCell, { className: "font-medium", children: enrollment.name }), jsx(TableCell, { className: "text-muted-foreground", children: enrollment.email }), jsx(TableCell, { className: "text-right", children: formatTimeSpent(enrollment.time_spent) }), jsxs(TableCell, { className: "text-right", children: [enrollment.progress, "%"] }), jsx(TableCell, { className: "text-right", children: typeof enrollment.grade === 'number'
|
|
193854
|
+
programEnrollments.enrollments.length > 0 ? (jsx("div", { className: "rounded-md overflow-x-auto", style: { borderColor: 'oklch(.922 0 0)', borderWidth: '1px' }, children: jsxs(Table, { children: [jsx(TableHeader, { children: jsxs(TableRow, { className: "h-[48px]", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx(TableHead, { className: "text-left", children: "Name" }), jsx(TableHead, { className: "text-left", children: "Email" }), jsx(TableHead, { className: "text-right", children: "Time Spent" }), jsx(TableHead, { className: "text-right", children: "Progress" }), jsx(TableHead, { className: "text-right", children: "Grade" }), jsx(TableHead, { className: "text-right", children: "Last Active On" })] }) }), jsx(TableBody, { children: programEnrollments.enrollments.map((enrollment, index) => (jsxs(TableRow, { className: `h-[48px] ${index % 2 === 0 ? 'bg-gray-50' : ''}`, style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx(TableCell, { className: "font-medium", children: enrollment.name }), jsx(TableCell, { className: "text-muted-foreground", children: enrollment.email }), jsx(TableCell, { className: "text-right", children: formatTimeSpent(enrollment.time_spent) }), jsxs(TableCell, { className: "text-right", children: [enrollment.progress, "%"] }), jsx(TableCell, { className: "text-right", children: typeof enrollment.grade === 'number'
|
|
193025
193855
|
? enrollment.grade.toFixed(1)
|
|
193026
193856
|
: enrollment.grade }), jsx(TableCell, { className: "text-right", children: new Date(enrollment.last_active_on).toLocaleDateString() })] }, index))) })] }) })) : (jsx(EmptyStats, { title: "No enrollments available" }))] }) }) })] }));
|
|
193027
193857
|
}
|
|
@@ -193459,7 +194289,7 @@ function AnalyticsAuditLogStats({ tenantKey, mentorId, userId, selectedMentorId,
|
|
|
193459
194289
|
if (is403) {
|
|
193460
194290
|
return (jsx(Card, { className: "bg-white rounded-lg border border-gray-100 shadow-sm", children: jsx(CardContent, { className: "p-8 text-center", children: jsx("p", { className: "text-gray-500", children: "You do not have permission to view audit logs." }) }) }));
|
|
193461
194291
|
}
|
|
193462
|
-
return (jsxs("div", { className: "space-y-6", children: [jsx("div", { className: "border rounded-lg p-4 bg-white", children: jsxs("div", { className: "flex flex-col lg:flex-row gap-3", children: [jsx("div", { className: "relative flex-1 min-w-[200px]", children: jsxs(Popover, { open: actorOpen, onOpenChange: setActorOpen, children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-expanded": actorOpen, "aria-label": "Search for User", className: "w-full justify-between font-normal bg-white h-9", children: [actorFilter || 'Search for User', jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] }) }), jsx(PopoverContent, { className: "w-full p-0", align: "start", portalled: false, children: jsxs(Command, { children: [jsx(CommandInput, { placeholder: "Search user..." }), jsxs(CommandList, { children: [jsx(CommandEmpty, { children: "No users found." }), jsxs(CommandGroup, { children: [jsxs(CommandItem, { value: "", onSelect: () => {
|
|
194292
|
+
return (jsxs("div", { className: "space-y-6", children: [jsx("div", { className: "border border-[oklch(0.922_0_0)] rounded-lg p-4 bg-white", children: jsxs("div", { className: "flex flex-col lg:flex-row gap-3", children: [jsx("div", { className: "relative flex-1 min-w-[200px]", children: jsxs(Popover, { open: actorOpen, onOpenChange: setActorOpen, children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-expanded": actorOpen, "aria-label": "Search for User", className: "w-full justify-between font-normal bg-white h-9", children: [actorFilter || 'Search for User', jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] }) }), jsx(PopoverContent, { className: "w-full p-0", align: "start", portalled: false, children: jsxs(Command, { children: [jsx(CommandInput, { placeholder: "Search user..." }), jsxs(CommandList, { children: [jsx(CommandEmpty, { children: "No users found." }), jsxs(CommandGroup, { children: [jsxs(CommandItem, { value: "", onSelect: () => {
|
|
193463
194293
|
setActorFilter('');
|
|
193464
194294
|
setActorOpen(false);
|
|
193465
194295
|
setPage(1);
|
|
@@ -193475,7 +194305,7 @@ function AnalyticsAuditLogStats({ tenantKey, mentorId, userId, selectedMentorId,
|
|
|
193475
194305
|
}, numberOfMonths: 2 }) })] }), jsx("div", { className: "min-w-[160px]", children: jsxs(Select$1, { value: actionFilter !== undefined ? String(actionFilter) : 'all', onValueChange: (val) => {
|
|
193476
194306
|
setActionFilter(val === 'all' ? undefined : Number(val));
|
|
193477
194307
|
setPage(1);
|
|
193478
|
-
}, children: [jsx(SelectTrigger, { className: "w-full font-normal bg-white h-9", children: jsx(SelectValue, { placeholder: "All Actions" }) }), jsx(SelectContent, { children: ACTION_FILTER_OPTIONS.map((opt) => (jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value))) })] }) })] }) }), jsx("div", { className: "overflow-hidden rounded-md border bg-white", children: jsx("div", { className: "overflow-x-auto", children: jsx("div", { className: "inline-block min-w-full align-middle", children: isLoading ? (jsx("div", { className: "flex items-center justify-center w-full py-10", children: jsx("div", { className: "h-6 w-6 animate-spin rounded-full border-2 border-blue-600 border-t-transparent" }) })) : error && !is403 ? (jsx("div", { className: "py-8 text-center text-[#646464]", children: "An error occurred while loading audit logs." })) : !((_a = data === null || data === void 0 ? void 0 : data.results) === null || _a === void 0 ? void 0 : _a.length) ? (jsx("div", { className: "h-[120px]", children: jsx(EmptyStats, { title: "No audit log entries found for this tenant." }) })) : (jsxs(Table, { className: "min-w-full", children: [jsx(TableHeader, { children: jsxs(TableRow, { className: "bg-muted/50 border-b", children: [jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: "USER" }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: "ACTION" }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: "TIME" })] }) }), jsx(TableBody, { children: data.results.map((entry) => (jsxs(TableRow, { className: "border-b last:border-0", children: [jsx(TableCell, { className: "p-3 font-medium whitespace-nowrap text-[#646464]", children: entry.actor_email }), jsx(TableCell, { className: "min-w-[250px] p-3 text-[#646464]", children: summarizeChanges(entry) }), jsx(TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: formatDistanceToNow(new Date(entry.timestamp), { addSuffix: true }) })] }, entry.id))) })] })) }) }) }), jsx(IblPagination, { currentPage: page, totalPages: totalPages, onPageChange: setPage, disabled: isLoading })] }));
|
|
194308
|
+
}, children: [jsx(SelectTrigger, { className: "w-full font-normal bg-white h-9", children: jsx(SelectValue, { placeholder: "All Actions" }) }), jsx(SelectContent, { children: ACTION_FILTER_OPTIONS.map((opt) => (jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value))) })] }) })] }) }), jsx("div", { className: "overflow-hidden rounded-md border border-[oklch(0.922_0_0)] bg-white", children: jsx("div", { className: "overflow-x-auto", children: jsx("div", { className: "inline-block min-w-full align-middle", children: isLoading ? (jsx("div", { className: "flex items-center justify-center w-full py-10", children: jsx("div", { className: "h-6 w-6 animate-spin rounded-full border-2 border-blue-600 border-t-transparent" }) })) : error && !is403 ? (jsx("div", { className: "py-8 text-center text-[#646464]", children: "An error occurred while loading audit logs." })) : !((_a = data === null || data === void 0 ? void 0 : data.results) === null || _a === void 0 ? void 0 : _a.length) ? (jsx("div", { className: "h-[120px]", children: jsx(EmptyStats, { title: "No audit log entries found for this tenant." }) })) : (jsxs(Table, { className: "min-w-full", children: [jsx(TableHeader, { children: jsxs(TableRow, { className: "bg-muted/50 border-b border-[oklch(0.922_0_0)]", children: [jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: "USER" }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: "ACTION" }), jsx(TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: "TIME" })] }) }), jsx(TableBody, { children: data.results.map((entry) => (jsxs(TableRow, { className: "border-b border-[oklch(0.922_0_0)] last:border-0", children: [jsx(TableCell, { className: "p-3 font-medium whitespace-nowrap text-[#646464]", children: entry.actor_email }), jsx(TableCell, { className: "min-w-[250px] p-3 text-[#646464]", children: summarizeChanges(entry) }), jsx(TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: formatDistanceToNow(new Date(entry.timestamp), { addSuffix: true }) })] }, entry.id))) })] })) }) }) }), jsx(IblPagination, { currentPage: page, totalPages: totalPages, onPageChange: setPage, disabled: isLoading })] }));
|
|
193479
194309
|
}
|
|
193480
194310
|
|
|
193481
194311
|
const SkeletonMultiplier = ({ Skeleton, multiplier }) => {
|
|
@@ -197711,173 +198541,6 @@ function CreateWorkflowModal({ open, onOpenChange, onCreateWorkflow, isCreating
|
|
|
197711
198541
|
} })] }), jsxs("div", { className: "flex justify-end gap-2", children: [jsx(Button$1, { variant: "outline", onClick: handleCancel, disabled: isCreating, children: "Cancel" }), jsx(Button$1, { onClick: handleCreate, disabled: !workflowName.trim() || isCreating, className: "ibl-button-primary", children: isCreating ? 'Creating...' : 'Create' })] })] })] }) }));
|
|
197712
198542
|
}
|
|
197713
198543
|
|
|
197714
|
-
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
197715
|
-
// @__NO_SIDE_EFFECTS__
|
|
197716
|
-
function createSlottable(ownerName) {
|
|
197717
|
-
const Slottable2 = ({ children }) => {
|
|
197718
|
-
return /* @__PURE__ */ jsx(Fragment$1, { children });
|
|
197719
|
-
};
|
|
197720
|
-
Slottable2.displayName = `${ownerName}.Slottable`;
|
|
197721
|
-
Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
|
|
197722
|
-
return Slottable2;
|
|
197723
|
-
}
|
|
197724
|
-
|
|
197725
|
-
var ROOT_NAME = "AlertDialog";
|
|
197726
|
-
var [createAlertDialogContext, createAlertDialogScope] = createContextScope$1(ROOT_NAME, [
|
|
197727
|
-
createDialogScope
|
|
197728
|
-
]);
|
|
197729
|
-
var useDialogScope = createDialogScope();
|
|
197730
|
-
var AlertDialog$1 = (props) => {
|
|
197731
|
-
const { __scopeAlertDialog, ...alertDialogProps } = props;
|
|
197732
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197733
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...dialogScope, ...alertDialogProps, modal: true });
|
|
197734
|
-
};
|
|
197735
|
-
AlertDialog$1.displayName = ROOT_NAME;
|
|
197736
|
-
var TRIGGER_NAME = "AlertDialogTrigger";
|
|
197737
|
-
var AlertDialogTrigger = React.forwardRef(
|
|
197738
|
-
(props, forwardedRef) => {
|
|
197739
|
-
const { __scopeAlertDialog, ...triggerProps } = props;
|
|
197740
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197741
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ...dialogScope, ...triggerProps, ref: forwardedRef });
|
|
197742
|
-
}
|
|
197743
|
-
);
|
|
197744
|
-
AlertDialogTrigger.displayName = TRIGGER_NAME;
|
|
197745
|
-
var PORTAL_NAME = "AlertDialogPortal";
|
|
197746
|
-
var AlertDialogPortal$1 = (props) => {
|
|
197747
|
-
const { __scopeAlertDialog, ...portalProps } = props;
|
|
197748
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197749
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { ...dialogScope, ...portalProps });
|
|
197750
|
-
};
|
|
197751
|
-
AlertDialogPortal$1.displayName = PORTAL_NAME;
|
|
197752
|
-
var OVERLAY_NAME = "AlertDialogOverlay";
|
|
197753
|
-
var AlertDialogOverlay$1 = React.forwardRef(
|
|
197754
|
-
(props, forwardedRef) => {
|
|
197755
|
-
const { __scopeAlertDialog, ...overlayProps } = props;
|
|
197756
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197757
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { ...dialogScope, ...overlayProps, ref: forwardedRef });
|
|
197758
|
-
}
|
|
197759
|
-
);
|
|
197760
|
-
AlertDialogOverlay$1.displayName = OVERLAY_NAME;
|
|
197761
|
-
var CONTENT_NAME = "AlertDialogContent";
|
|
197762
|
-
var [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME);
|
|
197763
|
-
var Slottable = createSlottable("AlertDialogContent");
|
|
197764
|
-
var AlertDialogContent$1 = React.forwardRef(
|
|
197765
|
-
(props, forwardedRef) => {
|
|
197766
|
-
const { __scopeAlertDialog, children, ...contentProps } = props;
|
|
197767
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197768
|
-
const contentRef = React.useRef(null);
|
|
197769
|
-
const composedRefs = useComposedRefs$1(forwardedRef, contentRef);
|
|
197770
|
-
const cancelRef = React.useRef(null);
|
|
197771
|
-
return /* @__PURE__ */ jsx(
|
|
197772
|
-
DialogPrimitive.WarningProvider,
|
|
197773
|
-
{
|
|
197774
|
-
contentName: CONTENT_NAME,
|
|
197775
|
-
titleName: TITLE_NAME,
|
|
197776
|
-
docsSlug: "alert-dialog",
|
|
197777
|
-
children: /* @__PURE__ */ jsx(AlertDialogContentProvider, { scope: __scopeAlertDialog, cancelRef, children: /* @__PURE__ */ jsxs(
|
|
197778
|
-
DialogPrimitive.Content,
|
|
197779
|
-
{
|
|
197780
|
-
role: "alertdialog",
|
|
197781
|
-
...dialogScope,
|
|
197782
|
-
...contentProps,
|
|
197783
|
-
ref: composedRefs,
|
|
197784
|
-
onOpenAutoFocus: composeEventHandlers$2(contentProps.onOpenAutoFocus, (event) => {
|
|
197785
|
-
event.preventDefault();
|
|
197786
|
-
cancelRef.current?.focus({ preventScroll: true });
|
|
197787
|
-
}),
|
|
197788
|
-
onPointerDownOutside: (event) => event.preventDefault(),
|
|
197789
|
-
onInteractOutside: (event) => event.preventDefault(),
|
|
197790
|
-
children: [
|
|
197791
|
-
/* @__PURE__ */ jsx(Slottable, { children }),
|
|
197792
|
-
/* @__PURE__ */ jsx(DescriptionWarning, { contentRef })
|
|
197793
|
-
]
|
|
197794
|
-
}
|
|
197795
|
-
) })
|
|
197796
|
-
}
|
|
197797
|
-
);
|
|
197798
|
-
}
|
|
197799
|
-
);
|
|
197800
|
-
AlertDialogContent$1.displayName = CONTENT_NAME;
|
|
197801
|
-
var TITLE_NAME = "AlertDialogTitle";
|
|
197802
|
-
var AlertDialogTitle$1 = React.forwardRef(
|
|
197803
|
-
(props, forwardedRef) => {
|
|
197804
|
-
const { __scopeAlertDialog, ...titleProps } = props;
|
|
197805
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197806
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ...dialogScope, ...titleProps, ref: forwardedRef });
|
|
197807
|
-
}
|
|
197808
|
-
);
|
|
197809
|
-
AlertDialogTitle$1.displayName = TITLE_NAME;
|
|
197810
|
-
var DESCRIPTION_NAME = "AlertDialogDescription";
|
|
197811
|
-
var AlertDialogDescription$1 = React.forwardRef((props, forwardedRef) => {
|
|
197812
|
-
const { __scopeAlertDialog, ...descriptionProps } = props;
|
|
197813
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197814
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Description, { ...dialogScope, ...descriptionProps, ref: forwardedRef });
|
|
197815
|
-
});
|
|
197816
|
-
AlertDialogDescription$1.displayName = DESCRIPTION_NAME;
|
|
197817
|
-
var ACTION_NAME = "AlertDialogAction";
|
|
197818
|
-
var AlertDialogAction$1 = React.forwardRef(
|
|
197819
|
-
(props, forwardedRef) => {
|
|
197820
|
-
const { __scopeAlertDialog, ...actionProps } = props;
|
|
197821
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197822
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...actionProps, ref: forwardedRef });
|
|
197823
|
-
}
|
|
197824
|
-
);
|
|
197825
|
-
AlertDialogAction$1.displayName = ACTION_NAME;
|
|
197826
|
-
var CANCEL_NAME = "AlertDialogCancel";
|
|
197827
|
-
var AlertDialogCancel$1 = React.forwardRef(
|
|
197828
|
-
(props, forwardedRef) => {
|
|
197829
|
-
const { __scopeAlertDialog, ...cancelProps } = props;
|
|
197830
|
-
const { cancelRef } = useAlertDialogContentContext(CANCEL_NAME, __scopeAlertDialog);
|
|
197831
|
-
const dialogScope = useDialogScope(__scopeAlertDialog);
|
|
197832
|
-
const ref = useComposedRefs$1(forwardedRef, cancelRef);
|
|
197833
|
-
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...cancelProps, ref });
|
|
197834
|
-
}
|
|
197835
|
-
);
|
|
197836
|
-
AlertDialogCancel$1.displayName = CANCEL_NAME;
|
|
197837
|
-
var DescriptionWarning = ({ contentRef }) => {
|
|
197838
|
-
const MESSAGE = `\`${CONTENT_NAME}\` requires a description for the component to be accessible for screen reader users.
|
|
197839
|
-
|
|
197840
|
-
You can add a description to the \`${CONTENT_NAME}\` by passing a \`${DESCRIPTION_NAME}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
|
|
197841
|
-
|
|
197842
|
-
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${CONTENT_NAME}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
|
|
197843
|
-
|
|
197844
|
-
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;
|
|
197845
|
-
React.useEffect(() => {
|
|
197846
|
-
const hasDescription = document.getElementById(
|
|
197847
|
-
contentRef.current?.getAttribute("aria-describedby")
|
|
197848
|
-
);
|
|
197849
|
-
if (!hasDescription) console.warn(MESSAGE);
|
|
197850
|
-
}, [MESSAGE, contentRef]);
|
|
197851
|
-
return null;
|
|
197852
|
-
};
|
|
197853
|
-
var Root2 = AlertDialog$1;
|
|
197854
|
-
var Portal2 = AlertDialogPortal$1;
|
|
197855
|
-
var Overlay2 = AlertDialogOverlay$1;
|
|
197856
|
-
var Content2 = AlertDialogContent$1;
|
|
197857
|
-
var Action = AlertDialogAction$1;
|
|
197858
|
-
var Cancel = AlertDialogCancel$1;
|
|
197859
|
-
var Title2 = AlertDialogTitle$1;
|
|
197860
|
-
var Description2 = AlertDialogDescription$1;
|
|
197861
|
-
|
|
197862
|
-
const AlertDialog = Root2;
|
|
197863
|
-
const AlertDialogPortal = Portal2;
|
|
197864
|
-
const AlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (jsx(Overlay2, { className: cn('data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80', className), ...props, ref: ref })));
|
|
197865
|
-
AlertDialogOverlay.displayName = Overlay2.displayName;
|
|
197866
|
-
const AlertDialogContent = React.forwardRef(({ className, ...props }, ref) => (jsxs(AlertDialogPortal, { children: [jsx(AlertDialogOverlay, {}), jsx(Content2, { ref: ref, className: cn('bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg', className), ...props })] })));
|
|
197867
|
-
AlertDialogContent.displayName = Content2.displayName;
|
|
197868
|
-
const AlertDialogHeader = ({ className, ...props }) => (jsx("div", { className: cn('flex flex-col space-y-2 text-center sm:text-left', className), ...props }));
|
|
197869
|
-
AlertDialogHeader.displayName = 'AlertDialogHeader';
|
|
197870
|
-
const AlertDialogFooter = ({ className, ...props }) => (jsx("div", { className: cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
|
|
197871
|
-
AlertDialogFooter.displayName = 'AlertDialogFooter';
|
|
197872
|
-
const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => (jsx(Title2, { ref: ref, className: cn('text-lg font-semibold', className), ...props })));
|
|
197873
|
-
AlertDialogTitle.displayName = Title2.displayName;
|
|
197874
|
-
const AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => (jsx(Description2, { ref: ref, className: cn('text-muted-foreground text-sm', className), ...props })));
|
|
197875
|
-
AlertDialogDescription.displayName = Description2.displayName;
|
|
197876
|
-
const AlertDialogAction = React.forwardRef(({ className, ...props }, ref) => (jsx(Action, { ref: ref, className: cn(buttonVariants(), className), ...props })));
|
|
197877
|
-
AlertDialogAction.displayName = Action.displayName;
|
|
197878
|
-
const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => (jsx(Cancel, { ref: ref, className: cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className), ...props })));
|
|
197879
|
-
AlertDialogCancel.displayName = Cancel.displayName;
|
|
197880
|
-
|
|
197881
198544
|
function DeleteWorkflowModal({ isOpen, onClose, onConfirm, isDeleting, workflowName, }) {
|
|
197882
198545
|
return (jsx(AlertDialog, { open: isOpen, onOpenChange: onClose, children: jsxs(AlertDialogContent, { children: [jsxs(AlertDialogHeader, { children: [jsx(AlertDialogTitle, { children: "Delete Workflow" }), jsxs(AlertDialogDescription, { children: ["Are you sure you want to delete", workflowName ? ` "${workflowName}"` : ' this workflow', "? This action cannot be undone."] })] }), jsxs(AlertDialogFooter, { children: [jsx(AlertDialogCancel, { onClick: onClose, disabled: isDeleting, className: "ibl-button-primary", children: "Cancel" }), jsx(AlertDialogAction, { onClick: (event) => {
|
|
197883
198546
|
event.preventDefault();
|
|
@@ -199495,7 +200158,7 @@ function FileTypeIcon({ fileName, fileType }) {
|
|
|
199495
200158
|
return jsx(FileAudio, { className: "h-5 w-5 text-blue-500" });
|
|
199496
200159
|
}
|
|
199497
200160
|
else if (type.includes('video')) {
|
|
199498
|
-
return jsx(
|
|
200161
|
+
return jsx(FilePlay, { className: "h-5 w-5 text-blue-500" });
|
|
199499
200162
|
}
|
|
199500
200163
|
else if (type.includes('spreadsheet') || type.includes('excel') || type.includes('csv')) {
|
|
199501
200164
|
return jsx(FileSpreadsheet, { className: "h-5 w-5 text-blue-500" });
|
|
@@ -199524,7 +200187,7 @@ function FileTypeIcon({ fileName, fileType }) {
|
|
|
199524
200187
|
return jsx(FileAudio, { className: "h-5 w-5 text-blue-500" });
|
|
199525
200188
|
}
|
|
199526
200189
|
else if (['mp4', 'webm', 'avi', 'mov'].includes(extension)) {
|
|
199527
|
-
return jsx(
|
|
200190
|
+
return jsx(FilePlay, { className: "h-5 w-5 text-blue-500" });
|
|
199528
200191
|
}
|
|
199529
200192
|
else if (['xls', 'xlsx', 'csv'].includes(extension)) {
|
|
199530
200193
|
return jsx(FileSpreadsheet, { className: "h-5 w-5 text-blue-500" });
|
|
@@ -202580,5 +203243,5 @@ var trainOrDeleteModal = /*#__PURE__*/Object.freeze({
|
|
|
202580
203243
|
TrainOrDeleteModal: TrainOrDeleteModal
|
|
202581
203244
|
});
|
|
202582
203245
|
|
|
202583
|
-
export { ACCESS_COURSE_LABEL, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentSkills, AlertsTab, AnalyticsAuditLogStats, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, BUY_NOW_LABEL, BillingTab, CREATE_AGENT_LABELS, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChatContext, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CreditBalance, CustomDateRangePicker, CustomTooltip, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GroupsFilterDropdown, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, Loader, LocalLLMTab, LoginButton, Markdown, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_SECTORS, OnboardingShell, OnboardingWizard, PaywallModal, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RenameProjectModal, ResumeBox, ResumeTab, RichTextEditor, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, Spinner, StatCard, StepHeader, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolDialogs, TopBanner, UpgradePackageModal, UserAvatar, Version, WorkflowSidebar, addBookmarksTab, findLastResumeBlock, findSequentialParent, flattenVerticalBlocks, getFirstAvailableUnit, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, inBrowserPrint, inIframe, initialModelDownloadState, isLocalLLMEnabled, isTauriApp, components as markdownComponents, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, resolveCreateAgentLabels, sanitizeCss, setLocalLLMEnabled, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatState, useCourseDetail, useCourseMetadata, useCourses, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLocalStorage, useModelDownload, useMonetization, useOverview, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers };
|
|
203246
|
+
export { ACCESS_COURSE_LABEL, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentSkills, AlertsTab, AnalyticsAuditLogStats, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, BUY_NOW_LABEL, BillingTab, CREATE_AGENT_LABELS, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CreditBalance, CustomDateRangePicker, CustomTooltip, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GroupsFilterDropdown, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, Loader, LocalLLMTab, LoginButton, Markdown, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_SECTORS, OnboardingShell, OnboardingWizard, PaywallModal, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RenameProjectModal, ResumeBox, ResumeTab, RichTextEditor, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, Spinner, StatCard, StepHeader, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolDialogs, TopBanner, UpgradePackageModal, UserAvatar, Version, WorkflowSidebar, addBookmarksTab, findLastResumeBlock, findSequentialParent, flattenVerticalBlocks, getFirstAvailableUnit, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, inBrowserPrint, inIframe, initialModelDownloadState, isLocalLLMEnabled, isTauriApp, components as markdownComponents, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, resolveCreateAgentLabels, sanitizeCss, setLocalLLMEnabled, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLocalStorage, useModelDownload, useMonetization, useOverview, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers };
|
|
202584
203247
|
//# sourceMappingURL=index.esm.js.map
|