@burdenoff/microfe-buildmyiq 2026.715.1 → 2026.716.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.
@@ -1 +1 @@
1
- {"version":3,"file":"BuildmyiqAdminRoot.d.ts","sourceRoot":"","sources":["../../src/buildmyiq/BuildmyiqAdminRoot.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAwBhC,OAAO,KAAK,EACV,kBAAkB,EAQnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,0GAA0G;IAC1G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkoBD,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAgB1D,CAAC;AAEF,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"BuildmyiqAdminRoot.d.ts","sourceRoot":"","sources":["../../src/buildmyiq/BuildmyiqAdminRoot.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAwBhC,OAAO,KAAK,EACV,kBAAkB,EAQnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,0GAA0G;IAC1G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkoBD,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAkB1D,CAAC;AAEF,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,CAAC"}
@@ -577,7 +577,7 @@ function q() {
577
577
  });
578
578
  }
579
579
  var J = (t) => {
580
- let { workspaceToken: n, ...r } = t;
580
+ let n = t;
581
581
  return /* @__PURE__ */ N(T, {
582
582
  client: I,
583
583
  children: /* @__PURE__ */ N(E, {
@@ -585,7 +585,7 @@ var J = (t) => {
585
585
  gateway: "global",
586
586
  defaultEnabled: !0,
587
587
  children: /* @__PURE__ */ N(e, {
588
- ...r,
588
+ ...n,
589
589
  children: /* @__PURE__ */ N(q, {})
590
590
  })
591
591
  })
@@ -1 +1 @@
1
- {"version":3,"file":"BuildmyiqAdminRoot.js","names":[],"sources":["../../src/buildmyiq/BuildmyiqAdminRoot.tsx"],"sourcesContent":["/**\n * BuildMyIQ Admin Root\n * @module buildmyiq\n *\n * Product-specific admin surface mounted inside `admin-app` under\n * `/admin/buildmyiq`. It exposes three core governance operations:\n *\n * 1. Course / assessment administration — list, publish, archive courses and\n * inspect assessments per course.\n * 2. Enrollment overview — workspace-wide enrollment list with status/progress.\n * 3. Submission review — graded/ungraded submission queue.\n *\n * The panel reuses the real `wspace-buildmyiq-svc` GraphQL operations already\n * consumed by the learner/author surfaces (`buiListCourses`, `buiListEnrollments`,\n * `buiListSubmissions`, `buiListAssessments`, `buiPublishCourse`, `buiArchiveCourse`).\n *\n * Remaining backend gaps (documented inline):\n * - Admin-scoped bulk mutations (bulk archive, bulk transition enrollment).\n * - Cross-workspace/admin analytics aggregations.\n * - Submission review detail + rubric grading UI.\n */\n\nimport type { FC } from 'react';\nimport { useMemo, useState } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { BookOpen, ClipboardCheck, Users, CheckSquare, GraduationCap } from 'lucide-react';\nimport { BuildmyiqProvider } from './context/BuildmyiqContext';\nimport { PageLayout } from './components/PageLayout';\nimport { Tabs } from './components/Tabs';\nimport { DataTable, type Column } from './components/DataTable';\nimport { StatusBadge } from './components/StatusBadge';\nimport { LoadingView, ErrorView, Section } from './components/StateViews';\nimport { EmptyState } from './components/EmptyState';\nimport { Pagination } from './components/Pagination';\nimport { FilterTabs } from './components/FilterTabs';\nimport {\n useBuiCourses,\n useBuiAssessments,\n useBuiEnrollments,\n useBuiSubmissions,\n useBuiPublishCourse,\n useBuiArchiveCourse,\n} from './hooks/useBuildmyiqApi';\nimport { formatDate, formatDateTime, formatPercent, formatNumber, formatHours } from './utils';\nimport type {\n BuildmyiqRootProps,\n BuiCourse,\n BuiCourseStatus,\n BuiEnrollment,\n BuiEnrollmentStatus,\n BuiSubmission,\n BuiSubmissionStatus,\n BuiAssessment,\n} from './types';\n\nexport interface BuildmyiqAdminRootProps extends BuildmyiqRootProps {\n /** Workspace token is supplied by admin-app for workspace-scoped MFEs; not used directly by BUI hooks. */\n workspaceToken?: string;\n}\n\ntype AdminTab = 'courses' | 'assessments' | 'enrollments' | 'submissions';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 30 * 1000,\n retry: 1,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nconst PAGE_SIZE = 12;\n\nconst COURSE_STATUS_OPTIONS: { value: 'ALL' | BuiCourseStatus; label: string }[] = [\n { value: 'ALL', label: 'All' },\n { value: 'DRAFT', label: 'Draft' },\n { value: 'IN_REVIEW', label: 'In Review' },\n { value: 'PUBLISHED', label: 'Published' },\n { value: 'ARCHIVED', label: 'Archived' },\n];\n\nconst ENROLLMENT_STATUS_OPTIONS: { value: 'ALL' | BuiEnrollmentStatus; label: string }[] = [\n { value: 'ALL', label: 'All' },\n { value: 'ENROLLED', label: 'Enrolled' },\n { value: 'IN_PROGRESS', label: 'In Progress' },\n { value: 'COMPLETED', label: 'Completed' },\n { value: 'DROPPED', label: 'Dropped' },\n { value: 'EXPIRED', label: 'Expired' },\n];\n\nconst SUBMISSION_STATUS_OPTIONS: { value: 'ALL' | BuiSubmissionStatus; label: string }[] = [\n { value: 'ALL', label: 'All' },\n { value: 'SUBMITTED', label: 'Submitted' },\n { value: 'GRADING', label: 'Grading' },\n { value: 'GRADED', label: 'Graded' },\n { value: 'RETURNED', label: 'Returned' },\n];\n\n// ============================================================================\n// Course administration\n// ============================================================================\n\nfunction CourseActions({ course }: { course: BuiCourse }) {\n const publish = useBuiPublishCourse();\n const archive = useBuiArchiveCourse();\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {course.status === 'DRAFT' && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => publish.mutate(course.id)}\n disabled={publish.isPending}\n >\n Publish\n </Button>\n )}\n {course.status !== 'ARCHIVED' && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => archive.mutate(course.id)}\n disabled={archive.isPending}\n >\n Archive\n </Button>\n )}\n {course.status === 'ARCHIVED' && (\n <span className=\"text-xs text-text-secondary\">Archived</span>\n )}\n </div>\n );\n}\n\nfunction CoursesPanel() {\n const [status, setStatus] = useState<'ALL' | BuiCourseStatus>('ALL');\n const [page, setPage] = useState(0);\n const [cursors, setCursors] = useState<string[]>([]);\n\n const cursor = page > 0 ? cursors[page - 1] : undefined;\n const { data, isLoading, error, refetch } = useBuiCourses({\n status: status === 'ALL' ? undefined : status,\n cursor,\n limit: PAGE_SIZE,\n });\n\n const columns = useMemo<Column<BuiCourse>[]>(\n () => [\n {\n key: 'title',\n header: 'Course',\n render: (c) => (\n <div className=\"min-w-0\">\n <p className=\"font-medium text-text-primary truncate\">{c.title}</p>\n <p className=\"text-xs text-text-secondary\">{c.slug}</p>\n </div>\n ),\n sortValue: (c) => c.title.toLowerCase(),\n },\n {\n key: 'status',\n header: 'Status',\n render: (c) => <StatusBadge status={c.status} />,\n },\n {\n key: 'level',\n header: 'Level',\n render: (c) => <StatusBadge status={c.level} />,\n },\n {\n key: 'lessons',\n header: 'Lessons',\n align: 'right',\n render: (c) => formatNumber(c.lessons?.length ?? 0),\n sortValue: (c) => c.lessons?.length ?? 0,\n },\n {\n key: 'hours',\n header: 'Est. Hours',\n align: 'right',\n render: (c) => formatHours(c.estimatedHours),\n sortValue: (c) => c.estimatedHours,\n },\n {\n key: 'public',\n header: 'Visibility',\n render: (c) => (c.isPublic ? 'Public' : 'Private'),\n },\n {\n key: 'created',\n header: 'Created',\n render: (c) => formatDate(c.createdAt),\n sortValue: (c) => new Date(c.createdAt).getTime(),\n },\n {\n key: 'actions',\n header: 'Actions',\n align: 'right',\n render: (c) => <CourseActions course={c} />,\n },\n ],\n []\n );\n\n const handlePageChange = (nextPage: number) => {\n if (nextPage > page && data?.pageInfo.cursor) {\n setCursors((prev) => [...prev, data.pageInfo.cursor as string]);\n } else if (nextPage < page) {\n setCursors((prev) => prev.slice(0, -1));\n }\n setPage(nextPage);\n };\n\n if (isLoading) return <LoadingView label=\"Loading courses…\" />;\n if (error)\n return <ErrorView title=\"Could not load courses\" message={error.message} onRetry={refetch} />;\n\n const rows = data?.items ?? [];\n\n return (\n <Section title=\"Course catalog\" description=\"Publish, archive and inspect courses.\">\n <div className=\"mb-4\">\n <FilterTabs\n options={COURSE_STATUS_OPTIONS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n setPage(0);\n setCursors([]);\n }}\n />\n </div>\n {rows.length === 0 ? (\n <EmptyState\n icon={<BookOpen size={40} />}\n title=\"No courses found\"\n description={`There are no ${status === 'ALL' ? '' : status.toLowerCase()} courses in this workspace.`}\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(c) => c.id}\n defaultSort={{ key: 'created', dir: 'desc' }}\n />\n <Pagination\n page={page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo.hasMore ?? false}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </Section>\n );\n}\n\n// ============================================================================\n// Assessment administration\n// ============================================================================\n\nfunction AssessmentsPanel() {\n const [selectedCourseId, setSelectedCourseId] = useState<string>('');\n\n const {\n data: coursesData,\n isLoading: coursesLoading,\n error: coursesError,\n } = useBuiCourses({\n status: 'PUBLISHED',\n limit: 100,\n });\n\n const {\n data: assessments,\n isLoading: assessmentsLoading,\n error: assessmentsError,\n } = useBuiAssessments(selectedCourseId || undefined);\n\n const columns = useMemo<Column<BuiAssessment>[]>(\n () => [\n {\n key: 'title',\n header: 'Assessment',\n render: (a) => (\n <div className=\"min-w-0\">\n <p className=\"font-medium text-text-primary truncate\">{a.title}</p>\n <p className=\"text-xs text-text-secondary\">{a.type}</p>\n </div>\n ),\n sortValue: (a) => a.title.toLowerCase(),\n },\n {\n key: 'status',\n header: 'Status',\n render: (a) => <StatusBadge status={a.status} />,\n },\n {\n key: 'questions',\n header: 'Questions',\n align: 'right',\n render: (a) => formatNumber(a.questions?.length ?? 0),\n sortValue: (a) => a.questions?.length ?? 0,\n },\n {\n key: 'passing',\n header: 'Passing Score',\n align: 'right',\n render: (a) => formatPercent(a.passingScore),\n },\n {\n key: 'attempts',\n header: 'Max Attempts',\n align: 'right',\n render: (a) => formatNumber(a.maxAttempts),\n },\n {\n key: 'time',\n header: 'Time Limit',\n align: 'right',\n render: (a) => (a.timeLimitMin > 0 ? `${a.timeLimitMin} min` : '—'),\n },\n ],\n []\n );\n\n if (coursesLoading) return <LoadingView label=\"Loading courses…\" />;\n if (coursesError)\n return <ErrorView title=\"Could not load courses\" message={coursesError.message} />;\n\n const courses = coursesData?.items ?? [];\n\n return (\n <Section\n title=\"Assessments\"\n description=\"Inspect assessments attached to a published course.\"\n action={\n <div className=\"min-w-[16rem]\">\n <label htmlFor=\"bui-admin-course-select\" className=\"sr-only\">\n Select course\n </label>\n <select\n id=\"bui-admin-course-select\"\n value={selectedCourseId}\n onChange={(e) => setSelectedCourseId(e.target.value)}\n className=\"w-full rounded-lg border border-border-seam bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg\"\n >\n <option value=\"\">Choose a course…</option>\n {courses.map((c) => (\n <option key={c.id} value={c.id}>\n {c.title}\n </option>\n ))}\n </select>\n </div>\n }\n >\n {!selectedCourseId ? (\n <EmptyState\n icon={<ClipboardCheck size={40} />}\n title=\"Select a course\"\n description=\"Choose a published course above to view its assessments.\"\n />\n ) : assessmentsLoading ? (\n <LoadingView label=\"Loading assessments…\" />\n ) : assessmentsError ? (\n <ErrorView title=\"Could not load assessments\" message={assessmentsError.message} />\n ) : assessments?.length === 0 ? (\n <EmptyState\n icon={<ClipboardCheck size={40} />}\n title=\"No assessments\"\n description=\"This course has no assessments yet.\"\n />\n ) : (\n <DataTable\n columns={columns}\n rows={assessments ?? []}\n rowKey={(a) => a.id}\n defaultSort={{ key: 'title', dir: 'asc' }}\n />\n )}\n </Section>\n );\n}\n\n// ============================================================================\n// Enrollment overview\n// ============================================================================\n\nfunction EnrollmentsPanel() {\n const [status, setStatus] = useState<'ALL' | BuiEnrollmentStatus>('ALL');\n const [page, setPage] = useState(0);\n const [cursors, setCursors] = useState<string[]>([]);\n\n const cursor = page > 0 ? cursors[page - 1] : undefined;\n const { data, isLoading, error, refetch } = useBuiEnrollments({\n status: status === 'ALL' ? undefined : status,\n cursor,\n limit: PAGE_SIZE,\n });\n\n const columns = useMemo<Column<BuiEnrollment>[]>(\n () => [\n {\n key: 'learner',\n header: 'Learner',\n render: (e) => <span className=\"font-mono text-xs text-text-secondary\">{e.learnerId}</span>,\n },\n {\n key: 'course',\n header: 'Course ID',\n render: (e) => <span className=\"font-mono text-xs text-text-secondary\">{e.courseId}</span>,\n },\n {\n key: 'status',\n header: 'Status',\n render: (e) => <StatusBadge status={e.status} />,\n },\n {\n key: 'progress',\n header: 'Progress',\n align: 'right',\n render: (e) => formatPercent(e.progressPct),\n sortValue: (e) => e.progressPct,\n },\n {\n key: 'cohort',\n header: 'Cohort',\n render: (e) => e.cohort?.name ?? '—',\n },\n {\n key: 'enrolled',\n header: 'Enrolled',\n render: (e) => formatDateTime(e.enrolledAt),\n sortValue: (e) => new Date(e.enrolledAt).getTime(),\n hideOnMobile: true,\n },\n {\n key: 'lastActive',\n header: 'Last Active',\n render: (e) => (e.lastActiveAt ? formatRelativeTime(e.lastActiveAt) : '—'),\n sortValue: (e) => (e.lastActiveAt ? new Date(e.lastActiveAt).getTime() : 0),\n hideOnMobile: true,\n },\n ],\n []\n );\n\n const handlePageChange = (nextPage: number) => {\n if (nextPage > page && data?.pageInfo.cursor) {\n setCursors((prev) => [...prev, data.pageInfo.cursor as string]);\n } else if (nextPage < page) {\n setCursors((prev) => prev.slice(0, -1));\n }\n setPage(nextPage);\n };\n\n if (isLoading) return <LoadingView label=\"Loading enrollments…\" />;\n if (error)\n return (\n <ErrorView title=\"Could not load enrollments\" message={error.message} onRetry={refetch} />\n );\n\n const rows = data?.items ?? [];\n\n return (\n <Section title=\"Enrollments\" description=\"Workspace-wide learner enrollment overview.\">\n <div className=\"mb-4\">\n <FilterTabs\n options={ENROLLMENT_STATUS_OPTIONS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n setPage(0);\n setCursors([]);\n }}\n />\n </div>\n {rows.length === 0 ? (\n <EmptyState\n icon={<Users size={40} />}\n title=\"No enrollments\"\n description={`There are no ${status === 'ALL' ? '' : status.toLowerCase()} enrollments in this workspace.`}\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(e) => e.id}\n defaultSort={{ key: 'enrolled', dir: 'desc' }}\n />\n <Pagination\n page={page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo.hasMore ?? false}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </Section>\n );\n}\n\n// Need formatRelativeTime for lastActive in enrollments; import it.\nfunction formatRelativeTime(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date;\n const now = new Date();\n const diffMs = d.getTime() - now.getTime();\n const future = diffMs >= 0;\n const absSeconds = Math.floor(Math.abs(diffMs) / 1000);\n const minutes = Math.floor(absSeconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const phrase = (value: number, unit: string) => {\n const label = `${value} ${unit}${value !== 1 ? 's' : ''}`;\n return future ? `in ${label}` : `${label} ago`;\n };\n if (absSeconds < 60) return future ? 'soon' : 'just now';\n if (minutes < 60) return phrase(minutes, 'min');\n if (hours < 24) return phrase(hours, 'hour');\n return phrase(days, 'day');\n}\n\n// ============================================================================\n// Submission review\n// ============================================================================\n\nfunction SubmissionsPanel() {\n const [status, setStatus] = useState<'ALL' | BuiSubmissionStatus>('ALL');\n const [page, setPage] = useState(0);\n const [cursors, setCursors] = useState<string[]>([]);\n\n const cursor = page > 0 ? cursors[page - 1] : undefined;\n const { data, isLoading, error, refetch } = useBuiSubmissions({\n status: status === 'ALL' ? undefined : status,\n cursor,\n limit: PAGE_SIZE,\n });\n\n const columns = useMemo<Column<BuiSubmission>[]>(\n () => [\n {\n key: 'learner',\n header: 'Learner',\n render: (s) => <span className=\"font-mono text-xs text-text-secondary\">{s.learnerId}</span>,\n },\n {\n key: 'assessment',\n header: 'Assessment ID',\n render: (s) => (\n <span className=\"font-mono text-xs text-text-secondary\">{s.assessmentId}</span>\n ),\n },\n {\n key: 'attempt',\n header: 'Attempt',\n align: 'right',\n render: (s) => formatNumber(s.attempt),\n },\n {\n key: 'status',\n header: 'Status',\n render: (s) => <StatusBadge status={s.status} />,\n },\n {\n key: 'score',\n header: 'Score',\n align: 'right',\n render: (s) => (s.score == null ? '—' : formatPercent(s.score)),\n sortValue: (s) => s.score ?? -1,\n },\n {\n key: 'passed',\n header: 'Passed',\n align: 'center',\n render: (s) => (s.passed == null ? '—' : s.passed ? 'Yes' : 'No'),\n },\n {\n key: 'submitted',\n header: 'Submitted',\n render: (s) => (s.submittedAt ? formatDateTime(s.submittedAt) : '—'),\n sortValue: (s) => (s.submittedAt ? new Date(s.submittedAt).getTime() : 0),\n hideOnMobile: true,\n },\n {\n key: 'actions',\n header: 'Review',\n align: 'right',\n render: () => (\n <Button variant=\"ghost\" size=\"sm\" disabled>\n Open\n </Button>\n ),\n },\n ],\n []\n );\n\n const handlePageChange = (nextPage: number) => {\n if (nextPage > page && data?.pageInfo.cursor) {\n setCursors((prev) => [...prev, data.pageInfo.cursor as string]);\n } else if (nextPage < page) {\n setCursors((prev) => prev.slice(0, -1));\n }\n setPage(nextPage);\n };\n\n if (isLoading) return <LoadingView label=\"Loading submissions…\" />;\n if (error)\n return (\n <ErrorView title=\"Could not load submissions\" message={error.message} onRetry={refetch} />\n );\n\n const rows = data?.items ?? [];\n\n return (\n <Section title=\"Submission review\" description=\"Review learner submissions and grading status.\">\n <div className=\"mb-4\">\n <FilterTabs\n options={SUBMISSION_STATUS_OPTIONS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n setPage(0);\n setCursors([]);\n }}\n />\n </div>\n {rows.length === 0 ? (\n <EmptyState\n icon={<CheckSquare size={40} />}\n title=\"No submissions\"\n description={`There are no ${status === 'ALL' ? '' : status.toLowerCase()} submissions in this workspace.`}\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(s) => s.id}\n defaultSort={{ key: 'submitted', dir: 'desc' }}\n />\n <Pagination\n page={page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo.hasMore ?? false}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </Section>\n );\n}\n\n// ============================================================================\n// Root\n// ============================================================================\n\nfunction BuildmyiqAdminDashboard() {\n const [activeTab, setActiveTab] = useState<AdminTab>('courses');\n\n const tabs = useMemo(\n () => [\n { value: 'courses' as const, label: 'Courses', icon: <BookOpen size={18} /> },\n { value: 'assessments' as const, label: 'Assessments', icon: <ClipboardCheck size={18} /> },\n { value: 'enrollments' as const, label: 'Enrollments', icon: <Users size={18} /> },\n { value: 'submissions' as const, label: 'Submissions', icon: <CheckSquare size={18} /> },\n ],\n []\n );\n\n return (\n <PageLayout\n title=\"BuildMyIQ Admin\"\n description=\"Course, assessment, enrollment and submission governance.\"\n actions={\n <span className=\"inline-flex items-center gap-2 text-sm text-text-secondary\">\n <GraduationCap size={18} />\n Workspace-scoped\n </span>\n }\n >\n <Tabs items={tabs} value={activeTab} onChange={(v) => setActiveTab(v)} />\n <div className=\"mt-6\">\n {activeTab === 'courses' && <CoursesPanel />}\n {activeTab === 'assessments' && <AssessmentsPanel />}\n {activeTab === 'enrollments' && <EnrollmentsPanel />}\n {activeTab === 'submissions' && <SubmissionsPanel />}\n </div>\n </PageLayout>\n );\n}\n\nexport const BuildmyiqAdminRoot: FC<BuildmyiqAdminRootProps> = (props) => {\n const { workspaceToken: _workspaceToken, ...providerProps } = props;\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider\n workspaceId={props.workspaceId ?? null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <BuildmyiqProvider {...providerProps}>\n <BuildmyiqAdminDashboard />\n </BuildmyiqProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n\nexport { BuildmyiqAdminRoot as BuildMyIQAdminRoot };\n"],"mappings":"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"}
1
+ {"version":3,"file":"BuildmyiqAdminRoot.js","names":[],"sources":["../../src/buildmyiq/BuildmyiqAdminRoot.tsx"],"sourcesContent":["/**\n * BuildMyIQ Admin Root\n * @module buildmyiq\n *\n * Product-specific admin surface mounted inside `admin-app` under\n * `/admin/buildmyiq`. It exposes three core governance operations:\n *\n * 1. Course / assessment administration — list, publish, archive courses and\n * inspect assessments per course.\n * 2. Enrollment overview — workspace-wide enrollment list with status/progress.\n * 3. Submission review — graded/ungraded submission queue.\n *\n * The panel reuses the real `wspace-buildmyiq-svc` GraphQL operations already\n * consumed by the learner/author surfaces (`buiListCourses`, `buiListEnrollments`,\n * `buiListSubmissions`, `buiListAssessments`, `buiPublishCourse`, `buiArchiveCourse`).\n *\n * Remaining backend gaps (documented inline):\n * - Admin-scoped bulk mutations (bulk archive, bulk transition enrollment).\n * - Cross-workspace/admin analytics aggregations.\n * - Submission review detail + rubric grading UI.\n */\n\nimport type { FC } from 'react';\nimport { useMemo, useState } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { BookOpen, ClipboardCheck, Users, CheckSquare, GraduationCap } from 'lucide-react';\nimport { BuildmyiqProvider } from './context/BuildmyiqContext';\nimport { PageLayout } from './components/PageLayout';\nimport { Tabs } from './components/Tabs';\nimport { DataTable, type Column } from './components/DataTable';\nimport { StatusBadge } from './components/StatusBadge';\nimport { LoadingView, ErrorView, Section } from './components/StateViews';\nimport { EmptyState } from './components/EmptyState';\nimport { Pagination } from './components/Pagination';\nimport { FilterTabs } from './components/FilterTabs';\nimport {\n useBuiCourses,\n useBuiAssessments,\n useBuiEnrollments,\n useBuiSubmissions,\n useBuiPublishCourse,\n useBuiArchiveCourse,\n} from './hooks/useBuildmyiqApi';\nimport { formatDate, formatDateTime, formatPercent, formatNumber, formatHours } from './utils';\nimport type {\n BuildmyiqRootProps,\n BuiCourse,\n BuiCourseStatus,\n BuiEnrollment,\n BuiEnrollmentStatus,\n BuiSubmission,\n BuiSubmissionStatus,\n BuiAssessment,\n} from './types';\n\nexport interface BuildmyiqAdminRootProps extends BuildmyiqRootProps {\n /** Workspace token is supplied by admin-app for workspace-scoped MFEs; not used directly by BUI hooks. */\n workspaceToken?: string;\n}\n\ntype AdminTab = 'courses' | 'assessments' | 'enrollments' | 'submissions';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 30 * 1000,\n retry: 1,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nconst PAGE_SIZE = 12;\n\nconst COURSE_STATUS_OPTIONS: { value: 'ALL' | BuiCourseStatus; label: string }[] = [\n { value: 'ALL', label: 'All' },\n { value: 'DRAFT', label: 'Draft' },\n { value: 'IN_REVIEW', label: 'In Review' },\n { value: 'PUBLISHED', label: 'Published' },\n { value: 'ARCHIVED', label: 'Archived' },\n];\n\nconst ENROLLMENT_STATUS_OPTIONS: { value: 'ALL' | BuiEnrollmentStatus; label: string }[] = [\n { value: 'ALL', label: 'All' },\n { value: 'ENROLLED', label: 'Enrolled' },\n { value: 'IN_PROGRESS', label: 'In Progress' },\n { value: 'COMPLETED', label: 'Completed' },\n { value: 'DROPPED', label: 'Dropped' },\n { value: 'EXPIRED', label: 'Expired' },\n];\n\nconst SUBMISSION_STATUS_OPTIONS: { value: 'ALL' | BuiSubmissionStatus; label: string }[] = [\n { value: 'ALL', label: 'All' },\n { value: 'SUBMITTED', label: 'Submitted' },\n { value: 'GRADING', label: 'Grading' },\n { value: 'GRADED', label: 'Graded' },\n { value: 'RETURNED', label: 'Returned' },\n];\n\n// ============================================================================\n// Course administration\n// ============================================================================\n\nfunction CourseActions({ course }: { course: BuiCourse }) {\n const publish = useBuiPublishCourse();\n const archive = useBuiArchiveCourse();\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {course.status === 'DRAFT' && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => publish.mutate(course.id)}\n disabled={publish.isPending}\n >\n Publish\n </Button>\n )}\n {course.status !== 'ARCHIVED' && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => archive.mutate(course.id)}\n disabled={archive.isPending}\n >\n Archive\n </Button>\n )}\n {course.status === 'ARCHIVED' && (\n <span className=\"text-xs text-text-secondary\">Archived</span>\n )}\n </div>\n );\n}\n\nfunction CoursesPanel() {\n const [status, setStatus] = useState<'ALL' | BuiCourseStatus>('ALL');\n const [page, setPage] = useState(0);\n const [cursors, setCursors] = useState<string[]>([]);\n\n const cursor = page > 0 ? cursors[page - 1] : undefined;\n const { data, isLoading, error, refetch } = useBuiCourses({\n status: status === 'ALL' ? undefined : status,\n cursor,\n limit: PAGE_SIZE,\n });\n\n const columns = useMemo<Column<BuiCourse>[]>(\n () => [\n {\n key: 'title',\n header: 'Course',\n render: (c) => (\n <div className=\"min-w-0\">\n <p className=\"font-medium text-text-primary truncate\">{c.title}</p>\n <p className=\"text-xs text-text-secondary\">{c.slug}</p>\n </div>\n ),\n sortValue: (c) => c.title.toLowerCase(),\n },\n {\n key: 'status',\n header: 'Status',\n render: (c) => <StatusBadge status={c.status} />,\n },\n {\n key: 'level',\n header: 'Level',\n render: (c) => <StatusBadge status={c.level} />,\n },\n {\n key: 'lessons',\n header: 'Lessons',\n align: 'right',\n render: (c) => formatNumber(c.lessons?.length ?? 0),\n sortValue: (c) => c.lessons?.length ?? 0,\n },\n {\n key: 'hours',\n header: 'Est. Hours',\n align: 'right',\n render: (c) => formatHours(c.estimatedHours),\n sortValue: (c) => c.estimatedHours,\n },\n {\n key: 'public',\n header: 'Visibility',\n render: (c) => (c.isPublic ? 'Public' : 'Private'),\n },\n {\n key: 'created',\n header: 'Created',\n render: (c) => formatDate(c.createdAt),\n sortValue: (c) => new Date(c.createdAt).getTime(),\n },\n {\n key: 'actions',\n header: 'Actions',\n align: 'right',\n render: (c) => <CourseActions course={c} />,\n },\n ],\n []\n );\n\n const handlePageChange = (nextPage: number) => {\n if (nextPage > page && data?.pageInfo.cursor) {\n setCursors((prev) => [...prev, data.pageInfo.cursor as string]);\n } else if (nextPage < page) {\n setCursors((prev) => prev.slice(0, -1));\n }\n setPage(nextPage);\n };\n\n if (isLoading) return <LoadingView label=\"Loading courses…\" />;\n if (error)\n return <ErrorView title=\"Could not load courses\" message={error.message} onRetry={refetch} />;\n\n const rows = data?.items ?? [];\n\n return (\n <Section title=\"Course catalog\" description=\"Publish, archive and inspect courses.\">\n <div className=\"mb-4\">\n <FilterTabs\n options={COURSE_STATUS_OPTIONS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n setPage(0);\n setCursors([]);\n }}\n />\n </div>\n {rows.length === 0 ? (\n <EmptyState\n icon={<BookOpen size={40} />}\n title=\"No courses found\"\n description={`There are no ${status === 'ALL' ? '' : status.toLowerCase()} courses in this workspace.`}\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(c) => c.id}\n defaultSort={{ key: 'created', dir: 'desc' }}\n />\n <Pagination\n page={page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo.hasMore ?? false}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </Section>\n );\n}\n\n// ============================================================================\n// Assessment administration\n// ============================================================================\n\nfunction AssessmentsPanel() {\n const [selectedCourseId, setSelectedCourseId] = useState<string>('');\n\n const {\n data: coursesData,\n isLoading: coursesLoading,\n error: coursesError,\n } = useBuiCourses({\n status: 'PUBLISHED',\n limit: 100,\n });\n\n const {\n data: assessments,\n isLoading: assessmentsLoading,\n error: assessmentsError,\n } = useBuiAssessments(selectedCourseId || undefined);\n\n const columns = useMemo<Column<BuiAssessment>[]>(\n () => [\n {\n key: 'title',\n header: 'Assessment',\n render: (a) => (\n <div className=\"min-w-0\">\n <p className=\"font-medium text-text-primary truncate\">{a.title}</p>\n <p className=\"text-xs text-text-secondary\">{a.type}</p>\n </div>\n ),\n sortValue: (a) => a.title.toLowerCase(),\n },\n {\n key: 'status',\n header: 'Status',\n render: (a) => <StatusBadge status={a.status} />,\n },\n {\n key: 'questions',\n header: 'Questions',\n align: 'right',\n render: (a) => formatNumber(a.questions?.length ?? 0),\n sortValue: (a) => a.questions?.length ?? 0,\n },\n {\n key: 'passing',\n header: 'Passing Score',\n align: 'right',\n render: (a) => formatPercent(a.passingScore),\n },\n {\n key: 'attempts',\n header: 'Max Attempts',\n align: 'right',\n render: (a) => formatNumber(a.maxAttempts),\n },\n {\n key: 'time',\n header: 'Time Limit',\n align: 'right',\n render: (a) => (a.timeLimitMin > 0 ? `${a.timeLimitMin} min` : '—'),\n },\n ],\n []\n );\n\n if (coursesLoading) return <LoadingView label=\"Loading courses…\" />;\n if (coursesError)\n return <ErrorView title=\"Could not load courses\" message={coursesError.message} />;\n\n const courses = coursesData?.items ?? [];\n\n return (\n <Section\n title=\"Assessments\"\n description=\"Inspect assessments attached to a published course.\"\n action={\n <div className=\"min-w-[16rem]\">\n <label htmlFor=\"bui-admin-course-select\" className=\"sr-only\">\n Select course\n </label>\n <select\n id=\"bui-admin-course-select\"\n value={selectedCourseId}\n onChange={(e) => setSelectedCourseId(e.target.value)}\n className=\"w-full rounded-lg border border-border-seam bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg\"\n >\n <option value=\"\">Choose a course…</option>\n {courses.map((c) => (\n <option key={c.id} value={c.id}>\n {c.title}\n </option>\n ))}\n </select>\n </div>\n }\n >\n {!selectedCourseId ? (\n <EmptyState\n icon={<ClipboardCheck size={40} />}\n title=\"Select a course\"\n description=\"Choose a published course above to view its assessments.\"\n />\n ) : assessmentsLoading ? (\n <LoadingView label=\"Loading assessments…\" />\n ) : assessmentsError ? (\n <ErrorView title=\"Could not load assessments\" message={assessmentsError.message} />\n ) : assessments?.length === 0 ? (\n <EmptyState\n icon={<ClipboardCheck size={40} />}\n title=\"No assessments\"\n description=\"This course has no assessments yet.\"\n />\n ) : (\n <DataTable\n columns={columns}\n rows={assessments ?? []}\n rowKey={(a) => a.id}\n defaultSort={{ key: 'title', dir: 'asc' }}\n />\n )}\n </Section>\n );\n}\n\n// ============================================================================\n// Enrollment overview\n// ============================================================================\n\nfunction EnrollmentsPanel() {\n const [status, setStatus] = useState<'ALL' | BuiEnrollmentStatus>('ALL');\n const [page, setPage] = useState(0);\n const [cursors, setCursors] = useState<string[]>([]);\n\n const cursor = page > 0 ? cursors[page - 1] : undefined;\n const { data, isLoading, error, refetch } = useBuiEnrollments({\n status: status === 'ALL' ? undefined : status,\n cursor,\n limit: PAGE_SIZE,\n });\n\n const columns = useMemo<Column<BuiEnrollment>[]>(\n () => [\n {\n key: 'learner',\n header: 'Learner',\n render: (e) => <span className=\"font-mono text-xs text-text-secondary\">{e.learnerId}</span>,\n },\n {\n key: 'course',\n header: 'Course ID',\n render: (e) => <span className=\"font-mono text-xs text-text-secondary\">{e.courseId}</span>,\n },\n {\n key: 'status',\n header: 'Status',\n render: (e) => <StatusBadge status={e.status} />,\n },\n {\n key: 'progress',\n header: 'Progress',\n align: 'right',\n render: (e) => formatPercent(e.progressPct),\n sortValue: (e) => e.progressPct,\n },\n {\n key: 'cohort',\n header: 'Cohort',\n render: (e) => e.cohort?.name ?? '—',\n },\n {\n key: 'enrolled',\n header: 'Enrolled',\n render: (e) => formatDateTime(e.enrolledAt),\n sortValue: (e) => new Date(e.enrolledAt).getTime(),\n hideOnMobile: true,\n },\n {\n key: 'lastActive',\n header: 'Last Active',\n render: (e) => (e.lastActiveAt ? formatRelativeTime(e.lastActiveAt) : '—'),\n sortValue: (e) => (e.lastActiveAt ? new Date(e.lastActiveAt).getTime() : 0),\n hideOnMobile: true,\n },\n ],\n []\n );\n\n const handlePageChange = (nextPage: number) => {\n if (nextPage > page && data?.pageInfo.cursor) {\n setCursors((prev) => [...prev, data.pageInfo.cursor as string]);\n } else if (nextPage < page) {\n setCursors((prev) => prev.slice(0, -1));\n }\n setPage(nextPage);\n };\n\n if (isLoading) return <LoadingView label=\"Loading enrollments…\" />;\n if (error)\n return (\n <ErrorView title=\"Could not load enrollments\" message={error.message} onRetry={refetch} />\n );\n\n const rows = data?.items ?? [];\n\n return (\n <Section title=\"Enrollments\" description=\"Workspace-wide learner enrollment overview.\">\n <div className=\"mb-4\">\n <FilterTabs\n options={ENROLLMENT_STATUS_OPTIONS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n setPage(0);\n setCursors([]);\n }}\n />\n </div>\n {rows.length === 0 ? (\n <EmptyState\n icon={<Users size={40} />}\n title=\"No enrollments\"\n description={`There are no ${status === 'ALL' ? '' : status.toLowerCase()} enrollments in this workspace.`}\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(e) => e.id}\n defaultSort={{ key: 'enrolled', dir: 'desc' }}\n />\n <Pagination\n page={page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo.hasMore ?? false}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </Section>\n );\n}\n\n// Need formatRelativeTime for lastActive in enrollments; import it.\nfunction formatRelativeTime(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date;\n const now = new Date();\n const diffMs = d.getTime() - now.getTime();\n const future = diffMs >= 0;\n const absSeconds = Math.floor(Math.abs(diffMs) / 1000);\n const minutes = Math.floor(absSeconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const phrase = (value: number, unit: string) => {\n const label = `${value} ${unit}${value !== 1 ? 's' : ''}`;\n return future ? `in ${label}` : `${label} ago`;\n };\n if (absSeconds < 60) return future ? 'soon' : 'just now';\n if (minutes < 60) return phrase(minutes, 'min');\n if (hours < 24) return phrase(hours, 'hour');\n return phrase(days, 'day');\n}\n\n// ============================================================================\n// Submission review\n// ============================================================================\n\nfunction SubmissionsPanel() {\n const [status, setStatus] = useState<'ALL' | BuiSubmissionStatus>('ALL');\n const [page, setPage] = useState(0);\n const [cursors, setCursors] = useState<string[]>([]);\n\n const cursor = page > 0 ? cursors[page - 1] : undefined;\n const { data, isLoading, error, refetch } = useBuiSubmissions({\n status: status === 'ALL' ? undefined : status,\n cursor,\n limit: PAGE_SIZE,\n });\n\n const columns = useMemo<Column<BuiSubmission>[]>(\n () => [\n {\n key: 'learner',\n header: 'Learner',\n render: (s) => <span className=\"font-mono text-xs text-text-secondary\">{s.learnerId}</span>,\n },\n {\n key: 'assessment',\n header: 'Assessment ID',\n render: (s) => (\n <span className=\"font-mono text-xs text-text-secondary\">{s.assessmentId}</span>\n ),\n },\n {\n key: 'attempt',\n header: 'Attempt',\n align: 'right',\n render: (s) => formatNumber(s.attempt),\n },\n {\n key: 'status',\n header: 'Status',\n render: (s) => <StatusBadge status={s.status} />,\n },\n {\n key: 'score',\n header: 'Score',\n align: 'right',\n render: (s) => (s.score == null ? '—' : formatPercent(s.score)),\n sortValue: (s) => s.score ?? -1,\n },\n {\n key: 'passed',\n header: 'Passed',\n align: 'center',\n render: (s) => (s.passed == null ? '—' : s.passed ? 'Yes' : 'No'),\n },\n {\n key: 'submitted',\n header: 'Submitted',\n render: (s) => (s.submittedAt ? formatDateTime(s.submittedAt) : '—'),\n sortValue: (s) => (s.submittedAt ? new Date(s.submittedAt).getTime() : 0),\n hideOnMobile: true,\n },\n {\n key: 'actions',\n header: 'Review',\n align: 'right',\n render: () => (\n <Button variant=\"ghost\" size=\"sm\" disabled>\n Open\n </Button>\n ),\n },\n ],\n []\n );\n\n const handlePageChange = (nextPage: number) => {\n if (nextPage > page && data?.pageInfo.cursor) {\n setCursors((prev) => [...prev, data.pageInfo.cursor as string]);\n } else if (nextPage < page) {\n setCursors((prev) => prev.slice(0, -1));\n }\n setPage(nextPage);\n };\n\n if (isLoading) return <LoadingView label=\"Loading submissions…\" />;\n if (error)\n return (\n <ErrorView title=\"Could not load submissions\" message={error.message} onRetry={refetch} />\n );\n\n const rows = data?.items ?? [];\n\n return (\n <Section title=\"Submission review\" description=\"Review learner submissions and grading status.\">\n <div className=\"mb-4\">\n <FilterTabs\n options={SUBMISSION_STATUS_OPTIONS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n setPage(0);\n setCursors([]);\n }}\n />\n </div>\n {rows.length === 0 ? (\n <EmptyState\n icon={<CheckSquare size={40} />}\n title=\"No submissions\"\n description={`There are no ${status === 'ALL' ? '' : status.toLowerCase()} submissions in this workspace.`}\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(s) => s.id}\n defaultSort={{ key: 'submitted', dir: 'desc' }}\n />\n <Pagination\n page={page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo.hasMore ?? false}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </Section>\n );\n}\n\n// ============================================================================\n// Root\n// ============================================================================\n\nfunction BuildmyiqAdminDashboard() {\n const [activeTab, setActiveTab] = useState<AdminTab>('courses');\n\n const tabs = useMemo(\n () => [\n { value: 'courses' as const, label: 'Courses', icon: <BookOpen size={18} /> },\n { value: 'assessments' as const, label: 'Assessments', icon: <ClipboardCheck size={18} /> },\n { value: 'enrollments' as const, label: 'Enrollments', icon: <Users size={18} /> },\n { value: 'submissions' as const, label: 'Submissions', icon: <CheckSquare size={18} /> },\n ],\n []\n );\n\n return (\n <PageLayout\n title=\"BuildMyIQ Admin\"\n description=\"Course, assessment, enrollment and submission governance.\"\n actions={\n <span className=\"inline-flex items-center gap-2 text-sm text-text-secondary\">\n <GraduationCap size={18} />\n Workspace-scoped\n </span>\n }\n >\n <Tabs items={tabs} value={activeTab} onChange={(v) => setActiveTab(v)} />\n <div className=\"mt-6\">\n {activeTab === 'courses' && <CoursesPanel />}\n {activeTab === 'assessments' && <AssessmentsPanel />}\n {activeTab === 'enrollments' && <EnrollmentsPanel />}\n {activeTab === 'submissions' && <SubmissionsPanel />}\n </div>\n </PageLayout>\n );\n}\n\nexport const BuildmyiqAdminRoot: FC<BuildmyiqAdminRootProps> = (props) => {\n // Strip the admin-app workspace token before passing props to the BUI\n // provider; the BUI hooks use the shell's workspace-token provider instead.\n const providerProps: BuildmyiqRootProps = props;\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider\n workspaceId={props.workspaceId ?? null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <BuildmyiqProvider {...providerProps}>\n <BuildmyiqAdminDashboard />\n </BuildmyiqProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n\nexport { BuildmyiqAdminRoot as BuildMyIQAdminRoot };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IACT,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC;IAC9D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC;CACxE;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAMvD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,WAAW,CAAC;CACvB;AAMD,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAMD,MAAM,MAAM,gBAAgB,GAC1B,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/E,MAAM,MAAM,aAAa,GACvB,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExF,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;AAErE,MAAM,MAAM,eAAe,GACzB,eAAe,GAAG,iBAAiB,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElG,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;AAE5E,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/F,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAMpE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,aAAa,EAAE,cAAc,EAAuD,CAAC;AAClG,eAAO,MAAM,eAAe,EAAE,eAAe,EAAoD,CAAC;AAClG,eAAO,MAAM,YAAY,EAAE,aAAa,EAOvC,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAM/C,CAAC;AACF,eAAO,MAAM,cAAc,EAAE,eAAe,EAO3C,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAO9C,CAAC;AACF,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAMpD,CAAC;AACF,eAAO,MAAM,eAAe,EAAE,eAAe,EAM5C,CAAC;AACF,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAMpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/buildmyiq/types/index.ts"],"sourcesContent":["/**\n * Buildmyiq Microfrontend — TypeScript Type Definitions\n *\n * Buildmyiq — the AI-native education, learning & development system of record.\n * Domain pillars, each 1:1 with a `wspace-buildmyiq-svc` capability:\n * - Catalog & authoring: courses → modules → lessons, skills taxonomy\n * - Assessment: assessments → questions → submissions → grading\n * - Enrolment & progress: enrollments, lesson progress, cohorts\n * - Credentialing: certificates\n *\n * All server-facing types below mirror the `wspace-buildmyiq-svc` federated\n * GraphQL contract exactly (the `Bui*` types, `bui*` root fields). No mock data.\n *\n * @module buildmyiq/types\n */\n\nimport type { ReactNode } from 'react';\n\n// ============================================================================\n// Shell Integration Types\n// ============================================================================\n\nexport interface NavItem {\n id: string;\n label: string;\n path: string;\n icon?: ReactNode;\n badge?: number;\n order?: number;\n group?: string;\n visible?: boolean;\n external?: boolean;\n children?: NavItem[];\n}\n\nexport interface FooterItem {\n id: string;\n label: string;\n icon?: string;\n onClick?: () => void;\n type?: 'status' | 'action' | 'info';\n order?: number;\n badge?: string;\n section?: 'left' | 'center' | 'right';\n visible?: boolean;\n}\n\n/**\n * Props for the BuildmyiqRoot component. Host-contract preserving: the app\n * shell spreads `workspaceBaseProps` (basePath, currentUser, workspaceId,\n * tenantId, apiGatewayUrl, authToken, navigate, registerNavItems,\n * registerFooterItems) onto this component.\n */\nexport interface BuildmyiqRootProps {\n basePath?: string;\n workspaceId?: string;\n tenantId?: string;\n apiGatewayUrl?: string;\n authToken?: string;\n navigate?: (path: string) => void;\n currentUser?: {\n id: string;\n email: string;\n firstName?: string;\n lastName?: string;\n avatar?: string;\n username?: string;\n name?: string;\n role?: string;\n } | null;\n registerNavItems?: (items: NavItem | NavItem[]) => () => void;\n registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;\n}\n\nexport type TrendDirection = 'up' | 'down' | 'neutral';\n\n// ============================================================================\n// Pagination (mirror svc PaginationInput / Bui*PageInfo)\n// ============================================================================\n\n/**\n * The svc `PaginationInput` accepts { limit, offset, cursor } but the resolver\n * uses cursor+limit only (offset is a no-op). We drive pages by cursor:\n * pass `pagination.cursor = previous pageInfo.cursor` for the next page. The\n * FIRST page must OMIT cursor entirely (an explicit `cursor: null` is rejected).\n */\nexport interface PaginationInput {\n limit?: number;\n offset?: number;\n cursor?: string | null;\n}\n\n/** All Bui*PageInfo variants are structurally { cursor, hasMore }. */\nexport interface BuiPageInfo {\n cursor?: string | null;\n hasMore: boolean;\n}\n\nexport interface BuiConnection<T> {\n items: T[];\n pageInfo: BuiPageInfo;\n}\n\n// ============================================================================\n// Federated stubs (owned by other subgraphs — wspace-files-svc)\n// ============================================================================\n\n/** A wspace-files-svc File reference resolved for cover/media/certificate. */\nexport interface BuiFileRef {\n id: string;\n name?: string | null;\n downloadUrl?: string | null;\n mimeType?: string | null;\n sizeBytes?: number | null;\n}\n\n// ============================================================================\n// Domain enums (mirror wspace-buildmyiq-svc .hive-schema.graphql exactly)\n// ============================================================================\n\nexport type BuiSkillCategory =\n | 'TECHNICAL'\n | 'BUSINESS'\n | 'CREATIVE'\n | 'COGNITIVE'\n | 'SOCIAL'\n | 'LANGUAGE';\n\nexport type BuiCourseLevel = 'BEGINNER' | 'INTERMEDIATE' | 'ADVANCED' | 'EXPERT';\n\nexport type BuiCourseStatus = 'DRAFT' | 'IN_REVIEW' | 'PUBLISHED' | 'ARCHIVED';\n\nexport type BuiLessonType =\n | 'ARTICLE'\n | 'VIDEO'\n | 'QUIZ'\n | 'ASSIGNMENT'\n | 'INTERACTIVE'\n | 'LIVE_SESSION';\n\nexport type BuiAssessmentType = 'QUIZ' | 'EXAM' | 'ASSIGNMENT' | 'PRACTICAL' | 'SURVEY';\n\nexport type BuiAssessmentStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\n\nexport type BuiQuestionType =\n | 'SINGLE_CHOICE'\n | 'MULTIPLE_CHOICE'\n | 'TRUE_FALSE'\n | 'SHORT_ANSWER'\n | 'ESSAY'\n | 'CODE';\n\nexport type BuiSubmissionStatus = 'IN_PROGRESS' | 'SUBMITTED' | 'GRADING' | 'GRADED' | 'RETURNED';\n\nexport type BuiEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED' | 'EXPIRED';\n\nexport type BuiProgressStatus = 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED';\n\nexport type BuiCohortStatus = 'SCHEDULED' | 'ENROLLING' | 'ACTIVE' | 'COMPLETED' | 'CANCELLED';\n\nexport type BuiCertificateStatus = 'ISSUED' | 'EXPIRED' | 'REVOKED';\n\n// ============================================================================\n// Domain entity types (mirror the `Bui*` GraphQL types exactly)\n// ============================================================================\n\nexport interface BuiSkill {\n id: string;\n workspaceId: string;\n name: string;\n category: BuiSkillCategory;\n description?: string | null;\n isActive: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiModule {\n id: string;\n workspaceId: string;\n courseId: string;\n title: string;\n description?: string | null;\n position: number;\n lessons: BuiLesson[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiLesson {\n id: string;\n workspaceId: string;\n courseId: string;\n moduleId?: string | null;\n title: string;\n type: BuiLessonType;\n content?: string | null;\n media?: BuiFileRef | null;\n durationMin: number;\n position: number;\n isPreview: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiCourse {\n id: string;\n workspaceId: string;\n title: string;\n slug: string;\n summary?: string | null;\n description?: string | null;\n status: BuiCourseStatus;\n level: BuiCourseLevel;\n language: string;\n estimatedHours: number;\n isPublic: boolean;\n tags: string[];\n skillId?: string | null;\n skill?: BuiSkill | null;\n instructorId?: string | null;\n cover?: BuiFileRef | null;\n publishedAt?: string | null;\n modules: BuiModule[];\n lessons: BuiLesson[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiQuestion {\n id: string;\n workspaceId: string;\n assessmentId: string;\n prompt: string;\n type: BuiQuestionType;\n /**\n * JSON blob — array of `{ id?, label }` choices for choice questions. NOTE:\n * `answerKey` is a CREATE-INPUT field only; it is NOT exposed on the type\n * (never query it in a fragment — GRAPHQL_VALIDATION_FAILED).\n */\n options?: unknown;\n points: number;\n position: number;\n explanation?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiAssessment {\n id: string;\n workspaceId: string;\n courseId: string;\n title: string;\n description?: string | null;\n type: BuiAssessmentType;\n status: BuiAssessmentStatus;\n passingScore: number;\n maxAttempts: number;\n timeLimitMin: number;\n isGraded: boolean;\n questions: BuiQuestion[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiSubmission {\n id: string;\n workspaceId: string;\n assessmentId: string;\n enrollmentId?: string | null;\n learnerId: string;\n attempt: number;\n /** JSON blob — learner answers keyed by questionId. */\n answers?: unknown;\n status: BuiSubmissionStatus;\n score?: number | null;\n passed?: boolean | null;\n feedback?: string | null;\n gradedById?: string | null;\n gradedAt?: string | null;\n submittedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiLessonProgress {\n id: string;\n workspaceId: string;\n enrollmentId: string;\n lessonId: string;\n status: BuiProgressStatus;\n secondsSpent: number;\n completedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiCohort {\n id: string;\n workspaceId: string;\n courseId: string;\n name: string;\n capacity: number;\n facilitatorId?: string | null;\n startDate?: string | null;\n endDate?: string | null;\n status: BuiCohortStatus;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiEnrollment {\n id: string;\n workspaceId: string;\n courseId: string;\n learnerId: string;\n cohortId?: string | null;\n cohort?: BuiCohort | null;\n status: BuiEnrollmentStatus;\n progressPct: number;\n enrolledAt: string;\n startedAt?: string | null;\n completedAt?: string | null;\n lastActiveAt?: string | null;\n expiresAt?: string | null;\n lessonProgress: BuiLessonProgress[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiCertificate {\n id: string;\n workspaceId: string;\n courseId: string;\n learnerId: string;\n enrollmentId?: string | null;\n serial: string;\n status: BuiCertificateStatus;\n issuedAt: string;\n expiresAt?: string | null;\n revokedAt?: string | null;\n finalScore?: number | null;\n file?: BuiFileRef | null;\n createdAt: string;\n updatedAt: string;\n}\n\n// ============================================================================\n// Mutation input types (mirror the svc `Bui*Input` shapes)\n// ============================================================================\n\nexport interface BuiCreateCourseInput {\n title: string;\n slug: string;\n summary?: string;\n description?: string;\n level?: BuiCourseLevel;\n language?: string;\n estimatedHours?: number;\n isPublic?: boolean;\n tags?: string[];\n skillId?: string;\n instructorId?: string;\n coverFileId?: string;\n}\n\nexport interface BuiUpdateCourseInput {\n title?: string;\n summary?: string;\n description?: string;\n level?: BuiCourseLevel;\n language?: string;\n estimatedHours?: number;\n isPublic?: boolean;\n tags?: string[];\n skillId?: string;\n instructorId?: string;\n coverFileId?: string;\n}\n\nexport interface BuiCreateModuleInput {\n courseId: string;\n title: string;\n description?: string;\n position?: number;\n}\n\nexport interface BuiCreateLessonInput {\n courseId: string;\n moduleId?: string;\n title: string;\n type?: BuiLessonType;\n content?: string;\n durationMin?: number;\n position?: number;\n isPreview?: boolean;\n mediaFileId?: string;\n}\n\nexport interface BuiCreateAssessmentInput {\n courseId: string;\n title: string;\n description?: string;\n type?: BuiAssessmentType;\n passingScore?: number;\n maxAttempts?: number;\n timeLimitMin?: number;\n isGraded?: boolean;\n}\n\nexport interface BuiCreateQuestionInput {\n assessmentId: string;\n prompt: string;\n type?: BuiQuestionType;\n options?: unknown;\n answerKey?: unknown;\n points?: number;\n position?: number;\n explanation?: string;\n}\n\nexport interface BuiCreateSkillInput {\n name: string;\n category?: BuiSkillCategory;\n description?: string;\n}\n\nexport interface BuiCreateCohortInput {\n courseId: string;\n name: string;\n capacity?: number;\n facilitatorId?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface BuiEnrollInput {\n courseId: string;\n learnerId?: string;\n cohortId?: string;\n expiresAt?: string;\n}\n\nexport interface BuiRecordLessonProgressInput {\n enrollmentId: string;\n lessonId: string;\n secondsSpent?: number;\n status?: BuiProgressStatus;\n}\n\nexport interface BuiSubmitAssessmentInput {\n assessmentId: string;\n learnerId?: string;\n enrollmentId?: string;\n attempt?: number;\n answers?: unknown;\n}\n\nexport interface BuiGradeSubmissionInput {\n score: number;\n passed?: boolean;\n feedback?: string;\n}\n\nexport interface BuiIssueCertificateInput {\n courseId: string;\n learnerId: string;\n enrollmentId?: string;\n serial: string;\n finalScore?: number;\n expiresAt?: string;\n fileId?: string;\n}\n\n// ============================================================================\n// Convenience option lists (for select controls in authoring UIs)\n// ============================================================================\n\nexport const COURSE_LEVELS: BuiCourseLevel[] = ['BEGINNER', 'INTERMEDIATE', 'ADVANCED', 'EXPERT'];\nexport const COURSE_STATUSES: BuiCourseStatus[] = ['DRAFT', 'IN_REVIEW', 'PUBLISHED', 'ARCHIVED'];\nexport const LESSON_TYPES: BuiLessonType[] = [\n 'ARTICLE',\n 'VIDEO',\n 'QUIZ',\n 'ASSIGNMENT',\n 'INTERACTIVE',\n 'LIVE_SESSION',\n];\nexport const ASSESSMENT_TYPES: BuiAssessmentType[] = [\n 'QUIZ',\n 'EXAM',\n 'ASSIGNMENT',\n 'PRACTICAL',\n 'SURVEY',\n];\nexport const QUESTION_TYPES: BuiQuestionType[] = [\n 'SINGLE_CHOICE',\n 'MULTIPLE_CHOICE',\n 'TRUE_FALSE',\n 'SHORT_ANSWER',\n 'ESSAY',\n 'CODE',\n];\nexport const SKILL_CATEGORIES: BuiSkillCategory[] = [\n 'TECHNICAL',\n 'BUSINESS',\n 'CREATIVE',\n 'COGNITIVE',\n 'SOCIAL',\n 'LANGUAGE',\n];\nexport const ENROLLMENT_STATUSES: BuiEnrollmentStatus[] = [\n 'ENROLLED',\n 'IN_PROGRESS',\n 'COMPLETED',\n 'DROPPED',\n 'EXPIRED',\n];\nexport const COHORT_STATUSES: BuiCohortStatus[] = [\n 'SCHEDULED',\n 'ENROLLING',\n 'ACTIVE',\n 'COMPLETED',\n 'CANCELLED',\n];\nexport const SUBMISSION_STATUSES: BuiSubmissionStatus[] = [\n 'IN_PROGRESS',\n 'SUBMITTED',\n 'GRADING',\n 'GRADED',\n 'RETURNED',\n];\n"],"mappings":";AA8dA,IAAa,IAAkC;CAAC;CAAY;CAAgB;CAAY;CAAS,EAEpF,IAAgC;CAC3C;CACA;CACA;CACA;CACA;CACA;CACD,EACY,IAAwC;CACnD;CACA;CACA;CACA;CACA;CACD,EACY,IAAoC;CAC/C;CACA;CACA;CACA;CACA;CACA;CACD,EACY,IAAuC;CAClD;CACA;CACA;CACA;CACA;CACA;CACD,EAQY,IAAqC;CAChD;CACA;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/buildmyiq/types/index.ts"],"sourcesContent":["/**\n * Buildmyiq Microfrontend — TypeScript Type Definitions\n *\n * Buildmyiq — the AI-native education, learning & development system of record.\n * Domain pillars, each 1:1 with a `wspace-buildmyiq-svc` capability:\n * - Catalog & authoring: courses → modules → lessons, skills taxonomy\n * - Assessment: assessments → questions → submissions → grading\n * - Enrolment & progress: enrollments, lesson progress, cohorts\n * - Credentialing: certificates\n *\n * All server-facing types below mirror the `wspace-buildmyiq-svc` federated\n * GraphQL contract exactly (the `Bui*` types, `bui*` root fields). No mock data.\n *\n * @module buildmyiq/types\n */\n\nimport type { ReactNode } from 'react';\n\n// ============================================================================\n// Shell Integration Types\n// ============================================================================\n\nexport interface NavItem {\n id: string;\n label: string;\n path: string;\n icon?: ReactNode;\n badge?: number;\n order?: number;\n group?: string;\n visible?: boolean;\n external?: boolean;\n children?: NavItem[];\n}\n\nexport interface FooterItem {\n id: string;\n label: string;\n icon?: string;\n onClick?: () => void;\n type?: 'status' | 'action' | 'info';\n order?: number;\n badge?: string;\n section?: 'left' | 'center' | 'right';\n visible?: boolean;\n}\n\n/**\n * Props for the BuildmyiqRoot component. Host-contract preserving: the app\n * shell spreads `workspaceBaseProps` (basePath, currentUser, workspaceId,\n * tenantId, apiGatewayUrl, authToken, navigate, registerNavItems,\n * registerFooterItems) onto this component.\n */\nexport interface BuildmyiqRootProps {\n basePath?: string;\n workspaceId?: string;\n tenantId?: string;\n apiGatewayUrl?: string;\n authToken?: string;\n navigate?: (path: string) => void;\n currentUser?: {\n id: string;\n email: string;\n firstName?: string;\n lastName?: string;\n avatar?: string;\n username?: string;\n name?: string;\n role?: string;\n } | null;\n registerNavItems?: (items: NavItem | NavItem[]) => () => void;\n registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;\n}\n\nexport type TrendDirection = 'up' | 'down' | 'neutral';\n\n// ============================================================================\n// Pagination (mirror svc PaginationInput / Bui*PageInfo)\n// ============================================================================\n\n/**\n * The svc `PaginationInput` accepts { limit, offset, cursor } but the resolver\n * uses cursor+limit only (offset is a no-op). We drive pages by cursor:\n * pass `pagination.cursor = previous pageInfo.cursor` for the next page. The\n * FIRST page must OMIT cursor entirely (an explicit `cursor: null` is rejected).\n */\nexport interface PaginationInput {\n limit?: number;\n offset?: number;\n cursor?: string | null;\n}\n\n/** All Bui*PageInfo variants are structurally { cursor, hasMore }. */\nexport interface BuiPageInfo {\n cursor?: string | null;\n hasMore: boolean;\n}\n\nexport interface BuiConnection<T> {\n items: T[];\n pageInfo: BuiPageInfo;\n}\n\n// ============================================================================\n// Federated stubs (owned by other subgraphs — wspace-files-svc)\n// ============================================================================\n\n/** A wspace-files-svc File reference resolved for cover/media/certificate. */\nexport interface BuiFileRef {\n id: string;\n name?: string | null;\n downloadUrl?: string | null;\n mimeType?: string | null;\n sizeBytes?: number | null;\n}\n\n// ============================================================================\n// Domain enums (mirror wspace-buildmyiq-svc .hive-schema.graphql exactly)\n// ============================================================================\n\nexport type BuiSkillCategory =\n 'TECHNICAL' | 'BUSINESS' | 'CREATIVE' | 'COGNITIVE' | 'SOCIAL' | 'LANGUAGE';\n\nexport type BuiCourseLevel = 'BEGINNER' | 'INTERMEDIATE' | 'ADVANCED' | 'EXPERT';\n\nexport type BuiCourseStatus = 'DRAFT' | 'IN_REVIEW' | 'PUBLISHED' | 'ARCHIVED';\n\nexport type BuiLessonType =\n 'ARTICLE' | 'VIDEO' | 'QUIZ' | 'ASSIGNMENT' | 'INTERACTIVE' | 'LIVE_SESSION';\n\nexport type BuiAssessmentType = 'QUIZ' | 'EXAM' | 'ASSIGNMENT' | 'PRACTICAL' | 'SURVEY';\n\nexport type BuiAssessmentStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\n\nexport type BuiQuestionType =\n 'SINGLE_CHOICE' | 'MULTIPLE_CHOICE' | 'TRUE_FALSE' | 'SHORT_ANSWER' | 'ESSAY' | 'CODE';\n\nexport type BuiSubmissionStatus = 'IN_PROGRESS' | 'SUBMITTED' | 'GRADING' | 'GRADED' | 'RETURNED';\n\nexport type BuiEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED' | 'EXPIRED';\n\nexport type BuiProgressStatus = 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED';\n\nexport type BuiCohortStatus = 'SCHEDULED' | 'ENROLLING' | 'ACTIVE' | 'COMPLETED' | 'CANCELLED';\n\nexport type BuiCertificateStatus = 'ISSUED' | 'EXPIRED' | 'REVOKED';\n\n// ============================================================================\n// Domain entity types (mirror the `Bui*` GraphQL types exactly)\n// ============================================================================\n\nexport interface BuiSkill {\n id: string;\n workspaceId: string;\n name: string;\n category: BuiSkillCategory;\n description?: string | null;\n isActive: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiModule {\n id: string;\n workspaceId: string;\n courseId: string;\n title: string;\n description?: string | null;\n position: number;\n lessons: BuiLesson[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiLesson {\n id: string;\n workspaceId: string;\n courseId: string;\n moduleId?: string | null;\n title: string;\n type: BuiLessonType;\n content?: string | null;\n media?: BuiFileRef | null;\n durationMin: number;\n position: number;\n isPreview: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiCourse {\n id: string;\n workspaceId: string;\n title: string;\n slug: string;\n summary?: string | null;\n description?: string | null;\n status: BuiCourseStatus;\n level: BuiCourseLevel;\n language: string;\n estimatedHours: number;\n isPublic: boolean;\n tags: string[];\n skillId?: string | null;\n skill?: BuiSkill | null;\n instructorId?: string | null;\n cover?: BuiFileRef | null;\n publishedAt?: string | null;\n modules: BuiModule[];\n lessons: BuiLesson[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiQuestion {\n id: string;\n workspaceId: string;\n assessmentId: string;\n prompt: string;\n type: BuiQuestionType;\n /**\n * JSON blob — array of `{ id?, label }` choices for choice questions. NOTE:\n * `answerKey` is a CREATE-INPUT field only; it is NOT exposed on the type\n * (never query it in a fragment — GRAPHQL_VALIDATION_FAILED).\n */\n options?: unknown;\n points: number;\n position: number;\n explanation?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiAssessment {\n id: string;\n workspaceId: string;\n courseId: string;\n title: string;\n description?: string | null;\n type: BuiAssessmentType;\n status: BuiAssessmentStatus;\n passingScore: number;\n maxAttempts: number;\n timeLimitMin: number;\n isGraded: boolean;\n questions: BuiQuestion[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiSubmission {\n id: string;\n workspaceId: string;\n assessmentId: string;\n enrollmentId?: string | null;\n learnerId: string;\n attempt: number;\n /** JSON blob — learner answers keyed by questionId. */\n answers?: unknown;\n status: BuiSubmissionStatus;\n score?: number | null;\n passed?: boolean | null;\n feedback?: string | null;\n gradedById?: string | null;\n gradedAt?: string | null;\n submittedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiLessonProgress {\n id: string;\n workspaceId: string;\n enrollmentId: string;\n lessonId: string;\n status: BuiProgressStatus;\n secondsSpent: number;\n completedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiCohort {\n id: string;\n workspaceId: string;\n courseId: string;\n name: string;\n capacity: number;\n facilitatorId?: string | null;\n startDate?: string | null;\n endDate?: string | null;\n status: BuiCohortStatus;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiEnrollment {\n id: string;\n workspaceId: string;\n courseId: string;\n learnerId: string;\n cohortId?: string | null;\n cohort?: BuiCohort | null;\n status: BuiEnrollmentStatus;\n progressPct: number;\n enrolledAt: string;\n startedAt?: string | null;\n completedAt?: string | null;\n lastActiveAt?: string | null;\n expiresAt?: string | null;\n lessonProgress: BuiLessonProgress[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BuiCertificate {\n id: string;\n workspaceId: string;\n courseId: string;\n learnerId: string;\n enrollmentId?: string | null;\n serial: string;\n status: BuiCertificateStatus;\n issuedAt: string;\n expiresAt?: string | null;\n revokedAt?: string | null;\n finalScore?: number | null;\n file?: BuiFileRef | null;\n createdAt: string;\n updatedAt: string;\n}\n\n// ============================================================================\n// Mutation input types (mirror the svc `Bui*Input` shapes)\n// ============================================================================\n\nexport interface BuiCreateCourseInput {\n title: string;\n slug: string;\n summary?: string;\n description?: string;\n level?: BuiCourseLevel;\n language?: string;\n estimatedHours?: number;\n isPublic?: boolean;\n tags?: string[];\n skillId?: string;\n instructorId?: string;\n coverFileId?: string;\n}\n\nexport interface BuiUpdateCourseInput {\n title?: string;\n summary?: string;\n description?: string;\n level?: BuiCourseLevel;\n language?: string;\n estimatedHours?: number;\n isPublic?: boolean;\n tags?: string[];\n skillId?: string;\n instructorId?: string;\n coverFileId?: string;\n}\n\nexport interface BuiCreateModuleInput {\n courseId: string;\n title: string;\n description?: string;\n position?: number;\n}\n\nexport interface BuiCreateLessonInput {\n courseId: string;\n moduleId?: string;\n title: string;\n type?: BuiLessonType;\n content?: string;\n durationMin?: number;\n position?: number;\n isPreview?: boolean;\n mediaFileId?: string;\n}\n\nexport interface BuiCreateAssessmentInput {\n courseId: string;\n title: string;\n description?: string;\n type?: BuiAssessmentType;\n passingScore?: number;\n maxAttempts?: number;\n timeLimitMin?: number;\n isGraded?: boolean;\n}\n\nexport interface BuiCreateQuestionInput {\n assessmentId: string;\n prompt: string;\n type?: BuiQuestionType;\n options?: unknown;\n answerKey?: unknown;\n points?: number;\n position?: number;\n explanation?: string;\n}\n\nexport interface BuiCreateSkillInput {\n name: string;\n category?: BuiSkillCategory;\n description?: string;\n}\n\nexport interface BuiCreateCohortInput {\n courseId: string;\n name: string;\n capacity?: number;\n facilitatorId?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface BuiEnrollInput {\n courseId: string;\n learnerId?: string;\n cohortId?: string;\n expiresAt?: string;\n}\n\nexport interface BuiRecordLessonProgressInput {\n enrollmentId: string;\n lessonId: string;\n secondsSpent?: number;\n status?: BuiProgressStatus;\n}\n\nexport interface BuiSubmitAssessmentInput {\n assessmentId: string;\n learnerId?: string;\n enrollmentId?: string;\n attempt?: number;\n answers?: unknown;\n}\n\nexport interface BuiGradeSubmissionInput {\n score: number;\n passed?: boolean;\n feedback?: string;\n}\n\nexport interface BuiIssueCertificateInput {\n courseId: string;\n learnerId: string;\n enrollmentId?: string;\n serial: string;\n finalScore?: number;\n expiresAt?: string;\n fileId?: string;\n}\n\n// ============================================================================\n// Convenience option lists (for select controls in authoring UIs)\n// ============================================================================\n\nexport const COURSE_LEVELS: BuiCourseLevel[] = ['BEGINNER', 'INTERMEDIATE', 'ADVANCED', 'EXPERT'];\nexport const COURSE_STATUSES: BuiCourseStatus[] = ['DRAFT', 'IN_REVIEW', 'PUBLISHED', 'ARCHIVED'];\nexport const LESSON_TYPES: BuiLessonType[] = [\n 'ARTICLE',\n 'VIDEO',\n 'QUIZ',\n 'ASSIGNMENT',\n 'INTERACTIVE',\n 'LIVE_SESSION',\n];\nexport const ASSESSMENT_TYPES: BuiAssessmentType[] = [\n 'QUIZ',\n 'EXAM',\n 'ASSIGNMENT',\n 'PRACTICAL',\n 'SURVEY',\n];\nexport const QUESTION_TYPES: BuiQuestionType[] = [\n 'SINGLE_CHOICE',\n 'MULTIPLE_CHOICE',\n 'TRUE_FALSE',\n 'SHORT_ANSWER',\n 'ESSAY',\n 'CODE',\n];\nexport const SKILL_CATEGORIES: BuiSkillCategory[] = [\n 'TECHNICAL',\n 'BUSINESS',\n 'CREATIVE',\n 'COGNITIVE',\n 'SOCIAL',\n 'LANGUAGE',\n];\nexport const ENROLLMENT_STATUSES: BuiEnrollmentStatus[] = [\n 'ENROLLED',\n 'IN_PROGRESS',\n 'COMPLETED',\n 'DROPPED',\n 'EXPIRED',\n];\nexport const COHORT_STATUSES: BuiCohortStatus[] = [\n 'SCHEDULED',\n 'ENROLLING',\n 'ACTIVE',\n 'COMPLETED',\n 'CANCELLED',\n];\nexport const SUBMISSION_STATUSES: BuiSubmissionStatus[] = [\n 'IN_PROGRESS',\n 'SUBMITTED',\n 'GRADING',\n 'GRADED',\n 'RETURNED',\n];\n"],"mappings":";AA+cA,IAAa,IAAkC;CAAC;CAAY;CAAgB;CAAY;CAAS,EAEpF,IAAgC;CAC3C;CACA;CACA;CACA;CACA;CACA;CACD,EACY,IAAwC;CACnD;CACA;CACA;CACA;CACA;CACD,EACY,IAAoC;CAC/C;CACA;CACA;CACA;CACA;CACA;CACD,EACY,IAAuC;CAClD;CACA;CACA;CACA;CACA;CACA;CACD,EAQY,IAAqC;CAChD;CACA;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,10 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { EmptyState } from '../buildmyiq/components/EmptyState';
3
+
4
+ declare const meta: Meta<typeof EmptyState>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof meta>;
7
+ export declare const IconOnly: Story;
8
+ export declare const WithAction: Story;
9
+ export declare const Illustrated: Story;
10
+ //# sourceMappingURL=EmptyState.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.stories.d.ts","sourceRoot":"","sources":["../../src/stories/EmptyState.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAMjC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAexB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAMzB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { MetricsCard } from '../buildmyiq/components/MetricsCard';
3
+
4
+ declare const meta: Meta<typeof MetricsCard>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof meta>;
7
+ export declare const Default: Story;
8
+ export declare const WithTrend: Story;
9
+ export declare const Featured: Story;
10
+ //# sourceMappingURL=MetricsCard.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsCard.stories.d.ts","sourceRoot":"","sources":["../../src/stories/MetricsCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAMlC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { StatusBadge } from '../buildmyiq/components/StatusBadge';
3
+
4
+ declare const meta: Meta<typeof StatusBadge>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof meta>;
7
+ export declare const Published: Story;
8
+ export declare const InProgress: Story;
9
+ export declare const Completed: Story;
10
+ export declare const Advanced: Story;
11
+ export declare const Technical: Story;
12
+ //# sourceMappingURL=StatusBadge.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.stories.d.ts","sourceRoot":"","sources":["../../src/stories/StatusBadge.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAYlC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-buildmyiq",
3
- "version": "2026.715.1",
3
+ "version": "2026.716.1",
4
4
  "description": "Burdenoff BuildMyIQ Microfrontend — education, learning & development",
5
5
  "type": "module",
6
6
  "files": [
@@ -30,7 +30,10 @@
30
30
  "lint": "eslint .",
31
31
  "format": "prettier --write \"src/**/*.{ts,tsx}\"",
32
32
  "type:check": "tsc --noEmit",
33
- "sanity": "bun run codegen && bun run lint && bun run format && bun run type:check && bun run build",
33
+ "storybook": "storybook dev -p 6006",
34
+ "build-storybook": "storybook build",
35
+ "test:storybook": "test-storybook",
36
+ "sanity": "bun run codegen && bun run lint && bun run format && bun run type:check && bun run build && bun run build-storybook",
34
37
  "schema:pull": "graphql-codegen --project schema-wspace && graphql-codegen --project schema-global",
35
38
  "codegen": "graphql-codegen --project wspace && graphql-codegen --project global",
36
39
  "codegen:all": "bun run schema:pull && bun run codegen",
@@ -68,7 +71,15 @@
68
71
  "@types/react": "^19.0.2",
69
72
  "@types/react-dom": "^19.0.2",
70
73
  "@vitejs/plugin-react": "^4.3.4",
74
+ "@storybook/addon-essentials": "^8.6.0",
75
+ "@storybook/addon-interactions": "^8.6.0",
76
+ "@storybook/react": "^8.6.0",
77
+ "@storybook/react-vite": "^8.6.0",
78
+ "@storybook/test": "^8.6.0",
79
+ "@storybook/test-runner": "0.22.0",
80
+ "@tailwindcss/vite": "^4.3.2",
71
81
  "autoprefixer": "^10.4.20",
82
+ "storybook": "^8.6.0",
72
83
  "eslint": "^9.18.0",
73
84
  "eslint-plugin-react": "^7.37.5",
74
85
  "eslint-plugin-react-hooks": "^7.0.1",