@iblai/iblai-js 1.3.6 → 1.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
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, useDebugValue, isValidElement, Children, PureComponent, cloneElement, Component } from 'react';
|
|
3
3
|
import { LOCAL_STORAGE_KEYS, TimeTracker, getInitials, useTenantMetadata, isAlphaNumeric32, checkRbacPermission, getTimeAgo, formatRelativeTime as formatRelativeTime$2, ANONYMOUS_USERNAME, combineCSVData, redirectToAuthSpaJoinTenant, redirectToAuthSpa, getAuthSpaJoinUrl } from '@iblai/web-utils';
|
|
4
|
-
import { useTimeTrackingMutation, useGetUserMetadataQuery, useGetUserMetadataEdxQuery, useUpdateUserMetadataMutation, useUpdateUserMetadataEdxMutation, useUploadProfileImageMutation, useResetPasswordMutation, useSelfRetireMutation, useCreateUserInstitutionMutation, useGetUserInstitutionsQuery, useCreateUserEducationMutation, useUpdateUserEducationMutation, useDeleteUserEducationMutation, useGetUserEducationQuery, useCreateUserCompanyMutation, useGetUserCompaniesQuery, useCreateUserExperienceMutation, useUpdateUserExperienceMutation, useDeleteUserExperienceMutation, useGetUserExperienceQuery, useGetUserResumeQuery, useCreateUserResumeMutation, useCreateGlobalMemoryMutation, useGetMemsearchConfigQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useDeleteGlobalMemoryMutation, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useGetNotificationsCountQuery, useLazyGetNotificationsQuery, useMarkAllAsReadMutation, useCreateNotificationPreviewMutation, useSendNotificationMutation, useGetMentorsQuery, useGetRbacPoliciesQuery, usePlatformUsersQuery, usePlatformUserGroupsQuery, useUpdateTemplateMutation, useGetTemplateDetailsQuery, useGetTemplatesQuery, useLazyGetTemplateDetailsQuery, useToggleTemplateMutation, useGetTopicsStatsQuery, useGetUsersStatsQuery, useGetSessionStatsQuery, useGetTopicsDetailsStatsQuery, useGetAccessTimeHeatmapQuery, useGetUserDetailsStatsQuery, useGetTranscriptsConversationHeadlineQuery, useGetAverageRatingQuery, useGetFinancialStatsQuery, useGetDetailedFinancialStatsQuery, useGetTranscriptsMessagesDetailsQuery, useGetTranscriptsMessagesQuery, useGetReportDetailQuery, useLazyGetDownloadReportFromURLQuery, useGetReportsQuery, useCreateReportMutation, useGetMentorPublicSettingsQuery, useGetContentAnalyticsQuery, useGetContentAnalyticsDetailsQuery } from '@iblai/data-layer';
|
|
4
|
+
import { 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, useGetMemsearchConfigQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useDeleteGlobalMemoryMutation, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useGetNotificationsCountQuery, useLazyGetNotificationsQuery, useMarkAllAsReadMutation, useCreateNotificationPreviewMutation, useSendNotificationMutation, useGetMentorsQuery, useGetRbacPoliciesQuery, usePlatformUsersQuery, usePlatformUserGroupsQuery, 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, useListPaywallsQuery, useListSubscribersQuery, useCreateCheckoutMutation } from '@iblai/data-layer';
|
|
5
5
|
import { toast, Toaster as Toaster$1 } from 'sonner';
|
|
6
6
|
import { jsx, Fragment as Fragment$1, jsxs } from 'react/jsx-runtime';
|
|
7
7
|
import * as ReactDOM from 'react-dom';
|
|
@@ -49141,12 +49141,12 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
49141
49141
|
*/
|
|
49142
49142
|
|
|
49143
49143
|
|
|
49144
|
-
const __iconNode$
|
|
49144
|
+
const __iconNode$1o = [
|
|
49145
49145
|
["path", { d: "M17 12H7", key: "16if0g" }],
|
|
49146
49146
|
["path", { d: "M19 18H5", key: "18s9l3" }],
|
|
49147
49147
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
49148
49148
|
];
|
|
49149
|
-
const AlignCenter = createLucideIcon("align-center", __iconNode$
|
|
49149
|
+
const AlignCenter = createLucideIcon("align-center", __iconNode$1o);
|
|
49150
49150
|
|
|
49151
49151
|
/**
|
|
49152
49152
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49156,12 +49156,12 @@ const AlignCenter = createLucideIcon("align-center", __iconNode$1l);
|
|
|
49156
49156
|
*/
|
|
49157
49157
|
|
|
49158
49158
|
|
|
49159
|
-
const __iconNode$
|
|
49159
|
+
const __iconNode$1n = [
|
|
49160
49160
|
["path", { d: "M15 12H3", key: "6jk70r" }],
|
|
49161
49161
|
["path", { d: "M17 18H3", key: "1amg6g" }],
|
|
49162
49162
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
49163
49163
|
];
|
|
49164
|
-
const AlignLeft = createLucideIcon("align-left", __iconNode$
|
|
49164
|
+
const AlignLeft = createLucideIcon("align-left", __iconNode$1n);
|
|
49165
49165
|
|
|
49166
49166
|
/**
|
|
49167
49167
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49171,12 +49171,12 @@ const AlignLeft = createLucideIcon("align-left", __iconNode$1k);
|
|
|
49171
49171
|
*/
|
|
49172
49172
|
|
|
49173
49173
|
|
|
49174
|
-
const __iconNode$
|
|
49174
|
+
const __iconNode$1m = [
|
|
49175
49175
|
["path", { d: "M21 12H9", key: "dn1m92" }],
|
|
49176
49176
|
["path", { d: "M21 18H7", key: "1ygte8" }],
|
|
49177
49177
|
["path", { d: "M21 6H3", key: "1jwq7v" }]
|
|
49178
49178
|
];
|
|
49179
|
-
const AlignRight = createLucideIcon("align-right", __iconNode$
|
|
49179
|
+
const AlignRight = createLucideIcon("align-right", __iconNode$1m);
|
|
49180
49180
|
|
|
49181
49181
|
/**
|
|
49182
49182
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49186,12 +49186,12 @@ const AlignRight = createLucideIcon("align-right", __iconNode$1j);
|
|
|
49186
49186
|
*/
|
|
49187
49187
|
|
|
49188
49188
|
|
|
49189
|
-
const __iconNode$
|
|
49189
|
+
const __iconNode$1l = [
|
|
49190
49190
|
["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
|
|
49191
49191
|
["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
|
|
49192
49192
|
["path", { d: "M10 12h4", key: "a56b0p" }]
|
|
49193
49193
|
];
|
|
49194
|
-
const Archive = createLucideIcon("archive", __iconNode$
|
|
49194
|
+
const Archive = createLucideIcon("archive", __iconNode$1l);
|
|
49195
49195
|
|
|
49196
49196
|
/**
|
|
49197
49197
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49201,11 +49201,11 @@ const Archive = createLucideIcon("archive", __iconNode$1i);
|
|
|
49201
49201
|
*/
|
|
49202
49202
|
|
|
49203
49203
|
|
|
49204
|
-
const __iconNode$
|
|
49204
|
+
const __iconNode$1k = [
|
|
49205
49205
|
["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
|
|
49206
49206
|
["path", { d: "M19 12H5", key: "x3x0zl" }]
|
|
49207
49207
|
];
|
|
49208
|
-
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$
|
|
49208
|
+
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1k);
|
|
49209
49209
|
|
|
49210
49210
|
/**
|
|
49211
49211
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49215,7 +49215,7 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1h);
|
|
|
49215
49215
|
*/
|
|
49216
49216
|
|
|
49217
49217
|
|
|
49218
|
-
const __iconNode$
|
|
49218
|
+
const __iconNode$1j = [
|
|
49219
49219
|
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
49220
49220
|
[
|
|
49221
49221
|
"path",
|
|
@@ -49225,7 +49225,7 @@ const __iconNode$1g = [
|
|
|
49225
49225
|
}
|
|
49226
49226
|
]
|
|
49227
49227
|
];
|
|
49228
|
-
const Bell = createLucideIcon("bell", __iconNode$
|
|
49228
|
+
const Bell = createLucideIcon("bell", __iconNode$1j);
|
|
49229
49229
|
|
|
49230
49230
|
/**
|
|
49231
49231
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49235,13 +49235,13 @@ const Bell = createLucideIcon("bell", __iconNode$1g);
|
|
|
49235
49235
|
*/
|
|
49236
49236
|
|
|
49237
49237
|
|
|
49238
|
-
const __iconNode$
|
|
49238
|
+
const __iconNode$1i = [
|
|
49239
49239
|
[
|
|
49240
49240
|
"path",
|
|
49241
49241
|
{ 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" }
|
|
49242
49242
|
]
|
|
49243
49243
|
];
|
|
49244
|
-
const Bold$1 = createLucideIcon("bold", __iconNode$
|
|
49244
|
+
const Bold$1 = createLucideIcon("bold", __iconNode$1i);
|
|
49245
49245
|
|
|
49246
49246
|
/**
|
|
49247
49247
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49251,7 +49251,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$1f);
|
|
|
49251
49251
|
*/
|
|
49252
49252
|
|
|
49253
49253
|
|
|
49254
|
-
const __iconNode$
|
|
49254
|
+
const __iconNode$1h = [
|
|
49255
49255
|
["path", { d: "M12 7v14", key: "1akyts" }],
|
|
49256
49256
|
[
|
|
49257
49257
|
"path",
|
|
@@ -49261,7 +49261,7 @@ const __iconNode$1e = [
|
|
|
49261
49261
|
}
|
|
49262
49262
|
]
|
|
49263
49263
|
];
|
|
49264
|
-
const BookOpen = createLucideIcon("book-open", __iconNode$
|
|
49264
|
+
const BookOpen = createLucideIcon("book-open", __iconNode$1h);
|
|
49265
49265
|
|
|
49266
49266
|
/**
|
|
49267
49267
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49271,7 +49271,7 @@ const BookOpen = createLucideIcon("book-open", __iconNode$1e);
|
|
|
49271
49271
|
*/
|
|
49272
49272
|
|
|
49273
49273
|
|
|
49274
|
-
const __iconNode$
|
|
49274
|
+
const __iconNode$1g = [
|
|
49275
49275
|
["path", { d: "M12 8V4H8", key: "hb8ula" }],
|
|
49276
49276
|
["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
|
|
49277
49277
|
["path", { d: "M2 14h2", key: "vft8re" }],
|
|
@@ -49279,7 +49279,7 @@ const __iconNode$1d = [
|
|
|
49279
49279
|
["path", { d: "M15 13v2", key: "1xurst" }],
|
|
49280
49280
|
["path", { d: "M9 13v2", key: "rq6x2g" }]
|
|
49281
49281
|
];
|
|
49282
|
-
const Bot = createLucideIcon("bot", __iconNode$
|
|
49282
|
+
const Bot = createLucideIcon("bot", __iconNode$1g);
|
|
49283
49283
|
|
|
49284
49284
|
/**
|
|
49285
49285
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49289,11 +49289,11 @@ const Bot = createLucideIcon("bot", __iconNode$1d);
|
|
|
49289
49289
|
*/
|
|
49290
49290
|
|
|
49291
49291
|
|
|
49292
|
-
const __iconNode$
|
|
49292
|
+
const __iconNode$1f = [
|
|
49293
49293
|
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
49294
49294
|
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
49295
49295
|
];
|
|
49296
|
-
const Briefcase = createLucideIcon("briefcase", __iconNode$
|
|
49296
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$1f);
|
|
49297
49297
|
|
|
49298
49298
|
/**
|
|
49299
49299
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49303,13 +49303,13 @@ const Briefcase = createLucideIcon("briefcase", __iconNode$1c);
|
|
|
49303
49303
|
*/
|
|
49304
49304
|
|
|
49305
49305
|
|
|
49306
|
-
const __iconNode$
|
|
49306
|
+
const __iconNode$1e = [
|
|
49307
49307
|
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
49308
49308
|
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
49309
49309
|
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
49310
49310
|
["path", { d: "M3 10h18", key: "8toen8" }]
|
|
49311
49311
|
];
|
|
49312
|
-
const Calendar$1 = createLucideIcon("calendar", __iconNode$
|
|
49312
|
+
const Calendar$1 = createLucideIcon("calendar", __iconNode$1e);
|
|
49313
49313
|
|
|
49314
49314
|
/**
|
|
49315
49315
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49319,11 +49319,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$1b);
|
|
|
49319
49319
|
*/
|
|
49320
49320
|
|
|
49321
49321
|
|
|
49322
|
-
const __iconNode$
|
|
49322
|
+
const __iconNode$1d = [
|
|
49323
49323
|
["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
|
|
49324
49324
|
["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
|
|
49325
49325
|
];
|
|
49326
|
-
const CheckCheck = createLucideIcon("check-check", __iconNode$
|
|
49326
|
+
const CheckCheck = createLucideIcon("check-check", __iconNode$1d);
|
|
49327
49327
|
|
|
49328
49328
|
/**
|
|
49329
49329
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49333,8 +49333,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$1a);
|
|
|
49333
49333
|
*/
|
|
49334
49334
|
|
|
49335
49335
|
|
|
49336
|
-
const __iconNode$
|
|
49337
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
49336
|
+
const __iconNode$1c = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
49337
|
+
const Check = createLucideIcon("check", __iconNode$1c);
|
|
49338
49338
|
|
|
49339
49339
|
/**
|
|
49340
49340
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49344,8 +49344,8 @@ const Check = createLucideIcon("check", __iconNode$19);
|
|
|
49344
49344
|
*/
|
|
49345
49345
|
|
|
49346
49346
|
|
|
49347
|
-
const __iconNode$
|
|
49348
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
49347
|
+
const __iconNode$1b = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
49348
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$1b);
|
|
49349
49349
|
|
|
49350
49350
|
/**
|
|
49351
49351
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49355,11 +49355,11 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$18);
|
|
|
49355
49355
|
*/
|
|
49356
49356
|
|
|
49357
49357
|
|
|
49358
|
-
const __iconNode$
|
|
49358
|
+
const __iconNode$1a = [
|
|
49359
49359
|
["path", { d: "m17 18-6-6 6-6", key: "1yerx2" }],
|
|
49360
49360
|
["path", { d: "M7 6v12", key: "1p53r6" }]
|
|
49361
49361
|
];
|
|
49362
|
-
const ChevronFirst = createLucideIcon("chevron-first", __iconNode$
|
|
49362
|
+
const ChevronFirst = createLucideIcon("chevron-first", __iconNode$1a);
|
|
49363
49363
|
|
|
49364
49364
|
/**
|
|
49365
49365
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49369,8 +49369,8 @@ const ChevronFirst = createLucideIcon("chevron-first", __iconNode$17);
|
|
|
49369
49369
|
*/
|
|
49370
49370
|
|
|
49371
49371
|
|
|
49372
|
-
const __iconNode$
|
|
49373
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
49372
|
+
const __iconNode$19 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
49373
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$19);
|
|
49374
49374
|
|
|
49375
49375
|
/**
|
|
49376
49376
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49380,11 +49380,11 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$16);
|
|
|
49380
49380
|
*/
|
|
49381
49381
|
|
|
49382
49382
|
|
|
49383
|
-
const __iconNode$
|
|
49383
|
+
const __iconNode$18 = [
|
|
49384
49384
|
["path", { d: "m7 18 6-6-6-6", key: "lwmzdw" }],
|
|
49385
49385
|
["path", { d: "M17 6v12", key: "1o0aio" }]
|
|
49386
49386
|
];
|
|
49387
|
-
const ChevronLast = createLucideIcon("chevron-last", __iconNode$
|
|
49387
|
+
const ChevronLast = createLucideIcon("chevron-last", __iconNode$18);
|
|
49388
49388
|
|
|
49389
49389
|
/**
|
|
49390
49390
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49394,8 +49394,8 @@ const ChevronLast = createLucideIcon("chevron-last", __iconNode$15);
|
|
|
49394
49394
|
*/
|
|
49395
49395
|
|
|
49396
49396
|
|
|
49397
|
-
const __iconNode$
|
|
49398
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
49397
|
+
const __iconNode$17 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
49398
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$17);
|
|
49399
49399
|
|
|
49400
49400
|
/**
|
|
49401
49401
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49405,8 +49405,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$14);
|
|
|
49405
49405
|
*/
|
|
49406
49406
|
|
|
49407
49407
|
|
|
49408
|
-
const __iconNode$
|
|
49409
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
49408
|
+
const __iconNode$16 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
49409
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$16);
|
|
49410
49410
|
|
|
49411
49411
|
/**
|
|
49412
49412
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49416,11 +49416,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$13);
|
|
|
49416
49416
|
*/
|
|
49417
49417
|
|
|
49418
49418
|
|
|
49419
|
-
const __iconNode$
|
|
49419
|
+
const __iconNode$15 = [
|
|
49420
49420
|
["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
|
|
49421
49421
|
["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
|
|
49422
49422
|
];
|
|
49423
|
-
const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$
|
|
49423
|
+
const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$15);
|
|
49424
49424
|
|
|
49425
49425
|
/**
|
|
49426
49426
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49430,11 +49430,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$12);
|
|
|
49430
49430
|
*/
|
|
49431
49431
|
|
|
49432
49432
|
|
|
49433
|
-
const __iconNode$
|
|
49433
|
+
const __iconNode$14 = [
|
|
49434
49434
|
["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
|
|
49435
49435
|
["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
|
|
49436
49436
|
];
|
|
49437
|
-
const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$
|
|
49437
|
+
const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$14);
|
|
49438
49438
|
|
|
49439
49439
|
/**
|
|
49440
49440
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49444,11 +49444,11 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$11);
|
|
|
49444
49444
|
*/
|
|
49445
49445
|
|
|
49446
49446
|
|
|
49447
|
-
const __iconNode$
|
|
49447
|
+
const __iconNode$13 = [
|
|
49448
49448
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
49449
49449
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
49450
49450
|
];
|
|
49451
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
49451
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$13);
|
|
49452
49452
|
|
|
49453
49453
|
/**
|
|
49454
49454
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49458,11 +49458,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$10);
|
|
|
49458
49458
|
*/
|
|
49459
49459
|
|
|
49460
49460
|
|
|
49461
|
-
const __iconNode
|
|
49461
|
+
const __iconNode$12 = [
|
|
49462
49462
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
49463
49463
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
49464
49464
|
];
|
|
49465
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode
|
|
49465
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$12);
|
|
49466
49466
|
|
|
49467
49467
|
/**
|
|
49468
49468
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49472,12 +49472,12 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$$);
|
|
|
49472
49472
|
*/
|
|
49473
49473
|
|
|
49474
49474
|
|
|
49475
|
-
const __iconNode$
|
|
49475
|
+
const __iconNode$11 = [
|
|
49476
49476
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
49477
49477
|
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
49478
49478
|
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
49479
49479
|
];
|
|
49480
|
-
const CircleX = createLucideIcon("circle-x", __iconNode$
|
|
49480
|
+
const CircleX = createLucideIcon("circle-x", __iconNode$11);
|
|
49481
49481
|
|
|
49482
49482
|
/**
|
|
49483
49483
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49487,8 +49487,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$_);
|
|
|
49487
49487
|
*/
|
|
49488
49488
|
|
|
49489
49489
|
|
|
49490
|
-
const __iconNode$
|
|
49491
|
-
const Circle = createLucideIcon("circle", __iconNode$
|
|
49490
|
+
const __iconNode$10 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
49491
|
+
const Circle = createLucideIcon("circle", __iconNode$10);
|
|
49492
49492
|
|
|
49493
49493
|
/**
|
|
49494
49494
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49498,11 +49498,11 @@ const Circle = createLucideIcon("circle", __iconNode$Z);
|
|
|
49498
49498
|
*/
|
|
49499
49499
|
|
|
49500
49500
|
|
|
49501
|
-
const __iconNode
|
|
49501
|
+
const __iconNode$$ = [
|
|
49502
49502
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
49503
49503
|
["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }]
|
|
49504
49504
|
];
|
|
49505
|
-
const Clock = createLucideIcon("clock", __iconNode
|
|
49505
|
+
const Clock = createLucideIcon("clock", __iconNode$$);
|
|
49506
49506
|
|
|
49507
49507
|
/**
|
|
49508
49508
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49512,12 +49512,12 @@ const Clock = createLucideIcon("clock", __iconNode$Y);
|
|
|
49512
49512
|
*/
|
|
49513
49513
|
|
|
49514
49514
|
|
|
49515
|
-
const __iconNode$
|
|
49515
|
+
const __iconNode$_ = [
|
|
49516
49516
|
["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
|
|
49517
49517
|
["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
|
|
49518
49518
|
["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
|
|
49519
49519
|
];
|
|
49520
|
-
const CodeXml = createLucideIcon("code-xml", __iconNode$
|
|
49520
|
+
const CodeXml = createLucideIcon("code-xml", __iconNode$_);
|
|
49521
49521
|
|
|
49522
49522
|
/**
|
|
49523
49523
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49527,11 +49527,11 @@ const CodeXml = createLucideIcon("code-xml", __iconNode$X);
|
|
|
49527
49527
|
*/
|
|
49528
49528
|
|
|
49529
49529
|
|
|
49530
|
-
const __iconNode$
|
|
49530
|
+
const __iconNode$Z = [
|
|
49531
49531
|
["polyline", { points: "16 18 22 12 16 6", key: "z7tu5w" }],
|
|
49532
49532
|
["polyline", { points: "8 6 2 12 8 18", key: "1eg1df" }]
|
|
49533
49533
|
];
|
|
49534
|
-
const Code$1 = createLucideIcon("code", __iconNode$
|
|
49534
|
+
const Code$1 = createLucideIcon("code", __iconNode$Z);
|
|
49535
49535
|
|
|
49536
49536
|
/**
|
|
49537
49537
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49541,11 +49541,11 @@ const Code$1 = createLucideIcon("code", __iconNode$W);
|
|
|
49541
49541
|
*/
|
|
49542
49542
|
|
|
49543
49543
|
|
|
49544
|
-
const __iconNode$
|
|
49544
|
+
const __iconNode$Y = [
|
|
49545
49545
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
49546
49546
|
["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" }]
|
|
49547
49547
|
];
|
|
49548
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
49548
|
+
const Copy = createLucideIcon("copy", __iconNode$Y);
|
|
49549
49549
|
|
|
49550
49550
|
/**
|
|
49551
49551
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49555,12 +49555,26 @@ const Copy = createLucideIcon("copy", __iconNode$V);
|
|
|
49555
49555
|
*/
|
|
49556
49556
|
|
|
49557
49557
|
|
|
49558
|
-
const __iconNode$
|
|
49558
|
+
const __iconNode$X = [
|
|
49559
|
+
["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
|
|
49560
|
+
["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
|
|
49561
|
+
];
|
|
49562
|
+
const CreditCard = createLucideIcon("credit-card", __iconNode$X);
|
|
49563
|
+
|
|
49564
|
+
/**
|
|
49565
|
+
* @license lucide-react v0.507.0 - ISC
|
|
49566
|
+
*
|
|
49567
|
+
* This source code is licensed under the ISC license.
|
|
49568
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
49569
|
+
*/
|
|
49570
|
+
|
|
49571
|
+
|
|
49572
|
+
const __iconNode$W = [
|
|
49559
49573
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
49560
49574
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
49561
49575
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
49562
49576
|
];
|
|
49563
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
49577
|
+
const Database = createLucideIcon("database", __iconNode$W);
|
|
49564
49578
|
|
|
49565
49579
|
/**
|
|
49566
49580
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49570,7 +49584,7 @@ const Database = createLucideIcon("database", __iconNode$U);
|
|
|
49570
49584
|
*/
|
|
49571
49585
|
|
|
49572
49586
|
|
|
49573
|
-
const __iconNode$
|
|
49587
|
+
const __iconNode$V = [
|
|
49574
49588
|
[
|
|
49575
49589
|
"path",
|
|
49576
49590
|
{
|
|
@@ -49581,7 +49595,7 @@ const __iconNode$T = [
|
|
|
49581
49595
|
["path", { d: "m12 9 6 6", key: "anjzzh" }],
|
|
49582
49596
|
["path", { d: "m18 9-6 6", key: "1fp51s" }]
|
|
49583
49597
|
];
|
|
49584
|
-
const Delete$1 = createLucideIcon("delete", __iconNode$
|
|
49598
|
+
const Delete$1 = createLucideIcon("delete", __iconNode$V);
|
|
49585
49599
|
|
|
49586
49600
|
/**
|
|
49587
49601
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49591,12 +49605,12 @@ const Delete$1 = createLucideIcon("delete", __iconNode$T);
|
|
|
49591
49605
|
*/
|
|
49592
49606
|
|
|
49593
49607
|
|
|
49594
|
-
const __iconNode$
|
|
49608
|
+
const __iconNode$U = [
|
|
49595
49609
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
49596
49610
|
["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }],
|
|
49597
49611
|
["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }]
|
|
49598
49612
|
];
|
|
49599
|
-
const Download = createLucideIcon("download", __iconNode$
|
|
49613
|
+
const Download = createLucideIcon("download", __iconNode$U);
|
|
49600
49614
|
|
|
49601
49615
|
/**
|
|
49602
49616
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49606,12 +49620,12 @@ const Download = createLucideIcon("download", __iconNode$S);
|
|
|
49606
49620
|
*/
|
|
49607
49621
|
|
|
49608
49622
|
|
|
49609
|
-
const __iconNode$
|
|
49623
|
+
const __iconNode$T = [
|
|
49610
49624
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
49611
49625
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
49612
49626
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
49613
49627
|
];
|
|
49614
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
49628
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$T);
|
|
49615
49629
|
|
|
49616
49630
|
/**
|
|
49617
49631
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49621,7 +49635,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$R);
|
|
|
49621
49635
|
*/
|
|
49622
49636
|
|
|
49623
49637
|
|
|
49624
|
-
const __iconNode$
|
|
49638
|
+
const __iconNode$S = [
|
|
49625
49639
|
[
|
|
49626
49640
|
"path",
|
|
49627
49641
|
{
|
|
@@ -49631,7 +49645,7 @@ const __iconNode$Q = [
|
|
|
49631
49645
|
],
|
|
49632
49646
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
49633
49647
|
];
|
|
49634
|
-
const Eye = createLucideIcon("eye", __iconNode$
|
|
49648
|
+
const Eye = createLucideIcon("eye", __iconNode$S);
|
|
49635
49649
|
|
|
49636
49650
|
/**
|
|
49637
49651
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49641,13 +49655,13 @@ const Eye = createLucideIcon("eye", __iconNode$Q);
|
|
|
49641
49655
|
*/
|
|
49642
49656
|
|
|
49643
49657
|
|
|
49644
|
-
const __iconNode$
|
|
49658
|
+
const __iconNode$R = [
|
|
49645
49659
|
["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
|
|
49646
49660
|
["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }],
|
|
49647
49661
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
49648
49662
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }]
|
|
49649
49663
|
];
|
|
49650
|
-
const FileCode = createLucideIcon("file-code", __iconNode$
|
|
49664
|
+
const FileCode = createLucideIcon("file-code", __iconNode$R);
|
|
49651
49665
|
|
|
49652
49666
|
/**
|
|
49653
49667
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49657,13 +49671,13 @@ const FileCode = createLucideIcon("file-code", __iconNode$P);
|
|
|
49657
49671
|
*/
|
|
49658
49672
|
|
|
49659
49673
|
|
|
49660
|
-
const __iconNode$
|
|
49674
|
+
const __iconNode$Q = [
|
|
49661
49675
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
49662
49676
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
49663
49677
|
["path", { d: "M12 18v-6", key: "17g6i2" }],
|
|
49664
49678
|
["path", { d: "m9 15 3 3 3-3", key: "1npd3o" }]
|
|
49665
49679
|
];
|
|
49666
|
-
const FileDown = createLucideIcon("file-down", __iconNode$
|
|
49680
|
+
const FileDown = createLucideIcon("file-down", __iconNode$Q);
|
|
49667
49681
|
|
|
49668
49682
|
/**
|
|
49669
49683
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49673,14 +49687,14 @@ const FileDown = createLucideIcon("file-down", __iconNode$O);
|
|
|
49673
49687
|
*/
|
|
49674
49688
|
|
|
49675
49689
|
|
|
49676
|
-
const __iconNode$
|
|
49690
|
+
const __iconNode$P = [
|
|
49677
49691
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
49678
49692
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
49679
49693
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
49680
49694
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
49681
49695
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
49682
49696
|
];
|
|
49683
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
49697
|
+
const FileText = createLucideIcon("file-text", __iconNode$P);
|
|
49684
49698
|
|
|
49685
49699
|
/**
|
|
49686
49700
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49690,13 +49704,13 @@ const FileText = createLucideIcon("file-text", __iconNode$N);
|
|
|
49690
49704
|
*/
|
|
49691
49705
|
|
|
49692
49706
|
|
|
49693
|
-
const __iconNode$
|
|
49707
|
+
const __iconNode$O = [
|
|
49694
49708
|
["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
|
|
49695
49709
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
49696
49710
|
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
|
|
49697
49711
|
["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
|
|
49698
49712
|
];
|
|
49699
|
-
const GitBranch = createLucideIcon("git-branch", __iconNode$
|
|
49713
|
+
const GitBranch = createLucideIcon("git-branch", __iconNode$O);
|
|
49700
49714
|
|
|
49701
49715
|
/**
|
|
49702
49716
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49706,12 +49720,12 @@ const GitBranch = createLucideIcon("git-branch", __iconNode$M);
|
|
|
49706
49720
|
*/
|
|
49707
49721
|
|
|
49708
49722
|
|
|
49709
|
-
const __iconNode$
|
|
49723
|
+
const __iconNode$N = [
|
|
49710
49724
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
49711
49725
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
49712
49726
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
49713
49727
|
];
|
|
49714
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
49728
|
+
const Globe = createLucideIcon("globe", __iconNode$N);
|
|
49715
49729
|
|
|
49716
49730
|
/**
|
|
49717
49731
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49721,7 +49735,7 @@ const Globe = createLucideIcon("globe", __iconNode$L);
|
|
|
49721
49735
|
*/
|
|
49722
49736
|
|
|
49723
49737
|
|
|
49724
|
-
const __iconNode$
|
|
49738
|
+
const __iconNode$M = [
|
|
49725
49739
|
[
|
|
49726
49740
|
"path",
|
|
49727
49741
|
{
|
|
@@ -49732,7 +49746,7 @@ const __iconNode$K = [
|
|
|
49732
49746
|
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
49733
49747
|
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
49734
49748
|
];
|
|
49735
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$
|
|
49749
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$M);
|
|
49736
49750
|
|
|
49737
49751
|
/**
|
|
49738
49752
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49742,13 +49756,13 @@ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$K);
|
|
|
49742
49756
|
*/
|
|
49743
49757
|
|
|
49744
49758
|
|
|
49745
|
-
const __iconNode$
|
|
49759
|
+
const __iconNode$L = [
|
|
49746
49760
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
49747
49761
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
49748
49762
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
49749
49763
|
["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
|
|
49750
49764
|
];
|
|
49751
|
-
const Heading1 = createLucideIcon("heading-1", __iconNode$
|
|
49765
|
+
const Heading1 = createLucideIcon("heading-1", __iconNode$L);
|
|
49752
49766
|
|
|
49753
49767
|
/**
|
|
49754
49768
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49758,13 +49772,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$J);
|
|
|
49758
49772
|
*/
|
|
49759
49773
|
|
|
49760
49774
|
|
|
49761
|
-
const __iconNode$
|
|
49775
|
+
const __iconNode$K = [
|
|
49762
49776
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
49763
49777
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
49764
49778
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
49765
49779
|
["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
|
|
49766
49780
|
];
|
|
49767
|
-
const Heading2 = createLucideIcon("heading-2", __iconNode$
|
|
49781
|
+
const Heading2 = createLucideIcon("heading-2", __iconNode$K);
|
|
49768
49782
|
|
|
49769
49783
|
/**
|
|
49770
49784
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49774,14 +49788,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$I);
|
|
|
49774
49788
|
*/
|
|
49775
49789
|
|
|
49776
49790
|
|
|
49777
|
-
const __iconNode$
|
|
49791
|
+
const __iconNode$J = [
|
|
49778
49792
|
["path", { d: "M4 12h8", key: "17cfdx" }],
|
|
49779
49793
|
["path", { d: "M4 18V6", key: "1rz3zl" }],
|
|
49780
49794
|
["path", { d: "M12 18V6", key: "zqpxq5" }],
|
|
49781
49795
|
["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
|
|
49782
49796
|
["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
|
|
49783
49797
|
];
|
|
49784
|
-
const Heading3 = createLucideIcon("heading-3", __iconNode$
|
|
49798
|
+
const Heading3 = createLucideIcon("heading-3", __iconNode$J);
|
|
49785
49799
|
|
|
49786
49800
|
/**
|
|
49787
49801
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49791,12 +49805,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$H);
|
|
|
49791
49805
|
*/
|
|
49792
49806
|
|
|
49793
49807
|
|
|
49794
|
-
const __iconNode$
|
|
49808
|
+
const __iconNode$I = [
|
|
49795
49809
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
49796
49810
|
["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
|
|
49797
49811
|
["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
|
|
49798
49812
|
];
|
|
49799
|
-
const Image$3 = createLucideIcon("image", __iconNode$
|
|
49813
|
+
const Image$3 = createLucideIcon("image", __iconNode$I);
|
|
49800
49814
|
|
|
49801
49815
|
/**
|
|
49802
49816
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49806,12 +49820,12 @@ const Image$3 = createLucideIcon("image", __iconNode$G);
|
|
|
49806
49820
|
*/
|
|
49807
49821
|
|
|
49808
49822
|
|
|
49809
|
-
const __iconNode$
|
|
49823
|
+
const __iconNode$H = [
|
|
49810
49824
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
49811
49825
|
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
49812
49826
|
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
49813
49827
|
];
|
|
49814
|
-
const Info$3 = createLucideIcon("info", __iconNode$
|
|
49828
|
+
const Info$3 = createLucideIcon("info", __iconNode$H);
|
|
49815
49829
|
|
|
49816
49830
|
/**
|
|
49817
49831
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49821,12 +49835,12 @@ const Info$3 = createLucideIcon("info", __iconNode$F);
|
|
|
49821
49835
|
*/
|
|
49822
49836
|
|
|
49823
49837
|
|
|
49824
|
-
const __iconNode$
|
|
49838
|
+
const __iconNode$G = [
|
|
49825
49839
|
["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
|
|
49826
49840
|
["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
|
|
49827
49841
|
["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
|
|
49828
49842
|
];
|
|
49829
|
-
const Italic$1 = createLucideIcon("italic", __iconNode$
|
|
49843
|
+
const Italic$1 = createLucideIcon("italic", __iconNode$G);
|
|
49830
49844
|
|
|
49831
49845
|
/**
|
|
49832
49846
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49836,11 +49850,11 @@ const Italic$1 = createLucideIcon("italic", __iconNode$E);
|
|
|
49836
49850
|
*/
|
|
49837
49851
|
|
|
49838
49852
|
|
|
49839
|
-
const __iconNode$
|
|
49853
|
+
const __iconNode$F = [
|
|
49840
49854
|
["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" }],
|
|
49841
49855
|
["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" }]
|
|
49842
49856
|
];
|
|
49843
|
-
const Link$1 = createLucideIcon("link", __iconNode$
|
|
49857
|
+
const Link$1 = createLucideIcon("link", __iconNode$F);
|
|
49844
49858
|
|
|
49845
49859
|
/**
|
|
49846
49860
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49850,7 +49864,7 @@ const Link$1 = createLucideIcon("link", __iconNode$D);
|
|
|
49850
49864
|
*/
|
|
49851
49865
|
|
|
49852
49866
|
|
|
49853
|
-
const __iconNode$
|
|
49867
|
+
const __iconNode$E = [
|
|
49854
49868
|
["path", { d: "M10 12h11", key: "6m4ad9" }],
|
|
49855
49869
|
["path", { d: "M10 18h11", key: "11hvi2" }],
|
|
49856
49870
|
["path", { d: "M10 6h11", key: "c7qv1k" }],
|
|
@@ -49858,7 +49872,7 @@ const __iconNode$C = [
|
|
|
49858
49872
|
["path", { d: "M4 6h1v4", key: "cnovpq" }],
|
|
49859
49873
|
["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
|
|
49860
49874
|
];
|
|
49861
|
-
const ListOrdered = createLucideIcon("list-ordered", __iconNode$
|
|
49875
|
+
const ListOrdered = createLucideIcon("list-ordered", __iconNode$E);
|
|
49862
49876
|
|
|
49863
49877
|
/**
|
|
49864
49878
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49868,7 +49882,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$C);
|
|
|
49868
49882
|
*/
|
|
49869
49883
|
|
|
49870
49884
|
|
|
49871
|
-
const __iconNode$
|
|
49885
|
+
const __iconNode$D = [
|
|
49872
49886
|
["path", { d: "M3 12h.01", key: "nlz23k" }],
|
|
49873
49887
|
["path", { d: "M3 18h.01", key: "1tta3j" }],
|
|
49874
49888
|
["path", { d: "M3 6h.01", key: "1rqtza" }],
|
|
@@ -49876,7 +49890,7 @@ const __iconNode$B = [
|
|
|
49876
49890
|
["path", { d: "M8 18h13", key: "1lx6n3" }],
|
|
49877
49891
|
["path", { d: "M8 6h13", key: "ik3vkj" }]
|
|
49878
49892
|
];
|
|
49879
|
-
const List$1 = createLucideIcon("list", __iconNode$
|
|
49893
|
+
const List$1 = createLucideIcon("list", __iconNode$D);
|
|
49880
49894
|
|
|
49881
49895
|
/**
|
|
49882
49896
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49886,8 +49900,8 @@ const List$1 = createLucideIcon("list", __iconNode$B);
|
|
|
49886
49900
|
*/
|
|
49887
49901
|
|
|
49888
49902
|
|
|
49889
|
-
const __iconNode$
|
|
49890
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
49903
|
+
const __iconNode$C = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
49904
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$C);
|
|
49891
49905
|
|
|
49892
49906
|
/**
|
|
49893
49907
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49897,11 +49911,11 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$A);
|
|
|
49897
49911
|
*/
|
|
49898
49912
|
|
|
49899
49913
|
|
|
49900
|
-
const __iconNode$
|
|
49914
|
+
const __iconNode$B = [
|
|
49901
49915
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
49902
49916
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
49903
49917
|
];
|
|
49904
|
-
const Mail = createLucideIcon("mail", __iconNode$
|
|
49918
|
+
const Mail = createLucideIcon("mail", __iconNode$B);
|
|
49905
49919
|
|
|
49906
49920
|
/**
|
|
49907
49921
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49911,7 +49925,7 @@ const Mail = createLucideIcon("mail", __iconNode$z);
|
|
|
49911
49925
|
*/
|
|
49912
49926
|
|
|
49913
49927
|
|
|
49914
|
-
const __iconNode$
|
|
49928
|
+
const __iconNode$A = [
|
|
49915
49929
|
["path", { d: "M13.234 20.252 21 12.3", key: "1cbrk9" }],
|
|
49916
49930
|
[
|
|
49917
49931
|
"path",
|
|
@@ -49921,7 +49935,7 @@ const __iconNode$y = [
|
|
|
49921
49935
|
}
|
|
49922
49936
|
]
|
|
49923
49937
|
];
|
|
49924
|
-
const Paperclip = createLucideIcon("paperclip", __iconNode$
|
|
49938
|
+
const Paperclip = createLucideIcon("paperclip", __iconNode$A);
|
|
49925
49939
|
|
|
49926
49940
|
/**
|
|
49927
49941
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49931,7 +49945,7 @@ const Paperclip = createLucideIcon("paperclip", __iconNode$y);
|
|
|
49931
49945
|
*/
|
|
49932
49946
|
|
|
49933
49947
|
|
|
49934
|
-
const __iconNode$
|
|
49948
|
+
const __iconNode$z = [
|
|
49935
49949
|
[
|
|
49936
49950
|
"path",
|
|
49937
49951
|
{
|
|
@@ -49940,7 +49954,7 @@ const __iconNode$x = [
|
|
|
49940
49954
|
}
|
|
49941
49955
|
]
|
|
49942
49956
|
];
|
|
49943
|
-
const Pen = createLucideIcon("pen", __iconNode$
|
|
49957
|
+
const Pen = createLucideIcon("pen", __iconNode$z);
|
|
49944
49958
|
|
|
49945
49959
|
/**
|
|
49946
49960
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49950,8 +49964,8 @@ const Pen = createLucideIcon("pen", __iconNode$x);
|
|
|
49950
49964
|
*/
|
|
49951
49965
|
|
|
49952
49966
|
|
|
49953
|
-
const __iconNode$
|
|
49954
|
-
const Play = createLucideIcon("play", __iconNode$
|
|
49967
|
+
const __iconNode$y = [["polygon", { points: "6 3 20 12 6 21 6 3", key: "1oa8hb" }]];
|
|
49968
|
+
const Play = createLucideIcon("play", __iconNode$y);
|
|
49955
49969
|
|
|
49956
49970
|
/**
|
|
49957
49971
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49961,11 +49975,11 @@ const Play = createLucideIcon("play", __iconNode$w);
|
|
|
49961
49975
|
*/
|
|
49962
49976
|
|
|
49963
49977
|
|
|
49964
|
-
const __iconNode$
|
|
49978
|
+
const __iconNode$x = [
|
|
49965
49979
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
49966
49980
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
49967
49981
|
];
|
|
49968
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
49982
|
+
const Plus = createLucideIcon("plus", __iconNode$x);
|
|
49969
49983
|
|
|
49970
49984
|
/**
|
|
49971
49985
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49975,7 +49989,7 @@ const Plus = createLucideIcon("plus", __iconNode$v);
|
|
|
49975
49989
|
*/
|
|
49976
49990
|
|
|
49977
49991
|
|
|
49978
|
-
const __iconNode$
|
|
49992
|
+
const __iconNode$w = [
|
|
49979
49993
|
[
|
|
49980
49994
|
"path",
|
|
49981
49995
|
{
|
|
@@ -49984,7 +49998,7 @@ const __iconNode$u = [
|
|
|
49984
49998
|
}
|
|
49985
49999
|
]
|
|
49986
50000
|
];
|
|
49987
|
-
const Puzzle = createLucideIcon("puzzle", __iconNode$
|
|
50001
|
+
const Puzzle = createLucideIcon("puzzle", __iconNode$w);
|
|
49988
50002
|
|
|
49989
50003
|
/**
|
|
49990
50004
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -49994,7 +50008,7 @@ const Puzzle = createLucideIcon("puzzle", __iconNode$u);
|
|
|
49994
50008
|
*/
|
|
49995
50009
|
|
|
49996
50010
|
|
|
49997
|
-
const __iconNode$
|
|
50011
|
+
const __iconNode$v = [
|
|
49998
50012
|
[
|
|
49999
50013
|
"path",
|
|
50000
50014
|
{
|
|
@@ -50010,7 +50024,7 @@ const __iconNode$t = [
|
|
|
50010
50024
|
}
|
|
50011
50025
|
]
|
|
50012
50026
|
];
|
|
50013
|
-
const Quote = createLucideIcon("quote", __iconNode$
|
|
50027
|
+
const Quote = createLucideIcon("quote", __iconNode$v);
|
|
50014
50028
|
|
|
50015
50029
|
/**
|
|
50016
50030
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50020,13 +50034,13 @@ const Quote = createLucideIcon("quote", __iconNode$t);
|
|
|
50020
50034
|
*/
|
|
50021
50035
|
|
|
50022
50036
|
|
|
50023
|
-
const __iconNode$
|
|
50037
|
+
const __iconNode$u = [
|
|
50024
50038
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
50025
50039
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
50026
50040
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
50027
50041
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
50028
50042
|
];
|
|
50029
|
-
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$
|
|
50043
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$u);
|
|
50030
50044
|
|
|
50031
50045
|
/**
|
|
50032
50046
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50036,11 +50050,11 @@ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$s);
|
|
|
50036
50050
|
*/
|
|
50037
50051
|
|
|
50038
50052
|
|
|
50039
|
-
const __iconNode$
|
|
50053
|
+
const __iconNode$t = [
|
|
50040
50054
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
50041
50055
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }]
|
|
50042
50056
|
];
|
|
50043
|
-
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$
|
|
50057
|
+
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$t);
|
|
50044
50058
|
|
|
50045
50059
|
/**
|
|
50046
50060
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50050,11 +50064,11 @@ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$r);
|
|
|
50050
50064
|
*/
|
|
50051
50065
|
|
|
50052
50066
|
|
|
50053
|
-
const __iconNode$
|
|
50067
|
+
const __iconNode$s = [
|
|
50054
50068
|
["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
|
|
50055
50069
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }]
|
|
50056
50070
|
];
|
|
50057
|
-
const RotateCw = createLucideIcon("rotate-cw", __iconNode$
|
|
50071
|
+
const RotateCw = createLucideIcon("rotate-cw", __iconNode$s);
|
|
50058
50072
|
|
|
50059
50073
|
/**
|
|
50060
50074
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50064,11 +50078,11 @@ const RotateCw = createLucideIcon("rotate-cw", __iconNode$q);
|
|
|
50064
50078
|
*/
|
|
50065
50079
|
|
|
50066
50080
|
|
|
50067
|
-
const __iconNode$
|
|
50081
|
+
const __iconNode$r = [
|
|
50068
50082
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
50069
50083
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
50070
50084
|
];
|
|
50071
|
-
const Search = createLucideIcon("search", __iconNode$
|
|
50085
|
+
const Search = createLucideIcon("search", __iconNode$r);
|
|
50072
50086
|
|
|
50073
50087
|
/**
|
|
50074
50088
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50078,7 +50092,7 @@ const Search = createLucideIcon("search", __iconNode$p);
|
|
|
50078
50092
|
*/
|
|
50079
50093
|
|
|
50080
50094
|
|
|
50081
|
-
const __iconNode$
|
|
50095
|
+
const __iconNode$q = [
|
|
50082
50096
|
[
|
|
50083
50097
|
"path",
|
|
50084
50098
|
{
|
|
@@ -50088,7 +50102,7 @@ const __iconNode$o = [
|
|
|
50088
50102
|
],
|
|
50089
50103
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
50090
50104
|
];
|
|
50091
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
50105
|
+
const Send = createLucideIcon("send", __iconNode$q);
|
|
50092
50106
|
|
|
50093
50107
|
/**
|
|
50094
50108
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50098,13 +50112,13 @@ const Send = createLucideIcon("send", __iconNode$o);
|
|
|
50098
50112
|
*/
|
|
50099
50113
|
|
|
50100
50114
|
|
|
50101
|
-
const __iconNode$
|
|
50115
|
+
const __iconNode$p = [
|
|
50102
50116
|
["path", { d: "M20 7h-9", key: "3s1dr2" }],
|
|
50103
50117
|
["path", { d: "M14 17H5", key: "gfn3mx" }],
|
|
50104
50118
|
["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }],
|
|
50105
50119
|
["circle", { cx: "7", cy: "7", r: "3", key: "dfmy0x" }]
|
|
50106
50120
|
];
|
|
50107
|
-
const Settings2 = createLucideIcon("settings-2", __iconNode$
|
|
50121
|
+
const Settings2 = createLucideIcon("settings-2", __iconNode$p);
|
|
50108
50122
|
|
|
50109
50123
|
/**
|
|
50110
50124
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50114,7 +50128,7 @@ const Settings2 = createLucideIcon("settings-2", __iconNode$n);
|
|
|
50114
50128
|
*/
|
|
50115
50129
|
|
|
50116
50130
|
|
|
50117
|
-
const __iconNode$
|
|
50131
|
+
const __iconNode$o = [
|
|
50118
50132
|
[
|
|
50119
50133
|
"path",
|
|
50120
50134
|
{
|
|
@@ -50124,7 +50138,7 @@ const __iconNode$m = [
|
|
|
50124
50138
|
],
|
|
50125
50139
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
50126
50140
|
];
|
|
50127
|
-
const Settings = createLucideIcon("settings", __iconNode$
|
|
50141
|
+
const Settings = createLucideIcon("settings", __iconNode$o);
|
|
50128
50142
|
|
|
50129
50143
|
/**
|
|
50130
50144
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50134,7 +50148,7 @@ const Settings = createLucideIcon("settings", __iconNode$m);
|
|
|
50134
50148
|
*/
|
|
50135
50149
|
|
|
50136
50150
|
|
|
50137
|
-
const __iconNode$
|
|
50151
|
+
const __iconNode$n = [
|
|
50138
50152
|
[
|
|
50139
50153
|
"path",
|
|
50140
50154
|
{
|
|
@@ -50143,7 +50157,7 @@ const __iconNode$l = [
|
|
|
50143
50157
|
}
|
|
50144
50158
|
]
|
|
50145
50159
|
];
|
|
50146
|
-
const Shield = createLucideIcon("shield", __iconNode$
|
|
50160
|
+
const Shield = createLucideIcon("shield", __iconNode$n);
|
|
50147
50161
|
|
|
50148
50162
|
/**
|
|
50149
50163
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50153,14 +50167,29 @@ const Shield = createLucideIcon("shield", __iconNode$l);
|
|
|
50153
50167
|
*/
|
|
50154
50168
|
|
|
50155
50169
|
|
|
50156
|
-
const __iconNode$
|
|
50170
|
+
const __iconNode$m = [
|
|
50171
|
+
["path", { d: "M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z", key: "hou9p0" }],
|
|
50172
|
+
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
50173
|
+
["path", { d: "M16 10a4 4 0 0 1-8 0", key: "1ltviw" }]
|
|
50174
|
+
];
|
|
50175
|
+
const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$m);
|
|
50176
|
+
|
|
50177
|
+
/**
|
|
50178
|
+
* @license lucide-react v0.507.0 - ISC
|
|
50179
|
+
*
|
|
50180
|
+
* This source code is licensed under the ISC license.
|
|
50181
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
50182
|
+
*/
|
|
50183
|
+
|
|
50184
|
+
|
|
50185
|
+
const __iconNode$l = [
|
|
50157
50186
|
["path", { d: "m18 14 4 4-4 4", key: "10pe0f" }],
|
|
50158
50187
|
["path", { d: "m18 2 4 4-4 4", key: "pucp1d" }],
|
|
50159
50188
|
["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" }],
|
|
50160
50189
|
["path", { d: "M2 6h1.972a4 4 0 0 1 3.6 2.2", key: "km57vx" }],
|
|
50161
50190
|
["path", { d: "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45", key: "os18l9" }]
|
|
50162
50191
|
];
|
|
50163
|
-
const Shuffle = createLucideIcon("shuffle", __iconNode$
|
|
50192
|
+
const Shuffle = createLucideIcon("shuffle", __iconNode$l);
|
|
50164
50193
|
|
|
50165
50194
|
/**
|
|
50166
50195
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50170,7 +50199,7 @@ const Shuffle = createLucideIcon("shuffle", __iconNode$k);
|
|
|
50170
50199
|
*/
|
|
50171
50200
|
|
|
50172
50201
|
|
|
50173
|
-
const __iconNode$
|
|
50202
|
+
const __iconNode$k = [
|
|
50174
50203
|
["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" }],
|
|
50175
50204
|
[
|
|
50176
50205
|
"path",
|
|
@@ -50180,7 +50209,7 @@ const __iconNode$j = [
|
|
|
50180
50209
|
}
|
|
50181
50210
|
]
|
|
50182
50211
|
];
|
|
50183
|
-
const SquarePen = createLucideIcon("square-pen", __iconNode$
|
|
50212
|
+
const SquarePen = createLucideIcon("square-pen", __iconNode$k);
|
|
50184
50213
|
|
|
50185
50214
|
/**
|
|
50186
50215
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50190,10 +50219,10 @@ const SquarePen = createLucideIcon("square-pen", __iconNode$j);
|
|
|
50190
50219
|
*/
|
|
50191
50220
|
|
|
50192
50221
|
|
|
50193
|
-
const __iconNode$
|
|
50222
|
+
const __iconNode$j = [
|
|
50194
50223
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
|
|
50195
50224
|
];
|
|
50196
|
-
const Square$1 = createLucideIcon("square", __iconNode$
|
|
50225
|
+
const Square$1 = createLucideIcon("square", __iconNode$j);
|
|
50197
50226
|
|
|
50198
50227
|
/**
|
|
50199
50228
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50203,7 +50232,7 @@ const Square$1 = createLucideIcon("square", __iconNode$i);
|
|
|
50203
50232
|
*/
|
|
50204
50233
|
|
|
50205
50234
|
|
|
50206
|
-
const __iconNode$
|
|
50235
|
+
const __iconNode$i = [
|
|
50207
50236
|
[
|
|
50208
50237
|
"path",
|
|
50209
50238
|
{
|
|
@@ -50212,7 +50241,7 @@ const __iconNode$h = [
|
|
|
50212
50241
|
}
|
|
50213
50242
|
]
|
|
50214
50243
|
];
|
|
50215
|
-
const Star$1 = createLucideIcon("star", __iconNode$
|
|
50244
|
+
const Star$1 = createLucideIcon("star", __iconNode$i);
|
|
50216
50245
|
|
|
50217
50246
|
/**
|
|
50218
50247
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50222,11 +50251,11 @@ const Star$1 = createLucideIcon("star", __iconNode$h);
|
|
|
50222
50251
|
*/
|
|
50223
50252
|
|
|
50224
50253
|
|
|
50225
|
-
const __iconNode$
|
|
50254
|
+
const __iconNode$h = [
|
|
50226
50255
|
["polyline", { points: "4 17 10 11 4 5", key: "akl6gq" }],
|
|
50227
50256
|
["line", { x1: "12", x2: "20", y1: "19", y2: "19", key: "q2wloq" }]
|
|
50228
50257
|
];
|
|
50229
|
-
const Terminal = createLucideIcon("terminal", __iconNode$
|
|
50258
|
+
const Terminal = createLucideIcon("terminal", __iconNode$h);
|
|
50230
50259
|
|
|
50231
50260
|
/**
|
|
50232
50261
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50236,7 +50265,7 @@ const Terminal = createLucideIcon("terminal", __iconNode$g);
|
|
|
50236
50265
|
*/
|
|
50237
50266
|
|
|
50238
50267
|
|
|
50239
|
-
const __iconNode$
|
|
50268
|
+
const __iconNode$g = [
|
|
50240
50269
|
["path", { d: "M17 14V2", key: "8ymqnk" }],
|
|
50241
50270
|
[
|
|
50242
50271
|
"path",
|
|
@@ -50246,7 +50275,7 @@ const __iconNode$f = [
|
|
|
50246
50275
|
}
|
|
50247
50276
|
]
|
|
50248
50277
|
];
|
|
50249
|
-
const ThumbsDown = createLucideIcon("thumbs-down", __iconNode$
|
|
50278
|
+
const ThumbsDown = createLucideIcon("thumbs-down", __iconNode$g);
|
|
50250
50279
|
|
|
50251
50280
|
/**
|
|
50252
50281
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50256,7 +50285,7 @@ const ThumbsDown = createLucideIcon("thumbs-down", __iconNode$f);
|
|
|
50256
50285
|
*/
|
|
50257
50286
|
|
|
50258
50287
|
|
|
50259
|
-
const __iconNode$
|
|
50288
|
+
const __iconNode$f = [
|
|
50260
50289
|
["path", { d: "M7 10v12", key: "1qc93n" }],
|
|
50261
50290
|
[
|
|
50262
50291
|
"path",
|
|
@@ -50266,7 +50295,7 @@ const __iconNode$e = [
|
|
|
50266
50295
|
}
|
|
50267
50296
|
]
|
|
50268
50297
|
];
|
|
50269
|
-
const ThumbsUp = createLucideIcon("thumbs-up", __iconNode$
|
|
50298
|
+
const ThumbsUp = createLucideIcon("thumbs-up", __iconNode$f);
|
|
50270
50299
|
|
|
50271
50300
|
/**
|
|
50272
50301
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -50276,14 +50305,35 @@ const ThumbsUp = createLucideIcon("thumbs-up", __iconNode$e);
|
|
|
50276
50305
|
*/
|
|
50277
50306
|
|
|
50278
50307
|
|
|
50279
|
-
const __iconNode$
|
|
50308
|
+
const __iconNode$e = [
|
|
50280
50309
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
50281
50310
|
["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }],
|
|
50282
50311
|
["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }],
|
|
50283
50312
|
["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }],
|
|
50284
50313
|
["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]
|
|
50285
50314
|
];
|
|
50286
|
-
const Trash2 = createLucideIcon("trash-2", __iconNode$
|
|
50315
|
+
const Trash2 = createLucideIcon("trash-2", __iconNode$e);
|
|
50316
|
+
|
|
50317
|
+
/**
|
|
50318
|
+
* @license lucide-react v0.507.0 - ISC
|
|
50319
|
+
*
|
|
50320
|
+
* This source code is licensed under the ISC license.
|
|
50321
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
50322
|
+
*/
|
|
50323
|
+
|
|
50324
|
+
|
|
50325
|
+
const __iconNode$d = [
|
|
50326
|
+
[
|
|
50327
|
+
"path",
|
|
50328
|
+
{
|
|
50329
|
+
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
50330
|
+
key: "wmoenq"
|
|
50331
|
+
}
|
|
50332
|
+
],
|
|
50333
|
+
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
50334
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
50335
|
+
];
|
|
50336
|
+
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$d);
|
|
50287
50337
|
|
|
50288
50338
|
/**
|
|
50289
50339
|
* @license lucide-react v0.507.0 - ISC
|
|
@@ -81782,6 +81832,152 @@ function ResumeTab({ org, username }) {
|
|
|
81782
81832
|
return (jsxs("div", { className: "space-y-1", children: [jsx("div", { className: "flex items-center justify-end", children: jsx("input", { ref: fileInputRef, type: "file", accept: "application/pdf", className: "hidden", onChange: handleFileChange }) }), !isLoading && (isError || !resumeUrl) && (jsxs("div", { className: "flex flex-col items-center justify-center rounded-lg border border-dashed border-gray-300 bg-gray-50 p-8 text-center", children: [jsx("h3", { className: "text-base font-semibold text-gray-700", children: "No resume added yet" }), jsx("p", { className: "mt-1 text-sm text-gray-500", children: "Upload your resume to share with mentors and administrators." }), jsxs(Button$1, { className: "mt-4 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: [jsx(Upload, { className: "h-4 w-4 mr-2" }), " ", isUploading ? 'Uploading...' : 'Upload resume'] })] })), isLoading && (jsx("div", { className: "rounded-xl border border-gray-200 bg-white p-6 shadow-sm", children: jsxs("div", { className: "space-y-4", children: [jsx(Skeleton, { className: "h-6 w-32" }), jsx(Skeleton, { className: "h-64 w-full" })] }) })), !isLoading && resumeUrl && (jsx("div", { className: "rounded-xl border border-gray-200 bg-white p-6 shadow-sm", children: jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-lg bg-gray-50 px-4 py-3", children: [jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-700", children: [jsxs(Button$1, { variant: "outline", size: "sm", onClick: () => setPageNumber((prev) => Math.max(1, prev - 1)), disabled: pageNumber <= 1, children: [jsx(ChevronLeft, { className: "h-4 w-4 mr-1" }), " Prev"] }), jsxs("span", { children: ["Page ", pageNumber, " of ", numPages || '—'] }), jsxs(Button$1, { variant: "outline", size: "sm", onClick: () => setPageNumber((prev) => Math.min(numPages, prev + 1)), disabled: pageNumber >= numPages, children: ["Next ", jsx(ChevronRight, { className: "h-4 w-4 ml-1" })] })] }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-700", children: [jsx(Button$1, { variant: "outline", size: "sm", onClick: () => setScale((current) => Math.max(0.5, Number((current - 0.2).toFixed(1)))), disabled: scale <= 0.5, children: jsx(ZoomOut, { className: "h-4 w-4 mr-1" }) }), jsxs("span", { children: [Math.round(scale * 100), "%"] }), jsx(Button$1, { variant: "outline", size: "sm", onClick: () => setScale((current) => Number((current + 0.2).toFixed(1))), children: jsx(ZoomIn, { className: "h-4 w-4 mr-1" }) })] }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-700", children: [jsx(Button$1, { variant: "outline", size: "sm", onClick: () => setRotation((current) => current - 90), children: jsx(RotateCcw, { className: "h-4 w-4 mr-1" }) }), jsx(Button$1, { variant: "outline", size: "sm", onClick: () => setRotation((current) => current + 90), children: jsx(RotateCw, { className: "h-4 w-4 mr-1" }) })] })] }), jsx("div", { className: "flex justify-center", children: jsx("div", { className: "overflow-hidden rounded-lg border border-gray-200 bg-gray-100", children: jsx(Document$1, { file: resumeUrl, onLoadSuccess: handleDocumentLoad, onLoadError: () => toast.error('Unable to load resume preview'), loading: jsx(Skeleton, { className: "h-[480px] w-[360px]" }), children: jsx(Page, { pageNumber: pageNumber, scale: scale, rotate: rotation, width: 720 }) }) }) })] }) }))] }));
|
|
81783
81833
|
}
|
|
81784
81834
|
|
|
81835
|
+
const Card = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("rounded-lg border bg-card text-card-foreground shadow-sm", className), ...props })));
|
|
81836
|
+
Card.displayName = "Card";
|
|
81837
|
+
const CardHeader = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })));
|
|
81838
|
+
CardHeader.displayName = "CardHeader";
|
|
81839
|
+
const CardTitle = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })));
|
|
81840
|
+
CardTitle.displayName = "CardTitle";
|
|
81841
|
+
const CardDescription = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
|
|
81842
|
+
CardDescription.displayName = "CardDescription";
|
|
81843
|
+
const CardContent = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("p-6 pt-0", className), ...props })));
|
|
81844
|
+
CardContent.displayName = "CardContent";
|
|
81845
|
+
const CardFooter = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("flex items-center p-6 pt-0", className), ...props })));
|
|
81846
|
+
CardFooter.displayName = "CardFooter";
|
|
81847
|
+
|
|
81848
|
+
const badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
|
|
81849
|
+
variants: {
|
|
81850
|
+
variant: {
|
|
81851
|
+
default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
|
|
81852
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
81853
|
+
destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
|
|
81854
|
+
outline: "text-foreground",
|
|
81855
|
+
},
|
|
81856
|
+
},
|
|
81857
|
+
defaultVariants: {
|
|
81858
|
+
variant: "default",
|
|
81859
|
+
},
|
|
81860
|
+
});
|
|
81861
|
+
function Badge({ className, variant, ...props }) {
|
|
81862
|
+
return (jsx("div", { className: cn(badgeVariants({ variant }), className), ...props }));
|
|
81863
|
+
}
|
|
81864
|
+
|
|
81865
|
+
function statusBadgeStyle$1(status) {
|
|
81866
|
+
switch (status) {
|
|
81867
|
+
case 'active':
|
|
81868
|
+
return 'bg-blue-100 text-blue-700 border-blue-200 hover:bg-blue-100';
|
|
81869
|
+
case 'trialing':
|
|
81870
|
+
return 'bg-purple-100 text-purple-700 border-purple-200 hover:bg-purple-100';
|
|
81871
|
+
case 'canceled':
|
|
81872
|
+
return 'bg-gray-100 text-gray-500 border-gray-200 hover:bg-gray-100';
|
|
81873
|
+
case 'past_due':
|
|
81874
|
+
return 'bg-red-100 text-red-700 border-red-200 hover:bg-red-100';
|
|
81875
|
+
default:
|
|
81876
|
+
return 'bg-gray-100 text-gray-500 border-gray-200 hover:bg-gray-100';
|
|
81877
|
+
}
|
|
81878
|
+
}
|
|
81879
|
+
function formatInterval$1(interval) {
|
|
81880
|
+
switch (interval) {
|
|
81881
|
+
case 'month':
|
|
81882
|
+
return '/month';
|
|
81883
|
+
case 'year':
|
|
81884
|
+
return '/year';
|
|
81885
|
+
case 'one_time':
|
|
81886
|
+
return 'one-time';
|
|
81887
|
+
default:
|
|
81888
|
+
return interval;
|
|
81889
|
+
}
|
|
81890
|
+
}
|
|
81891
|
+
function useDebounce(value, delay) {
|
|
81892
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
81893
|
+
useEffect(() => {
|
|
81894
|
+
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
81895
|
+
return () => clearTimeout(timer);
|
|
81896
|
+
}, [value, delay]);
|
|
81897
|
+
return debouncedValue;
|
|
81898
|
+
}
|
|
81899
|
+
function formatCurrency(amount, currency = 'usd') {
|
|
81900
|
+
return new Intl.NumberFormat('en-US', {
|
|
81901
|
+
style: 'currency',
|
|
81902
|
+
currency: currency.toUpperCase(),
|
|
81903
|
+
}).format(typeof amount === 'string' ? parseFloat(amount) : amount);
|
|
81904
|
+
}
|
|
81905
|
+
// ── Subscription Detail View ──
|
|
81906
|
+
function SubscriptionDetail({ subscription: initialSubscription, platformKey, onBack, }) {
|
|
81907
|
+
var _a, _b, _c, _d, _e;
|
|
81908
|
+
const [confirmText, setConfirmText] = useState('');
|
|
81909
|
+
const [cancelResult, setCancelResult] = useState(null);
|
|
81910
|
+
const { data: fetchedSubscription, isLoading: isLoadingDetail } = useGetItemSubscriptionQuery({
|
|
81911
|
+
platform_key: platformKey,
|
|
81912
|
+
item_type: initialSubscription.item_type,
|
|
81913
|
+
item_id: initialSubscription.item_id,
|
|
81914
|
+
}, { refetchOnMountOrArgChange: true });
|
|
81915
|
+
const subscription = fetchedSubscription !== null && fetchedSubscription !== void 0 ? fetchedSubscription : initialSubscription;
|
|
81916
|
+
const [cancelSubscription, { isLoading: isCanceling }] = useCancelSubscriptionMutation();
|
|
81917
|
+
const isOneTime = ((_a = subscription.price) === null || _a === void 0 ? void 0 : _a.interval) === 'one_time';
|
|
81918
|
+
const isRecurring = !isOneTime;
|
|
81919
|
+
const canCancel = isRecurring &&
|
|
81920
|
+
(subscription.status === 'active' || subscription.status === 'trialing') &&
|
|
81921
|
+
!subscription.cancel_at_period_end;
|
|
81922
|
+
const handleCancel = async () => {
|
|
81923
|
+
try {
|
|
81924
|
+
const result = await cancelSubscription({
|
|
81925
|
+
platform_key: platformKey,
|
|
81926
|
+
item_type: subscription.item_type,
|
|
81927
|
+
item_id: subscription.item_id,
|
|
81928
|
+
...(isRecurring ? { return_url: window.location.href } : {}),
|
|
81929
|
+
}).unwrap();
|
|
81930
|
+
if (result.portal_url) {
|
|
81931
|
+
setCancelResult({ portalUrl: result.portal_url });
|
|
81932
|
+
}
|
|
81933
|
+
else if (result.status === 'canceled') {
|
|
81934
|
+
setCancelResult({ canceled: true });
|
|
81935
|
+
toast.success('Subscription canceled');
|
|
81936
|
+
}
|
|
81937
|
+
}
|
|
81938
|
+
catch (_a) {
|
|
81939
|
+
toast.error('Failed to cancel subscription');
|
|
81940
|
+
}
|
|
81941
|
+
};
|
|
81942
|
+
if (isLoadingDetail) {
|
|
81943
|
+
return (jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex items-center gap-3", children: [jsxs(Button$1, { variant: "ghost", size: "sm", onClick: onBack, className: "cursor-pointer", children: [jsx(ChevronLeft, { className: "h-4 w-4 mr-1" }), "Back"] }), jsx(Skeleton, { className: "h-6 w-48" })] }), jsx(Skeleton, { className: "h-64 w-full" })] }));
|
|
81944
|
+
}
|
|
81945
|
+
return (jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex items-center gap-3", children: [jsxs(Button$1, { variant: "ghost", size: "sm", onClick: onBack, className: "cursor-pointer", children: [jsx(ChevronLeft, { className: "h-4 w-4 mr-1" }), "Back"] }), jsxs("div", { children: [jsx("h4", { className: "text-base font-semibold text-gray-900 dark:text-gray-100", children: subscription.item_name || subscription.item_id }), jsx("span", { className: "text-xs text-gray-400 capitalize", children: subscription.item_type })] })] }), jsx(Card, { className: "shadow-sm border", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-6 space-y-5", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Status" }), jsx(Badge, { className: statusBadgeStyle$1(subscription.status), children: subscription.status })] }), jsxs("div", { className: "flex items-center justify-between border-t pt-3", children: [jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Plan" }), jsxs("div", { className: "text-right", children: [jsx("span", { className: "text-sm font-semibold text-gray-900 dark:text-gray-100", children: (_b = subscription.price) === null || _b === void 0 ? void 0 : _b.name }), jsxs("span", { className: "text-sm text-gray-500 ml-2", children: [formatCurrency((_c = subscription.price) === null || _c === void 0 ? void 0 : _c.amount, (_d = subscription.price) === null || _d === void 0 ? void 0 : _d.currency), formatInterval$1((_e = subscription.price) === null || _e === void 0 ? void 0 : _e.interval)] })] })] }), jsxs("div", { className: "flex items-center justify-between border-t pt-3", children: [jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Type" }), jsx(Badge, { variant: "secondary", className: "capitalize", children: subscription.item_type })] }), subscription.current_period_end && (jsxs("div", { className: "flex items-center justify-between border-t pt-3", children: [jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: subscription.cancel_at_period_end ? 'Access Until' : 'Renews On' }), jsxs("span", { className: "text-sm text-gray-600 dark:text-gray-400 flex items-center gap-1.5", children: [jsx(Calendar$1, { className: "h-3.5 w-3.5" }), new Date(subscription.current_period_end).toLocaleDateString()] })] })), subscription.created_at && (jsxs("div", { className: "flex items-center justify-between border-t pt-3", children: [jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Subscribed Since" }), jsxs("span", { className: "text-sm text-gray-600 dark:text-gray-400 flex items-center gap-1.5", children: [jsx(Clock, { className: "h-3.5 w-3.5" }), new Date(subscription.created_at).toLocaleDateString()] })] })), subscription.is_grandfathered && (jsxs("div", { className: "flex items-center justify-between border-t pt-3", children: [jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Legacy Access" }), jsxs(Badge, { className: "bg-amber-100 text-amber-700 border-amber-200 text-xs", children: [jsx(Shield, { className: "h-3 w-3 mr-1" }), "Grandfathered"] })] })), subscription.cancel_at_period_end && (jsxs("div", { className: "flex items-center gap-2 border-t pt-3 text-yellow-600", children: [jsx(TriangleAlert, { className: "h-4 w-4 flex-shrink-0" }), jsx("span", { className: "text-sm", children: "This subscription will not renew and expires at the end of the current period." })] }))] }) }), canCancel && !cancelResult && (jsx(Card, { className: "shadow-sm border border-blue-100", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-5 space-y-3", children: [jsx("h4", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Cancel Subscription" }), jsx("p", { className: "text-xs text-gray-500", children: "You will be redirected to the Stripe portal to manage cancellation. Your access continues until the end of the billing period." }), jsxs("div", { className: "flex gap-2 items-end", children: [jsxs("div", { className: "flex-1", children: [jsxs("label", { className: "text-xs text-gray-500 mb-1 block", children: ["Type ", jsx("span", { className: "font-mono font-bold", children: "cancel" }), " to confirm"] }), jsx(Input, { value: confirmText, onChange: (e) => setConfirmText(e.target.value), placeholder: "Type 'cancel'" })] }), jsxs(Button$1, { onClick: handleCancel, disabled: confirmText !== 'cancel' || isCanceling, className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white cursor-pointer", children: [isCanceling ? (jsx(LoaderCircle, { className: "h-4 w-4 mr-2 animate-spin" })) : (jsx(CircleX, { className: "h-4 w-4 mr-2" })), "Cancel"] })] })] }) })), (cancelResult === null || cancelResult === void 0 ? void 0 : cancelResult.canceled) && (jsx(Card, { className: "shadow-sm border border-green-200", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-5 text-center", children: [jsx(CircleX, { className: "h-8 w-8 text-gray-400 mx-auto mb-2" }), jsx("h4", { className: "text-sm font-semibold text-gray-900 dark:text-gray-100 mb-1", children: "Subscription Canceled" }), jsx("p", { className: "text-xs text-gray-500", children: "Your access has been revoked." }), jsx(Button$1, { variant: "outline", onClick: onBack, className: "mt-3 cursor-pointer", children: "Back to Purchases" })] }) })), (cancelResult === null || cancelResult === void 0 ? void 0 : cancelResult.portalUrl) && (jsx(Card, { className: "shadow-sm border border-blue-200", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-5 text-center", children: [jsx(ExternalLink, { className: "h-8 w-8 text-blue-400 mx-auto mb-2" }), jsx("h4", { className: "text-sm font-semibold text-gray-900 dark:text-gray-100 mb-1", children: "Stripe Customer Portal" }), jsx("p", { className: "text-xs text-gray-500 mb-3", children: "Complete the cancellation in the Stripe Customer Portal." }), jsxs(Button$1, { onClick: () => window.open(cancelResult.portalUrl, '_blank'), className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white cursor-pointer", children: [jsx(ExternalLink, { className: "h-4 w-4 mr-2" }), "Open Stripe Portal"] })] }) }))] }));
|
|
81946
|
+
}
|
|
81947
|
+
// ── Subscription Card (List Item) ──
|
|
81948
|
+
function SubscriptionCard({ sub, onClick }) {
|
|
81949
|
+
var _a, _b, _c, _d;
|
|
81950
|
+
return (jsx(Card, { className: "shadow-sm border hover:border-blue-200 transition-colors cursor-pointer", style: { borderColor: 'oklch(.922 0 0)' }, onClick: onClick, children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-start justify-between", children: [jsxs("div", { className: "flex-1 min-w-0", children: [jsxs("div", { className: "flex items-center gap-2 mb-1", children: [jsx("h4", { className: "text-sm font-semibold text-gray-900 dark:text-gray-100 truncate", children: sub.item_name || sub.item_id }), jsx(Badge, { variant: "secondary", className: "text-xs capitalize flex-shrink-0", children: sub.item_type })] }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: [jsx(CreditCard, { className: "h-3.5 w-3.5 text-gray-400" }), jsxs("span", { children: [(_a = sub.price) === null || _a === void 0 ? void 0 : _a.name, " \u2014", ' ', jsxs("span", { className: "font-semibold", children: [formatCurrency((_b = sub.price) === null || _b === void 0 ? void 0 : _b.amount, (_c = sub.price) === null || _c === void 0 ? void 0 : _c.currency), formatInterval$1((_d = sub.price) === null || _d === void 0 ? void 0 : _d.interval)] })] })] }), jsxs("div", { className: "flex flex-wrap items-center gap-3 mt-2 text-xs text-gray-400", children: [sub.current_period_end && (jsxs("span", { className: "flex items-center gap-1", children: [jsx(Calendar$1, { className: "h-3 w-3" }), sub.cancel_at_period_end ? 'Expires' : 'Renews', ":", ' ', new Date(sub.current_period_end).toLocaleDateString()] })), sub.created_at && (jsxs("span", { className: "flex items-center gap-1", children: [jsx(Clock, { className: "h-3 w-3" }), "Since: ", new Date(sub.created_at).toLocaleDateString()] }))] }), sub.cancel_at_period_end && (jsxs("div", { className: "flex items-center gap-1.5 mt-2 text-xs text-yellow-600", children: [jsx(TriangleAlert, { className: "h-3 w-3" }), "Cancels at period end"] }))] }), jsxs("div", { className: "flex flex-col items-end gap-1 flex-shrink-0 ml-3", children: [jsx(Badge, { className: statusBadgeStyle$1(sub.status), children: sub.status }), sub.is_grandfathered && (jsxs(Badge, { className: "bg-amber-100 text-amber-700 border-amber-200 text-xs", children: [jsx(Shield, { className: "h-3 w-3 mr-1" }), "Legacy"] }))] })] }) }) }));
|
|
81951
|
+
}
|
|
81952
|
+
// ── Main Purchases Tab ──
|
|
81953
|
+
function PurchasesTab({ org, username }) {
|
|
81954
|
+
const [statusFilter, setStatusFilter] = useState('all');
|
|
81955
|
+
const [typeFilter, setTypeFilter] = useState('all');
|
|
81956
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
81957
|
+
const [page, setPage] = useState(1);
|
|
81958
|
+
const [selectedSubscription, setSelectedSubscription] = useState(null);
|
|
81959
|
+
const debouncedSearch = useDebounce(searchQuery, 300);
|
|
81960
|
+
// Reset page when filters or search change
|
|
81961
|
+
useEffect(() => {
|
|
81962
|
+
setPage(1);
|
|
81963
|
+
}, [statusFilter, typeFilter, debouncedSearch]);
|
|
81964
|
+
const { data, isLoading, isFetching, refetch } = useGetMySubscriptionsQuery({
|
|
81965
|
+
platform_key: org,
|
|
81966
|
+
page,
|
|
81967
|
+
page_size: 8,
|
|
81968
|
+
...(statusFilter !== 'all' ? { status: statusFilter } : {}),
|
|
81969
|
+
...(typeFilter !== 'all' ? { item_type: typeFilter } : {}),
|
|
81970
|
+
...(debouncedSearch.trim() ? { item_name: debouncedSearch.trim() } : {}),
|
|
81971
|
+
}, { refetchOnMountOrArgChange: true });
|
|
81972
|
+
if (selectedSubscription) {
|
|
81973
|
+
return (jsx(SubscriptionDetail, { subscription: selectedSubscription, platformKey: org, onBack: () => {
|
|
81974
|
+
setSelectedSubscription(null);
|
|
81975
|
+
refetch();
|
|
81976
|
+
} }));
|
|
81977
|
+
}
|
|
81978
|
+
return (jsxs("div", { className: "max-w-2xl space-y-4", children: [jsxs("div", { className: "relative", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: "Search purchases...", className: "pl-9" }), isFetching && !isLoading && (jsx(LoaderCircle, { className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 animate-spin text-gray-400" }))] }), jsxs("div", { className: "flex flex-col sm:flex-row gap-2", children: [jsxs(Select$1, { value: statusFilter, onValueChange: setStatusFilter, children: [jsx(SelectTrigger, { className: "w-full sm:w-[160px]", children: jsx(SelectValue, { placeholder: "Status" }) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: "All Statuses" }), jsx(SelectItem, { value: "active", children: "Active" }), jsx(SelectItem, { value: "trialing", children: "Trialing" }), jsx(SelectItem, { value: "canceled", children: "Canceled" }), jsx(SelectItem, { value: "past_due", children: "Past Due" })] })] }), jsxs(Select$1, { value: typeFilter, onValueChange: setTypeFilter, children: [jsx(SelectTrigger, { className: "w-full sm:w-[160px]", children: jsx(SelectValue, { placeholder: "Item Type" }) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: "All Types" }), jsx(SelectItem, { value: "mentor", children: "Mentor" }), jsx(SelectItem, { value: "course", children: "Course" }), jsx(SelectItem, { value: "program", children: "Program" }), jsx(SelectItem, { value: "pathway", children: "Pathway" })] })] }), data && (jsxs("span", { className: "text-xs text-gray-400 self-center ml-auto", children: [data.count, " purchase", data.count !== 1 ? 's' : ''] }))] }), isLoading ? (jsx("div", { className: "space-y-2", children: [1, 2, 3].map((i) => (jsx(Skeleton, { className: "h-24 w-full" }, i))) })) : (data === null || data === void 0 ? void 0 : data.results) && data.results.length > 0 ? (jsxs(Fragment$1, { children: [jsx("div", { className: "space-y-2", children: data.results.map((sub) => (jsx(SubscriptionCard, { sub: sub, onClick: () => setSelectedSubscription(sub) }, sub.unique_id))) }), (data.previous_page !== null || data.next_page !== null) && (jsxs("div", { className: "flex items-center justify-between pt-2", children: [jsxs("span", { className: "text-xs text-gray-400", children: [data.count, " total"] }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Button$1, { variant: "outline", size: "sm", disabled: data.previous_page === null, onClick: () => data.previous_page !== null && setPage(data.previous_page), className: "h-7 text-xs cursor-pointer", children: "Previous" }), jsxs("span", { className: "text-xs text-gray-500", children: ["Page ", page] }), jsx(Button$1, { variant: "outline", size: "sm", disabled: data.next_page === null, onClick: () => data.next_page !== null && setPage(data.next_page), className: "h-7 text-xs cursor-pointer", children: "Next" })] })] }))] })) : (jsx(Card, { className: "shadow-sm border border-dashed", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-8 text-center", children: [jsx(ShoppingBag, { className: "h-10 w-10 mx-auto text-gray-300 mb-3" }), jsx("p", { className: "text-sm text-gray-400", children: debouncedSearch.trim() ? 'No purchases match your search.' : 'No purchases found.' })] }) }))] }));
|
|
81979
|
+
}
|
|
81980
|
+
|
|
81785
81981
|
function AddMemoryDialog({ open, onOpenChange, org, username }) {
|
|
81786
81982
|
const [content, setContent] = useState('');
|
|
81787
81983
|
const [createMemory, { isLoading }] = useCreateGlobalMemoryMutation();
|
|
@@ -81908,6 +82104,7 @@ function Profile({ tenant, username, onClose, customization = {}, isAdmin = fals
|
|
|
81908
82104
|
{ id: 'education', label: 'Education', renderIcon: renderLucideIcon(BookOpen) },
|
|
81909
82105
|
{ id: 'experience', label: 'Experience', renderIcon: renderLucideIcon(Briefcase) },
|
|
81910
82106
|
{ id: 'resume', label: 'Resume', renderIcon: renderLucideIcon(FileText) },
|
|
82107
|
+
{ id: 'purchases', label: 'Purchases', renderIcon: renderLucideIcon(ShoppingBag) },
|
|
81911
82108
|
...(isMemoryEnabled
|
|
81912
82109
|
? [{ id: 'memory', label: 'Memory', renderIcon: renderLucideIcon(Archive) }]
|
|
81913
82110
|
: []),
|
|
@@ -81968,7 +82165,7 @@ function Profile({ tenant, username, onClose, customization = {}, isAdmin = fals
|
|
|
81968
82165
|
? 'bg-blue-50 text-blue-700 font-medium'
|
|
81969
82166
|
: '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
|
|
81970
82167
|
? 'bg-blue-50 text-blue-600 font-medium'
|
|
81971
|
-
: '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 capitalize", children: 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 === 'memory' && 'Manage what the AI remembers about you.', activeTab === 'security' && 'Update your security settings and password.', activeTab === 'advanced' && 'Manage your advanced settings.'] })] }), (activeTab === 'education' ||
|
|
82168
|
+
: '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 capitalize", children: 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 === 'security' && 'Update your security settings and password.', activeTab === 'advanced' && 'Manage your advanced settings.'] })] }), (activeTab === 'education' ||
|
|
81972
82169
|
activeTab === 'experience' ||
|
|
81973
82170
|
activeTab === 'resume') && (jsx(Button$1, { size: "icon", onClick: activeTab === 'education'
|
|
81974
82171
|
? handleAddEducation
|
|
@@ -82055,7 +82252,7 @@ function Profile({ tenant, username, onClose, customization = {}, isAdmin = fals
|
|
|
82055
82252
|
var _a;
|
|
82056
82253
|
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 })] }));
|
|
82057
82254
|
},
|
|
82058
|
-
})] })] }) })), 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 === '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: () => {
|
|
82255
|
+
})] })] }) })), 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: () => {
|
|
82059
82256
|
if (activeTab === 'basic') {
|
|
82060
82257
|
basicForm.handleSubmit();
|
|
82061
82258
|
}
|
|
@@ -83643,23 +83840,6 @@ function InvitedUsersDialog({ tenant, onClose, }) {
|
|
|
83643
83840
|
}, children: jsx(DialogPortal$1, { forceMount: true, children: jsxs(DialogContent$1, { "aria-label": "Invited Users Dialog", className: "max-w-sm rounded-2xl px-6 py-8 pointer-events-auto", "aria-describedby": "invited-users-dialog", children: [jsx(DialogHeader, { className: "relative flex-row justify-between", children: jsx(DialogTitle$1, { className: "text-blue-600 text-xl font-semibold", children: "Invited Users" }) }), jsxs("div", { className: "mt-4 space-y-1", children: [jsx("p", { className: "text-gray-500 text-sm", children: "Showing list of invited users pending confirmation" }), jsx("form", { children: jsx(Input, { value: query, onChange: (event) => setQuery(event.target.value), placeholder: "Search Invited Users", className: "mt-2" }) })] }), jsxs("div", { children: [jsx("h2", { className: "text-md text-gray-600 font-semibold mb-4", children: "Email" }), invitedUsers === null || invitedUsers === void 0 ? void 0 : invitedUsers.results.map((user) => (jsx("div", { className: "border-b-gray-50 pb-2 mb-4 text-sm text-gray-600 dark:text-gray-400", children: user.email }, user.id))), (invitedUsers === null || invitedUsers === void 0 ? void 0 : invitedUsers.results.length) === 0 && (jsx("p", { className: "text-gray", children: "No records found" }))] })] }) }) }));
|
|
83644
83841
|
}
|
|
83645
83842
|
|
|
83646
|
-
const badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
|
|
83647
|
-
variants: {
|
|
83648
|
-
variant: {
|
|
83649
|
-
default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
|
|
83650
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
83651
|
-
destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
|
|
83652
|
-
outline: "text-foreground",
|
|
83653
|
-
},
|
|
83654
|
-
},
|
|
83655
|
-
defaultVariants: {
|
|
83656
|
-
variant: "default",
|
|
83657
|
-
},
|
|
83658
|
-
});
|
|
83659
|
-
function Badge({ className, variant, ...props }) {
|
|
83660
|
-
return (jsx("div", { className: cn(badgeVariants({ variant }), className), ...props }));
|
|
83661
|
-
}
|
|
83662
|
-
|
|
83663
83843
|
function SearchableMultiSelect({ items, selectedItems, onSelectionChange, searchQuery, onSearchChange, isLoading, placeholder = 'Search and select items...', getItemValue, getItemLabel, className, maxHeight = 'max-h-60', inputId, ariaDescribedBy, onSelectedItemAction, selectedItemActionIcon, selectedItemActionAriaLabel = 'View item details', }) {
|
|
83664
83844
|
const [isOpen, setIsOpen] = useState(false);
|
|
83665
83845
|
const containerRef = useRef(null);
|
|
@@ -149212,19 +149392,6 @@ var PieChart = generateCategoricalChart({
|
|
|
149212
149392
|
}
|
|
149213
149393
|
});
|
|
149214
149394
|
|
|
149215
|
-
const Card = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("rounded-lg border bg-card text-card-foreground shadow-sm", className), ...props })));
|
|
149216
|
-
Card.displayName = "Card";
|
|
149217
|
-
const CardHeader = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })));
|
|
149218
|
-
CardHeader.displayName = "CardHeader";
|
|
149219
|
-
const CardTitle = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })));
|
|
149220
|
-
CardTitle.displayName = "CardTitle";
|
|
149221
|
-
const CardDescription = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
|
|
149222
|
-
CardDescription.displayName = "CardDescription";
|
|
149223
|
-
const CardContent = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("p-6 pt-0", className), ...props })));
|
|
149224
|
-
CardContent.displayName = "CardContent";
|
|
149225
|
-
const CardFooter = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, className: cn("flex items-center p-6 pt-0", className), ...props })));
|
|
149226
|
-
CardFooter.displayName = "CardFooter";
|
|
149227
|
-
|
|
149228
149395
|
function StatCard({ title, value, percentage, loading = false, showDollarSign = false, }) {
|
|
149229
149396
|
let paragraph = jsx("p", { className: "text-sm text-[#898989]", children: "No change from last month" });
|
|
149230
149397
|
if (!percentage) {
|
|
@@ -149624,9 +149791,13 @@ const defaultTabs = [
|
|
|
149624
149791
|
value: 'transcripts',
|
|
149625
149792
|
},
|
|
149626
149793
|
{
|
|
149627
|
-
label: '
|
|
149794
|
+
label: 'Costs',
|
|
149628
149795
|
value: 'financial',
|
|
149629
149796
|
},
|
|
149797
|
+
{
|
|
149798
|
+
label: 'Monetization',
|
|
149799
|
+
value: 'monetization',
|
|
149800
|
+
},
|
|
149630
149801
|
];
|
|
149631
149802
|
const className = 'inline-flex items-center justify-center whitespace-nowrap rounded-[5px] px-2 sm:px-2.5 pt-1 pb-0.5 sm:text-sm text-gray-500 ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:text-blue-600 data-[state=active]:font-semibold text-sm font-medium data-[state=active]:bg-[#f5f7fb] data-[state=active]:shadow-none cursor-pointer';
|
|
149632
149803
|
function AnalyticsLayout({ children, currentPath, basePath, onTabChange, tabs = defaultTabs, activeTabClassName = '', beforeDataReports, excludeTabs = [], }) {
|
|
@@ -149651,6 +149822,8 @@ function AnalyticsLayout({ children, currentPath, basePath, onTabChange, tabs =
|
|
|
149651
149822
|
return 'transcripts';
|
|
149652
149823
|
if (path === `${basePath}/financial`)
|
|
149653
149824
|
return 'financial';
|
|
149825
|
+
if (path === `${basePath}/monetization`)
|
|
149826
|
+
return 'monetization';
|
|
149654
149827
|
if (path === `${basePath}/reports`)
|
|
149655
149828
|
return 'reports';
|
|
149656
149829
|
if (path.startsWith(`${basePath}/courses`))
|
|
@@ -186483,6 +186656,171 @@ function GroupsFilterDropdown({ groups, selectedGroupIds, onSelectionChange, isL
|
|
|
186483
186656
|
}) })) }) })] }));
|
|
186484
186657
|
}
|
|
186485
186658
|
|
|
186659
|
+
const useMonetization = ({ tenantKey }) => {
|
|
186660
|
+
const [paywallTypeFilter, setPaywallTypeFilter] = useState('all');
|
|
186661
|
+
const [subscriberStatusFilter, setSubscriberStatusFilter] = useState('all');
|
|
186662
|
+
const [paywallPage, setPaywallPage] = useState(1);
|
|
186663
|
+
const [subscriberPage, setSubscriberPage] = useState(1);
|
|
186664
|
+
const { data: revenueData, isLoading: isLoadingRevenue } = useGetRevenueQuery({ platform_key: tenantKey }, { refetchOnMountOrArgChange: true });
|
|
186665
|
+
const { data: paywallsData, isLoading: isLoadingPaywalls } = useListPaywallsQuery({
|
|
186666
|
+
platform_key: tenantKey,
|
|
186667
|
+
page: paywallPage,
|
|
186668
|
+
page_size: 8,
|
|
186669
|
+
...(paywallTypeFilter !== 'all' ? { item_type: paywallTypeFilter } : {}),
|
|
186670
|
+
}, { refetchOnMountOrArgChange: true });
|
|
186671
|
+
const { data: subscribersData, isLoading: isLoadingSubscribers } = useListSubscribersQuery({
|
|
186672
|
+
platform_key: tenantKey,
|
|
186673
|
+
page: subscriberPage,
|
|
186674
|
+
page_size: 12,
|
|
186675
|
+
...(subscriberStatusFilter !== 'all' ? { status: subscriberStatusFilter } : {}),
|
|
186676
|
+
}, { refetchOnMountOrArgChange: true });
|
|
186677
|
+
// Derive chart data from subscribers
|
|
186678
|
+
const statusDistribution = (() => {
|
|
186679
|
+
if (!(subscribersData === null || subscribersData === void 0 ? void 0 : subscribersData.results))
|
|
186680
|
+
return [];
|
|
186681
|
+
const counts = {};
|
|
186682
|
+
for (const sub of subscribersData.results) {
|
|
186683
|
+
counts[sub.status] = (counts[sub.status] || 0) + 1;
|
|
186684
|
+
}
|
|
186685
|
+
return Object.entries(counts).map(([name, value]) => ({ name, value }));
|
|
186686
|
+
})();
|
|
186687
|
+
const itemTypeDistribution = (() => {
|
|
186688
|
+
if (!(paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.results))
|
|
186689
|
+
return [];
|
|
186690
|
+
const counts = {};
|
|
186691
|
+
for (const pw of paywallsData.results) {
|
|
186692
|
+
counts[pw.item_type] = (counts[pw.item_type] || 0) + 1;
|
|
186693
|
+
}
|
|
186694
|
+
return Object.entries(counts).map(([name, value]) => ({ name, value }));
|
|
186695
|
+
})();
|
|
186696
|
+
const priceDistribution = (() => {
|
|
186697
|
+
if (!(paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.results))
|
|
186698
|
+
return [];
|
|
186699
|
+
return paywallsData.results
|
|
186700
|
+
.filter((pw) => { var _a; return pw.is_enabled && ((_a = pw.prices) === null || _a === void 0 ? void 0 : _a.length) > 0; })
|
|
186701
|
+
.map((pw) => ({
|
|
186702
|
+
name: pw.item_name || pw.item_id,
|
|
186703
|
+
prices: pw.prices.filter((p) => p.is_active).length,
|
|
186704
|
+
itemType: pw.item_type,
|
|
186705
|
+
}));
|
|
186706
|
+
})();
|
|
186707
|
+
const generateResemblingColors = (totalColors) => {
|
|
186708
|
+
const baseColorVariations = [
|
|
186709
|
+
'#2b7fff',
|
|
186710
|
+
'#4d8fff',
|
|
186711
|
+
'#6fa0ff',
|
|
186712
|
+
'#91b1ff',
|
|
186713
|
+
'#b3c2ff',
|
|
186714
|
+
'#1a6fee',
|
|
186715
|
+
'#0961dd',
|
|
186716
|
+
'#0056cc',
|
|
186717
|
+
'#004bbb',
|
|
186718
|
+
'#0040aa',
|
|
186719
|
+
];
|
|
186720
|
+
const colors = [];
|
|
186721
|
+
for (let i = 0; i < totalColors && i < baseColorVariations.length; i++) {
|
|
186722
|
+
colors.push(baseColorVariations[i]);
|
|
186723
|
+
}
|
|
186724
|
+
while (colors.length < totalColors) {
|
|
186725
|
+
const hue = Math.floor(Math.random() * 360);
|
|
186726
|
+
colors.push(`hsl(${hue}, 70%, 50%)`);
|
|
186727
|
+
}
|
|
186728
|
+
return colors;
|
|
186729
|
+
};
|
|
186730
|
+
const statusColors = generateResemblingColors(statusDistribution.length);
|
|
186731
|
+
const itemTypeColors = generateResemblingColors(itemTypeDistribution.length);
|
|
186732
|
+
return {
|
|
186733
|
+
revenueData,
|
|
186734
|
+
isLoadingRevenue,
|
|
186735
|
+
paywallsData,
|
|
186736
|
+
isLoadingPaywalls,
|
|
186737
|
+
subscribersData,
|
|
186738
|
+
isLoadingSubscribers,
|
|
186739
|
+
paywallTypeFilter,
|
|
186740
|
+
setPaywallTypeFilter,
|
|
186741
|
+
subscriberStatusFilter,
|
|
186742
|
+
setSubscriberStatusFilter,
|
|
186743
|
+
paywallPage,
|
|
186744
|
+
setPaywallPage,
|
|
186745
|
+
subscriberPage,
|
|
186746
|
+
setSubscriberPage,
|
|
186747
|
+
statusDistribution,
|
|
186748
|
+
itemTypeDistribution,
|
|
186749
|
+
priceDistribution,
|
|
186750
|
+
statusColors,
|
|
186751
|
+
itemTypeColors,
|
|
186752
|
+
};
|
|
186753
|
+
};
|
|
186754
|
+
|
|
186755
|
+
function statusBadgeStyle(status) {
|
|
186756
|
+
switch (status) {
|
|
186757
|
+
case 'active':
|
|
186758
|
+
return 'bg-blue-100 text-blue-700 border-blue-200 hover:bg-blue-100';
|
|
186759
|
+
case 'trialing':
|
|
186760
|
+
return 'bg-purple-100 text-purple-700 border-purple-200 hover:bg-purple-100';
|
|
186761
|
+
case 'canceled':
|
|
186762
|
+
return 'bg-gray-100 text-gray-500 border-gray-200 hover:bg-gray-100';
|
|
186763
|
+
case 'past_due':
|
|
186764
|
+
return 'bg-red-100 text-red-700 border-red-200 hover:bg-red-100';
|
|
186765
|
+
default:
|
|
186766
|
+
return 'bg-gray-100 text-gray-500 border-gray-200 hover:bg-gray-100';
|
|
186767
|
+
}
|
|
186768
|
+
}
|
|
186769
|
+
function AnalyticsMonetizationStats({ tenantKey }) {
|
|
186770
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
186771
|
+
const { revenueData, isLoadingRevenue, paywallsData, isLoadingPaywalls, subscribersData, isLoadingSubscribers, paywallTypeFilter, setPaywallTypeFilter, subscriberStatusFilter, setSubscriberStatusFilter, paywallPage, setPaywallPage, subscriberPage, setSubscriberPage, statusDistribution, itemTypeDistribution, statusColors, itemTypeColors, } = useMonetization({ tenantKey });
|
|
186772
|
+
return (jsxs("div", { className: "space-y-8", children: [jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-6", children: [jsx(StatCard, { loading: isLoadingRevenue, title: "Total Revenue", value: Number((revenueData === null || revenueData === void 0 ? void 0 : revenueData.sales_volume) || 0).toLocaleString(), showDollarSign: true }), jsx(StatCard, { loading: isLoadingRevenue, title: "Total Sales", value: (_a = revenueData === null || revenueData === void 0 ? void 0 : revenueData.sales_count) !== null && _a !== void 0 ? _a : 0 }), jsx(StatCard, { loading: isLoadingPaywalls, title: "Active Paywalls", value: (_b = paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.count) !== null && _b !== void 0 ? _b : 0 }), jsx(StatCard, { loading: isLoadingSubscribers, title: "Total Subscribers", value: (_c = subscribersData === null || subscribersData === void 0 ? void 0 : subscribersData.count) !== null && _c !== void 0 ? _c : 0 })] }), jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-5", children: [jsx(Card, { className: "w-full bg-white rounded-lg border border-gray-100 overflow-hidden shadow-sm", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Subscription status chart card", children: [jsx("div", { className: "mb-6", children: jsx("h3", { className: "text-base font-medium text-gray-700", children: "Subscribers by Status" }) }), jsx("div", { className: "w-full", style: { height: '350px' }, children: jsx(ChartContainer, { title: "Subscribers by Status", config: {
|
|
186773
|
+
value: {
|
|
186774
|
+
label: 'Subscribers',
|
|
186775
|
+
color: '#38A1E5',
|
|
186776
|
+
},
|
|
186777
|
+
}, children: jsx(ResponsiveContainer, { width: "100%", height: "100%", children: statusDistribution.length > 0 ? (jsxs(PieChart, { children: [jsx(Pie, { data: statusDistribution, cx: "50%", cy: "50%", innerRadius: 60, outerRadius: 80, paddingAngle: 1, dataKey: "value", label: false, startAngle: 90, endAngle: -270, children: statusDistribution.map((_, index) => {
|
|
186778
|
+
var _a;
|
|
186779
|
+
return (jsx(Cell, { fill: (_a = statusColors[index]) !== null && _a !== void 0 ? _a : '#38A1E5', strokeWidth: 0, style: { transition: 'all 0.3s' } }, `cell-${index}`));
|
|
186780
|
+
}) }), jsx(Legend, { verticalAlign: "bottom", height: 36, iconType: "circle", iconSize: 10, wrapperStyle: { paddingTop: '0px' }, fontSize: 13 }), jsx(Tooltip, { content: ({ active, payload }) => {
|
|
186781
|
+
var _a;
|
|
186782
|
+
if (!active || !(payload === null || payload === void 0 ? void 0 : payload.length))
|
|
186783
|
+
return null;
|
|
186784
|
+
const data = (_a = payload[0]) === null || _a === void 0 ? void 0 : _a.payload;
|
|
186785
|
+
return (jsxs("div", { className: "bg-background border border-border rounded-md p-3 shadow-lg z-50", style: { borderColor: 'oklch(.922 0 0)' }, role: "tooltip", tabIndex: -1, children: [jsx("div", { className: "font-medium text-foreground mb-2 text-base capitalize", children: data === null || data === void 0 ? void 0 : data.name }), jsx("div", { className: "space-y-2 text-sm", children: jsxs("div", { className: "flex justify-between items-center gap-4", children: [jsx("span", { className: "text-muted-foreground", children: "Subscribers:" }), jsx("span", { className: "font-medium text-foreground", children: data === null || data === void 0 ? void 0 : data.value })] }) })] }));
|
|
186786
|
+
}, wrapperStyle: { outline: 'none' } })] })) : (jsx(EmptyStats, {})) }) }) })] }) }), jsx(Card, { className: "w-full bg-white rounded-lg border border-gray-100 overflow-hidden shadow-sm", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Paywall item type chart card", children: [jsx("div", { className: "mb-6", children: jsx("h3", { className: "text-base font-medium text-gray-700", children: "Paywalls by Type" }) }), jsx("div", { className: "w-full", style: { height: '350px' }, children: jsx(ChartContainer, { title: "Paywalls by Type", config: {
|
|
186787
|
+
value: {
|
|
186788
|
+
label: 'Paywalls',
|
|
186789
|
+
color: '#38A1E5',
|
|
186790
|
+
},
|
|
186791
|
+
}, children: jsx(ResponsiveContainer, { width: "100%", height: "100%", children: itemTypeDistribution.length > 0 ? (jsxs(PieChart, { children: [jsx(Pie, { data: itemTypeDistribution, cx: "50%", cy: "50%", innerRadius: 60, outerRadius: 80, paddingAngle: 1, dataKey: "value", label: false, startAngle: 90, endAngle: -270, children: itemTypeDistribution.map((_, index) => {
|
|
186792
|
+
var _a;
|
|
186793
|
+
return (jsx(Cell, { fill: (_a = itemTypeColors[index]) !== null && _a !== void 0 ? _a : '#38A1E5', strokeWidth: 0, style: { transition: 'all 0.3s' } }, `cell-${index}`));
|
|
186794
|
+
}) }), jsx(Legend, { verticalAlign: "bottom", height: 36, iconType: "circle", iconSize: 10, wrapperStyle: { paddingTop: '0px' }, fontSize: 13 }), jsx(Tooltip, { content: ({ active, payload }) => {
|
|
186795
|
+
var _a;
|
|
186796
|
+
if (!active || !(payload === null || payload === void 0 ? void 0 : payload.length))
|
|
186797
|
+
return null;
|
|
186798
|
+
const data = (_a = payload[0]) === null || _a === void 0 ? void 0 : _a.payload;
|
|
186799
|
+
return (jsxs("div", { className: "bg-background border border-border rounded-md p-3 shadow-lg z-50", style: { borderColor: 'oklch(.922 0 0)' }, role: "tooltip", tabIndex: -1, children: [jsx("div", { className: "font-medium text-foreground mb-2 text-base capitalize", children: data === null || data === void 0 ? void 0 : data.name }), jsx("div", { className: "space-y-2 text-sm", children: jsxs("div", { className: "flex justify-between items-center gap-4", children: [jsx("span", { className: "text-muted-foreground", children: "Paywalls:" }), jsx("span", { className: "font-medium text-foreground", children: data === null || data === void 0 ? void 0 : data.value })] }) })] }));
|
|
186800
|
+
}, wrapperStyle: { outline: 'none' } })] })) : (jsx(EmptyStats, {})) }) }) })] }) })] }), jsx(Card, { className: "w-full bg-white rounded-lg border border-gray-100 overflow-hidden shadow-sm", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Subscribers table card", children: [jsx("div", { className: "mb-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("h3", { className: "text-base font-medium text-gray-700", children: ["Subscribers (", (_d = subscribersData === null || subscribersData === void 0 ? void 0 : subscribersData.count) !== null && _d !== void 0 ? _d : 0, ")"] }), jsxs(Select$1, { value: subscriberStatusFilter, onValueChange: (v) => {
|
|
186801
|
+
setSubscriberStatusFilter(v);
|
|
186802
|
+
setSubscriberPage(1);
|
|
186803
|
+
}, children: [jsx(SelectTrigger, { className: "w-[130px]", children: jsx(SelectValue, {}) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: "All" }), jsx(SelectItem, { value: "active", children: "Active" }), jsx(SelectItem, { value: "trialing", children: "Trialing" }), jsx(SelectItem, { value: "canceled", children: "Canceled" }), jsx(SelectItem, { value: "past_due", children: "Past Due" })] })] })] }) }), jsx("div", { className: "rounded-md overflow-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: "w-[250px]", children: "Item" }), jsx(TableHead, { className: "w-[100px]", children: "Type" }), jsx(TableHead, { className: "w-[120px]", children: "Plan" }), jsx(TableHead, { className: "w-[100px]", children: "Amount" }), jsx(TableHead, { className: "text-right", children: "Status" })] }) }), jsx(TableBody, { children: (_e = subscribersData === null || subscribersData === void 0 ? void 0 : subscribersData.results) === null || _e === void 0 ? void 0 : _e.map((sub, index) => {
|
|
186804
|
+
var _a, _b, _c;
|
|
186805
|
+
return (jsxs(TableRow, { className: cn(index % 2 === 0 ? 'bg-gray-50' : '', 'h-[48px]'), style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx(TableCell, { className: "font-medium", children: sub.item_name || sub.item_id }), jsx(TableCell, { children: jsx(Badge, { variant: "secondary", className: "text-xs capitalize", children: sub.item_type }) }), jsx(TableCell, { children: (_a = sub.price) === null || _a === void 0 ? void 0 : _a.name }), jsx(TableCell, { children: sub.status === 'grandfathered' ? null : (jsxs(Fragment$1, { children: ["$", (_b = sub.price) === null || _b === void 0 ? void 0 : _b.amount, ((_c = sub.price) === null || _c === void 0 ? void 0 : _c.interval) && sub.price.interval !== 'one_time'
|
|
186806
|
+
? `/${sub.price.interval}`
|
|
186807
|
+
: ''] })) }), jsx(TableCell, { className: "text-right", children: jsx(Badge, { className: statusBadgeStyle(sub.status), children: sub.status }) })] }, sub.unique_id));
|
|
186808
|
+
}) })] }) }), (!((_f = subscribersData === null || subscribersData === void 0 ? void 0 : subscribersData.results) === null || _f === void 0 ? void 0 : _f.length) || ((_g = subscribersData === null || subscribersData === void 0 ? void 0 : subscribersData.results) === null || _g === void 0 ? void 0 : _g.length) === 0) && (jsx("div", { className: "h-[60px]", children: jsx(EmptyStats, {}) })), subscribersData &&
|
|
186809
|
+
(subscribersData.previous_page !== null || subscribersData.next_page !== null) && (jsxs("div", { className: "flex items-center justify-between py-3", children: [jsxs("div", { className: "text-sm text-gray-700", children: [subscribersData.count, " subscriber", subscribersData.count !== 1 ? 's' : '', " total"] }), jsxs("div", { className: "flex items-center space-x-2", children: [jsx(Button$1, { variant: "outline", size: "sm", className: "h-8 text-xs", disabled: subscribersData.previous_page === null, onClick: () => subscribersData.previous_page !== null &&
|
|
186810
|
+
setSubscriberPage(subscribersData.previous_page), children: "Previous" }), jsxs("span", { className: "text-xs text-gray-500", children: ["Page ", subscriberPage] }), jsx(Button$1, { variant: "outline", size: "sm", className: "h-8 text-xs", disabled: subscribersData.next_page === null, onClick: () => subscribersData.next_page !== null &&
|
|
186811
|
+
setSubscriberPage(subscribersData.next_page), children: "Next" })] })] }))] }) }), jsx(Card, { className: "w-full bg-white rounded-lg border border-gray-100 overflow-hidden shadow-sm", style: { borderColor: 'oklch(.922 0 0)' }, children: jsxs(CardContent, { className: "p-4", "aria-label": "Paywalls table card", children: [jsx("div", { className: "mb-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("h3", { className: "text-base font-medium text-gray-700", children: ["Configured Paywalls (", (_h = paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.count) !== null && _h !== void 0 ? _h : 0, ")"] }), jsxs(Select$1, { value: paywallTypeFilter, onValueChange: (v) => {
|
|
186812
|
+
setPaywallTypeFilter(v);
|
|
186813
|
+
setPaywallPage(1);
|
|
186814
|
+
}, children: [jsx(SelectTrigger, { className: "w-[130px]", children: jsx(SelectValue, {}) }), jsxs(SelectContent, { children: [jsx(SelectItem, { value: "all", children: "All Types" }), jsx(SelectItem, { value: "mentor", children: "Mentor" }), jsx(SelectItem, { value: "course", children: "Course" })] })] })] }) }), jsx("div", { className: "rounded-md overflow-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: "w-[250px]", children: "Item" }), jsx(TableHead, { className: "w-[100px]", children: "Type" }), jsx(TableHead, { className: "w-[100px]", children: "Prices" }), jsx(TableHead, { className: "text-right", children: "Status" })] }) }), jsx(TableBody, { children: (_j = paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.results) === null || _j === void 0 ? void 0 : _j.map((pw, index) => {
|
|
186815
|
+
var _a, _b;
|
|
186816
|
+
return (jsxs(TableRow, { className: cn(index % 2 === 0 ? 'bg-gray-50' : '', 'h-[48px]'), style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx(TableCell, { className: "font-medium", children: pw.item_name || pw.item_id }), jsx(TableCell, { children: jsx(Badge, { variant: "secondary", className: "text-xs capitalize", children: pw.item_type }) }), jsxs(TableCell, { children: [(_b = (_a = pw.prices) === null || _a === void 0 ? void 0 : _a.filter((p) => p.is_active).length) !== null && _b !== void 0 ? _b : 0, " active"] }), jsx(TableCell, { className: "text-right", children: jsx(Badge, { className: pw.is_enabled
|
|
186817
|
+
? 'bg-blue-100 text-blue-700 border-blue-200 hover:bg-blue-100'
|
|
186818
|
+
: 'bg-gray-100 text-gray-500 border-gray-200 hover:bg-gray-100', children: pw.is_enabled ? 'Active' : 'Disabled' }) })] }, `${pw.item_type}-${pw.item_id}`));
|
|
186819
|
+
}) })] }) }), (!((_k = paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.results) === null || _k === void 0 ? void 0 : _k.length) || ((_l = paywallsData === null || paywallsData === void 0 ? void 0 : paywallsData.results) === null || _l === void 0 ? void 0 : _l.length) === 0) && (jsx("div", { className: "h-[60px]", children: jsx(EmptyStats, {}) })), paywallsData &&
|
|
186820
|
+
(paywallsData.previous_page !== null || paywallsData.next_page !== null) && (jsxs("div", { className: "flex items-center justify-between py-3", children: [jsxs("div", { className: "text-sm text-gray-700", children: [paywallsData.count, " item", paywallsData.count !== 1 ? 's' : '', " total"] }), jsxs("div", { className: "flex items-center space-x-2", children: [jsx(Button$1, { variant: "outline", size: "sm", className: "h-8 text-xs", disabled: paywallsData.previous_page === null, onClick: () => paywallsData.previous_page !== null &&
|
|
186821
|
+
setPaywallPage(paywallsData.previous_page), children: "Previous" }), jsxs("span", { className: "text-xs text-gray-500", children: ["Page ", paywallPage] }), jsx(Button$1, { variant: "outline", size: "sm", className: "h-8 text-xs", disabled: paywallsData.next_page === null, onClick: () => paywallsData.next_page !== null && setPaywallPage(paywallsData.next_page), children: "Next" })] })] }))] }) })] }));
|
|
186822
|
+
}
|
|
186823
|
+
|
|
186486
186824
|
/**
|
|
186487
186825
|
* LoginButton Component
|
|
186488
186826
|
*
|
|
@@ -186608,6 +186946,54 @@ function Spinner({ size = "md", className }) {
|
|
|
186608
186946
|
return (jsx(LoaderCircle, { className: cn("animate-spin text-blue-500", sizes[size], className) }));
|
|
186609
186947
|
}
|
|
186610
186948
|
|
|
186949
|
+
function formatPrice(amount, currency) {
|
|
186950
|
+
return new Intl.NumberFormat('en-US', {
|
|
186951
|
+
style: 'currency',
|
|
186952
|
+
currency: currency.toUpperCase(),
|
|
186953
|
+
minimumFractionDigits: 0,
|
|
186954
|
+
maximumFractionDigits: 2,
|
|
186955
|
+
}).format(amount);
|
|
186956
|
+
}
|
|
186957
|
+
function formatInterval(interval) {
|
|
186958
|
+
if (interval === 'one_time')
|
|
186959
|
+
return '';
|
|
186960
|
+
return `/${interval}`;
|
|
186961
|
+
}
|
|
186962
|
+
function PaywallModal({ pricing, platformKey, itemId, itemType, open, onClose, closable = true, buttonClassName, }) {
|
|
186963
|
+
const [createCheckout, { isLoading: isCheckoutLoading }] = useCreateCheckoutMutation();
|
|
186964
|
+
const [selectedPriceId, setSelectedPriceId] = useState(null);
|
|
186965
|
+
const activePrices = pricing.prices;
|
|
186966
|
+
const handleCheckout = async (price) => {
|
|
186967
|
+
setSelectedPriceId(price.id);
|
|
186968
|
+
try {
|
|
186969
|
+
const result = await createCheckout({
|
|
186970
|
+
platform_key: platformKey,
|
|
186971
|
+
item_type: itemType,
|
|
186972
|
+
item_id: itemId,
|
|
186973
|
+
price_id: price.id,
|
|
186974
|
+
success_url: window.location.href,
|
|
186975
|
+
cancel_url: window.location.href,
|
|
186976
|
+
}).unwrap();
|
|
186977
|
+
if (result.checkout_url) {
|
|
186978
|
+
window.location.href = result.checkout_url;
|
|
186979
|
+
}
|
|
186980
|
+
}
|
|
186981
|
+
catch (_a) {
|
|
186982
|
+
setSelectedPriceId(null);
|
|
186983
|
+
}
|
|
186984
|
+
};
|
|
186985
|
+
return (jsx(Dialog$1, { open: open, onOpenChange: (isOpen) => {
|
|
186986
|
+
if (!isOpen && closable)
|
|
186987
|
+
onClose();
|
|
186988
|
+
}, children: jsxs(DialogContent$1, { className: cn('max-w-5xl gap-0 overflow-y-auto max-h-[90vh] p-8', !closable && '[&>button.absolute]:hidden'), onPointerDownOutside: (e) => {
|
|
186989
|
+
if (!closable)
|
|
186990
|
+
e.preventDefault();
|
|
186991
|
+
}, onEscapeKeyDown: (e) => {
|
|
186992
|
+
if (!closable)
|
|
186993
|
+
e.preventDefault();
|
|
186994
|
+
}, children: [jsxs(DialogHeader, { className: "text-center sm:text-center mb-8", children: [jsx(DialogTitle$1, { className: "text-3xl font-bold tracking-tight", children: "Choose your plan" }), jsxs(DialogDescription$1, { className: "text-base text-muted-foreground mt-2", children: ["Subscribe to get access to ", pricing.item_name] })] }), jsx("div", { className: cn('grid gap-5', activePrices.length === 1 && 'grid-cols-1 max-w-sm mx-auto', activePrices.length === 2 && 'grid-cols-1 sm:grid-cols-2 max-w-2xl mx-auto', activePrices.length === 3 && 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3', activePrices.length >= 4 && 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4'), children: activePrices.map((price) => (jsxs("div", { className: "rounded-xl bg-muted/50 p-6 flex flex-col gap-5", children: [jsxs("div", { children: [jsx("h3", { className: "text-xl font-bold", children: price.name }), price.description && (jsx("p", { className: "text-sm text-muted-foreground mt-2 leading-relaxed", children: price.description }))] }), jsxs("div", { className: "flex items-baseline gap-1", children: [jsx("span", { className: "text-4xl font-bold tracking-tight", children: formatPrice(price.amount, price.currency) }), price.interval !== 'one_time' && (jsx("span", { className: "text-sm text-muted-foreground", children: formatInterval(price.interval) }))] }), jsx(Button$1, { onClick: () => handleCheckout(price), disabled: isCheckoutLoading, className: cn('w-full h-11 text-sm font-medium', buttonClassName), children: isCheckoutLoading && selectedPriceId === price.id ? 'Redirecting...' : 'Pay' }), price.features.length > 0 && (jsxs("div", { children: [jsx("p", { className: "text-sm font-medium mb-3", children: "This includes:" }), jsx("ul", { className: "space-y-3", children: price.features.map((feature, idx) => (jsxs("li", { className: "flex items-start gap-2.5 text-sm", children: [jsx(CircleCheckBig, { className: "h-4 w-4 text-primary shrink-0 mt-0.5" }), jsx("span", { className: "leading-snug", children: feature })] }, idx))) })] }))] }, price.id))) })] }) }));
|
|
186995
|
+
}
|
|
186996
|
+
|
|
186611
186997
|
function Version({ appName, appVersion, poweredBy, }) {
|
|
186612
186998
|
return (jsx("div", { className: "min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-500 to-blue-200 p-4", children: jsx(Card, { className: "w-full max-w-md shadow-xl rounded-2xl border border-gray-300", children: jsxs(CardContent, { className: "p-6 text-center items-center", children: [jsxs("div", { className: "flex items-center justify-center gap-2 text-gray-700", children: [jsx(Terminal, { className: "w-6 h-6 text-primary" }), jsxs("h1", { className: "text-2xl font-semibold tracking-tight", children: ["ibl.ai ", appName] })] }), jsx(Separator$1, { className: "my-4" }), jsx("p", { className: "text-sm text-muted-foreground mb-2", children: "Current Version" }), jsx(Badge, { className: "text-base px-4 py-1 hover:bg-green-700 hover:text-white rounded-full bg-green-100 text-green-700", children: appVersion }), jsx("div", { className: "w-full text-center mt-auto py-4", children: jsx("div", { className: "flex items-end justify-center text-sm text-gray-500", children: jsxs("span", { className: "flex items-end h-6 text-xs", children: ["Powered by", poweredBy, "in New York"] }) }) })] }) }) }));
|
|
186613
186999
|
}
|
|
@@ -188092,5 +188478,5 @@ var event = /*#__PURE__*/Object.freeze({
|
|
|
188092
188478
|
listen: listen
|
|
188093
188479
|
});
|
|
188094
188480
|
|
|
188095
|
-
export { AccessTimeHeatmap, AlertsTab, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsOverview, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, ChartCardWrapper, ChartFiltersProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CreateWorkflowModal, CustomDateRangePicker, DeleteWorkflowModal, EditAlertDialog, EducationDialog, EducationTab, EmptyStats, ExperienceDialog, ExperienceTab, GroupsFilterDropdown, InstitutionDialog, InviteUserDialog, InvitedUsersDialog, Loader, LocalLLMTab, LoginButton, Markdown, NotificationDisplay, NotificationDropdown, Profile, ResumeTab, RichTextEditor, SearchableMultiSelect, SendNotificationDialog, SignupButton, Spinner, StatCard, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, ToolDialogs, TopBanner, Version, WorkflowSidebar, initialModelDownloadState, isLocalLLMEnabled, isTauriApp, components as markdownComponents, sanitizeCss, setLocalLLMEnabled, useAnalyticsSettings, useChartFilters, useCourses, useFinancial, useIframeMessageHandler, useLocalStorage, useModelDownload, useOverview, usePrograms, useReports, useTauri, useTimeTracking, useTopics, useTranscripts, useUsers };
|
|
188481
|
+
export { AccessTimeHeatmap, AlertsTab, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, ChartCardWrapper, ChartFiltersProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CreateWorkflowModal, CustomDateRangePicker, DeleteWorkflowModal, EditAlertDialog, EducationDialog, EducationTab, EmptyStats, ExperienceDialog, ExperienceTab, GroupsFilterDropdown, InstitutionDialog, InviteUserDialog, InvitedUsersDialog, Loader, LocalLLMTab, LoginButton, Markdown, NotificationDisplay, NotificationDropdown, PaywallModal, Profile, ResumeTab, RichTextEditor, SearchableMultiSelect, SendNotificationDialog, SignupButton, Spinner, StatCard, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, ToolDialogs, TopBanner, Version, WorkflowSidebar, initialModelDownloadState, isLocalLLMEnabled, isTauriApp, components as markdownComponents, sanitizeCss, setLocalLLMEnabled, useAnalyticsSettings, useChartFilters, useCourses, useFinancial, useIframeMessageHandler, useLocalStorage, useModelDownload, useMonetization, useOverview, usePrograms, useReports, useTauri, useTimeTracking, useTopics, useTranscripts, useUsers };
|
|
188096
188482
|
//# sourceMappingURL=index.esm.js.map
|