@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$1l = [
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$1l);
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$1k = [
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$1k);
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$1j = [
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$1j);
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$1i = [
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$1i);
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$1h = [
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$1h);
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$1g = [
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$1g);
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$1f = [
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$1f);
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$1e = [
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$1e);
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$1d = [
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$1d);
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$1c = [
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$1c);
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$1b = [
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$1b);
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$1a = [
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$1a);
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$19 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
49337
- const Check = createLucideIcon("check", __iconNode$19);
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$18 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
49348
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$18);
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$17 = [
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$17);
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$16 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
49373
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$16);
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$15 = [
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$15);
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$14 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
49398
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$14);
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$13 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
49409
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$13);
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$12 = [
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$12);
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$11 = [
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$11);
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$10 = [
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$10);
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$Z = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
49491
- const Circle = createLucideIcon("circle", __iconNode$Z);
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$Y = [
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$Y);
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$X = [
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$X);
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$W = [
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$W);
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$V = [
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$V);
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$U = [
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$U);
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$T = [
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$T);
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$S = [
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$S);
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$R = [
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$R);
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$Q = [
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$Q);
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$P = [
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$P);
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$O = [
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$O);
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$N = [
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$N);
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$M = [
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$M);
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$L = [
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$L);
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$K = [
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$K);
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$J = [
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$J);
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$I = [
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$I);
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$H = [
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$H);
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$G = [
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$G);
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$F = [
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$F);
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$E = [
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$E);
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$D = [
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$D);
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$C = [
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$C);
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$B = [
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$B);
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$A = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
49890
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$A);
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$z = [
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$z);
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$y = [
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$y);
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$x = [
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$x);
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$w = [["polygon", { points: "6 3 20 12 6 21 6 3", key: "1oa8hb" }]];
49954
- const Play = createLucideIcon("play", __iconNode$w);
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$v = [
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$v);
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$u = [
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$u);
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$t = [
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$t);
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$s = [
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$s);
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$r = [
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$r);
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$q = [
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$q);
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$p = [
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$p);
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$o = [
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$o);
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$n = [
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$n);
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$m = [
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$m);
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$l = [
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$l);
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$k = [
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$k);
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$j = [
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$j);
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$i = [
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$i);
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$h = [
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$h);
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$g = [
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$g);
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$f = [
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$f);
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$e = [
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$e);
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$d = [
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$d);
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: 'Financial',
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