@burdenoff/microfe-crewfoundry 2026.1013.1 → 2026.1029.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crewfoundry/CrewFoundryRoot.d.ts.map +1 -1
- package/dist/crewfoundry/CrewFoundryRoot.js +160 -256
- package/dist/crewfoundry/CrewFoundryRoot.js.map +1 -1
- package/dist/crewfoundry/CrewFoundryRoutes.d.ts.map +1 -1
- package/dist/crewfoundry/CrewFoundryRoutes.js +152 -192
- package/dist/crewfoundry/CrewFoundryRoutes.js.map +1 -1
- package/dist/crewfoundry/components/InlineError.d.ts +5 -0
- package/dist/crewfoundry/components/InlineError.d.ts.map +1 -0
- package/dist/crewfoundry/components/InlineError.js +17 -0
- package/dist/crewfoundry/components/InlineError.js.map +1 -0
- package/dist/crewfoundry/components/forms/FormModal.d.ts +25 -1
- package/dist/crewfoundry/components/forms/FormModal.d.ts.map +1 -1
- package/dist/crewfoundry/components/forms/FormModal.js +151 -136
- package/dist/crewfoundry/components/forms/FormModal.js.map +1 -1
- package/dist/crewfoundry/components/marketplace/BookServiceModal.d.ts +14 -0
- package/dist/crewfoundry/components/marketplace/BookServiceModal.d.ts.map +1 -0
- package/dist/crewfoundry/components/marketplace/BookServiceModal.js +75 -0
- package/dist/crewfoundry/components/marketplace/BookServiceModal.js.map +1 -0
- package/dist/crewfoundry/components/marketplace/MarketplaceTabs.d.ts +24 -0
- package/dist/crewfoundry/components/marketplace/MarketplaceTabs.d.ts.map +1 -0
- package/dist/crewfoundry/components/marketplace/MarketplaceTabs.js +47 -0
- package/dist/crewfoundry/components/marketplace/MarketplaceTabs.js.map +1 -0
- package/dist/crewfoundry/components/marketplace/ServiceListingModal.d.ts +12 -0
- package/dist/crewfoundry/components/marketplace/ServiceListingModal.d.ts.map +1 -0
- package/dist/crewfoundry/components/marketplace/ServiceListingModal.js +123 -0
- package/dist/crewfoundry/components/marketplace/ServiceListingModal.js.map +1 -0
- package/dist/crewfoundry/components/viz/CertificateCard.js +4 -118
- package/dist/crewfoundry/components/viz/PathSteps.js +3 -68
- package/dist/crewfoundry/components/viz/lib/geometry.js +5 -13
- package/dist/crewfoundry/components/viz/lib/geometry.js.map +1 -1
- package/dist/crewfoundry/lib/analytics.d.ts +1 -6
- package/dist/crewfoundry/lib/analytics.d.ts.map +1 -1
- package/dist/crewfoundry/lib/analytics.js +3 -18
- package/dist/crewfoundry/lib/analytics.js.map +1 -1
- package/dist/crewfoundry/lib/companyFinance.d.ts +3 -7
- package/dist/crewfoundry/lib/companyFinance.d.ts.map +1 -1
- package/dist/crewfoundry/lib/companyFinance.js +3 -8
- package/dist/crewfoundry/lib/companyFinance.js.map +1 -1
- package/dist/crewfoundry/lib/learning.d.ts +12 -0
- package/dist/crewfoundry/lib/learning.d.ts.map +1 -0
- package/dist/crewfoundry/lib/learning.js +26 -0
- package/dist/crewfoundry/lib/learning.js.map +1 -0
- package/dist/crewfoundry/lib/marketplace.d.ts +30 -0
- package/dist/crewfoundry/lib/marketplace.d.ts.map +1 -0
- package/dist/crewfoundry/lib/marketplace.js +91 -0
- package/dist/crewfoundry/lib/marketplace.js.map +1 -0
- package/dist/crewfoundry/lib/useEnsureLoaded.d.ts +7 -0
- package/dist/crewfoundry/lib/useEnsureLoaded.d.ts.map +1 -0
- package/dist/crewfoundry/lib/useEnsureLoaded.js +25 -0
- package/dist/crewfoundry/lib/useEnsureLoaded.js.map +1 -0
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +12 -25
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +49 -49
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +145 -157
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +14 -14
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +14 -14
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +71 -33
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +260 -115
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +199 -166
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +118 -104
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +247 -173
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.d.ts +12 -0
- package/dist/crewfoundry/pages/LearningCoursesPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +307 -293
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningEnrollmentsPagePage.d.ts +2 -0
- package/dist/crewfoundry/pages/LearningEnrollmentsPagePage.d.ts.map +1 -0
- package/dist/crewfoundry/pages/LearningEnrollmentsPagePage.js +223 -0
- package/dist/crewfoundry/pages/LearningEnrollmentsPagePage.js.map +1 -0
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.d.ts +4 -0
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +115 -160
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +165 -75
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEscrowPagePage.d.ts +7 -0
- package/dist/crewfoundry/pages/MarketplaceEscrowPagePage.d.ts.map +1 -0
- package/dist/crewfoundry/pages/MarketplaceEscrowPagePage.js +175 -0
- package/dist/crewfoundry/pages/MarketplaceEscrowPagePage.js.map +1 -0
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +182 -223
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +168 -227
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +127 -290
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.d.ts +139 -79
- package/dist/crewfoundry/store/crewfoundryStore.d.ts.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.js +323 -244
- package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
- package/dist/crewfoundry/utils/dateUtils.d.ts +52 -0
- package/dist/crewfoundry/utils/dateUtils.d.ts.map +1 -0
- package/dist/crewfoundry/utils/dateUtils.js +31 -0
- package/dist/crewfoundry/utils/dateUtils.js.map +1 -0
- package/dist/generated/global-types.d.ts +5145 -1627
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/wspace-types.d.ts +100373 -34602
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/utils/pageContext.d.ts.map +1 -1
- package/dist/utils/pageContext.js +0 -1
- package/dist/utils/pageContext.js.map +1 -1
- package/package.json +1 -1
- package/dist/crewfoundry/components/viz/CertificateCard.js.map +0 -1
- package/dist/crewfoundry/components/viz/PathSteps.js.map +0 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +0 -53
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +0 -107
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +0 -62
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +0 -37
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +0 -111
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +0 -309
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningLearningPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +0 -200
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +0 -190
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +0 -230
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +0 -293
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +0 -163
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.d.ts +0 -2
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +0 -365
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +0 -224
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +0 -180
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +0 -38
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +0 -204
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +0 -55
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +0 -335
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +0 -160
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +0 -80
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +0 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.d.ts +0 -2
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.d.ts.map +0 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +0 -191
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +0 -1
- package/dist/crewfoundry/utils/courseProgress.d.ts +0 -33
- package/dist/crewfoundry/utils/courseProgress.d.ts.map +0 -1
- package/dist/crewfoundry/utils/courseProgress.js +0 -46
- package/dist/crewfoundry/utils/courseProgress.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageContext.d.ts","sourceRoot":"","sources":["../../src/utils/pageContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAE1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAoB/C;
|
|
1
|
+
{"version":3,"file":"pageContext.d.ts","sourceRoot":"","sources":["../../src/utils/pageContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAE1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAoB/C;AA2BD,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,wBAAwB,CA2B1B"}
|
|
@@ -20,7 +20,6 @@ var t = [
|
|
|
20
20
|
["teams/team-settings-page", "CREWFOUNDRY_TEAM"],
|
|
21
21
|
["projects/project-details-page", "CREWFOUNDRY_PROJECT"],
|
|
22
22
|
["learning/course-details-page", "CREWFOUNDRY_COURSE"],
|
|
23
|
-
["learning/course-learning-page", "CREWFOUNDRY_COURSE"],
|
|
24
23
|
["marketplace/service-details-page", "CREWFOUNDRY_SERVICE"]
|
|
25
24
|
];
|
|
26
25
|
function n(e, n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageContext.js","names":[],"sources":["../../src/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering for CrewFoundry.\n *\n * Captures the user's current browser context to be sent alongside every\n * assistant prompt for better AI awareness.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` matches the agent's allowed-context-key contract.\n currentUrl: string;\n currentPage: string;\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveCrewFoundryConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'crewfoundry',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.704.1',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\n/**\n * Detail surfaces that identify a single record, keyed by their `<section>/<page>`\n * route.\n *\n * Every detail route in `CrewFoundryRoutes` is a flat two-segment path with the\n * record id in the `id` SEARCH PARAM — `/crewfoundry/hiring/job-details-page?id=…`\n * — never a path segment. Matching is done on the last two path segments rather\n * than an absolute path so the mapping survives the shell mounting the MFE under\n * a different `basePath`.\n *\n * `CREWFOUNDRY_CANDIDATE` is deliberately absent: candidates are selected inside\n * `hiring/candidates-page` without writing an id to the URL, so no navigable\n * location identifies one. Adding a pattern for it would only ever produce a\n * context key that never fires.\n */\nconst ENTITY_ROUTES: ReadonlyArray<readonly [route: string, entityType: string]> = [\n ['hiring/job-details-page', 'CREWFOUNDRY_JOB_POSTING'],\n ['hr/employee-profile-page', 'CREWFOUNDRY_EMPLOYEE'],\n ['teams/team-detail-page', 'CREWFOUNDRY_TEAM'],\n ['teams/team-settings-page', 'CREWFOUNDRY_TEAM'],\n ['projects/project-details-page', 'CREWFOUNDRY_PROJECT'],\n ['learning/course-details-page', 'CREWFOUNDRY_COURSE'],\n ['
|
|
1
|
+
{"version":3,"file":"pageContext.js","names":[],"sources":["../../src/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering for CrewFoundry.\n *\n * Captures the user's current browser context to be sent alongside every\n * assistant prompt for better AI awareness.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` matches the agent's allowed-context-key contract.\n currentUrl: string;\n currentPage: string;\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveCrewFoundryConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'crewfoundry',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.704.1',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\n/**\n * Detail surfaces that identify a single record, keyed by their `<section>/<page>`\n * route.\n *\n * Every detail route in `CrewFoundryRoutes` is a flat two-segment path with the\n * record id in the `id` SEARCH PARAM — `/crewfoundry/hiring/job-details-page?id=…`\n * — never a path segment. Matching is done on the last two path segments rather\n * than an absolute path so the mapping survives the shell mounting the MFE under\n * a different `basePath`.\n *\n * `CREWFOUNDRY_CANDIDATE` is deliberately absent: candidates are selected inside\n * `hiring/candidates-page` without writing an id to the URL, so no navigable\n * location identifies one. Adding a pattern for it would only ever produce a\n * context key that never fires.\n */\nconst ENTITY_ROUTES: ReadonlyArray<readonly [route: string, entityType: string]> = [\n ['hiring/job-details-page', 'CREWFOUNDRY_JOB_POSTING'],\n ['hr/employee-profile-page', 'CREWFOUNDRY_EMPLOYEE'],\n ['teams/team-detail-page', 'CREWFOUNDRY_TEAM'],\n ['teams/team-settings-page', 'CREWFOUNDRY_TEAM'],\n ['projects/project-details-page', 'CREWFOUNDRY_PROJECT'],\n ['learning/course-details-page', 'CREWFOUNDRY_COURSE'],\n ['marketplace/service-details-page', 'CREWFOUNDRY_SERVICE'],\n];\n\nexport function resolveCrewFoundryConversationContext(\n pathname: string,\n search: string\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n const segments = pathname.split('/').filter(Boolean);\n const route = segments.slice(-2).join('/');\n const entityId = params.get('id');\n\n if (entityId) {\n const matched = ENTITY_ROUTES.find(([candidateRoute]) => candidateRoute === route);\n if (matched) {\n return {\n entityType: matched[1],\n entityId,\n metadata: { route },\n };\n }\n }\n\n const activeTab =\n params.get('tab') ?? (segments.length > 2 ? segments[segments.length - 1] : undefined);\n\n return {\n activeTab: activeTab ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n ...(params.get('selectedId') ? { selectedId: params.get('selectedId') } : {}),\n },\n };\n}\n"],"mappings":";AA2BA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CACvC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,OACjB;AAED,QAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,UAAU;EACV,SAA6C;EAC7C,cAAc,GAAG,OAAO,WAAW,GAAG,OAAO;EAC7C,WAAW,UAAU;EACrB,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;;AAkBH,IAAM,IAA6E;CACjF,CAAC,2BAA2B,0BAA0B;CACtD,CAAC,4BAA4B,uBAAuB;CACpD,CAAC,0BAA0B,mBAAmB;CAC9C,CAAC,4BAA4B,mBAAmB;CAChD,CAAC,iCAAiC,sBAAsB;CACxD,CAAC,gCAAgC,qBAAqB;CACtD,CAAC,oCAAoC,sBAAsB;CAC5D;AAED,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,EAAO,EACpC,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,EAC9C,IAAQ,EAAS,MAAM,GAAG,CAAC,KAAK,IAAI,EACpC,IAAW,EAAO,IAAI,KAAK;AAEjC,KAAI,GAAU;EACZ,IAAM,IAAU,EAAc,MAAM,CAAC,OAAoB,MAAmB,EAAM;AAClF,MAAI,EACF,QAAO;GACL,YAAY,EAAQ;GACpB;GACA,UAAU,EAAE,UAAO;GACpB;;CAIL,IAAM,IACJ,EAAO,IAAI,MAAM,KAAK,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;AAE9E,QAAO;EACL,WAAW,KAAa,KAAA;EACxB,UAAU;GACR,GAAI,IAAY,EAAE,cAAW,GAAG,EAAE;GAClC,GAAI,EAAO,IAAI,aAAa,GAAG,EAAE,YAAY,EAAO,IAAI,aAAa,EAAE,GAAG,EAAE;GAC7E;EACF"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CertificateCard.js","names":[],"sources":["../../../../src/crewfoundry/components/viz/CertificateCard.tsx"],"sourcesContent":["import { Download } from 'lucide-react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\nimport { starPath } from './lib/geometry';\n\nexport interface CertificateCardProps {\n title: string;\n recipient: string;\n date: string;\n issuer?: string;\n credentialId?: string;\n /** When provided, renders a download button wired to this handler. */\n onDownload?: () => void;\n downloadLabel?: string;\n className?: string;\n}\n\n/** Decorative award seal (hand-drawn SVG, tokenized via currentColor). */\nfunction Seal() {\n return (\n <svg\n viewBox=\"0 0 48 60\"\n width={48}\n height={60}\n aria-hidden=\"true\"\n style={{ color: ACCENT, display: 'block' }}\n >\n <path d=\"M18 38 L18 58 L24 52 L30 58 L30 38 Z\" fill=\"currentColor\" opacity={0.85} />\n <circle cx=\"24\" cy=\"22\" r=\"19\" fill=\"currentColor\" opacity={0.1} />\n <circle cx=\"24\" cy=\"22\" r=\"19\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} />\n <circle\n cx=\"24\"\n cy=\"22\"\n r=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1}\n opacity={0.5}\n />\n <path d={starPath(24, 22, 9, 3.8)} fill=\"currentColor\" />\n </svg>\n );\n}\n\n/** Landscape certificate tile with seal, recipient, date and download affordance. */\nexport function CertificateCard({\n title,\n recipient,\n date,\n issuer,\n credentialId,\n onDownload,\n downloadLabel = 'Download',\n className,\n}: CertificateCardProps) {\n return (\n <div\n className={cn(\n 'relative flex flex-col gap-4 rounded-[var(--radius-card)] border-2 border-border-default bg-bg-surface p-5 shadow-elevation-1',\n 'before:pointer-events-none before:absolute before:inset-1.5 before:rounded-[calc(var(--radius-card)-4px)] before:border before:border-border-subtle before:content-[\"\"]',\n className\n )}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-muted\">\n Certificate of Completion\n </p>\n <h3 className=\"mt-1 truncate text-lg font-semibold text-text-primary\" title={title}>\n {title}\n </h3>\n </div>\n <Seal />\n </div>\n\n <div className=\"min-w-0\">\n <p className=\"text-xs text-text-muted\">Awarded to</p>\n <p className=\"truncate text-base font-medium text-text-primary\" title={recipient}>\n {recipient}\n </p>\n </div>\n\n <div className=\"flex flex-wrap items-end justify-between gap-3 border-t border-border-subtle pt-3\">\n <div className=\"flex flex-col gap-0.5 text-xs text-text-muted\">\n <span>\n Issued <span className=\"text-text-secondary\">{date}</span>\n {issuer ? (\n <>\n {' · '}\n <span className=\"text-text-secondary\">{issuer}</span>\n </>\n ) : null}\n </span>\n {credentialId ? <span className=\"tabular-nums\">ID: {credentialId}</span> : null}\n </div>\n {onDownload ? (\n <Button variant=\"outline\" size=\"sm\" onClick={onDownload}>\n <Download aria-hidden=\"true\" className=\"h-4 w-4\" />\n {downloadLabel}\n </Button>\n ) : null}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAmBA,SAAS,IAAO;AACd,QACE,kBAAC,OAAD;EACE,SAAQ;EACR,OAAO;EACP,QAAQ;EACR,eAAY;EACZ,OAAO;GAAE,OAAO;GAAQ,SAAS;GAAS;YAL5C;GAOE,kBAAC,QAAD;IAAM,GAAE;IAAuC,MAAK;IAAe,SAAS;IAAQ,CAAA;GACpF,kBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;IAAK,MAAK;IAAe,SAAS;IAAO,CAAA;GACnE,kBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;IAAK,MAAK;IAAO,QAAO;IAAe,aAAa;IAAK,CAAA;GACnF,kBAAC,UAAD;IACE,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;IACL,QAAO;IACP,aAAa;IACb,SAAS;IACT,CAAA;GACF,kBAAC,QAAD;IAAM,GAAG,EAAS,IAAI,IAAI,GAAG,IAAI;IAAE,MAAK;IAAiB,CAAA;GACrD;;;AAKV,SAAgB,EAAgB,EAC9B,UACA,cACA,SACA,WACA,iBACA,eACA,mBAAgB,YAChB,gBACuB;AACvB,QACE,kBAAC,OAAD;EACE,WAAW,EACT,iIACA,6KACA,EACD;YALH;GAOE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,KAAD;MAAG,WAAU;gBAA8D;MAEvE,CAAA,EACJ,kBAAC,MAAD;MAAI,WAAU;MAA+D;gBAC1E;MACE,CAAA,CACD;QACN,kBAAC,GAAD,EAAQ,CAAA,CACJ;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,KAAD;KAAG,WAAU;eAA0B;KAAc,CAAA,EACrD,kBAAC,KAAD;KAAG,WAAU;KAAmD,OAAO;eACpE;KACC,CAAA,CACA;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAA,UAAA;MAAM;MACG,kBAAC,QAAD;OAAM,WAAU;iBAAuB;OAAY,CAAA;MACzD,IACC,kBAAA,GAAA,EAAA,UAAA,CACG,OACD,kBAAC,QAAD;OAAM,WAAU;iBAAuB;OAAc,CAAA,CACpD,EAAA,CAAA,GACD;MACC,EAAA,CAAA,EACN,IAAe,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAA+B,QAAK,EAAoB;UAAG,KACvE;QACL,IACC,kBAAC,GAAD;KAAQ,SAAQ;KAAU,MAAK;KAAK,SAAS;eAA7C,CACE,kBAAC,GAAD;MAAU,eAAY;MAAO,WAAU;MAAY,CAAA,EAClD,EACM;SACP,KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PathSteps.js","names":[],"sources":["../../../../src/crewfoundry/components/viz/PathSteps.tsx"],"sourcesContent":["import { Check, Lock } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\n\nexport type PathStepState = 'done' | 'active' | 'todo' | 'locked';\n\nexport interface PathStep {\n label: string;\n meta?: string;\n state?: PathStepState;\n}\n\nexport interface PathStepsProps {\n steps: PathStep[];\n className?: string;\n}\n\n/**\n * A sequence of course nodes (circles + labels + connectors) for a learning\n * path. Each node carries its own state; the connector into a node is filled\n * once that node is complete. Scrolls horizontally on narrow screens.\n */\nexport function PathSteps({ steps, className }: PathStepsProps) {\n if (steps.length === 0) {\n return null;\n }\n return (\n <ol\n className={cn('flex items-start overflow-x-auto pb-1', className)}\n aria-label=\"Learning path\"\n >\n {steps.map((step, i) => {\n const state = step.state ?? 'todo';\n const connectorFilled = state === 'done';\n return (\n <li\n key={`${step.label}-${i}`}\n className=\"flex min-w-[5.5rem] flex-1 flex-col items-center\"\n aria-current={state === 'active' ? 'step' : undefined}\n >\n <div className=\"flex w-full items-center\">\n {i > 0 ? (\n <span\n aria-hidden=\"true\"\n className=\"h-0.5 flex-1 rounded-full\"\n style={{\n backgroundColor: connectorFilled ? ACCENT : 'var(--color-border-subtle)',\n }}\n />\n ) : (\n <span className=\"flex-1\" aria-hidden=\"true\" />\n )}\n <span\n className={cn(\n 'flex h-9 w-9 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold transition-colors',\n state === 'done' && 'border-transparent text-text-inverse',\n state === 'active' && 'bg-bg-surface shadow-elevation-1',\n state === 'todo' && 'border-border-default bg-bg-surface text-text-secondary',\n state === 'locked' && 'border-border-subtle bg-bg-sunken text-text-muted'\n )}\n style={\n state === 'done'\n ? { backgroundColor: ACCENT }\n : state === 'active'\n ? { borderColor: ACCENT, color: ACCENT }\n : undefined\n }\n >\n {state === 'done' ? (\n <Check aria-hidden=\"true\" className=\"h-4 w-4\" />\n ) : state === 'locked' ? (\n <Lock aria-hidden=\"true\" className=\"h-3.5 w-3.5\" />\n ) : (\n i + 1\n )}\n </span>\n {i < steps.length - 1 ? (\n <span\n aria-hidden=\"true\"\n className=\"h-0.5 flex-1 rounded-full\"\n style={{\n backgroundColor: state === 'done' ? ACCENT : 'var(--color-border-subtle)',\n }}\n />\n ) : (\n <span className=\"flex-1\" aria-hidden=\"true\" />\n )}\n </div>\n <span\n className={cn(\n 'mt-2 max-w-[7rem] truncate px-1 text-center text-xs',\n state === 'locked' ? 'text-text-muted' : 'font-medium text-text-primary'\n )}\n title={step.label}\n >\n {step.label}\n </span>\n {step.meta ? (\n <span className=\"mt-0.5 px-1 text-center text-[11px] text-text-muted\">\n {step.meta}\n </span>\n ) : null}\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":";;;;;AAsBA,SAAgB,EAAU,EAAE,UAAO,gBAA6B;AAI9D,QAHI,EAAM,WAAW,IACZ,OAGP,kBAAC,MAAD;EACE,WAAW,EAAG,yCAAyC,EAAU;EACjE,cAAW;YAEV,EAAM,KAAK,GAAM,MAAM;GACtB,IAAM,IAAQ,EAAK,SAAS;AAE5B,UACE,kBAAC,MAAD;IAEE,WAAU;IACV,gBAAc,MAAU,WAAW,SAAS,KAAA;cAH9C;KAKE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACG,IAAI,IACH,kBAAC,QAAD;QACE,eAAY;QACZ,WAAU;QACV,OAAO,EACL,iBAbY,MAAU,SAaa,IAAS,8BAC7C;QACD,CAAA,GAEF,kBAAC,QAAD;QAAM,WAAU;QAAS,eAAY;QAAS,CAAA;OAEhD,kBAAC,QAAD;QACE,WAAW,EACT,mHACA,MAAU,UAAU,wCACpB,MAAU,YAAY,oCACtB,MAAU,UAAU,2DACpB,MAAU,YAAY,oDACvB;QACD,OACE,MAAU,SACN,EAAE,iBAAiB,GAAQ,GAC3B,MAAU,WACR;SAAE,aAAa;SAAQ,OAAO;SAAQ,GACtC,KAAA;kBAGP,MAAU,SACT,kBAAC,GAAD;SAAO,eAAY;SAAO,WAAU;SAAY,CAAA,GAC9C,MAAU,WACZ,kBAAC,GAAD;SAAM,eAAY;SAAO,WAAU;SAAgB,CAAA,GAEnD,IAAI;QAED,CAAA;OACN,IAAI,EAAM,SAAS,IAClB,kBAAC,QAAD;QACE,eAAY;QACZ,WAAU;QACV,OAAO,EACL,iBAAiB,MAAU,SAAS,IAAS,8BAC9C;QACD,CAAA,GAEF,kBAAC,QAAD;QAAM,WAAU;QAAS,eAAY;QAAS,CAAA;OAE5C;;KACN,kBAAC,QAAD;MACE,WAAW,EACT,uDACA,MAAU,WAAW,oBAAoB,gCAC1C;MACD,OAAO,EAAK;gBAEX,EAAK;MACD,CAAA;KACN,EAAK,OACJ,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAK;MACD,CAAA,GACL;KACD;MAlEE,GAAG,EAAK,MAAM,GAAG,IAkEnB;IAEP;EACC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationsCallsPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/CommunicationsCallsPagePage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,2BAA2B,gCAiD1C"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Phone as e } from "lucide-react";
|
|
2
|
-
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
-
import { Badge as r, Button as i, Card as a, CardContent as o, CardHeader as s, CardTitle as c, GradientText as l, IllustratedEmptyState as u, PagePurpose as d } from "@burdenoff/fe-libs/ui";
|
|
4
|
-
import { useGlobalUi as f } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
5
|
-
//#region src/crewfoundry/pages/CommunicationsCallsPagePage.tsx
|
|
6
|
-
function p() {
|
|
7
|
-
let { showToast: p } = f();
|
|
8
|
-
return /* @__PURE__ */ n("div", {
|
|
9
|
-
className: "space-y-6 p-6",
|
|
10
|
-
children: [/* @__PURE__ */ n("div", {
|
|
11
|
-
className: "flex items-center justify-between",
|
|
12
|
-
children: [/* @__PURE__ */ n("div", { children: [
|
|
13
|
-
/* @__PURE__ */ t("h1", {
|
|
14
|
-
className: "text-2xl font-semibold",
|
|
15
|
-
children: /* @__PURE__ */ t(l, { children: "Calls" })
|
|
16
|
-
}),
|
|
17
|
-
/* @__PURE__ */ t("p", {
|
|
18
|
-
className: "text-sm text-text-secondary",
|
|
19
|
-
children: "Voice call history and quick dial"
|
|
20
|
-
}),
|
|
21
|
-
/* @__PURE__ */ t(d, {
|
|
22
|
-
className: "mt-1",
|
|
23
|
-
children: "Review your call history and start new voice calls with colleagues — a quick way to reach teammates without leaving CrewFoundry."
|
|
24
|
-
})
|
|
25
|
-
] }), /* @__PURE__ */ n("div", {
|
|
26
|
-
className: "flex items-center gap-2",
|
|
27
|
-
children: [/* @__PURE__ */ t(r, {
|
|
28
|
-
variant: "secondary",
|
|
29
|
-
className: "text-[10px]",
|
|
30
|
-
children: "Coming soon"
|
|
31
|
-
}), /* @__PURE__ */ n(i, {
|
|
32
|
-
size: "sm",
|
|
33
|
-
onClick: () => p("Voice calling is on the CrewFoundry roadmap — coming soon.", "info"),
|
|
34
|
-
children: [/* @__PURE__ */ t(e, { className: "mr-1 h-4 w-4" }), "New Call"]
|
|
35
|
-
})]
|
|
36
|
-
})]
|
|
37
|
-
}), /* @__PURE__ */ n(a, { children: [/* @__PURE__ */ t(s, { children: /* @__PURE__ */ t(c, { children: "Call History" }) }), /* @__PURE__ */ t(o, {
|
|
38
|
-
className: "p-0",
|
|
39
|
-
children: /* @__PURE__ */ t("div", {
|
|
40
|
-
className: "p-6",
|
|
41
|
-
children: /* @__PURE__ */ t(u, {
|
|
42
|
-
illustration: "empty-notifications",
|
|
43
|
-
title: "Voice calling is coming soon",
|
|
44
|
-
description: "In-app voice calls are on the CrewFoundry roadmap. Once the telephony backend ships, your call history and quick dial will appear here."
|
|
45
|
-
})
|
|
46
|
-
})
|
|
47
|
-
})] })]
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
//#endregion
|
|
51
|
-
export { p as CommunicationsCallsPagePage };
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=CommunicationsCallsPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationsCallsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CommunicationsCallsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Phone } from 'lucide-react';\nimport { useGlobalUi } from '@burdenoff/fe-libs/shared/providers/shell';\n\nexport function CommunicationsCallsPagePage() {\n const { showToast } = useGlobalUi();\n\n // Voice calling is a planned surface — no telephony backend exists yet, so the\n // dial controls honestly signal their roadmap status. Call history is not\n // fabricated in the meantime.\n const notifyComingSoon = () =>\n showToast('Voice calling is on the CrewFoundry roadmap — coming soon.', 'info');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Calls</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Voice call history and quick dial</p>\n <PagePurpose className=\"mt-1\">\n Review your call history and start new voice calls with colleagues — a quick way to\n reach teammates without leaving CrewFoundry.\n </PagePurpose>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n Coming soon\n </Badge>\n <Button size=\"sm\" onClick={notifyComingSoon}>\n <Phone className=\"mr-1 h-4 w-4\" />\n New Call\n </Button>\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Call History</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title=\"Voice calling is coming soon\"\n description=\"In-app voice calls are on the CrewFoundry roadmap. Once the telephony backend ships, your call history and quick dial will appear here.\"\n />\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAcA,SAAgB,IAA8B;CAC5C,IAAM,EAAE,iBAAc,GAAa;AAQnC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,SAAoB,CAAA;KAC/B,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAAqC,CAAA;IAChF,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAO,SAAQ;KAAY,WAAU;eAAc;KAE3C,CAAA,EACR,kBAAC,GAAD;KAAQ,MAAK;KAAK,eAnBxB,EAAU,8DAA8D,OAAO;eAmBzE,CACE,kBAAC,GAAD,EAAO,WAAU,gBAAiB,CAAA,EAAA,WAE3B;OACL;MACF;MAEN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,gBAAwB,CAAA,EACxB,CAAA,EACb,kBAAC,GAAD;GAAa,WAAU;aACrB,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KACE,cAAa;KACb,OAAM;KACN,aAAY;KACZ,CAAA;IACE,CAAA;GACM,CAAA,CACT,EAAA,CAAA,CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationsMessagesPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/CommunicationsMessagesPagePage.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,8BAA8B,gCAsF7C"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
-
import { AvatarStack as t } from "../components/viz/AvatarStack.js";
|
|
3
|
-
import "../components/viz/index.js";
|
|
4
|
-
import { useMemo as n } from "react";
|
|
5
|
-
import { MessageSquare as r } from "lucide-react";
|
|
6
|
-
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
7
|
-
import { Badge as o, Button as s, CardContent as c, CardHeader as l, CardTitle as u, GlassCard as d, GradientText as f, IllustratedEmptyState as p, PagePurpose as m } from "@burdenoff/fe-libs/ui";
|
|
8
|
-
import { useGlobalUi as h } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
|
-
import { formatRelativeTime as g } from "@burdenoff/fe-libs/shared/utils";
|
|
10
|
-
//#region src/crewfoundry/pages/CommunicationsMessagesPagePage.tsx
|
|
11
|
-
var _ = (e) => {
|
|
12
|
-
if (!e) return "";
|
|
13
|
-
try {
|
|
14
|
-
return g(e);
|
|
15
|
-
} catch {
|
|
16
|
-
return e;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
function v() {
|
|
20
|
-
let { showToast: g } = h(), { notifications: v } = e(), y = n(() => v.filter((e) => e.category === "communications"), [v]);
|
|
21
|
-
return /* @__PURE__ */ a("div", {
|
|
22
|
-
className: "space-y-6 p-6",
|
|
23
|
-
children: [/* @__PURE__ */ a("div", {
|
|
24
|
-
className: "flex items-center justify-between",
|
|
25
|
-
children: [/* @__PURE__ */ a("div", { children: [
|
|
26
|
-
/* @__PURE__ */ i("h1", {
|
|
27
|
-
className: "text-2xl font-semibold",
|
|
28
|
-
children: /* @__PURE__ */ i(f, { children: "Messages" })
|
|
29
|
-
}),
|
|
30
|
-
/* @__PURE__ */ a("p", {
|
|
31
|
-
className: "text-sm text-text-secondary",
|
|
32
|
-
children: [
|
|
33
|
-
y.length,
|
|
34
|
-
" active",
|
|
35
|
-
" ",
|
|
36
|
-
y.length === 1 ? "conversation" : "conversations"
|
|
37
|
-
]
|
|
38
|
-
}),
|
|
39
|
-
/* @__PURE__ */ i(m, {
|
|
40
|
-
className: "mt-1",
|
|
41
|
-
children: "Chat directly with colleagues and keep conversations in one thread — use it for quick questions, follow-ups, and day-to-day coordination."
|
|
42
|
-
})
|
|
43
|
-
] }), /* @__PURE__ */ a("div", {
|
|
44
|
-
className: "flex items-center gap-2",
|
|
45
|
-
children: [/* @__PURE__ */ i(o, {
|
|
46
|
-
variant: "secondary",
|
|
47
|
-
className: "text-[10px]",
|
|
48
|
-
children: "Reply coming soon"
|
|
49
|
-
}), /* @__PURE__ */ a(s, {
|
|
50
|
-
size: "sm",
|
|
51
|
-
onClick: () => g("Sending messages is on the CrewFoundry roadmap — coming soon.", "info"),
|
|
52
|
-
children: [/* @__PURE__ */ i(r, { className: "mr-1 h-4 w-4" }), "New Message"]
|
|
53
|
-
})]
|
|
54
|
-
})]
|
|
55
|
-
}), /* @__PURE__ */ a(d, {
|
|
56
|
-
treatment: "glass",
|
|
57
|
-
glow: !0,
|
|
58
|
-
className: "border-border-seam",
|
|
59
|
-
children: [/* @__PURE__ */ i(l, { children: /* @__PURE__ */ i(u, { children: "Conversation Inbox" }) }), /* @__PURE__ */ i(c, {
|
|
60
|
-
className: "p-0",
|
|
61
|
-
children: y.length === 0 ? /* @__PURE__ */ i("div", {
|
|
62
|
-
className: "p-6",
|
|
63
|
-
children: /* @__PURE__ */ i(p, {
|
|
64
|
-
illustration: "empty-notifications",
|
|
65
|
-
title: "No conversations yet",
|
|
66
|
-
description: "Team channels and threads appear here as they get activity. Direct replies are on the CrewFoundry roadmap."
|
|
67
|
-
})
|
|
68
|
-
}) : /* @__PURE__ */ i("ul", {
|
|
69
|
-
className: "divide-y divide-border-subtle",
|
|
70
|
-
children: y.map((e) => /* @__PURE__ */ a("li", {
|
|
71
|
-
className: "flex items-start gap-3 p-4 transition-colors hover:bg-bg-sunken",
|
|
72
|
-
children: [
|
|
73
|
-
/* @__PURE__ */ i(t, {
|
|
74
|
-
people: [{ name: e.title }],
|
|
75
|
-
size: 40
|
|
76
|
-
}),
|
|
77
|
-
/* @__PURE__ */ a("div", {
|
|
78
|
-
className: "min-w-0 flex-1",
|
|
79
|
-
children: [/* @__PURE__ */ a("div", {
|
|
80
|
-
className: "flex items-center justify-between gap-2",
|
|
81
|
-
children: [/* @__PURE__ */ i("p", {
|
|
82
|
-
className: "truncate text-sm font-medium",
|
|
83
|
-
children: e.title
|
|
84
|
-
}), /* @__PURE__ */ i("span", {
|
|
85
|
-
className: "shrink-0 text-xs text-text-muted",
|
|
86
|
-
children: _(e.createdAt)
|
|
87
|
-
})]
|
|
88
|
-
}), /* @__PURE__ */ i("p", {
|
|
89
|
-
className: "truncate text-xs text-text-secondary",
|
|
90
|
-
children: e.message
|
|
91
|
-
})]
|
|
92
|
-
}),
|
|
93
|
-
!e.read && /* @__PURE__ */ i("span", {
|
|
94
|
-
className: "mt-2 h-2 w-2 shrink-0 rounded-full bg-status-success-text",
|
|
95
|
-
"aria-label": "Unread"
|
|
96
|
-
})
|
|
97
|
-
]
|
|
98
|
-
}, e.id))
|
|
99
|
-
})
|
|
100
|
-
})]
|
|
101
|
-
})]
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
//#endregion
|
|
105
|
-
export { v as CommunicationsMessagesPagePage };
|
|
106
|
-
|
|
107
|
-
//# sourceMappingURL=CommunicationsMessagesPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationsMessagesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CommunicationsMessagesPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n Badge,\n Button,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { useGlobalUi } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { formatRelativeTime } from '@burdenoff/fe-libs/shared/utils';\nimport { MessageSquare } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { AvatarStack } from '../components/viz';\n\nconst relativeTime = (value: string): string => {\n if (!value) {\n return '';\n }\n try {\n return formatRelativeTime(value);\n } catch {\n return value;\n }\n};\n\nexport function CommunicationsMessagesPagePage() {\n const { showToast } = useGlobalUi();\n const { notifications } = useCrewFoundryStore();\n\n // Real workspace conversations surface into the store as `communications`\n // notifications (from the overlap query). List them honestly; no threads are\n // fabricated. Sending/replying needs a chat backend that does not exist yet.\n const conversations = useMemo(\n () => notifications.filter((n) => n.category === 'communications'),\n [notifications]\n );\n\n const notifyComingSoon = () =>\n showToast('Sending messages is on the CrewFoundry roadmap — coming soon.', 'info');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Messages</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {conversations.length} active{' '}\n {conversations.length === 1 ? 'conversation' : 'conversations'}\n </p>\n <PagePurpose className=\"mt-1\">\n Chat directly with colleagues and keep conversations in one thread — use it for quick\n questions, follow-ups, and day-to-day coordination.\n </PagePurpose>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n Reply coming soon\n </Badge>\n <Button size=\"sm\" onClick={notifyComingSoon}>\n <MessageSquare className=\"mr-1 h-4 w-4\" />\n New Message\n </Button>\n </div>\n </div>\n\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardHeader>\n <CardTitle>Conversation Inbox</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n {conversations.length === 0 ? (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title=\"No conversations yet\"\n description=\"Team channels and threads appear here as they get activity. Direct replies are on the CrewFoundry roadmap.\"\n />\n </div>\n ) : (\n <ul className=\"divide-y divide-border-subtle\">\n {conversations.map((conv) => (\n <li\n key={conv.id}\n className=\"flex items-start gap-3 p-4 transition-colors hover:bg-bg-sunken\"\n >\n <AvatarStack people={[{ name: conv.title }]} size={40} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className=\"truncate text-sm font-medium\">{conv.title}</p>\n <span className=\"shrink-0 text-xs text-text-muted\">\n {relativeTime(conv.createdAt)}\n </span>\n </div>\n <p className=\"truncate text-xs text-text-secondary\">{conv.message}</p>\n </div>\n {!conv.read && (\n <span\n className=\"mt-2 h-2 w-2 shrink-0 rounded-full bg-status-success-text\"\n aria-label=\"Unread\"\n />\n )}\n </li>\n ))}\n </ul>\n )}\n </CardContent>\n </GlassCard>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAkBA,IAAM,KAAgB,MAA0B;AAC9C,KAAI,CAAC,EACH,QAAO;AAET,KAAI;AACF,SAAO,EAAmB,EAAM;SAC1B;AACN,SAAO;;;AAIX,SAAgB,IAAiC;CAC/C,IAAM,EAAE,iBAAc,GAAa,EAC7B,EAAE,qBAAkB,GAAqB,EAKzC,IAAgB,QACd,EAAc,QAAQ,MAAM,EAAE,aAAa,iBAAiB,EAClE,CAAC,EAAc,CAChB;AAKD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,YAAuB,CAAA;KAClC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAAb;MACG,EAAc;MAAO;MAAQ;MAC7B,EAAc,WAAW,IAAI,iBAAiB;MAC7C;;IACJ,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAO,SAAQ;KAAY,WAAU;eAAc;KAE3C,CAAA,EACR,kBAAC,GAAD;KAAQ,MAAK;KAAK,eAtBxB,EAAU,iEAAiE,OAAO;eAsB5E,CACE,kBAAC,GAAD,EAAe,WAAU,gBAAiB,CAAA,EAAA,cAEnC;OACL;MACF;MAEN,kBAAC,GAAD;GAAW,WAAU;GAAQ,MAAA;GAAK,WAAU;aAA5C,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,sBAA8B,CAAA,EAC9B,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cACpB,EAAc,WAAW,IACxB,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACE,cAAa;MACb,OAAM;MACN,aAAY;MACZ,CAAA;KACE,CAAA,GAEN,kBAAC,MAAD;KAAI,WAAU;eACX,EAAc,KAAK,MAClB,kBAAC,MAAD;MAEE,WAAU;gBAFZ;OAIE,kBAAC,GAAD;QAAa,QAAQ,CAAC,EAAE,MAAM,EAAK,OAAO,CAAC;QAAE,MAAM;QAAM,CAAA;OACzD,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,KAAD;UAAG,WAAU;oBAAgC,EAAK;UAAU,CAAA,EAC5D,kBAAC,QAAD;UAAM,WAAU;oBACb,EAAa,EAAK,UAAU;UACxB,CAAA,CACH;YACN,kBAAC,KAAD;SAAG,WAAU;mBAAwC,EAAK;SAAY,CAAA,CAClE;;OACL,CAAC,EAAK,QACL,kBAAC,QAAD;QACE,WAAU;QACV,cAAW;QACX,CAAA;OAED;QAnBE,EAAK,GAmBP,CACL;KACC,CAAA;IAEK,CAAA,CACJ;KACR"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationsVideoCallsPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/CommunicationsVideoCallsPagePage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,gCAAgC,gCAqD/C"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Calendar as e, Video as t } from "lucide-react";
|
|
2
|
-
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
3
|
-
import { Badge as i, Button as a, Card as o, CardContent as s, CardHeader as c, CardTitle as l, GradientText as u, IllustratedEmptyState as d, PagePurpose as f } from "@burdenoff/fe-libs/ui";
|
|
4
|
-
import { useGlobalUi as p } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
5
|
-
//#region src/crewfoundry/pages/CommunicationsVideoCallsPagePage.tsx
|
|
6
|
-
function m() {
|
|
7
|
-
let { showToast: m } = p(), h = () => m("Video meetings are on the CrewFoundry roadmap — coming soon.", "info");
|
|
8
|
-
return /* @__PURE__ */ r("div", {
|
|
9
|
-
className: "space-y-6 p-6",
|
|
10
|
-
children: [/* @__PURE__ */ r("div", {
|
|
11
|
-
className: "flex items-center justify-between",
|
|
12
|
-
children: [/* @__PURE__ */ r("div", { children: [
|
|
13
|
-
/* @__PURE__ */ n("h1", {
|
|
14
|
-
className: "text-2xl font-semibold",
|
|
15
|
-
children: /* @__PURE__ */ n(u, { children: "Video Calls" })
|
|
16
|
-
}),
|
|
17
|
-
/* @__PURE__ */ n("p", {
|
|
18
|
-
className: "text-sm text-text-secondary",
|
|
19
|
-
children: "Video meetings and recordings"
|
|
20
|
-
}),
|
|
21
|
-
/* @__PURE__ */ n(f, {
|
|
22
|
-
className: "mt-1",
|
|
23
|
-
children: "Host and join video meetings with your teams — schedule a call or start one instantly for face-to-face collaboration."
|
|
24
|
-
})
|
|
25
|
-
] }), /* @__PURE__ */ r("div", {
|
|
26
|
-
className: "flex items-center gap-2",
|
|
27
|
-
children: [
|
|
28
|
-
/* @__PURE__ */ n(i, {
|
|
29
|
-
variant: "secondary",
|
|
30
|
-
className: "text-[10px]",
|
|
31
|
-
children: "Coming soon"
|
|
32
|
-
}),
|
|
33
|
-
/* @__PURE__ */ r(a, {
|
|
34
|
-
variant: "outline",
|
|
35
|
-
size: "sm",
|
|
36
|
-
onClick: h,
|
|
37
|
-
children: [/* @__PURE__ */ n(e, { className: "mr-1 h-4 w-4" }), "Schedule"]
|
|
38
|
-
}),
|
|
39
|
-
/* @__PURE__ */ r(a, {
|
|
40
|
-
size: "sm",
|
|
41
|
-
onClick: h,
|
|
42
|
-
children: [/* @__PURE__ */ n(t, { className: "mr-1 h-4 w-4" }), "Start Meeting"]
|
|
43
|
-
})
|
|
44
|
-
]
|
|
45
|
-
})]
|
|
46
|
-
}), /* @__PURE__ */ r(o, { children: [/* @__PURE__ */ n(c, { children: /* @__PURE__ */ n(l, { children: "Meetings & Recordings" }) }), /* @__PURE__ */ n(s, {
|
|
47
|
-
className: "p-0",
|
|
48
|
-
children: /* @__PURE__ */ n("div", {
|
|
49
|
-
className: "p-6",
|
|
50
|
-
children: /* @__PURE__ */ n(d, {
|
|
51
|
-
illustration: "empty-notifications",
|
|
52
|
-
title: "Video meetings are coming soon",
|
|
53
|
-
description: "Scheduling, hosting, and recordings are on the CrewFoundry roadmap. Once the meeting backend ships, your upcoming meetings and recordings will appear here."
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
})] })]
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
//#endregion
|
|
60
|
-
export { m as CommunicationsVideoCallsPagePage };
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=CommunicationsVideoCallsPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationsVideoCallsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CommunicationsVideoCallsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, Video } from 'lucide-react';\nimport { useGlobalUi } from '@burdenoff/fe-libs/shared/providers/shell';\n\nexport function CommunicationsVideoCallsPagePage() {\n const { showToast } = useGlobalUi();\n\n // Video meetings and recordings are a planned surface — there is no meeting\n // backend yet, so these controls honestly signal their roadmap status. No\n // meetings or recordings are fabricated in the meantime.\n const notifyComingSoon = () =>\n showToast('Video meetings are on the CrewFoundry roadmap — coming soon.', 'info');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Video Calls</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Video meetings and recordings</p>\n <PagePurpose className=\"mt-1\">\n Host and join video meetings with your teams — schedule a call or start one instantly\n for face-to-face collaboration.\n </PagePurpose>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n Coming soon\n </Badge>\n <Button variant=\"outline\" size=\"sm\" onClick={notifyComingSoon}>\n <Calendar className=\"mr-1 h-4 w-4\" />\n Schedule\n </Button>\n <Button size=\"sm\" onClick={notifyComingSoon}>\n <Video className=\"mr-1 h-4 w-4\" />\n Start Meeting\n </Button>\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Meetings & Recordings</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title=\"Video meetings are coming soon\"\n description=\"Scheduling, hosting, and recordings are on the CrewFoundry roadmap. Once the meeting backend ships, your upcoming meetings and recordings will appear here.\"\n />\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAcA,SAAgB,IAAmC;CACjD,IAAM,EAAE,iBAAc,GAAa,EAK7B,UACJ,EAAU,gEAAgE,OAAO;AAEnF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,eAA0B,CAAA;KACrC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAAiC,CAAA;IAC5E,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD;MAAO,SAAQ;MAAY,WAAU;gBAAc;MAE3C,CAAA;KACR,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAS;gBAA7C,CACE,kBAAC,GAAD,EAAU,WAAU,gBAAiB,CAAA,EAAA,WAE9B;;KACT,kBAAC,GAAD;MAAQ,MAAK;MAAK,SAAS;gBAA3B,CACE,kBAAC,GAAD,EAAO,WAAU,gBAAiB,CAAA,EAAA,gBAE3B;;KACL;MACF;MAEN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,yBAAqC,CAAA,EACrC,CAAA,EACb,kBAAC,GAAD;GAAa,WAAU;aACrB,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KACE,cAAa;KACb,OAAM;KACN,aAAY;KACZ,CAAA;IACE,CAAA;GACM,CAAA,CACT,EAAA,CAAA,CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningAssessmentsPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/LearningAssessmentsPagePage.tsx"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,gCA4B1C"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { useNavigate as e } from "react-router";
|
|
2
|
-
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
-
import { Button as r, GradientText as i, IllustratedEmptyState as a, PagePurpose as o } from "@burdenoff/fe-libs/ui";
|
|
4
|
-
//#region src/crewfoundry/pages/LearningAssessmentsPagePage.tsx
|
|
5
|
-
function s() {
|
|
6
|
-
let s = e();
|
|
7
|
-
return /* @__PURE__ */ n("div", {
|
|
8
|
-
className: "space-y-6 p-6",
|
|
9
|
-
children: [/* @__PURE__ */ n("div", { children: [
|
|
10
|
-
/* @__PURE__ */ t("h1", {
|
|
11
|
-
className: "text-2xl font-semibold",
|
|
12
|
-
children: /* @__PURE__ */ t(i, { children: "Assessments" })
|
|
13
|
-
}),
|
|
14
|
-
/* @__PURE__ */ t("p", {
|
|
15
|
-
className: "text-sm text-text-secondary",
|
|
16
|
-
children: "Quizzes and exams for your enrolled courses"
|
|
17
|
-
}),
|
|
18
|
-
/* @__PURE__ */ t(o, {
|
|
19
|
-
className: "mt-1",
|
|
20
|
-
children: "Create and review assessments that measure what your team has learned — use them to certify skills and identify knowledge gaps."
|
|
21
|
-
})
|
|
22
|
-
] }), /* @__PURE__ */ t(a, {
|
|
23
|
-
illustration: "empty-generic",
|
|
24
|
-
title: "Assessments are coming soon",
|
|
25
|
-
description: "Course assessments — question banks, timed attempts, scoring and pass thresholds — are being built. Once available, the quizzes tied to your enrolled courses will appear here.",
|
|
26
|
-
action: /* @__PURE__ */ t(r, {
|
|
27
|
-
variant: "outline",
|
|
28
|
-
onClick: () => s("../learning/courses-page"),
|
|
29
|
-
children: "Browse courses"
|
|
30
|
-
})
|
|
31
|
-
})]
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
//#endregion
|
|
35
|
-
export { s as LearningAssessmentsPagePage };
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=LearningAssessmentsPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningAssessmentsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningAssessmentsPagePage.tsx"],"sourcesContent":["import { Button, GradientText, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useNavigate } from 'react-router';\n\nexport function LearningAssessmentsPagePage() {\n const navigate = useNavigate();\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Assessments</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Quizzes and exams for your enrolled courses</p>\n <PagePurpose className=\"mt-1\">\n Create and review assessments that measure what your team has learned — use them to\n certify skills and identify knowledge gaps.\n </PagePurpose>\n </div>\n\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"Assessments are coming soon\"\n description=\"Course assessments — question banks, timed attempts, scoring and pass thresholds — are being built. Once available, the quizzes tied to your enrolled courses will appear here.\"\n action={\n <Button variant=\"outline\" onClick={() => navigate('../learning/courses-page')}>\n Browse courses\n </Button>\n }\n />\n </div>\n );\n}\n"],"mappings":";;;;AAGA,SAAgB,IAA8B;CAC5C,IAAM,IAAW,GAAa;AAE9B,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA;GACE,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,GAAD,EAAA,UAAc,eAA0B,CAAA;IACrC,CAAA;GACL,kBAAC,KAAD;IAAG,WAAU;cAA8B;IAA+C,CAAA;GAC1F,kBAAC,GAAD;IAAa,WAAU;cAAO;IAGhB,CAAA;GACV,EAAA,CAAA,EAEN,kBAAC,GAAD;GACE,cAAa;GACb,OAAM;GACN,aAAY;GACZ,QACE,kBAAC,GAAD;IAAQ,SAAQ;IAAU,eAAe,EAAS,2BAA2B;cAAE;IAEtE,CAAA;GAEX,CAAA,CACE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningCertificatesPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/LearningCertificatesPagePage.tsx"],"names":[],"mappings":"AA0DA,wBAAgB,4BAA4B,gCA2E3C"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
-
import { CertificateCard as t } from "../components/viz/CertificateCard.js";
|
|
3
|
-
import "../components/viz/index.js";
|
|
4
|
-
import { readAllCourseProgress as n } from "../utils/courseProgress.js";
|
|
5
|
-
import { useMemo as r } from "react";
|
|
6
|
-
import { GraduationCap as i } from "lucide-react";
|
|
7
|
-
import { useNavigate as a } from "react-router";
|
|
8
|
-
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
9
|
-
import { Button as c, GradientText as l, IllustratedEmptyState as u, PagePurpose as d } from "@burdenoff/fe-libs/ui";
|
|
10
|
-
import { useAuth as f } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
11
|
-
//#region src/crewfoundry/pages/LearningCertificatesPagePage.tsx
|
|
12
|
-
function p(e) {
|
|
13
|
-
if (!e) return "—";
|
|
14
|
-
let t = new Date(e);
|
|
15
|
-
return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString(void 0, {
|
|
16
|
-
year: "numeric",
|
|
17
|
-
month: "short",
|
|
18
|
-
day: "numeric"
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
function m(e, t, n, r) {
|
|
22
|
-
if (typeof document > "u") return;
|
|
23
|
-
let i = (e) => e.replace(/[&<>"]/g, (e) => ({
|
|
24
|
-
"&": "&",
|
|
25
|
-
"<": "<",
|
|
26
|
-
">": ">",
|
|
27
|
-
"\"": """
|
|
28
|
-
})[e] ?? e), a = `<!doctype html><html><head><meta charset="utf-8"><title>Certificate — ${i(e)}</title>
|
|
29
|
-
<style>
|
|
30
|
-
body{font-family:Georgia,'Times New Roman',serif;margin:0;padding:48px;text-align:center}
|
|
31
|
-
.frame{border:6px double currentColor;padding:56px 40px;max-width:760px;margin:0 auto}
|
|
32
|
-
.kicker{letter-spacing:.3em;text-transform:uppercase;font-size:12px;opacity:.7}
|
|
33
|
-
h1{font-size:34px;margin:24px 0 8px}
|
|
34
|
-
.recipient{font-size:26px;margin:20px 0}
|
|
35
|
-
.rule{width:200px;border:0;border-top:1px solid currentColor;margin:24px auto;opacity:.4}
|
|
36
|
-
.meta{font-size:13px;opacity:.7;margin-top:32px}
|
|
37
|
-
</style></head><body>
|
|
38
|
-
<div class="frame">
|
|
39
|
-
<div class="kicker">CrewFoundry · Certificate of Completion</div>
|
|
40
|
-
<h1>${i(e)}</h1>
|
|
41
|
-
<div class="kicker">Awarded to</div>
|
|
42
|
-
<div class="recipient">${i(t)}</div>
|
|
43
|
-
<hr class="rule" />
|
|
44
|
-
<div class="meta">Issued ${i(n)} · Credential ID: ${i(r)}</div>
|
|
45
|
-
</div>
|
|
46
|
-
</body></html>`, o = new Blob([a], { type: "text/html" }), s = URL.createObjectURL(o), c = document.createElement("a");
|
|
47
|
-
c.href = s, c.download = `crewfoundry-certificate-${r}.html`, document.body.appendChild(c), c.click(), c.remove(), URL.revokeObjectURL(s);
|
|
48
|
-
}
|
|
49
|
-
function h() {
|
|
50
|
-
let h = a(), g = f(), { courses: _ } = e(), v = g.user?.name?.trim() || "CrewFoundry Learner", y = r(() => {
|
|
51
|
-
let e = n();
|
|
52
|
-
return _.map((t) => {
|
|
53
|
-
let n = e[t.id], r = n?.completed.length ?? 0, i = Math.max(t.modules, 1);
|
|
54
|
-
return {
|
|
55
|
-
course: t,
|
|
56
|
-
isComplete: r > 0 && r >= i,
|
|
57
|
-
completedAt: n?.completedAt
|
|
58
|
-
};
|
|
59
|
-
}).filter((e) => e.isComplete).sort((e, t) => (t.completedAt ?? "").localeCompare(e.completedAt ?? ""));
|
|
60
|
-
}, [_]);
|
|
61
|
-
return /* @__PURE__ */ s("div", {
|
|
62
|
-
className: "space-y-6 p-6",
|
|
63
|
-
children: [/* @__PURE__ */ s("div", {
|
|
64
|
-
className: "flex flex-wrap items-start justify-between gap-3",
|
|
65
|
-
children: [/* @__PURE__ */ s("div", { children: [
|
|
66
|
-
/* @__PURE__ */ o("h1", {
|
|
67
|
-
className: "text-2xl font-semibold",
|
|
68
|
-
children: /* @__PURE__ */ o(l, { children: "Certificates" })
|
|
69
|
-
}),
|
|
70
|
-
/* @__PURE__ */ o("p", {
|
|
71
|
-
className: "text-sm text-text-secondary",
|
|
72
|
-
children: "Proof of completed training and validated skills"
|
|
73
|
-
}),
|
|
74
|
-
/* @__PURE__ */ o(d, {
|
|
75
|
-
className: "mt-1",
|
|
76
|
-
children: "View and download the certificates you've earned — proof of completed training and validated skills."
|
|
77
|
-
})
|
|
78
|
-
] }), /* @__PURE__ */ s(c, {
|
|
79
|
-
variant: "outline",
|
|
80
|
-
onClick: () => h("../learning/my-learning-page"),
|
|
81
|
-
children: [/* @__PURE__ */ o(i, { className: "mr-1 h-4 w-4" }), "My Learning"]
|
|
82
|
-
})]
|
|
83
|
-
}), y.length === 0 ? /* @__PURE__ */ o(u, {
|
|
84
|
-
illustration: "empty-generic",
|
|
85
|
-
title: "No certificates yet",
|
|
86
|
-
description: "Certificates are issued when you complete a course. Finish a course from the player and every credential you earn will appear here with its issue date and a download link.",
|
|
87
|
-
action: /* @__PURE__ */ o(c, {
|
|
88
|
-
variant: "outline",
|
|
89
|
-
onClick: () => h("../learning/courses-page"),
|
|
90
|
-
children: "Browse courses"
|
|
91
|
-
})
|
|
92
|
-
}) : /* @__PURE__ */ o("div", {
|
|
93
|
-
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
94
|
-
children: y.map(({ course: e, completedAt: n }) => {
|
|
95
|
-
let r = `CF-${e.id.slice(-6).toUpperCase()}`, i = p(n);
|
|
96
|
-
return /* @__PURE__ */ o(t, {
|
|
97
|
-
title: e.title,
|
|
98
|
-
recipient: v,
|
|
99
|
-
date: i,
|
|
100
|
-
issuer: "CrewFoundry",
|
|
101
|
-
credentialId: r,
|
|
102
|
-
onDownload: () => m(e.title, v, i, r)
|
|
103
|
-
}, e.id);
|
|
104
|
-
})
|
|
105
|
-
})]
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
//#endregion
|
|
109
|
-
export { h as LearningCertificatesPagePage };
|
|
110
|
-
|
|
111
|
-
//# sourceMappingURL=LearningCertificatesPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningCertificatesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningCertificatesPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { Button, GradientText, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { GraduationCap } from 'lucide-react';\nimport { useNavigate } from 'react-router';\nimport { useAuth } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { CertificateCard } from '../components/viz';\nimport { readAllCourseProgress } from '../utils/courseProgress';\n\nfunction formatDate(iso?: string): string {\n if (!iso) return '—';\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return '—';\n return date.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n}\n\nfunction downloadCertificate(\n course: string,\n recipient: string,\n dateLabel: string,\n id: string\n): void {\n if (typeof document === 'undefined') return;\n const esc = (s: string) =>\n s.replace(\n /[&<>\"]/g,\n (c) => ({ '&': '&', '<': '<', '>': '>', '\"': '"' })[c] ?? c\n );\n const html = `<!doctype html><html><head><meta charset=\"utf-8\"><title>Certificate — ${esc(course)}</title>\n<style>\n body{font-family:Georgia,'Times New Roman',serif;margin:0;padding:48px;text-align:center}\n .frame{border:6px double currentColor;padding:56px 40px;max-width:760px;margin:0 auto}\n .kicker{letter-spacing:.3em;text-transform:uppercase;font-size:12px;opacity:.7}\n h1{font-size:34px;margin:24px 0 8px}\n .recipient{font-size:26px;margin:20px 0}\n .rule{width:200px;border:0;border-top:1px solid currentColor;margin:24px auto;opacity:.4}\n .meta{font-size:13px;opacity:.7;margin-top:32px}\n</style></head><body>\n <div class=\"frame\">\n <div class=\"kicker\">CrewFoundry · Certificate of Completion</div>\n <h1>${esc(course)}</h1>\n <div class=\"kicker\">Awarded to</div>\n <div class=\"recipient\">${esc(recipient)}</div>\n <hr class=\"rule\" />\n <div class=\"meta\">Issued ${esc(dateLabel)} · Credential ID: ${esc(id)}</div>\n </div>\n</body></html>`;\n const blob = new Blob([html], { type: 'text/html' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `crewfoundry-certificate-${id}.html`;\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n URL.revokeObjectURL(url);\n}\n\nexport function LearningCertificatesPagePage() {\n const navigate = useNavigate();\n const auth = useAuth();\n const { courses } = useCrewFoundryStore();\n const recipient = auth.user?.name?.trim() || 'CrewFoundry Learner';\n\n const earned = useMemo(() => {\n const progressMap = readAllCourseProgress();\n return courses\n .map((course) => {\n const entry = progressMap[course.id];\n const completedModules = entry?.completed.length ?? 0;\n const totalModules = Math.max(course.modules, 1);\n const isComplete = completedModules > 0 && completedModules >= totalModules;\n return { course, isComplete, completedAt: entry?.completedAt };\n })\n .filter((item) => item.isComplete)\n .sort((a, b) => (b.completedAt ?? '').localeCompare(a.completedAt ?? ''));\n }, [courses]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Certificates</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Proof of completed training and validated skills\n </p>\n <PagePurpose className=\"mt-1\">\n View and download the certificates you've earned — proof of completed training and\n validated skills.\n </PagePurpose>\n </div>\n <Button variant=\"outline\" onClick={() => navigate('../learning/my-learning-page')}>\n <GraduationCap className=\"mr-1 h-4 w-4\" />\n My Learning\n </Button>\n </div>\n\n {earned.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No certificates yet\"\n description=\"Certificates are issued when you complete a course. Finish a course from the player and every credential you earn will appear here with its issue date and a download link.\"\n action={\n <Button variant=\"outline\" onClick={() => navigate('../learning/courses-page')}>\n Browse courses\n </Button>\n }\n />\n ) : (\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {earned.map(({ course, completedAt }) => {\n const credentialId = `CF-${course.id.slice(-6).toUpperCase()}`;\n const dateLabel = formatDate(completedAt);\n return (\n <CertificateCard\n key={course.id}\n title={course.title}\n recipient={recipient}\n date={dateLabel}\n issuer=\"CrewFoundry\"\n credentialId={credentialId}\n onDownload={() =>\n downloadCertificate(course.title, recipient, dateLabel, credentialId)\n }\n />\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AASA,SAAS,EAAW,GAAsB;AACxC,KAAI,CAAC,EAAK,QAAO;CACjB,IAAM,IAAO,IAAI,KAAK,EAAI;AAE1B,QADI,OAAO,MAAM,EAAK,SAAS,CAAC,GAAS,MAClC,EAAK,mBAAmB,KAAA,GAAW;EAAE,MAAM;EAAW,OAAO;EAAS,KAAK;EAAW,CAAC;;AAGhG,SAAS,EACP,GACA,GACA,GACA,GACM;AACN,KAAI,OAAO,WAAa,IAAa;CACrC,IAAM,KAAO,MACX,EAAE,QACA,YACC,OAAO;EAAE,KAAK;EAAS,KAAK;EAAQ,KAAK;EAAQ,MAAK;EAAU,EAAE,MAAM,EAC1E,EACG,IAAO,yEAAyE,EAAI,EAAO,CAAC;;;;;;;;;;;;UAY1F,EAAI,EAAO,CAAC;;6BAEO,EAAI,EAAU,CAAC;;+BAEb,EAAI,EAAU,CAAC,gCAAgC,EAAI,EAAG,CAAC;;iBAG9E,IAAO,IAAI,KAAK,CAAC,EAAK,EAAE,EAAE,MAAM,aAAa,CAAC,EAC9C,IAAM,IAAI,gBAAgB,EAAK,EAC/B,IAAS,SAAS,cAAc,IAAI;AAM1C,CALA,EAAO,OAAO,GACd,EAAO,WAAW,2BAA2B,EAAG,QAChD,SAAS,KAAK,YAAY,EAAO,EACjC,EAAO,OAAO,EACd,EAAO,QAAQ,EACf,IAAI,gBAAgB,EAAI;;AAG1B,SAAgB,IAA+B;CAC7C,IAAM,IAAW,GAAa,EACxB,IAAO,GAAS,EAChB,EAAE,eAAY,GAAqB,EACnC,IAAY,EAAK,MAAM,MAAM,MAAM,IAAI,uBAEvC,IAAS,QAAc;EAC3B,IAAM,IAAc,GAAuB;AAC3C,SAAO,EACJ,KAAK,MAAW;GACf,IAAM,IAAQ,EAAY,EAAO,KAC3B,IAAmB,GAAO,UAAU,UAAU,GAC9C,IAAe,KAAK,IAAI,EAAO,SAAS,EAAE;AAEhD,UAAO;IAAE;IAAQ,YADE,IAAmB,KAAK,KAAoB;IAClC,aAAa,GAAO;IAAa;IAC9D,CACD,QAAQ,MAAS,EAAK,WAAW,CACjC,MAAM,GAAG,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,eAAe,GAAG,CAAC;IAC1E,CAAC,EAAQ,CAAC;AAEb,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,gBAA2B,CAAA;KACtC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAEvC,CAAA;IACJ,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA,EACN,kBAAC,GAAD;IAAQ,SAAQ;IAAU,eAAe,EAAS,+BAA+B;cAAjF,CACE,kBAAC,GAAD,EAAe,WAAU,gBAAiB,CAAA,EAAA,cAEnC;MACL;MAEL,EAAO,WAAW,IACjB,kBAAC,GAAD;GACE,cAAa;GACb,OAAM;GACN,aAAY;GACZ,QACE,kBAAC,GAAD;IAAQ,SAAQ;IAAU,eAAe,EAAS,2BAA2B;cAAE;IAEtE,CAAA;GAEX,CAAA,GAEF,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAO,KAAK,EAAE,WAAQ,qBAAkB;IACvC,IAAM,IAAe,MAAM,EAAO,GAAG,MAAM,GAAG,CAAC,aAAa,IACtD,IAAY,EAAW,EAAY;AACzC,WACE,kBAAC,GAAD;KAEE,OAAO,EAAO;KACH;KACX,MAAM;KACN,QAAO;KACO;KACd,kBACE,EAAoB,EAAO,OAAO,GAAW,GAAW,EAAa;KAEvE,EATK,EAAO,GASZ;KAEJ;GACE,CAAA,CAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningCourseLearningPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/LearningCourseLearningPagePage.tsx"],"names":[],"mappings":"AA+EA,wBAAgB,8BAA8B,gCAyU7C"}
|