@burdenoff/microfe-buildmyiq 2026.1031.4 → 2026.1101.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/buildmyiq/components/BadgeIcon.d.ts +13 -0
- package/dist/buildmyiq/components/BadgeIcon.d.ts.map +1 -0
- package/dist/buildmyiq/components/BadgeIcon.js +42 -0
- package/dist/buildmyiq/components/BadgeIcon.js.map +1 -0
- package/dist/buildmyiq/components/StatusBadge.d.ts.map +1 -1
- package/dist/buildmyiq/components/StatusBadge.js +1 -0
- package/dist/buildmyiq/components/StatusBadge.js.map +1 -1
- package/dist/buildmyiq/hooks/collectPages.d.ts +23 -0
- package/dist/buildmyiq/hooks/collectPages.d.ts.map +1 -0
- package/dist/buildmyiq/hooks/collectPages.js +14 -0
- package/dist/buildmyiq/hooks/collectPages.js.map +1 -0
- package/dist/buildmyiq/hooks/useBuildmyiqApi.d.ts +59 -15
- package/dist/buildmyiq/hooks/useBuildmyiqApi.d.ts.map +1 -1
- package/dist/buildmyiq/hooks/useBuildmyiqApi.js +673 -488
- package/dist/buildmyiq/hooks/useBuildmyiqApi.js.map +1 -1
- package/dist/buildmyiq/pages/badges/BadgesPanel.d.ts +3 -0
- package/dist/buildmyiq/pages/badges/BadgesPanel.d.ts.map +1 -0
- package/dist/buildmyiq/pages/badges/BadgesPanel.js +545 -0
- package/dist/buildmyiq/pages/badges/BadgesPanel.js.map +1 -0
- package/dist/buildmyiq/pages/badges/MyBadgesSection.d.ts +3 -0
- package/dist/buildmyiq/pages/badges/MyBadgesSection.d.ts.map +1 -0
- package/dist/buildmyiq/pages/badges/MyBadgesSection.js +56 -0
- package/dist/buildmyiq/pages/badges/MyBadgesSection.js.map +1 -0
- package/dist/buildmyiq/pages/certificates/CertificatesPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/certificates/CertificatesPage.js +265 -243
- package/dist/buildmyiq/pages/certificates/CertificatesPage.js.map +1 -1
- package/dist/buildmyiq/pages/learning/MyLearningPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/learning/MyLearningPage.js +91 -82
- package/dist/buildmyiq/pages/learning/MyLearningPage.js.map +1 -1
- package/dist/buildmyiq/pages/paths/PathFinderDialog.d.ts +15 -0
- package/dist/buildmyiq/pages/paths/PathFinderDialog.d.ts.map +1 -0
- package/dist/buildmyiq/pages/paths/PathFinderDialog.js +152 -0
- package/dist/buildmyiq/pages/paths/PathFinderDialog.js.map +1 -0
- package/dist/buildmyiq/pages/paths/PathsPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/paths/PathsPage.js +180 -167
- package/dist/buildmyiq/pages/paths/PathsPage.js.map +1 -1
- package/dist/buildmyiq/pages/paths/RecommendedPathsRail.d.ts +24 -0
- package/dist/buildmyiq/pages/paths/RecommendedPathsRail.d.ts.map +1 -0
- package/dist/buildmyiq/pages/paths/RecommendedPathsRail.js +203 -0
- package/dist/buildmyiq/pages/paths/RecommendedPathsRail.js.map +1 -0
- package/dist/buildmyiq/pages/paths/journeys.d.ts +47 -0
- package/dist/buildmyiq/pages/paths/journeys.d.ts.map +1 -0
- package/dist/buildmyiq/pages/paths/journeys.js +69 -0
- package/dist/buildmyiq/pages/paths/journeys.js.map +1 -0
- package/dist/buildmyiq/pages/paths/pathFinder.d.ts +28 -0
- package/dist/buildmyiq/pages/paths/pathFinder.d.ts.map +1 -0
- package/dist/buildmyiq/pages/paths/pathFinder.js +151 -0
- package/dist/buildmyiq/pages/paths/pathFinder.js.map +1 -0
- package/dist/buildmyiq/types/index.d.ts +88 -0
- package/dist/buildmyiq/types/index.d.ts.map +1 -1
- package/dist/buildmyiq/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
/** Icon keys accepted by `buiCreateBadge` / `buiUpdateBadge`, in picker order. */
|
|
3
|
+
export declare const BADGE_ICON_KEYS: string[];
|
|
4
|
+
interface BadgeIconProps {
|
|
5
|
+
icon: string;
|
|
6
|
+
/** Muted treatment for archived badges and revoked awards. */
|
|
7
|
+
muted?: boolean;
|
|
8
|
+
size?: 'sm' | 'md' | 'lg';
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const BadgeIcon: FC<BadgeIconProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=BadgeIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BadgeIcon.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/components/BadgeIcon.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAiChC,kFAAkF;AAClF,eAAO,MAAM,eAAe,UAAqB,CAAC;AAElD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAkBxC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { cn as e } from "../utils/cn.js";
|
|
2
|
+
import { Award as t, BookOpen as n, Crown as r, Flame as i, Lightbulb as a, Medal as o, Rocket as s, Shield as c, Sparkles as l, Star as u, Target as d, Trophy as f } from "lucide-react";
|
|
3
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
4
|
+
//#region src/buildmyiq/components/BadgeIcon.tsx
|
|
5
|
+
var m = {
|
|
6
|
+
award: t,
|
|
7
|
+
star: u,
|
|
8
|
+
trophy: f,
|
|
9
|
+
medal: o,
|
|
10
|
+
rocket: s,
|
|
11
|
+
lightbulb: a,
|
|
12
|
+
book: n,
|
|
13
|
+
target: d,
|
|
14
|
+
flame: i,
|
|
15
|
+
shield: c,
|
|
16
|
+
sparkles: l,
|
|
17
|
+
crown: r
|
|
18
|
+
}, h = Object.keys(m), g = {
|
|
19
|
+
sm: {
|
|
20
|
+
box: "h-9 w-9 rounded-lg",
|
|
21
|
+
glyph: "h-4 w-4"
|
|
22
|
+
},
|
|
23
|
+
md: {
|
|
24
|
+
box: "h-12 w-12 rounded-xl",
|
|
25
|
+
glyph: "h-6 w-6"
|
|
26
|
+
},
|
|
27
|
+
lg: {
|
|
28
|
+
box: "h-16 w-16 rounded-2xl",
|
|
29
|
+
glyph: "h-8 w-8"
|
|
30
|
+
}
|
|
31
|
+
}, _ = ({ icon: n, muted: r = !1, size: i = "md", className: a }) => {
|
|
32
|
+
let o = m[n] ?? t, s = g[i];
|
|
33
|
+
return /* @__PURE__ */ p("div", {
|
|
34
|
+
"aria-hidden": "true",
|
|
35
|
+
className: e("flex shrink-0 items-center justify-center", s.box, r ? "bg-bg-sunken text-text-tertiary" : "bg-[var(--color-accent-soft)] text-[var(--color-accent-primary)]", a),
|
|
36
|
+
children: /* @__PURE__ */ p(o, { className: s.glyph })
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { h as BADGE_ICON_KEYS, _ as BadgeIcon };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=BadgeIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BadgeIcon.js","names":[],"sources":["../../../src/buildmyiq/components/BadgeIcon.tsx"],"sourcesContent":["/**\n * BadgeIcon — renders a badge's curated icon key (BOFF-4439).\n * @module buildmyiq/components\n *\n * The backend stores an icon KEY (never a URL or SVG), validated against the\n * same fixed set as `BADGE_ICON_KEYS` below, so badge artwork is always safe\n * to render and on-brand. Unknown keys fall back to the award ribbon.\n */\n\nimport type { FC } from 'react';\nimport {\n Award,\n BookOpen,\n Crown,\n Flame,\n Lightbulb,\n Medal,\n Rocket,\n Shield,\n Sparkles,\n Star,\n Target,\n Trophy,\n type LucideIcon,\n} from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nconst ICONS: Record<string, LucideIcon> = {\n award: Award,\n star: Star,\n trophy: Trophy,\n medal: Medal,\n rocket: Rocket,\n lightbulb: Lightbulb,\n book: BookOpen,\n target: Target,\n flame: Flame,\n shield: Shield,\n sparkles: Sparkles,\n crown: Crown,\n};\n\n/** Icon keys accepted by `buiCreateBadge` / `buiUpdateBadge`, in picker order. */\nexport const BADGE_ICON_KEYS = Object.keys(ICONS);\n\ninterface BadgeIconProps {\n icon: string;\n /** Muted treatment for archived badges and revoked awards. */\n muted?: boolean;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n}\n\nconst SIZES = {\n sm: { box: 'h-9 w-9 rounded-lg', glyph: 'h-4 w-4' },\n md: { box: 'h-12 w-12 rounded-xl', glyph: 'h-6 w-6' },\n lg: { box: 'h-16 w-16 rounded-2xl', glyph: 'h-8 w-8' },\n} as const;\n\nexport const BadgeIcon: FC<BadgeIconProps> = ({ icon, muted = false, size = 'md', className }) => {\n const Glyph = ICONS[icon] ?? Award;\n const dims = SIZES[size];\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'flex shrink-0 items-center justify-center',\n dims.box,\n muted\n ? 'bg-bg-sunken text-text-tertiary'\n : 'bg-[var(--color-accent-soft)] text-[var(--color-accent-primary)]',\n className\n )}\n >\n <Glyph className={dims.glyph} />\n </div>\n );\n};\n"],"mappings":";;;;AA2BA,IAAM,IAAoC;CACxC,OAAO;CACP,MAAM;CACN,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,WAAW;CACX,MAAM;CACN,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,UAAU;CACV,OAAO;AACT,GAGa,IAAkB,OAAO,KAAK,CAAK,GAU1C,IAAQ;CACZ,IAAI;EAAE,KAAK;EAAsB,OAAO;CAAU;CAClD,IAAI;EAAE,KAAK;EAAwB,OAAO;CAAU;CACpD,IAAI;EAAE,KAAK;EAAyB,OAAO;CAAU;AACvD,GAEa,KAAiC,EAAE,SAAM,WAAQ,IAAO,UAAO,MAAM,mBAAgB;CAChG,IAAM,IAAQ,EAAM,MAAS,GACvB,IAAO,EAAM;CACnB,OACE,kBAAC,OAAD;EACE,eAAY;EACZ,WAAW,EACT,6CACA,EAAK,KACL,IACI,oCACA,oEACJ,CACF;YAEA,kBAAC,GAAD,EAAO,WAAW,EAAK,MAAQ,CAAA;CAC5B,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqFD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAsB5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.js","names":[],"sources":["../../../src/buildmyiq/components/StatusBadge.tsx"],"sourcesContent":["/**\n * Status Badge Component\n * @module buildmyiq/components\n *\n * A colored badge for Buildmyiq domain statuses (course status, enrollment\n * status, assessment status, submission status, cohort status, certificate\n * status, lesson-progress status) plus course levels and skill categories, with\n * semantic color mapping. Accepts the raw server enum value.\n */\n\nimport type { FC } from 'react';\nimport { cn } from '../utils/cn';\nimport { formatEnumLabel } from '../utils/formatters';\n\ninterface StatusBadgeProps {\n status: string;\n className?: string;\n}\n\ntype BadgeVariant = 'success' | 'warning' | 'destructive' | 'secondary' | 'info' | 'outline';\n\nconst variantStyles: Record<BadgeVariant, string> = {\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n destructive: 'bg-status-error-bg-subtle text-status-error-text',\n secondary: 'bg-bg-sunken text-text-secondary',\n info: 'bg-[var(--color-accent-soft)] text-text-primary',\n outline: 'border border-border-seam text-text-primary',\n};\n\n// Statuses that represent a \"live\" / in-progress condition get a subtle,\n// opacity-only glow pulse (reduced-motion safe via motion-safe:).\nconst liveStatuses = new Set(['IN_PROGRESS', 'ACTIVE', 'GRADING', 'EXECUTING', 'APPLYING']);\n\nconst statusVariantMap: Record<string, BadgeVariant> = {\n // Authoring lifecycle (course + assessment)\n DRAFT: 'secondary',\n IN_REVIEW: 'warning',\n PUBLISHED: 'success',\n ARCHIVED: 'outline',\n\n // Enrollment status\n ENROLLED: 'info',\n IN_PROGRESS: 'info',\n COMPLETED: 'success',\n DROPPED: 'destructive',\n EXPIRED: 'outline',\n\n // Lesson-progress status\n NOT_STARTED: 'secondary',\n\n // Submission status\n SUBMITTED: 'info',\n GRADING: 'warning',\n GRADED: 'success',\n RETURNED: 'warning',\n\n // Cohort status\n SCHEDULED: 'secondary',\n ENROLLING: 'info',\n ACTIVE: 'success',\n CANCELLED: 'destructive',\n\n // Certificate status\n ISSUED: 'success',\n REVOKED: 'destructive',\n\n // Proctoring session status\n PENDING: 'secondary',\n IDENTITY_SUBMITTED: 'info',\n UNDER_REVIEW: 'warning',\n APPROVED: 'success',\n REJECTED: 'destructive',\n\n // Admin copilot action status (BOFF-9687)\n PROPOSED: 'warning',\n EXECUTING: 'info',\n EXECUTED: 'success',\n FAILED: 'destructive',\n DISMISSED: 'outline',\n\n // Automation run status (BOFF-9688)\n APPLYING: 'info',\n APPLIED: 'success',\n SKIPPED: 'outline',\n\n // Course level\n BEGINNER: 'success',\n INTERMEDIATE: 'info',\n ADVANCED: 'warning',\n EXPERT: 'destructive',\n\n // Skill category (neutral badges)\n TECHNICAL: 'outline',\n BUSINESS: 'outline',\n CREATIVE: 'outline',\n COGNITIVE: 'outline',\n SOCIAL: 'outline',\n LANGUAGE: 'outline',\n};\n\nexport const StatusBadge: FC<StatusBadgeProps> = ({ status, className }) => {\n const key = status.toUpperCase();\n const variant = statusVariantMap[key] ?? 'secondary';\n const isLive = liveStatuses.has(key);\n\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium',\n variantStyles[variant],\n className\n )}\n >\n {isLive && (\n <span\n aria-hidden=\"true\"\n className=\"size-1.5 rounded-full bg-current motion-safe:animate-vc-glow-pulse\"\n />\n )}\n {formatEnumLabel(status)}\n </span>\n );\n};\n"],"mappings":";;;;AAqBA,IAAM,IAA8C;CAClD,SAAS;CACT,SAAS;CACT,aAAa;CACb,WAAW;CACX,MAAM;CACN,SAAS;AACX,GAIM,IAAe,IAAI,IAAI;CAAC;CAAe;CAAU;CAAW;CAAa;AAAU,CAAC,GAEpF,IAAiD;CAErD,OAAO;CACP,WAAW;CACX,WAAW;CACX,UAAU;CAGV,UAAU;CACV,aAAa;CACb,WAAW;CACX,SAAS;CACT,SAAS;CAGT,aAAa;CAGb,WAAW;CACX,SAAS;CACT,QAAQ;CACR,UAAU;CAGV,WAAW;CACX,WAAW;CACX,QAAQ;CACR,WAAW;CAGX,QAAQ;CACR,SAAS;CAGT,SAAS;CACT,oBAAoB;CACpB,cAAc;CACd,UAAU;CACV,UAAU;CAGV,UAAU;CACV,WAAW;CACX,UAAU;CACV,QAAQ;CACR,WAAW;CAGX,UAAU;CACV,SAAS;CACT,SAAS;CAGT,UAAU;CACV,cAAc;CACd,UAAU;CACV,QAAQ;CAGR,WAAW;CACX,UAAU;CACV,UAAU;CACV,WAAW;CACX,QAAQ;CACR,UAAU;AACZ,GAEa,KAAqC,EAAE,WAAQ,mBAAgB;CAC1E,IAAM,IAAM,EAAO,YAAY,GACzB,IAAU,EAAiB,MAAQ,aACnC,IAAS,EAAa,IAAI,CAAG;CAEnC,OACE,kBAAC,QAAD;EACE,WAAW,EACT,mFACA,EAAc,IACd,CACF;YALF,CAOG,KACC,kBAAC,QAAD;GACE,eAAY;GACZ,WAAU;EACX,CAAA,GAEF,EAAgB,CAAM,CACnB;;AAEV"}
|
|
1
|
+
{"version":3,"file":"StatusBadge.js","names":[],"sources":["../../../src/buildmyiq/components/StatusBadge.tsx"],"sourcesContent":["/**\n * Status Badge Component\n * @module buildmyiq/components\n *\n * A colored badge for Buildmyiq domain statuses (course status, enrollment\n * status, assessment status, submission status, cohort status, certificate\n * status, lesson-progress status) plus course levels and skill categories, with\n * semantic color mapping. Accepts the raw server enum value.\n */\n\nimport type { FC } from 'react';\nimport { cn } from '../utils/cn';\nimport { formatEnumLabel } from '../utils/formatters';\n\ninterface StatusBadgeProps {\n status: string;\n className?: string;\n}\n\ntype BadgeVariant = 'success' | 'warning' | 'destructive' | 'secondary' | 'info' | 'outline';\n\nconst variantStyles: Record<BadgeVariant, string> = {\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n destructive: 'bg-status-error-bg-subtle text-status-error-text',\n secondary: 'bg-bg-sunken text-text-secondary',\n info: 'bg-[var(--color-accent-soft)] text-text-primary',\n outline: 'border border-border-seam text-text-primary',\n};\n\n// Statuses that represent a \"live\" / in-progress condition get a subtle,\n// opacity-only glow pulse (reduced-motion safe via motion-safe:).\nconst liveStatuses = new Set(['IN_PROGRESS', 'ACTIVE', 'GRADING', 'EXECUTING', 'APPLYING']);\n\nconst statusVariantMap: Record<string, BadgeVariant> = {\n // Authoring lifecycle (course + assessment)\n DRAFT: 'secondary',\n IN_REVIEW: 'warning',\n PUBLISHED: 'success',\n ARCHIVED: 'outline',\n\n // Enrollment status\n ENROLLED: 'info',\n IN_PROGRESS: 'info',\n COMPLETED: 'success',\n DROPPED: 'destructive',\n EXPIRED: 'outline',\n\n // Lesson-progress status\n NOT_STARTED: 'secondary',\n\n // Submission status\n SUBMITTED: 'info',\n GRADING: 'warning',\n GRADED: 'success',\n RETURNED: 'warning',\n\n // Cohort status\n SCHEDULED: 'secondary',\n ENROLLING: 'info',\n ACTIVE: 'success',\n CANCELLED: 'destructive',\n\n // Certificate status\n ISSUED: 'success',\n AWARDED: 'success',\n REVOKED: 'destructive',\n\n // Proctoring session status\n PENDING: 'secondary',\n IDENTITY_SUBMITTED: 'info',\n UNDER_REVIEW: 'warning',\n APPROVED: 'success',\n REJECTED: 'destructive',\n\n // Admin copilot action status (BOFF-9687)\n PROPOSED: 'warning',\n EXECUTING: 'info',\n EXECUTED: 'success',\n FAILED: 'destructive',\n DISMISSED: 'outline',\n\n // Automation run status (BOFF-9688)\n APPLYING: 'info',\n APPLIED: 'success',\n SKIPPED: 'outline',\n\n // Course level\n BEGINNER: 'success',\n INTERMEDIATE: 'info',\n ADVANCED: 'warning',\n EXPERT: 'destructive',\n\n // Skill category (neutral badges)\n TECHNICAL: 'outline',\n BUSINESS: 'outline',\n CREATIVE: 'outline',\n COGNITIVE: 'outline',\n SOCIAL: 'outline',\n LANGUAGE: 'outline',\n};\n\nexport const StatusBadge: FC<StatusBadgeProps> = ({ status, className }) => {\n const key = status.toUpperCase();\n const variant = statusVariantMap[key] ?? 'secondary';\n const isLive = liveStatuses.has(key);\n\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium',\n variantStyles[variant],\n className\n )}\n >\n {isLive && (\n <span\n aria-hidden=\"true\"\n className=\"size-1.5 rounded-full bg-current motion-safe:animate-vc-glow-pulse\"\n />\n )}\n {formatEnumLabel(status)}\n </span>\n );\n};\n"],"mappings":";;;;AAqBA,IAAM,IAA8C;CAClD,SAAS;CACT,SAAS;CACT,aAAa;CACb,WAAW;CACX,MAAM;CACN,SAAS;AACX,GAIM,IAAe,IAAI,IAAI;CAAC;CAAe;CAAU;CAAW;CAAa;AAAU,CAAC,GAEpF,IAAiD;CAErD,OAAO;CACP,WAAW;CACX,WAAW;CACX,UAAU;CAGV,UAAU;CACV,aAAa;CACb,WAAW;CACX,SAAS;CACT,SAAS;CAGT,aAAa;CAGb,WAAW;CACX,SAAS;CACT,QAAQ;CACR,UAAU;CAGV,WAAW;CACX,WAAW;CACX,QAAQ;CACR,WAAW;CAGX,QAAQ;CACR,SAAS;CACT,SAAS;CAGT,SAAS;CACT,oBAAoB;CACpB,cAAc;CACd,UAAU;CACV,UAAU;CAGV,UAAU;CACV,WAAW;CACX,UAAU;CACV,QAAQ;CACR,WAAW;CAGX,UAAU;CACV,SAAS;CACT,SAAS;CAGT,UAAU;CACV,cAAc;CACd,UAAU;CACV,QAAQ;CAGR,WAAW;CACX,UAAU;CACV,UAAU;CACV,WAAW;CACX,QAAQ;CACR,UAAU;AACZ,GAEa,KAAqC,EAAE,WAAQ,mBAAgB;CAC1E,IAAM,IAAM,EAAO,YAAY,GACzB,IAAU,EAAiB,MAAQ,aACnC,IAAS,EAAa,IAAI,CAAG;CAEnC,OACE,kBAAC,QAAD;EACE,WAAW,EACT,mFACA,EAAc,IACd,CACF;YALF,CAOG,KACC,kBAAC,QAAD;GACE,eAAY;GACZ,WAAU;EACX,CAAA,GAEF,EAAgB,CAAM,CACnB;;AAEV"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads every page of an offset-paginated list (BOFF-3979).
|
|
3
|
+
*
|
|
4
|
+
* The workspace subgraph caps a page at 100 rows, so a view that needs the
|
|
5
|
+
* whole list (for example the Learning Paths page, which must see every
|
|
6
|
+
* published course and every enrollment of the learner to keep its journey
|
|
7
|
+
* sets disjoint) walks the pages until `hasMore` is false. `maxRows` bounds
|
|
8
|
+
* the walk so a very large workspace cannot turn one page load into an
|
|
9
|
+
* unbounded number of requests; it matches the backend recommender's own
|
|
10
|
+
* catalog bounds.
|
|
11
|
+
*/
|
|
12
|
+
/** Rows per request: the subgraph's MAX_LIMIT. */
|
|
13
|
+
export declare const COLLECT_PAGE_SIZE = 100;
|
|
14
|
+
/** Upper bound on rows read, matching the recommender's catalog caps. */
|
|
15
|
+
export declare const COLLECT_MAX_ROWS = 2000;
|
|
16
|
+
export interface OffsetPage<T> {
|
|
17
|
+
items: readonly T[];
|
|
18
|
+
pageInfo: {
|
|
19
|
+
hasMore: boolean;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare function collectPages<T>(fetchPage: (offset: number, limit: number) => Promise<OffsetPage<T>>, pageSize?: number, maxRows?: number): Promise<T[]>;
|
|
23
|
+
//# sourceMappingURL=collectPages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectPages.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/collectPages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAChC;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACpE,QAAQ,GAAE,MAA0B,EACpC,OAAO,GAAE,MAAyB,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAad"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var e = 2e3;
|
|
2
|
+
async function t(t, n = 100, r = e) {
|
|
3
|
+
let i = [], a = 0;
|
|
4
|
+
for (; i.length < r;) {
|
|
5
|
+
let e = Math.min(n, r - i.length), o = await t(a, e);
|
|
6
|
+
if (i.push(...o.items.slice(0, e)), !o.pageInfo.hasMore || o.items.length === 0) break;
|
|
7
|
+
a += o.items.length;
|
|
8
|
+
}
|
|
9
|
+
return i;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { t as collectPages };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=collectPages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectPages.js","names":[],"sources":["../../../src/buildmyiq/hooks/collectPages.ts"],"sourcesContent":["/**\n * Reads every page of an offset-paginated list (BOFF-3979).\n *\n * The workspace subgraph caps a page at 100 rows, so a view that needs the\n * whole list (for example the Learning Paths page, which must see every\n * published course and every enrollment of the learner to keep its journey\n * sets disjoint) walks the pages until `hasMore` is false. `maxRows` bounds\n * the walk so a very large workspace cannot turn one page load into an\n * unbounded number of requests; it matches the backend recommender's own\n * catalog bounds.\n */\n\n/** Rows per request: the subgraph's MAX_LIMIT. */\nexport const COLLECT_PAGE_SIZE = 100;\n/** Upper bound on rows read, matching the recommender's catalog caps. */\nexport const COLLECT_MAX_ROWS = 2000;\n\nexport interface OffsetPage<T> {\n items: readonly T[];\n pageInfo: { hasMore: boolean };\n}\n\nexport async function collectPages<T>(\n fetchPage: (offset: number, limit: number) => Promise<OffsetPage<T>>,\n pageSize: number = COLLECT_PAGE_SIZE,\n maxRows: number = COLLECT_MAX_ROWS\n): Promise<T[]> {\n const rows: T[] = [];\n let offset = 0;\n while (rows.length < maxRows) {\n const limit = Math.min(pageSize, maxRows - rows.length);\n const page = await fetchPage(offset, limit);\n rows.push(...page.items.slice(0, limit));\n // An empty page ends the walk even if the server claims more, so a\n // misbehaving response cannot loop forever.\n if (!page.pageInfo.hasMore || page.items.length === 0) break;\n offset += page.items.length;\n }\n return rows;\n}\n"],"mappings":"AAeA,IAAa,IAAmB;AAOhC,eAAsB,EACpB,GACA,IAAA,KACA,IAAkB,GACJ;CACd,IAAM,IAAY,CAAC,GACf,IAAS;CACb,OAAO,EAAK,SAAS,IAAS;EAC5B,IAAM,IAAQ,KAAK,IAAI,GAAU,IAAU,EAAK,MAAM,GAChD,IAAO,MAAM,EAAU,GAAQ,CAAK;EAI1C,IAHA,EAAK,KAAK,GAAG,EAAK,MAAM,MAAM,GAAG,CAAK,CAAC,GAGnC,CAAC,EAAK,SAAS,WAAW,EAAK,MAAM,WAAW,GAAG;EACvD,KAAU,EAAK,MAAM;CACvB;CACA,OAAO;AACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CourseTeacherSetupSelection } from './courseTeacherSetup';
|
|
2
|
-
import { BuiConnection, BuiCourse, BuiCourseLevel, BuiCourseStatus, BuiModule, BuiLesson, BuiAssessment, BuiAssessmentStatus, BuiQuestion, BuiSubmission, BuiSubmissionStatus, BuiEnrollment, BuiEnrollmentStatus, BuiCohort, BuiCohortStatus, BuiSkill, BuiSkillCategory, BuiSkillStandard, BuiCertification, BuiSkillMappingSuggestion, BuiCertificate, BuiLessonProgress, BuiCreateCourseInput, BuiUpdateCourseInput, BuiCreateModuleInput, BuiCreateLessonInput, BuiCreateAssessmentInput, BuiCreateQuestionInput, BuiCreateSkillInput, BuiCreateCohortInput, BuiEnrollInput, BuiRecordLessonProgressInput, BuiSubmitAssessmentInput, BuiGradeSubmissionInput, BuiIssueCertificateInput, BuiTutorAskInput, BuiTutorAskPayload, BuiTutorSession, BuiTutorMessage, BuiReviewTutorAnswerInput, BuiGradeSuggestion, BuiNextLessonSuggestion, BuiCourseOutlineSuggestion, BuiApplyCourseOutlineInput, BuiApplyAssessmentDraftInput, BuiAssessmentDraftSuggestion, BuiSuggestAssessmentDraftInput, BuiAdminCopilotActionKind, BuiAdminCopilotActionStatus, BuiAdminCopilotAnswer, BuiAdminCopilotExecution, BuiAdminCopilotProposedAction, BuiAdminCopilotTurnInput, BuiAiSuggestionOutcome, BuiLtiPlatform, BuiLtiResourceLink, BuiLtiLaunchContext, BuiLtiDeepLinkResult, BuiLtiGradeSync, BuiLtiRosterMember, BuiRegisterLtiPlatformInput, BuiAiSettings, BuiAutomation, BuiAutomationRun, BuiAutomationTemplate, BuiConfigureAutomationInput, BuiUpdateAiSettingsInput, BuiOnboardingStatus, BuiDemoContentResult } from '../types';
|
|
2
|
+
import { BuiConnection, BuiCourse, BuiCourseLevel, BuiCourseStatus, BuiModule, BuiLesson, BuiAssessment, BuiAssessmentStatus, BuiQuestion, BuiSubmission, BuiSubmissionStatus, BuiEnrollment, BuiEnrollmentStatus, BuiCohort, BuiCohortStatus, BuiSkill, BuiSkillCategory, BuiSkillStandard, BuiCertification, BuiSkillMappingSuggestion, BuiCertificate, BuiLessonProgress, BuiCreateCourseInput, BuiUpdateCourseInput, BuiCreateModuleInput, BuiCreateLessonInput, BuiCreateAssessmentInput, BuiCreateQuestionInput, BuiCreateSkillInput, BuiCreateCohortInput, BuiEnrollInput, BuiRecordLessonProgressInput, BuiSubmitAssessmentInput, BuiGradeSubmissionInput, BuiIssueCertificateInput, BuiTutorAskInput, BuiTutorAskPayload, BuiTutorSession, BuiTutorMessage, BuiReviewTutorAnswerInput, BuiGradeSuggestion, BuiNextLessonSuggestion, BuiCourseOutlineSuggestion, BuiApplyCourseOutlineInput, BuiApplyAssessmentDraftInput, BuiAssessmentDraftSuggestion, BuiSuggestAssessmentDraftInput, BuiAdminCopilotActionKind, BuiAdminCopilotActionStatus, BuiAdminCopilotAnswer, BuiAdminCopilotExecution, BuiAdminCopilotProposedAction, BuiAdminCopilotTurnInput, BuiAiSuggestionOutcome, BuiLtiPlatform, BuiLtiResourceLink, BuiLtiLaunchContext, BuiLtiDeepLinkResult, BuiLtiGradeSync, BuiLtiRosterMember, BuiRegisterLtiPlatformInput, BuiAiSettings, BuiAutomation, BuiAutomationRun, BuiAutomationTemplate, BuiConfigureAutomationInput, BuiUpdateAiSettingsInput, BuiOnboardingStatus, BuiDemoContentResult, BuiBadge, BuiBadgeAward, BuiBadgeAwardStatus, BuiBadgeStatus, BuiCreateBadgeInput, BuiUpdateBadgeInput, BuiAwardBadgeInput, BuiLearnerProfile, BuiPathRecommendations, BuiPathFinderInput } from '../types';
|
|
3
3
|
export declare const clearGraphqlReadCaches: () => void;
|
|
4
4
|
export interface UseBuiCoursesArgs {
|
|
5
5
|
level?: BuiCourseLevel;
|
|
@@ -13,17 +13,17 @@ export declare const useBuiCourses: (args?: UseBuiCoursesArgs) => import('@tanst
|
|
|
13
13
|
modules: BuiModule[];
|
|
14
14
|
lessons: BuiLesson[];
|
|
15
15
|
status: BuiCourseStatus;
|
|
16
|
-
workspaceId: string;
|
|
17
|
-
title: string;
|
|
18
|
-
description?: string | null | undefined;
|
|
19
|
-
summary?: string | null | undefined;
|
|
20
16
|
id: string;
|
|
17
|
+
description?: string | null | undefined;
|
|
18
|
+
workspaceId: string;
|
|
21
19
|
createdAt: string;
|
|
22
20
|
updatedAt: string;
|
|
23
|
-
|
|
21
|
+
title: string;
|
|
24
22
|
level: BuiCourseLevel;
|
|
25
|
-
language: string;
|
|
26
23
|
estimatedHours: number;
|
|
24
|
+
slug: string;
|
|
25
|
+
summary?: string | null | undefined;
|
|
26
|
+
language: string;
|
|
27
27
|
isPublic: boolean;
|
|
28
28
|
tags: string[];
|
|
29
29
|
skillId?: string | null | undefined;
|
|
@@ -44,14 +44,14 @@ export declare const useBuiPublishCourse: () => import('@tanstack/react-query').
|
|
|
44
44
|
export declare const useBuiArchiveCourse: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
|
|
45
45
|
export declare const useBuiModules: (courseId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<{
|
|
46
46
|
lessons: BuiLesson[];
|
|
47
|
+
id: string;
|
|
48
|
+
description?: string | null | undefined;
|
|
47
49
|
workspaceId: string;
|
|
50
|
+
createdAt: string;
|
|
51
|
+
updatedAt: string;
|
|
48
52
|
title: string;
|
|
49
|
-
description?: string | null | undefined;
|
|
50
|
-
id: string;
|
|
51
53
|
courseId: string;
|
|
52
54
|
position: number;
|
|
53
|
-
createdAt: string;
|
|
54
|
-
updatedAt: string;
|
|
55
55
|
}[]>, Error>;
|
|
56
56
|
export declare const useBuiLessons: (courseId: string | undefined, moduleId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiLesson[]>, Error>;
|
|
57
57
|
export declare const useBuiCreateModule: () => import('@tanstack/react-query').UseMutationResult<BuiModule, Error, BuiCreateModuleInput, unknown>;
|
|
@@ -59,14 +59,14 @@ export declare const useBuiCreateLesson: () => import('@tanstack/react-query').U
|
|
|
59
59
|
export declare const useBuiAssessments: (courseId: string | undefined, status?: BuiAssessmentStatus) => import('@tanstack/react-query').UseQueryResult<NoInfer<{
|
|
60
60
|
questions: BuiQuestion[];
|
|
61
61
|
status: BuiAssessmentStatus;
|
|
62
|
+
id: string;
|
|
63
|
+
description?: string | null | undefined;
|
|
62
64
|
workspaceId: string;
|
|
65
|
+
createdAt: string;
|
|
66
|
+
updatedAt: string;
|
|
63
67
|
title: string;
|
|
64
|
-
description?: string | null | undefined;
|
|
65
|
-
id: string;
|
|
66
68
|
type: import('../types').BuiAssessmentType;
|
|
67
69
|
courseId: string;
|
|
68
|
-
createdAt: string;
|
|
69
|
-
updatedAt: string;
|
|
70
70
|
passingScore: number;
|
|
71
71
|
maxAttempts: number;
|
|
72
72
|
timeLimitMin: number;
|
|
@@ -375,4 +375,48 @@ export declare const useBuiOnboardingStatus: (enabled?: boolean) => import('@tan
|
|
|
375
375
|
export declare const useBuiLoadDemoContent: () => import('@tanstack/react-query').UseMutationResult<BuiDemoContentResult, Error, void, unknown>;
|
|
376
376
|
/** Remove the onboarding demo content from the workspace. */
|
|
377
377
|
export declare const useBuiRemoveDemoContent: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, void, unknown>;
|
|
378
|
+
/** The workspace badge catalog (anyone who can browse courses). */
|
|
379
|
+
export declare const useBuiBadges: (status?: BuiBadgeStatus, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiBadge[]>, Error>;
|
|
380
|
+
/** Workspace-wide awards (credential issuers only). */
|
|
381
|
+
export declare const useBuiBadgeAwards: (badgeId?: string, status?: BuiBadgeAwardStatus, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiBadgeAward[]>, Error>;
|
|
382
|
+
/** The signed-in learner's own badges (self-scoped, no learnerId arg). */
|
|
383
|
+
export declare const useBuiMyBadgeAwards: (status?: BuiBadgeAwardStatus, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiBadgeAward[]>, Error>;
|
|
384
|
+
export declare const useBuiCreateBadge: () => import('@tanstack/react-query').UseMutationResult<BuiBadge, Error, BuiCreateBadgeInput, unknown>;
|
|
385
|
+
export declare const useBuiUpdateBadge: () => import('@tanstack/react-query').UseMutationResult<BuiBadge, Error, {
|
|
386
|
+
id: string;
|
|
387
|
+
input: BuiUpdateBadgeInput;
|
|
388
|
+
}, unknown>;
|
|
389
|
+
/** Archive (`archived: true`) or restore a badge. */
|
|
390
|
+
export declare const useBuiSetBadgeArchived: () => import('@tanstack/react-query').UseMutationResult<BuiBadge, Error, {
|
|
391
|
+
id: string;
|
|
392
|
+
archived: boolean;
|
|
393
|
+
}, unknown>;
|
|
394
|
+
export declare const useBuiAwardBadge: () => import('@tanstack/react-query').UseMutationResult<BuiBadgeAward, Error, BuiAwardBadgeInput, unknown>;
|
|
395
|
+
export declare const useBuiRevokeBadgeAward: () => import('@tanstack/react-query').UseMutationResult<BuiBadgeAward, Error, {
|
|
396
|
+
id: string;
|
|
397
|
+
reason?: string;
|
|
398
|
+
}, unknown>;
|
|
399
|
+
/** The signed-in learner's own profile (self-scoped), or null before one exists. */
|
|
400
|
+
export declare const useBuiMyLearnerProfile: (enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiLearnerProfile | null>, Error>;
|
|
401
|
+
/** Skill journeys the caller has not started, best match first. */
|
|
402
|
+
export declare const useBuiRecommendPaths: (limit?: number, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiPathRecommendations>, Error>;
|
|
403
|
+
/**
|
|
404
|
+
* Every skill in the workspace (all pages, bounded), for the Learning Paths
|
|
405
|
+
* page; a single default page would silently drop journeys past the first 50.
|
|
406
|
+
* Nested under `skills` so skill writes refresh it.
|
|
407
|
+
*/
|
|
408
|
+
export declare const useBuiPathCatalogSkills: () => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiSkill[]>, Error>;
|
|
409
|
+
/**
|
|
410
|
+
* Every published course in the workspace (all pages, bounded), for the
|
|
411
|
+
* Learning Paths page. Nested under `courses` so course writes refresh it.
|
|
412
|
+
*/
|
|
413
|
+
export declare const useBuiPathCatalogCourses: () => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiCourse[]>, Error>;
|
|
414
|
+
/**
|
|
415
|
+
* Every enrollment of the signed-in learner (all pages, bounded), so the
|
|
416
|
+
* Learning Paths page never mistakes a started journey for an unstarted one.
|
|
417
|
+
* Nested under `enrollments` so enrollment writes refresh it.
|
|
418
|
+
*/
|
|
419
|
+
export declare const useBuiAllMyEnrollments: (enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiEnrollment[]>, Error>;
|
|
420
|
+
/** Record the path-finder answers on the caller's profile, then refresh recommendations. */
|
|
421
|
+
export declare const useBuiSubmitPathFinder: () => import('@tanstack/react-query').UseMutationResult<BuiLearnerProfile, Error, BuiPathFinderInput, unknown>;
|
|
378
422
|
//# sourceMappingURL=useBuildmyiqApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildmyiqApi.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuildmyiqApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"useBuildmyiqApi.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuildmyiqApi.ts"],"names":[],"mappings":"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"}
|