@iblai/mcp 1.2.2 → 1.3.0

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":"component-info.d.ts","sourceRoot":"","sources":["../../src/tools/component-info.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAc7B,CAAC;AA6xDF,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAqC9D"}
1
+ {"version":3,"file":"component-info.d.ts","sourceRoot":"","sources":["../../src/tools/component-info.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAc7B,CAAC;AAqiFF,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAgD9D"}
@@ -1356,6 +1356,61 @@ interface UserProfileModalProps {
1356
1356
  > **Import from \`@iblai/iblai-js/web-containers/next\`** — requires Next.js
1357
1357
 
1358
1358
  **File Location**: \`packages/web-containers/src/components/modals/user-profile-modal.tsx\``,
1359
+ PaywallModal: `# PaywallModal Component
1360
+
1361
+ Stripe-powered paywall dialog that lists available pricing tiers and creates a Stripe Checkout session for the selected price.
1362
+
1363
+ \`\`\`typescript
1364
+ import { PaywallModal } from '@iblai/iblai-js/web-containers';
1365
+ import type { PaywallPrice } from '@iblai/data-layer';
1366
+
1367
+ interface PaywallModalProps {
1368
+ pricing: {
1369
+ item_name: string;
1370
+ prices: PaywallPrice[];
1371
+ };
1372
+ platformKey: string;
1373
+ itemId: string;
1374
+ itemType: string; // 'mentor' | 'course' | 'program' | 'pathway'
1375
+ open: boolean;
1376
+ onClose: () => void;
1377
+ closable?: boolean; // default true; when false hides close button and blocks escape/outside-click
1378
+ buttonClassName?: string;
1379
+ }
1380
+
1381
+ <PaywallModal
1382
+ pricing={{ item_name: 'Premium Mentor', prices: paywall.prices }}
1383
+ platformKey={tenantKey}
1384
+ itemId={mentorId}
1385
+ itemType="mentor"
1386
+ open={isOpen}
1387
+ onClose={() => setIsOpen(false)}
1388
+ />
1389
+ \`\`\`
1390
+
1391
+ Wires \`useCreateCheckoutMutation\` from \`@iblai/data-layer\` to redirect to Stripe Checkout. The grid auto-sizes for 1, 2, 3, or 4+ prices.
1392
+
1393
+ **File Location**: \`packages/web-containers/src/components/modals/paywall-modal.tsx\``,
1394
+ AnalyticsMonetizationStats: `# AnalyticsMonetizationStats Component
1395
+
1396
+ Analytics dashboard tab showing monetization KPIs (revenue, sales count, active paywalls, subscriber count), distribution charts, and paginated subscriber/paywall tables.
1397
+
1398
+ \`\`\`typescript
1399
+ import { AnalyticsMonetizationStats } from '@iblai/iblai-js/web-containers';
1400
+
1401
+ interface AnalyticsMonetizationStatsProps {
1402
+ tenantKey: string;
1403
+ mentorId: string;
1404
+ selectedMentorId?: string;
1405
+ usergroupIds?: number[];
1406
+ }
1407
+
1408
+ <AnalyticsMonetizationStats tenantKey={tenantKey} mentorId={mentorId} />
1409
+ \`\`\`
1410
+
1411
+ Internally uses the \`useMonetization\` hook (from \`@web-containers/components/analytics/use-monetization\`) which composes \`useGetRevenueQuery\`, \`useListPaywallsQuery\`, and \`useListSubscribersQuery\` from \`@iblai/data-layer\`. Renders pie charts via \`recharts\` and supports filtering by subscriber status and paywall item type.
1412
+
1413
+ **File Location**: \`packages/web-containers/src/components/analytics/analytics-monetization-stats.tsx\``,
1359
1414
  SsoLogin: `# SsoLogin Component
1360
1415
 
1361
1416
  SSO callback handler for authentication.
@@ -1735,6 +1790,684 @@ interface WorkflowSidebarProps {
1735
1790
  \`\`\`
1736
1791
 
1737
1792
  **File Location**: \`packages/web-containers/src/components/workflows/workflow-sidebar.tsx\``,
1793
+ // ============================================================================
1794
+ // SKILLS-PROFILE COMPONENTS (from Skills SPA)
1795
+ // ============================================================================
1796
+ SkeletonMultiplier: `# SkeletonMultiplier Component
1797
+
1798
+ Renders any Skeleton component N times. Useful for loading lists of cards/rows.
1799
+
1800
+ \`\`\`typescript
1801
+ import { SkeletonMultiplier } from '@iblai/iblai-js/web-containers';
1802
+
1803
+ interface SkeletonMultiplierProps {
1804
+ Skeleton: React.ElementType;
1805
+ multiplier: number;
1806
+ }
1807
+
1808
+ <SkeletonMultiplier Skeleton={CourseCardSkeleton} multiplier={6} />
1809
+ \`\`\`
1810
+
1811
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-multiplier.tsx\``,
1812
+ SkeletonActivityStatBox: `# SkeletonActivityStatBox Component
1813
+
1814
+ Loading placeholder for a single activity stat tile (value + label) on the profile activity page.
1815
+
1816
+ \`\`\`typescript
1817
+ import { SkeletonActivityStatBox } from '@iblai/iblai-js/web-containers';
1818
+
1819
+ <SkeletonActivityStatBox />
1820
+ \`\`\`
1821
+
1822
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-activity-stat-box.tsx\``,
1823
+ CourseCardSkeleton: `# CourseCardSkeleton Component
1824
+
1825
+ Loading placeholder for a course card with shimmer overlay, image block, title lines and action buttons.
1826
+
1827
+ \`\`\`typescript
1828
+ import { CourseCardSkeleton } from '@iblai/iblai-js/web-containers';
1829
+
1830
+ <CourseCardSkeleton />
1831
+ \`\`\`
1832
+
1833
+ **File Location**: \`packages/web-containers/src/components/skills-profile/course-card-skeleton.tsx\``,
1834
+ DefaultEmptyBox: `# DefaultEmptyBox Component
1835
+
1836
+ Reusable empty-state box with an icon and message. Framework-agnostic (uses a plain img tag).
1837
+
1838
+ \`\`\`typescript
1839
+ import { DefaultEmptyBox } from '@iblai/iblai-js/web-containers';
1840
+
1841
+ interface DefaultEmptyBoxProps {
1842
+ image?: string; // defaults to '/images/empty-data-icon.svg'
1843
+ message?: string; // defaults to 'No data available'
1844
+ imageSize?: number; // defaults to 40
1845
+ bordered?: boolean; // defaults to true
1846
+ className?: string;
1847
+ }
1848
+
1849
+ <DefaultEmptyBox message="No credentials yet" />
1850
+ <DefaultEmptyBox bordered={false} image="/icons/empty-skills.svg" />
1851
+ \`\`\`
1852
+
1853
+ **File Location**: \`packages/web-containers/src/components/skills-profile/default-empty-box.tsx\``,
1854
+ ProfileTabs: `# ProfileTabs Component
1855
+
1856
+ Horizontal scrollable tab bar for the profile section of the Skills SPA. Uses next/link and next/navigation — import from the \`/next\` entry point.
1857
+
1858
+ \`\`\`typescript
1859
+ import { ProfileTabs } from '@iblai/iblai-js/web-containers/next';
1860
+
1861
+ interface ProfileTabItem {
1862
+ name: string;
1863
+ href: string;
1864
+ }
1865
+
1866
+ interface ProfileTabsProps {
1867
+ tabs?: ProfileTabItem[]; // defaults to the skills SPA tab set
1868
+ basePath?: string; // defaults to '/profile'
1869
+ }
1870
+
1871
+ // Default skills profile tabs
1872
+ <ProfileTabs />
1873
+
1874
+ // Custom tabs
1875
+ <ProfileTabs
1876
+ basePath="/profile"
1877
+ tabs={[
1878
+ { name: 'Activity', href: '/profile' },
1879
+ { name: 'Skills', href: '/profile/skills' },
1880
+ ]}
1881
+ />
1882
+ \`\`\`
1883
+
1884
+ **File Location**: \`packages/web-containers/src/components/skills-profile/profile-tabs.tsx\``,
1885
+ CourseBox: `# CourseBox Component
1886
+
1887
+ Clickable course card (image + title pill) used across the Skills SPA profile/discover screens. Pure presentation — the caller resolves the image URL from their own config and passes it via props. Uses next/link + next/image, so import from the \`/next\` entry.
1888
+
1889
+ \`\`\`typescript
1890
+ import { CourseBox } from '@iblai/iblai-js/web-containers/next';
1891
+
1892
+ interface CourseBoxCourse {
1893
+ course_id: string;
1894
+ name: string;
1895
+ }
1896
+
1897
+ interface CourseBoxProps<TCourse extends CourseBoxCourse> {
1898
+ course: TCourse;
1899
+ imageSrc: string; // pre-resolved absolute URL
1900
+ fallbackImageSrc: string; // used on <img onError>
1901
+ href?: string; // defaults to \`/courses/{course_id}\`
1902
+ label?: string; // pill label, defaults to "course"
1903
+ }
1904
+
1905
+ <CourseBox
1906
+ course={course}
1907
+ imageSrc={resolveCourseImage(course)}
1908
+ fallbackImageSrc={getRandomCourseImage()}
1909
+ />
1910
+ \`\`\`
1911
+
1912
+ **File Location**: \`packages/web-containers/src/components/skills-profile/course-box.tsx\``,
1913
+ CredentialMiniBox: `# CredentialMiniBox Component
1914
+
1915
+ Small credential tile (icon + name + course + issued date). Uses next/image so import from the \`/next\` entry.
1916
+
1917
+ \`\`\`typescript
1918
+ import { CredentialMiniBox } from '@iblai/iblai-js/web-containers/next';
1919
+ import type { Assertion } from '@iblai/iblai-api';
1920
+
1921
+ interface CredentialMiniBoxProps {
1922
+ credential: Assertion;
1923
+ onClick?: () => void;
1924
+ minified?: boolean;
1925
+ iconSize?: number;
1926
+ defaultImage?: string; // fallback badge icon
1927
+ }
1928
+
1929
+ <CredentialMiniBox credential={assertion} onClick={() => setOpen(assertion)} />
1930
+ \`\`\`
1931
+
1932
+ **File Location**: \`packages/web-containers/src/components/skills-profile/credential-mini-box.tsx\``,
1933
+ CredentialMiniBoxSkeleton: `# CredentialMiniBoxSkeleton Component
1934
+
1935
+ Loading placeholder for CredentialMiniBox.
1936
+
1937
+ \`\`\`typescript
1938
+ import { CredentialMiniBoxSkeleton } from '@iblai/iblai-js/web-containers';
1939
+
1940
+ <CredentialMiniBoxSkeleton />
1941
+ \`\`\`
1942
+
1943
+ **File Location**: \`packages/web-containers/src/components/skills-profile/credential-mini-box-skeleton.tsx\``,
1944
+ CredentialDetailModal: `# CredentialDetailModal Component
1945
+
1946
+ Full-screen modal showing credential badge, course, issuer, issue date and a Download button. Pure presentational — caller supplies download behaviour via \`onDownload\`.
1947
+
1948
+ \`\`\`typescript
1949
+ import { CredentialDetailModal } from '@iblai/iblai-js/web-containers/next';
1950
+ import type { CredentialDetailAssertion } from '@iblai/iblai-js/web-containers/next';
1951
+
1952
+ interface CredentialDetailModalProps {
1953
+ credential: CredentialDetailAssertion | null;
1954
+ onClose: () => void;
1955
+ defaultImage?: string;
1956
+ courseFallbackImage?: string;
1957
+ onDownload?: (element: HTMLDivElement | null) => void;
1958
+ recipientTitle?: string;
1959
+ }
1960
+
1961
+ <CredentialDetailModal
1962
+ credential={selected}
1963
+ onClose={() => setSelected(null)}
1964
+ onDownload={(el) => printElement(el)}
1965
+ />
1966
+ \`\`\`
1967
+
1968
+ **File Location**: \`packages/web-containers/src/components/skills-profile/credential-detail-modal.tsx\``,
1969
+ SkillBox: `# SkillBox Component
1970
+
1971
+ Skill tile with name, circular level indicator (1-5), and star. Pure presentational — accepts any skill shape matching \`{ id?, name, level? }\`.
1972
+
1973
+ \`\`\`typescript
1974
+ import { SkillBox } from '@iblai/iblai-js/web-containers';
1975
+
1976
+ interface SkillBoxSkill {
1977
+ id?: string | number;
1978
+ name: string;
1979
+ level?: number;
1980
+ }
1981
+
1982
+ <SkillBox skill={skill} onSkillClick={(s) => setSelected(s)} />
1983
+ <SkillBox skill={skill} showRating={false} />
1984
+ \`\`\`
1985
+
1986
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skill-box.tsx\``,
1987
+ SkeletonSkillBox: `# SkeletonSkillBox Component
1988
+
1989
+ Loading placeholder for SkillBox.
1990
+
1991
+ \`\`\`typescript
1992
+ import { SkeletonSkillBox } from '@iblai/iblai-js/web-containers';
1993
+
1994
+ <SkeletonSkillBox />
1995
+ \`\`\`
1996
+
1997
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-skill-box.tsx\``,
1998
+ SkillDetailModal: `# SkillDetailModal Component
1999
+
2000
+ Modal that lets the user rate their expertise in a skill on a 1-5 scale. Fully controlled via callbacks.
2001
+
2002
+ \`\`\`typescript
2003
+ import { SkillDetailModal } from '@iblai/iblai-js/web-containers';
2004
+
2005
+ interface SkillDetailModalProps {
2006
+ skill: { name: string; rating: number };
2007
+ updatingSkill?: boolean;
2008
+ deletingSkill?: boolean;
2009
+ onClose: () => void;
2010
+ onRatingChange?: (rating: number) => void;
2011
+ onDeleteSkill?: () => void;
2012
+ }
2013
+
2014
+ <SkillDetailModal
2015
+ skill={{ name: 'TypeScript', rating: 3 }}
2016
+ onClose={closeModal}
2017
+ onRatingChange={(r) => mutate({ rating: r })}
2018
+ onDeleteSkill={() => deleteSkill()}
2019
+ />
2020
+ \`\`\`
2021
+
2022
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skill-detail-modal.tsx\``,
2023
+ SkeletonPathwayBox: `# SkeletonPathwayBox Component
2024
+
2025
+ Loading placeholder for a pathway card (also reused by the programs grid). Pure presentational.
2026
+
2027
+ \`\`\`typescript
2028
+ import { SkeletonPathwayBox } from '@iblai/iblai-js/web-containers';
2029
+
2030
+ <SkeletonPathwayBox />
2031
+ \`\`\`
2032
+
2033
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-pathway-box.tsx\``,
2034
+ UserAvatar: `# UserAvatar Component
2035
+
2036
+ Avatar for the logged-in user. Reads metadata via the shared \`useUserMetadata\` hook and falls back through profile image → Gravatar → initials.
2037
+
2038
+ \`\`\`typescript
2039
+ import { UserAvatar } from '@iblai/iblai-js/web-containers';
2040
+
2041
+ <UserAvatar size={48} enableGravatar={false} containerClassName="ring-2" />
2042
+ \`\`\`
2043
+
2044
+ Pass \`enableGravatar={false}\` for tenants that disable Gravatar. The component requires the data-layer Redux store to be available (because of useUserMetadata).
2045
+
2046
+ **File Location**: \`packages/web-containers/src/components/skills-profile/user-avatar.tsx\``,
2047
+ ProfileTimeChart: `# ProfileTimeChart Component
2048
+
2049
+ Presentational 7-day time-spent bar chart (recharts). Caller supplies the data and loading flag.
2050
+
2051
+ \`\`\`typescript
2052
+ import { ProfileTimeChart } from '@iblai/iblai-js/web-containers';
2053
+ import { useProfileTimeSpent } from '@iblai/iblai-js/web-containers';
2054
+
2055
+ const { timeSpent, timeSpentLoading } = useProfileTimeSpent();
2056
+ <ProfileTimeChart data={timeSpent} loading={timeSpentLoading} />
2057
+ \`\`\`
2058
+
2059
+ **File Location**: \`packages/web-containers/src/components/skills-profile/profile-time-chart.tsx\``,
2060
+ SkillLeaderboardChart: `# SkillLeaderboardChart Component
2061
+
2062
+ Presentational percentile/skill-points curve chart with the user's position highlighted. Pure props in.
2063
+
2064
+ \`\`\`typescript
2065
+ import { SkillLeaderboardChart } from '@iblai/iblai-js/web-containers';
2066
+
2067
+ <SkillLeaderboardChart userSkillPoints={250} />
2068
+ \`\`\`
2069
+
2070
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skill-leaderboard-chart.tsx\``,
2071
+ CustomTooltip: `# CustomTooltip Component
2072
+
2073
+ \`@internal\` — exported only so unit tests can render it in isolation. Not part of the package's public API; consumers should render \`SkillLeaderboardChart\` instead, which wires this tooltip into the underlying \`recharts\` \`<Tooltip>\`.
2074
+
2075
+ Renders a small white card showing the hovered point's level, skill points (rounded), and percentile. Returns \`null\` when \`active\` is false or \`payload\` is empty.
2076
+
2077
+ \`\`\`typescript
2078
+ // Shape consumed by recharts <Tooltip content={...} />
2079
+ interface TooltipProps {
2080
+ active?: boolean;
2081
+ payload?: Array<{
2082
+ value: number;
2083
+ payload: { percentile: number; value: number; level: string; description: string };
2084
+ }>;
2085
+ label?: string | number;
2086
+ }
2087
+
2088
+ // Internal usage inside SkillLeaderboardChart:
2089
+ <Tooltip content={<CustomTooltip />} />
2090
+ \`\`\`
2091
+
2092
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skill-leaderboard-chart.tsx\``,
2093
+ ProfileInfoCards: `# ProfileInfoCards Component
2094
+
2095
+ Grid of 4 profile info cards (Last Accessed, Joined, Total Time Spent, Top Content). Presentational. Uses next/link, so it ships from \`@iblai/iblai-js/web-containers/next\`.
2096
+
2097
+ \`\`\`typescript
2098
+ import { ProfileInfoCards } from '@iblai/iblai-js/web-containers/next';
2099
+
2100
+ <ProfileInfoCards
2101
+ userInfo={{ last_activity, date_joined, total_time_spent }}
2102
+ topContent={{ name, course_id, time_invested }}
2103
+ loading={isLoading}
2104
+ topContentLoading={topContentLoading}
2105
+ courseHrefTemplate="/courses/{courseId}"
2106
+ />
2107
+ \`\`\`
2108
+
2109
+ **File Location**: \`packages/web-containers/src/components/skills-profile/profile-info-cards.tsx\``,
2110
+ SkeletonProfileInfoCard: `# SkeletonProfileInfoCard Component
2111
+
2112
+ Loading placeholder for a single ProfileInfoCard. Pure presentational.
2113
+
2114
+ \`\`\`typescript
2115
+ import { SkeletonProfileInfoCard } from '@iblai/iblai-js/web-containers';
2116
+
2117
+ <SkeletonProfileInfoCard />
2118
+ \`\`\`
2119
+
2120
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-profile-info-card.tsx\``,
2121
+ AddSkillDialog: `# AddSkillDialog Component
2122
+
2123
+ Debounced "add skill" search dialog. Presentational — caller wires the search and update operations via callbacks. Typically backed by \`useProfileSkills\`.
2124
+
2125
+ \`\`\`typescript
2126
+ import { AddSkillDialog, useProfileSkills } from '@iblai/iblai-js/web-containers';
2127
+
2128
+ const skills = useProfileSkills();
2129
+
2130
+ <AddSkillDialog
2131
+ open={open}
2132
+ onOpenChange={setOpen}
2133
+ type="self-reported"
2134
+ fetchedSkills={skills.fetchedSkills}
2135
+ isFetchingSkills={skills.isFetchingSkills}
2136
+ isFetchingSkillsError={skills.isFetchingSkillsError}
2137
+ updatingSkill={skills.updatingSkill}
2138
+ onSearch={(q) => skills.handleFetchAllSkills(q)}
2139
+ onAddSkill={(skill) => skills.handleSkillsUpdate(/* ... */)}
2140
+ />
2141
+ \`\`\`
2142
+
2143
+ Search input is debounced (default 500ms, configurable via \`searchDebounceMs\`).
2144
+
2145
+ **File Location**: \`packages/web-containers/src/components/skills-profile/add-skill-dialog.tsx\``,
2146
+ SkeletonAddSkillsLoading: `# SkeletonAddSkillsLoading Component
2147
+
2148
+ Loading placeholder row for the AddSkillDialog search results. Pure presentational.
2149
+
2150
+ \`\`\`typescript
2151
+ import { SkeletonAddSkillsLoading } from '@iblai/iblai-js/web-containers';
2152
+
2153
+ <SkeletonAddSkillsLoading />
2154
+ \`\`\`
2155
+
2156
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-add-skills-loading.tsx\``,
2157
+ PathwayDetailModal: `# PathwayDetailModal Component
2158
+
2159
+ Detail modal for a single pathway showing its courses, completion bar, and Enroll button. Presentational. Uses next/image, so it ships from \`@iblai/iblai-js/web-containers/next\`.
2160
+
2161
+ \`\`\`typescript
2162
+ import { PathwayDetailModal, useProfilePathways } from '@iblai/iblai-js/web-containers/next';
2163
+
2164
+ <PathwayDetailModal
2165
+ pathway={selectedPathway}
2166
+ paths={pathwayCourses}
2167
+ pathwayCompletion={completion}
2168
+ enrollmentStatus={isEnrolled}
2169
+ bannerImageSrc={lmsUrl + pathway.metadata?.banner_image_asset_path}
2170
+ onClose={() => setSelectedPathway(null)}
2171
+ onEnroll={(p) => enrollMutation(p)}
2172
+ onCourseClick={(course) => router.push(\`/courses/\${course.course_id}\`)}
2173
+ />
2174
+ \`\`\`
2175
+
2176
+ **File Location**: \`packages/web-containers/src/components/skills-profile/pathway-detail-modal.tsx\``,
2177
+ CreatePathwayModal: `# CreatePathwayModal Component
2178
+
2179
+ "Create New Pathway" wizard modal. Owns its local form state (name, description, subject, cover image, selected courses/resources, search query). Caller handles search via \`onSearchChange\` and persistence via \`onSave\`. Uses next/image, so it ships from \`@iblai/iblai-js/web-containers/next\`.
2180
+
2181
+ \`\`\`typescript
2182
+ import { CreatePathwayModal, type CreatePathwayFormData } from '@iblai/iblai-js/web-containers/next';
2183
+
2184
+ <CreatePathwayModal
2185
+ open={open}
2186
+ onOpenChange={setOpen}
2187
+ searchedCourses={searchResults.courses}
2188
+ searchedResources={searchResults.resources}
2189
+ isCoursesLoading={isLoading}
2190
+ onSearchChange={(q) => debouncedSearch(q)}
2191
+ onSave={(form: CreatePathwayFormData) => createPathwayMutation(buildPayload(form))}
2192
+ />
2193
+ \`\`\`
2194
+
2195
+ **File Location**: \`packages/web-containers/src/components/skills-profile/create-pathway-modal.tsx\``,
2196
+ SkeletonCreatePathwaySearchList: `# SkeletonCreatePathwaySearchList Component
2197
+
2198
+ Loading placeholder row for the CreatePathwayModal content search list. Pure presentational.
2199
+
2200
+ \`\`\`typescript
2201
+ import { SkeletonCreatePathwaySearchList } from '@iblai/iblai-js/web-containers';
2202
+
2203
+ <SkeletonCreatePathwaySearchList />
2204
+ \`\`\`
2205
+
2206
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-create-pathway-search-list.tsx\``,
2207
+ ProgramDetailModal: `# ProgramDetailModal Component
2208
+
2209
+ Detail modal for a single program with optional admin Settings tab. Caller supplies the courses, completion, enrollment state, banner image, initial settings, and the showSettings (admin) flag. Uses next/image, so it ships from \`@iblai/iblai-js/web-containers/next\`.
2210
+
2211
+ \`\`\`typescript
2212
+ import {
2213
+ ProgramDetailModal,
2214
+ EMPTY_PROGRAM_SETTINGS_FORM,
2215
+ type ProgramSettingsFormData,
2216
+ } from '@iblai/iblai-js/web-containers/next';
2217
+
2218
+ <ProgramDetailModal
2219
+ program={selectedProgram}
2220
+ courses={programCourses}
2221
+ programCompletion={completion}
2222
+ enrollmentStatus={isEnrolled}
2223
+ showSettings={isAdmin}
2224
+ initialSettings={metadata?.formData}
2225
+ onClose={() => setSelected(null)}
2226
+ onEnroll={(p) => enrollMutation(p)}
2227
+ onCourseClick={(id) => router.push(\`/courses/\${id}\`)}
2228
+ onSaveSettings={(s: ProgramSettingsFormData) => updateMetadataMutation(s)}
2229
+ />
2230
+ \`\`\`
2231
+
2232
+ The Settings form is owned internally; \`initialSettings\` re-initializes when the prop changes.
2233
+
2234
+ **File Location**: \`packages/web-containers/src/components/skills-profile/program-detail-modal.tsx\``,
2235
+ CredentialBox: `# CredentialBox Component
2236
+
2237
+ Public-profile credentials grid using CredentialMiniBox tiles. Presentational — pass the credentials list from \`useProfileCredentials\`.
2238
+
2239
+ \`\`\`typescript
2240
+ import { CredentialBox, useProfileCredentials } from '@iblai/iblai-js/web-containers';
2241
+
2242
+ const { fetchedCredentials, isLoading, isError } = useProfileCredentials({ search: '' });
2243
+ <CredentialBox credentials={fetchedCredentials} isLoading={isLoading} isError={isError} />
2244
+ \`\`\`
2245
+
2246
+ **File Location**: \`packages/web-containers/src/components/skills-profile/credential-box.tsx\``,
2247
+ EducationBox: `# EducationBox Component
2248
+
2249
+ Public-profile education list with edit buttons. Presentational. Caller wires the EducationDialog open state via \`onEditEducation\`.
2250
+
2251
+ \`\`\`typescript
2252
+ import { EducationBox } from '@iblai/iblai-js/web-containers';
2253
+ import { useGetUserEducationQuery } from '@iblai/data-layer';
2254
+
2255
+ const { data, isLoading, error } = useGetUserEducationQuery([{ org, username }]);
2256
+ <EducationBox
2257
+ education={data}
2258
+ isLoading={isLoading}
2259
+ isError={!!error}
2260
+ onEditEducation={(e) => setEditing(e)}
2261
+ />
2262
+ \`\`\`
2263
+
2264
+ **File Location**: \`packages/web-containers/src/components/skills-profile/education-box.tsx\``,
2265
+ ExperienceBox: `# ExperienceBox Component
2266
+
2267
+ Public-profile work experience list with edit buttons. Presentational. Mirrors EducationBox.
2268
+
2269
+ \`\`\`typescript
2270
+ import { ExperienceBox } from '@iblai/iblai-js/web-containers';
2271
+
2272
+ <ExperienceBox
2273
+ experience={data}
2274
+ isLoading={isLoading}
2275
+ isError={isError}
2276
+ onEditExperience={(x) => setEditing(x)}
2277
+ />
2278
+ \`\`\`
2279
+
2280
+ **File Location**: \`packages/web-containers/src/components/skills-profile/experience-box.tsx\``,
2281
+ SkillsBox: `# SkillsBox Component
2282
+
2283
+ Public-profile skills grid split into Earned, Self-Reported, and Desired sections. Presentational — pass the three RTK query payloads from \`useProfileSkills\`.
2284
+
2285
+ \`\`\`typescript
2286
+ import { SkillsBox, useProfileSkills } from '@iblai/iblai-js/web-containers';
2287
+
2288
+ const skills = useProfileSkills();
2289
+ <SkillsBox
2290
+ earnedSkills={skills.earnedSkills}
2291
+ earnedSkillsLoading={skills.earnedSkillsLoading}
2292
+ earnedSkillsError={skills.earnedSkillsError}
2293
+ selfReportedSkills={skills.selfReportedSkills}
2294
+ selfReportedSkillsLoading={skills.selfReportedSkillsLoading}
2295
+ selfReportedSkillsError={skills.selfReportedSkillsError}
2296
+ desiredSkills={skills.desiredSkills}
2297
+ desiredSkillsLoading={skills.desiredSkillsLoading}
2298
+ desiredSkillsError={skills.desiredSkillsError}
2299
+ />
2300
+ \`\`\`
2301
+
2302
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skills-box.tsx\``,
2303
+ ResumeBox: `# ResumeBox Component
2304
+
2305
+ Public-profile PDF resume viewer (react-pdf) with paging, zoom, and rotation controls. Presentational — caller resolves the resume URL.
2306
+
2307
+ \`\`\`typescript
2308
+ import { ResumeBox } from '@iblai/iblai-js/web-containers';
2309
+
2310
+ const resumeUrl = data?.files?.find((f) => f.type === 'resume')?.url;
2311
+ <ResumeBox resumeUrl={resumeUrl} isLoading={isLoading} isError={isError} />
2312
+ \`\`\`
2313
+
2314
+ Must run client-side (\`'use client'\`).
2315
+
2316
+ **File Location**: \`packages/web-containers/src/components/skills-profile/resume-box.tsx\``,
2317
+ SkeletonEducationBox: `# SkeletonEducationBox Component
2318
+
2319
+ Loading placeholder for an EducationBox / ExperienceBox row. Pure presentational.
2320
+
2321
+ \`\`\`typescript
2322
+ import { SkeletonEducationBox } from '@iblai/iblai-js/web-containers';
2323
+
2324
+ <SkeletonEducationBox />
2325
+ \`\`\`
2326
+
2327
+ **File Location**: \`packages/web-containers/src/components/skills-profile/skeleton-education-box.tsx\``,
2328
+ MediaBox: `# MediaBox Component
2329
+
2330
+ Public-profile media uploader and uploaded-media grid. Owns the @tanstack/react-form file/link tabs internally; caller handles persistence via \`onUploadFile\` / \`onUploadLink\`. Uses next/link, so it ships from \`@iblai/iblai-js/web-containers/next\`.
2331
+
2332
+ \`\`\`typescript
2333
+ import { MediaBox, type UploadedFile } from '@iblai/iblai-js/web-containers/next';
2334
+
2335
+ <MediaBox
2336
+ uploadedMedia={mediaList}
2337
+ isLoading={isLoading}
2338
+ isError={isError}
2339
+ isUploading={isUploading}
2340
+ resumeCheckboxEnabled={!isSkillsResumeFeatureHidden}
2341
+ onUploadFile={(file, isResume) => uploadResumeMutation({ file, isResume })}
2342
+ onUploadLink={(url) => uploadLinkMutation({ url })}
2343
+ onError={(msg) => toast.error(msg)}
2344
+ />
2345
+ \`\`\`
2346
+
2347
+ **File Location**: \`packages/web-containers/src/components/skills-profile/media-box.tsx\``,
2348
+ CourseOutline: `# CourseOutline Component
2349
+
2350
+ Hierarchical course outline (chapter → lesson → sublesson) with collapsible tree + completion progress rings. Reads all state from \`CourseOutlineContext\` — the \`CourseContentLayout\` sets up the provider, or wrap manually.
2351
+
2352
+ \`\`\`typescript
2353
+ import { CourseOutline, CourseOutlineContext } from '@iblai/iblai-js/web-containers';
2354
+
2355
+ <CourseOutlineContext.Provider value={{ courseOutline, toggleModule, ... }}>
2356
+ <CourseOutline />
2357
+ </CourseOutlineContext.Provider>
2358
+ \`\`\`
2359
+
2360
+ **File Location**: \`packages/web-containers/src/components/course-content/course-outline.tsx\``,
2361
+ CourseOutlineDrawer: `# CourseOutlineDrawer Component
2362
+
2363
+ Mobile drawer wrapping \`<CourseOutline />\` in a shadcn Sheet. Reads open state from \`CourseOutlineContext\`.
2364
+
2365
+ \`\`\`typescript
2366
+ import { CourseOutlineDrawer } from '@iblai/iblai-js/web-containers';
2367
+
2368
+ <CourseOutlineDrawer />
2369
+ \`\`\`
2370
+
2371
+ **File Location**: \`packages/web-containers/src/components/course-content/course-outline-drawer.tsx\``,
2372
+ TimedExam: `# TimedExam Component
2373
+
2374
+ Timed-exam overlay + countdown for edX proctored subsections. Reads \`examInfo\` from \`EdxIframeContext\` and drives \`useStartExamMutation\` / \`useUpdateExamAttemptMutation\` / \`useLazyGetExamInfoQuery\` from \`@iblai/data-layer\`. Errors are logged via \`console.error\`; no internal toasts.
2375
+
2376
+ \`\`\`typescript
2377
+ import { TimedExam } from '@iblai/iblai-js/web-containers';
2378
+
2379
+ {examInfo && <TimedExam />}
2380
+ \`\`\`
2381
+
2382
+ **File Location**: \`packages/web-containers/src/components/course-content/timed-exam.tsx\``,
2383
+ CourseAccessGuard: `# CourseAccessGuard Component
2384
+
2385
+ Guards course content rendering on tenant / loading-state. Shows a spinner while loading, calls \`onUnauthorized\` if the course's \`platform_key\` doesn't match the current tenant (and isn't \`'main'\`), and calls \`onNotFound\` on failure with no course. Otherwise renders children. Routing is the caller's responsibility.
2386
+
2387
+ \`\`\`typescript
2388
+ import { CourseAccessGuard } from '@iblai/iblai-js/web-containers';
2389
+
2390
+ <CourseAccessGuard
2391
+ course={course}
2392
+ courseInfoLoadingState={courseInfoLoadingState}
2393
+ currentTenant={getTenant()}
2394
+ onUnauthorized={() => router.push('/error/403')}
2395
+ onNotFound={() => router.push('/error/404')}
2396
+ >
2397
+ {children}
2398
+ </CourseAccessGuard>
2399
+ \`\`\`
2400
+
2401
+ **File Location**: \`packages/web-containers/src/components/course-content/course-access-guard.tsx\``,
2402
+ CourseContentLoading: `# CourseContentLoading Component
2403
+
2404
+ Loading skeleton shown while \`CourseContentLayout\` is hydrating. Mirrors skillsai's \`app/course-content/[course_id]/loading.tsx\`.
2405
+
2406
+ \`\`\`typescript
2407
+ import { CourseContentLoading } from '@iblai/iblai-js/web-containers';
2408
+
2409
+ <CourseContentLoading />
2410
+ \`\`\`
2411
+
2412
+ **File Location**: \`packages/web-containers/src/components/course-content/course-content-loading.tsx\``,
2413
+ EdxIframe: `# EdxIframe Component
2414
+
2415
+ The edX iframe shell with postMessage JWT handshake, exam detection, prev/next lesson buttons, and debounced URL resolution. Reads state from \`EdxIframeContext\` + \`CourseOutlineContext\`; caller provides LMS/MFE/legacy LMS base URLs as props. Uses \`next/navigation\` (\`useSearchParams\`), so it ships from \`@iblai/iblai-js/web-containers/next\`.
2416
+
2417
+ \`\`\`typescript
2418
+ import { EdxIframe } from '@iblai/iblai-js/web-containers/next';
2419
+
2420
+ <EdxIframe
2421
+ lmsUrl="https://lms.example.com"
2422
+ mfeUrl="https://apps.example.com"
2423
+ legacyLmsUrl="https://legacy.example.com"
2424
+ edxTokenKey="edx_token"
2425
+ />
2426
+ \`\`\`
2427
+
2428
+ **File Location**: \`packages/web-containers/src/components/course-content/edx-iframe.tsx\``,
2429
+ CourseContentTabPage: `# CourseContentTabPage Component
2430
+
2431
+ A single component replacing skillsai's seven per-tab \`page.tsx\` files under \`app/course-content/[course_id]/*\`. Sets \`activeTab\` on the \`EdxIframeContext\` once on mount and renders \`<EdxIframe />\`. Requires the same LMS/MFE/legacy URL props as \`EdxIframe\`.
2432
+
2433
+ \`\`\`typescript
2434
+ import { CourseContentTabPage } from '@iblai/iblai-js/web-containers/next';
2435
+
2436
+ // e.g. in app/course-content/[course_id]/progress/page.tsx
2437
+ <CourseContentTabPage
2438
+ tab="progress"
2439
+ lmsUrl={lmsUrl}
2440
+ mfeUrl={mfeUrl}
2441
+ legacyLmsUrl={legacyLmsUrl}
2442
+ />
2443
+ \`\`\`
2444
+
2445
+ **File Location**: \`packages/web-containers/src/components/course-content/course-content-tab-page.tsx\``,
2446
+ CourseContentLayout: `# CourseContentLayout Component
2447
+
2448
+ Top-level layout for the course content experience. Owns the \`CourseOutlineContext\` + \`EdxIframeContext\` providers, wires \`useCourseDetail\` / \`useEdxIframe\`, renders the sidebar + tab strip + breadcrumb + progress indicator, and gates access via \`CourseAccessGuard\`. \`children\` is typically a \`<CourseContentTabPage />\`. Uses \`next/link\` and \`next/navigation\`, so it ships from \`@iblai/iblai-js/web-containers/next\`.
2449
+
2450
+ \`\`\`typescript
2451
+ import { CourseContentLayout } from '@iblai/iblai-js/web-containers/next';
2452
+
2453
+ <CourseContentLayout
2454
+ courseId={courseId}
2455
+ isPlatformAdmin={isPlatformAdmin}
2456
+ currentTenant={getTenant()}
2457
+ dmUrl={config.urls.dm()}
2458
+ courseEligibilityEnabled={config.settings.courseEligibilityEnabled()}
2459
+ onUnauthorized={() => router.push('/error/403')}
2460
+ onNotFound={() => router.push('/error/404')}
2461
+ onNavigate={(href, opts) => (opts?.external ? window.location.assign(href) : router.push(href))}
2462
+ onError={(msg) => toast.error(msg)}
2463
+ onSuccess={(msg) => toast.success(msg)}
2464
+ onCourseMentorChange={(uuid) => setCourseMentor(uuid)}
2465
+ >
2466
+ {children}
2467
+ </CourseContentLayout>
2468
+ \`\`\`
2469
+
2470
+ **File Location**: \`packages/web-containers/src/components/course-content/course-content-layout.tsx\``,
1738
2471
  };
1739
2472
  const UI_PRIMITIVES = [
1740
2473
  'Button',
@@ -1783,7 +2516,18 @@ export function getComponentInfo(componentName) {
1783
2516
  'AppSidebar',
1784
2517
  'NavBar',
1785
2518
  'ConversationStarters',
1786
- ,
2519
+ 'ProfileTabs',
2520
+ 'CourseBox',
2521
+ 'CredentialMiniBox',
2522
+ 'CredentialDetailModal',
2523
+ 'ProfileInfoCards',
2524
+ 'PathwayDetailModal',
2525
+ 'CreatePathwayModal',
2526
+ 'ProgramDetailModal',
2527
+ 'MediaBox',
2528
+ 'EdxIframe',
2529
+ 'CourseContentTabPage',
2530
+ 'CourseContentLayout',
1787
2531
  ];
1788
2532
  return `Component "${componentName}" not found.
1789
2533
 
@@ -1 +1 @@
1
- {"version":3,"file":"component-info.js","sourceRoot":"","sources":["../../src/tools/component-info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-info.js","sourceRoot":"","sources":["../../src/tools/component-info.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hook-info.d.ts","sourceRoot":"","sources":["../../src/tools/hook-info.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAcxB,CAAC;AAg7DF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuIpD"}
1
+ {"version":3,"file":"hook-info.d.ts","sourceRoot":"","sources":["../../src/tools/hook-info.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAcxB,CAAC;AAwvEF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuIpD"}
@@ -1856,6 +1856,316 @@ const result = await chatWithWorkflow({
1856
1856
  \`\`\`
1857
1857
 
1858
1858
  **File Location**: \`packages/data-layer/src/features/workflows/api-slice.ts\``,
1859
+ useEnablePaywallMutation: `# useEnablePaywallMutation Hook (RTK Query)
1860
+
1861
+ Enables (or updates configuration for) a paywall on a paywallable item. Used for both the initial enable action and subsequent saves of paywall configuration (free tier, trial period, grandfathering strategy).
1862
+
1863
+ \`\`\`typescript
1864
+ import { useEnablePaywallMutation } from '@iblai/iblai-js/data-layer';
1865
+
1866
+ const [enablePaywall, { isLoading }] = useEnablePaywallMutation();
1867
+
1868
+ await enablePaywall({
1869
+ platform_key: string,
1870
+ item_type: string, // 'mentor' | 'course' | 'program' | 'pathway'
1871
+ item_id: string,
1872
+ is_enabled: boolean,
1873
+ allow_free_tier: boolean,
1874
+ trial_period_days: number,
1875
+ grandfathering_strategy: string, // 'free_forever' | 'require_subscription'
1876
+ }).unwrap();
1877
+ \`\`\`
1878
+
1879
+ **File Location**: \`packages/data-layer/src/features/monetization/custom-api-slice.ts\``,
1880
+ useDisablePaywallMutation: `# useDisablePaywallMutation Hook (RTK Query)
1881
+
1882
+ Disables a previously enabled paywall on an item. Existing subscribers continue per the configured grandfathering strategy.
1883
+
1884
+ \`\`\`typescript
1885
+ import { useDisablePaywallMutation } from '@iblai/iblai-js/data-layer';
1886
+
1887
+ const [disablePaywall, { isLoading }] = useDisablePaywallMutation();
1888
+
1889
+ await disablePaywall({
1890
+ platform_key: string,
1891
+ item_type: string, // 'mentor' | 'course' | 'program' | 'pathway'
1892
+ item_id: string,
1893
+ }).unwrap();
1894
+ \`\`\`
1895
+
1896
+ **File Location**: \`packages/data-layer/src/features/monetization/custom-api-slice.ts\``,
1897
+ useCancelSubscriptionMutation: `# useCancelSubscriptionMutation Hook (RTK Query)
1898
+
1899
+ Cancels a user's subscription to a paywalled item. For recurring subscriptions, the API typically returns a Stripe Customer Portal URL that the user must visit to confirm cancellation; for one-time purchases or grandfathered access, the response includes \`status: 'canceled'\` directly.
1900
+
1901
+ \`\`\`typescript
1902
+ import { useCancelSubscriptionMutation } from '@iblai/iblai-js/data-layer';
1903
+
1904
+ const [cancelSubscription, { isLoading }] = useCancelSubscriptionMutation();
1905
+
1906
+ const result = await cancelSubscription({
1907
+ platform_key: string,
1908
+ item_type: string, // 'mentor' | 'course' | 'program' | 'pathway'
1909
+ item_id: string,
1910
+ return_url?: string, // required for recurring subs (Stripe portal return)
1911
+ }).unwrap();
1912
+
1913
+ if (result.portal_url) {
1914
+ // Open Stripe Customer Portal
1915
+ window.open(result.portal_url, '_blank');
1916
+ } else if (result.status === 'canceled') {
1917
+ // Cancellation completed server-side
1918
+ }
1919
+ \`\`\`
1920
+
1921
+ **File Location**: \`packages/data-layer/src/features/monetization/custom-api-slice.ts\``,
1922
+ useCheckAccessQuery: `# useCheckAccessQuery Hook (RTK Query)
1923
+
1924
+ Checks whether the current authenticated user has access to a paywalled item. Returns access status and (when locked) pricing information that can be passed to \`PaywallModal\`. Scoped to the platform/tenant.
1925
+
1926
+ \`\`\`typescript
1927
+ import { useCheckAccessQuery } from '@iblai/iblai-js/data-layer';
1928
+
1929
+ const { data, isLoading } = useCheckAccessQuery({
1930
+ platform_key: string,
1931
+ item_type: string, // 'mentor' | 'course' | 'program' | 'pathway'
1932
+ item_id: string,
1933
+ });
1934
+ // data: { has_access: boolean, reason?: string, pricing?: { item_name, prices } }
1935
+ \`\`\`
1936
+
1937
+ **File Location**: \`packages/data-layer/src/features/monetization/custom-api-slice.ts\``,
1938
+ useCheckAccessUnscopedQuery: `# useCheckAccessUnscopedQuery Hook (RTK Query)
1939
+
1940
+ Same as \`useCheckAccessQuery\` but bypasses tenant scoping — used in anonymous / unauthenticated entry points (e.g. embed views, public landing pages) where the user's tenant context isn't yet established.
1941
+
1942
+ \`\`\`typescript
1943
+ import { useCheckAccessUnscopedQuery } from '@iblai/iblai-js/data-layer';
1944
+
1945
+ const { data, isLoading } = useCheckAccessUnscopedQuery({
1946
+ platform_key: string,
1947
+ item_type: string, // 'mentor' | 'course' | 'program' | 'pathway'
1948
+ item_id: string,
1949
+ });
1950
+ \`\`\`
1951
+
1952
+ Prefer \`useCheckAccessQuery\` whenever the user's tenant is known.
1953
+
1954
+ **File Location**: \`packages/data-layer/src/features/monetization/custom-api-slice.ts\``,
1955
+ useCourseMetadata: `# useCourseMetadata Hook
1956
+
1957
+ Wrapper around the LMS course-metadata RTK endpoints. Returns promise-returning helpers for use inside effects/callbacks.
1958
+
1959
+ \`\`\`typescript
1960
+ import { useCourseMetadata } from '@iblai/iblai-js/web-containers';
1961
+
1962
+ const {
1963
+ handleFetchCourseMetaData,
1964
+ handleFetchCourseEligibility,
1965
+ handleFetchCourseCompletionOutlines,
1966
+ isLoading,
1967
+ isError,
1968
+ } = useCourseMetadata();
1969
+
1970
+ const meta = await handleFetchCourseMetaData('course-v1:org+num+run');
1971
+ \`\`\`
1972
+
1973
+ Backed by \`useLazyGetCourseMetaDataQuery\`, \`useLazyGetCourseEligibilityQuery\`, and \`useLazyGetCourseCompletionOutlinesQuery\` from \`@iblai/data-layer\` (LMS service).
1974
+
1975
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-course-metadata.ts\``,
1976
+ useUserCourses: `# useUserCourses Hook
1977
+
1978
+ Fetches the logged-in user's enrolled or assigned courses (paged), then hydrates each row with edX course metadata. Supports both API search and client-side filtering.
1979
+
1980
+ \`\`\`typescript
1981
+ import { useUserCourses } from '@iblai/iblai-js/web-containers';
1982
+
1983
+ const result = useUserCourses({ limit: 8, page: 1, courseType: 'enrolled', useAPISearch: false });
1984
+ // result.userCourses, result.isLoadingUserCourses, result.errorUserCourses, result.pagination
1985
+ \`\`\`
1986
+
1987
+ Reads username/tenant/userId from localStorage via the helpers shipped alongside the hook. Backed by the new \`courses\` slice in \`@iblai/data-layer\`.
1988
+
1989
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-user-courses.ts\``,
1990
+ useProfileCredentials: `# useProfileCredentials Hook
1991
+
1992
+ Fetches the logged-in user's credential assertions and maintains a client-side filtered list keyed off a search string.
1993
+
1994
+ \`\`\`typescript
1995
+ import { useProfileCredentials } from '@iblai/iblai-js/web-containers';
1996
+
1997
+ const result = useProfileCredentials({ maxCredentials: 12 });
1998
+ // result.filteredCredentials, result.fetchedCredentials, result.isLoading, result.isError
1999
+ \`\`\`
2000
+
2001
+ Backed by \`useLazyGetUserCredentialsQuery\` from \`@iblai/data-layer\`.
2002
+
2003
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-profile-credentials.ts\``,
2004
+ useProfileSkills: `# useProfileSkills Hook
2005
+
2006
+ Aggregates the logged-in user's earned, self-reported, and desired skills, plus mutations to create / update / delete self-reported and desired skills. Also exposes a \`handleFetchAllSkills\` helper backed by the catalog search endpoint.
2007
+
2008
+ \`\`\`typescript
2009
+ import { useProfileSkills } from '@iblai/iblai-js/web-containers';
2010
+
2011
+ const skills = useProfileSkills(showToast);
2012
+ // skills.earnedSkills, .selfReportedSkills, .desiredSkills (+ loading/error/success)
2013
+ // skills.handleSkillsUpdate(skill, allSkills, callback)
2014
+ // skills.handleSkillsDeletion(skill, allSkills, callback)
2015
+ // skills.handleSkillsCreate(reportedSkill)
2016
+ // skills.handleFetchAllSkills(query) → updates skills.fetchedSkills
2017
+ \`\`\`
2018
+
2019
+ Backed by \`useGetUserEarnedSkillsQuery\`, \`useGetUserReportedSkillsQuery\`, \`useGetUserDesiredSkillsQuery\`, \`useCreateOrUpdateUserReportedSkillMutation\`, and \`useCreateOrUpdateUserDesiredSkillMutation\` from \`@iblai/data-layer\`. Uses sonner for toasts.
2020
+
2021
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-profile-skills.ts\``,
2022
+ useCatalogSearch: `# useCatalogSearch Hook
2023
+
2024
+ Thin wrapper around \`useLazyGetCatalogSearchQuery\` exposing a promise-returning \`handleSearch\` helper for ad-hoc searches inside effects/callbacks.
2025
+
2026
+ \`\`\`typescript
2027
+ import { useCatalogSearch } from '@iblai/iblai-js/web-containers';
2028
+
2029
+ const { handleSearch, isLoading, isError } = useCatalogSearch();
2030
+ const result = await handleSearch({ content: ['skills'], tenant: 'acme', query: 'rust' });
2031
+ \`\`\`
2032
+
2033
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-catalog-search.ts\``,
2034
+ useProfilePathways: `# useProfilePathways Hook
2035
+
2036
+ Fetches the logged-in user's catalog / assigned / enrolled pathways and hydrates each with completion stats. Supports client-side search filtering on pathway name.
2037
+
2038
+ \`\`\`typescript
2039
+ import { useProfilePathways } from '@iblai/iblai-js/web-containers';
2040
+
2041
+ const {
2042
+ pathways,
2043
+ filteredPathways,
2044
+ pathwayCompletions,
2045
+ pathwayCompletionsLoading,
2046
+ isLoading,
2047
+ isError,
2048
+ handleFetchSinglePathwayEnrollmentStatus,
2049
+ } = useProfilePathways({ searchQuery: q, contentType: 'catalog', lmsUrl: lmsBaseUrl });
2050
+ // contentType is one of 'catalog' | 'assigned' | 'enrolled'
2051
+ \`\`\`
2052
+
2053
+ Pass \`lmsUrl\` to prefix catalog \`metadata.course_image_asset_path\` URLs (replaces skillsai's \`config.urls.lms()\`).
2054
+
2055
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-profile-pathways.ts\``,
2056
+ useProfilePrograms: `# useProfilePrograms Hook
2057
+
2058
+ Fetches the logged-in user's enrolled / assigned / catalog programs and hydrates each with completion stats. Supports client-side search filtering on program name.
2059
+
2060
+ \`\`\`typescript
2061
+ import { useProfilePrograms } from '@iblai/iblai-js/web-containers';
2062
+
2063
+ const { programs, filteredPrograms, programCompletions, programCompletionsLoading, isLoading, isError } =
2064
+ useProfilePrograms({ searchQuery: q, activeTab: 'enrolled' });
2065
+ \`\`\`
2066
+
2067
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-profile-programs.ts\``,
2068
+ useProfileActivityStats: `# useProfileActivityStats Hook
2069
+
2070
+ Fans out 9 RTK lazy queries in parallel to populate the profile activity counters (Points, Skills, Credentials, Courses, Programs, Pathways, Resources, Assessments, Videos). Each row updates independently as its request resolves; per-stat failures collapse to 0 without blocking the others.
2071
+
2072
+ \`\`\`typescript
2073
+ import { useProfileActivityStats } from '@iblai/iblai-js/web-containers';
2074
+
2075
+ const { stats } = useProfileActivityStats();
2076
+ // stats: ActivityStats[] — { value, label, loading }
2077
+ \`\`\`
2078
+
2079
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-profile-activity-stats.ts\``,
2080
+ useProfileTimeSpent: `# useProfileTimeSpent Hook
2081
+
2082
+ Fetches the last 7 days of learning activity for the logged-in user and returns it as \`{ date, minutes }\` rows ready for a chart (e.g. \`ProfileTimeChart\`).
2083
+
2084
+ \`\`\`typescript
2085
+ import { useProfileTimeSpent } from '@iblai/iblai-js/web-containers';
2086
+
2087
+ const { timeSpent, timeSpentLoading } = useProfileTimeSpent();
2088
+ \`\`\`
2089
+
2090
+ Backed by \`useLazyGetOverTimeActivityQuery\` from \`@iblai/data-layer\`.
2091
+
2092
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-profile-timespent.ts\``,
2093
+ useUserMetadata: `# useUserMetadata Hook
2094
+
2095
+ Thin wrapper around \`useGetUserMetadataQuery\` that reads the username from localStorage and skips the request when there is no logged-in user.
2096
+
2097
+ \`\`\`typescript
2098
+ import { useUserMetadata } from '@iblai/iblai-js/web-containers';
2099
+
2100
+ const { userMetaData, userMetaDataLoading, userMetaDataError } = useUserMetadata();
2101
+ \`\`\`
2102
+
2103
+ **File Location**: \`packages/web-containers/src/components/skills-profile/hooks/use-user-metadata.ts\``,
2104
+ useCourseDetail: `# useCourseDetail Hook
2105
+
2106
+ Large business-logic hook for the course-content experience. Fetches course metadata / progress / completion / eligibility, owns the "enroll / access / buy now / request access" button-action state machine, and surfaces a Stripe checkout flow. Ported from skillsai with the profile-PR refactor: no \`next/router\`, no \`sonner\`, no \`config.*\` reads — all navigation / toasts / config go via props.
2107
+
2108
+ \`\`\`typescript
2109
+ import { useCourseDetail } from '@iblai/iblai-js/web-containers';
2110
+
2111
+ const {
2112
+ handleFetchCourseInfo,
2113
+ handleFetchCourseSyllabus,
2114
+ handleFetchCourseEligibilityInfo,
2115
+ handleFetchCourseProgress,
2116
+ handleFetchCourseCompletion,
2117
+ handleEnrollToCourse,
2118
+ handleCreateCheckoutSession,
2119
+ handleAccessCourse,
2120
+ handleOpenLesson,
2121
+ course,
2122
+ courseOutline,
2123
+ courseEligibility,
2124
+ courseProgress,
2125
+ courseCompletion,
2126
+ courseInfoLoadingState,
2127
+ } = useCourseDetail({
2128
+ courseId,
2129
+ dmUrl: config.urls.dm(),
2130
+ courseEligibilityEnabled: config.settings.courseEligibilityEnabled(),
2131
+ onNavigate: (href, opts) => (opts?.external ? window.location.assign(href) : router.push(href)),
2132
+ onError: (msg) => toast.error(msg),
2133
+ onSuccess: (msg) => toast.success(msg),
2134
+ });
2135
+ \`\`\`
2136
+
2137
+ **File Location**: \`packages/web-containers/src/components/course-content/hooks/use-course-detail.ts\``,
2138
+ useEdxIframe: `# useEdxIframe Hook
2139
+
2140
+ Helpers for the edX iframe course navigation: pure tree-traversal utils (\`findSequentialParent\`, \`flattenVerticalBlocks\`, \`getFirstAvailableUnit\`, \`findLastResumeBlock\`, \`getParentBlockById\`, \`getPreviousUnitIframe\`, \`getNextUnitIframe\`, \`getParentsInfosFromSublessonId\`, \`addBookmarksTab\`, \`getUnitToIframe\`) plus an async \`getIframeURL\` that wraps the SSO-token handshake via \`useLazyGetEdxSSOTokenQuery\` from \`@iblai/data-layer\`. Takes the LMS / MFE / legacy LMS base URLs as arguments instead of reading from a config module.
2141
+
2142
+ \`\`\`typescript
2143
+ import { useEdxIframe } from '@iblai/iblai-js/web-containers';
2144
+
2145
+ const { getIframeURL, getUnitToIframe, findSequentialParent } = useEdxIframe({
2146
+ lmsUrl: config.urls.lms(),
2147
+ mfeUrl: config.urls.mfe(),
2148
+ legacyLmsUrl: config.urls.legacyLmsUrl(),
2149
+ });
2150
+ \`\`\`
2151
+
2152
+ **File Location**: \`packages/web-containers/src/components/course-content/hooks/use-edx-iframe.ts\``,
2153
+ useChatState: `# useChatState Hook
2154
+
2155
+ Small context accessor exposing the shared mentor-chat state (open/close, current course mentor uuid, sidebar visibility). Ported from the \`useChatState\` + \`ChatContext\` + \`ChatProvider\` bundle in skillsai's \`components/chat-button.tsx\`. The actual \`ChatButton\` UI was NOT ported (it's config-heavy + depends on a mentor web component).
2156
+
2157
+ \`\`\`typescript
2158
+ import { ChatProvider, useChatState } from '@iblai/iblai-js/web-containers';
2159
+
2160
+ <ChatProvider>
2161
+ {children}
2162
+ </ChatProvider>
2163
+
2164
+ // inside a child:
2165
+ const { isOpen, setIsOpen, courseMentor, setCourseMentor } = useChatState();
2166
+ \`\`\`
2167
+
2168
+ **File Location**: \`packages/web-containers/src/components/course-content/hooks/use-chat-state.ts\``,
1859
2169
  };
1860
2170
  export function getHookInfo(hookName) {
1861
2171
  const info = hooks[hookName];
@@ -1 +1 @@
1
- {"version":3,"file":"hook-info.js","sourceRoot":"","sources":["../../src/tools/hook-info.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sDAAsD;IACnE,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,iFAAiF;aACpF;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;CACF,CAAC;AAEF,MAAM,KAAK,GAA2B;IACpC,+EAA+E;IAC/E,aAAa;IACb,+EAA+E;IAE/E,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EAkE2D;IAE5E,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEA0C6D;IAEtE,+EAA+E;IAC/E,eAAe;IACf,+EAA+E;IAE/E,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;2EA4BsD;IAEzE,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;wEA0BsD;IAEtE,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAE/E,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAgC+D;IAErF,qBAAqB,EAAE;;;;;;;;;;;;;;;;;;;;;;wFAsB+D;IAEtF,+EAA+E;IAC/E,qBAAqB;IACrB,+EAA+E;IAE/E,sBAAsB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;6FAwBmE;IAE3F,+EAA+E;IAC/E,eAAe;IACf,+EAA+E;IAE/E,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;2FAuBsE;IAEzF,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;oFAyBkE;IAElF,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAE/E,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEA4BsD;IAEhE,+EAA+E;IAC/E,2BAA2B;IAC3B,+EAA+E;IAE/E,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;;;4EAsBsD;IAE1E,wBAAwB,EAAE;;;;;;;;;;;;;;;4EAegD;IAE1E,yBAAyB,EAAE;;;;;;;;;;;;;;;;4EAgB+C;IAE1E,+BAA+B,EAAE;;;;;;;;;;;;;;;4EAeyC;IAE1E,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;4EAoBiD;IAE1E,qBAAqB,EAAE;;;;;;;;;;;;;;;;;;;;4EAoBmD;IAE1E,uBAAuB,EAAE;;;;;;;;;;;;;;;4EAeiD;IAE1E,qBAAqB,EAAE;;;;;;;;;;;;;;;;4EAgBmD;IAE1E,qBAAqB,EAAE;;;;;;;;;;;;;;;4EAemD;IAE1E,uBAAuB,EAAE;;;;;;;;;;;;;;;4EAeiD;IAE1E,sBAAsB,EAAE;;;;;;;;;;;;;;4EAckD;IAE1E,kCAAkC,EAAE;;;;;;;;;;;;;4EAasC;IAE1E,yBAAyB,EAAE;;;;;;;;;;;;;;;;4EAgB+C;IAE1E,sBAAsB,EAAE;;;;;;;;;;;;;;4EAckD;IAE1E,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EA4B+C;IAExE,6BAA6B,EAAE;;;;;;;;;;;;;;;;;;;0EAmByC;IAExE,4BAA4B,EAAE;;;;;;;;;;;;;;;0EAe0C;IAExE,wBAAwB,EAAE;;;;;;;;;;;;;;0EAc8C;IAExE,qBAAqB,EAAE;;;;;;;;;;;;;;gFAcuD;IAE9E,6BAA6B,EAAE;;;;;;;;;;;;;;;0EAeyC;IAExE,6BAA6B,EAAE;;;;;;;;;;;;;;0EAcyC;IAExE,+EAA+E;IAC/E,6BAA6B;IAC7B,+EAA+E;IAE/E,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;8EAuBkD;IAE5E,0BAA0B,EAAE;;;;;;;;;;;;;;;;8EAgBgD;IAE5E,mCAAmC,EAAE;;;;;;;;;;;;;;;;;;;;;;8EAsBuC;IAE5E,kCAAkC,EAAE;;;;;;;;;;;;;;;;8EAgBwC;IAE5E,kCAAkC,EAAE;;;;;;;;;;;;;;;;;8EAiBwC;IAE5E,kCAAkC,EAAE;;;;;;;;;;;;;;;8EAewC;IAE5E,qBAAqB,EAAE;;;;;;;;;;;;;;;;;8EAiBqD;IAE5E,6CAA6C,EAAE;;;;;;;;;;;;;;;;;8EAiB6B;IAE5E,+EAA+E;IAC/E,2BAA2B;IAC3B,+EAA+E;IAE/E,yBAAyB,EAAE;;;;;;;;;;;;;;;;;;;4EAmB+C;IAE1E,+BAA+B,EAAE;;;;;;;;;;;;;;;4EAeyC;IAE1E,sBAAsB,EAAE;;;;;;;;;;;;4EAYkD;IAE1E,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E,qBAAqB,EAAE;;;;;;;;;;;;;;0EAciD;IAExE,0BAA0B,EAAE;;;;;;;;;;;;;;0EAc4C;IAExE,+EAA+E;IAC/E,wBAAwB;IACxB,+EAA+E;IAE/E,qBAAqB,EAAE;;;;;;;;;;;;;;;yEAegD;IAEvE,0BAA0B,EAAE;;;;;;;;;;;;;;;;;;yEAkB2C;IAEvE,0BAA0B,EAAE;;;;;;;;;;;;;;;;;yEAiB2C;IAEvE,0BAA0B,EAAE;;;;;;;;;;;;;;;yEAe2C;IAEvE,wBAAwB,EAAE;;;;;;;;;;;;;;yEAc6C;IAEvE,4BAA4B,EAAE;;;;;;;;;;;;;;yEAcyC;IAEvE,yBAAyB,EAAE;;;;;;;;;;;;;;;;;;yEAkB4C;IAEvE,4BAA4B,EAAE;;;;;;;;;;;;;;;yEAeyC;IAEvE,+EAA+E;IAC/E,kCAAkC;IAClC,+EAA+E;IAE/E,wBAAwB,EAAE;;;;;;;;;;;;;;;mFAeuD;IAEjF,6BAA6B,EAAE;;;;;;;;;;;;mFAYkD;IAEjF,wBAAwB,EAAE;;;;;;;;;;;;mFAYuD;IAEjF,2BAA2B,EAAE;;;;;;;;;;;;;;;;;mFAiBoD;IAEjF,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E,sBAAsB,EAAE;;;;;;;;;;;;;;;;0EAgBgD;IAExE,gCAAgC,EAAE;;;;;;;;;;;;;;;;;0EAiBsC;IAExE,sBAAsB,EAAE;;;;;;;;;;;;;;;0EAegD;IAExE,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAE/E,sBAAsB,EAAE;;;;;;;;;;;;;;;;kFAgBwD;IAEhF,mBAAmB,EAAE;;;;;;;;;;;;;;;kFAe2D;IAEhF,+EAA+E;IAC/E,2BAA2B;IAC3B,+EAA+E;IAE/E,yBAAyB,EAAE;;;;;;;;;;;;;;;4EAe+C;IAE1E,wBAAwB,EAAE;;;;;;;;;;;;;;;4EAegD;IAE1E,iCAAiC,EAAE;;;;;;;;;;;;;;;;4EAgBuC;IAE1E,2BAA2B,EAAE;;;;;;;;;;;;;;;4EAe6C;IAE1E,+EAA+E;IAC/E,4BAA4B;IAC5B,+EAA+E;IAE/E,+BAA+B,EAAE;;;;;;;;;;;;;;;6EAe0C;IAE3E,+BAA+B,EAAE;;;;;;;;;;;;;;;6EAe0C;IAE3E,uBAAuB,EAAE;;;;;;;;;;;;;;6EAckD;IAE3E,+EAA+E;IAC/E,2BAA2B;IAC3B,+EAA+E;IAE/E,8BAA8B,EAAE;;;;;;;;;;;;;;;;4EAgB0C;IAE1E,0BAA0B,EAAE;;;;;;;;;;;;;;;sFAewD;IAEpF,kCAAkC,EAAE;;;;;;;;;;;;;;;sFAegD;IAEpF,+EAA+E;IAC/E,6BAA6B;IAC7B,+EAA+E;IAE/E,uBAAuB,EAAE;;;;;;;;;;;;;;;8EAemD;IAE5E,4BAA4B,EAAE;;;;;;;;;;;;;;;;8EAgB8C;IAE5E,4BAA4B,EAAE;;;;;;;;;;;;;;;;;8EAiB8C;IAE5E,4BAA4B,EAAE;;;;;;;;;;;;;;;8EAe8C;IAE5E,+EAA+E;IAC/E,mCAAmC;IACnC,+EAA+E;IAE/E,6BAA6B,EAAE;;;;;;;;;;;;;;;0EAeyC;IAExE,0BAA0B,EAAE;;;;;;;;;;;;;;0EAc4C;IAExE,qBAAqB,EAAE;;;;;;;;;;;;;;0EAciD;IAExE,+EAA+E;IAC/E,gCAAgC;IAChC,+EAA+E;IAE/E,0BAA0B,EAAE;;;;;;;;;;;;;;;iFAemD;IAE/E,iCAAiC,EAAE;;;;;;;;;;;;;;iFAc4C;IAE/E,+EAA+E;IAC/E,uCAAuC;IACvC,+EAA+E;IAE/E,4BAA4B,EAAE;;;;;;;;;;;;;;;wFAewD;IAEtF,iCAAiC,EAAE;;;;;;;;;;;;;;;;;wFAiBmD;IAEtF,iCAAiC,EAAE;;;;;;;;;;;;;;;;wFAgBmD;IAEtF,+EAA+E;IAC/E,mCAAmC;IACnC,+EAA+E;IAE/E,sBAAsB,EAAE;;;;;;;;;;;;;;6EAcmD;IAE3E,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;4EAmBwC;IAE1E,8BAA8B,EAAE;;;;;;;;;;;;;;;;;4EAiB0C;IAE1E,+EAA+E;IAC/E,oCAAoC;IACpC,+EAA+E;IAE/E,8BAA8B,EAAE;;;;;;;;;;;;;;;;4EAgB0C;IAE1E,8BAA8B,EAAE;;;;;;;;;;;;;;;;;4EAiB0C;IAE1E,8BAA8B,EAAE;;;;;;;;;;;;;;;;4EAgB0C;IAE1E,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E,2BAA2B,EAAE;;;;;;;;;;;;;;;;+EAgBgD;IAE7E,6BAA6B,EAAE;;;;;;;;;;;;;;;;+EAgB8C;IAE7E,0BAA0B,EAAE;;;;;;;;;;;;;;;;;+EAiBiD;IAE7E,4BAA4B,EAAE;;;;;;;;;;;;;;;;+EAgB+C;IAE7E,2BAA2B,EAAE;;;;;;;;;;;;;;;;+EAgBgD;IAE7E,2BAA2B,EAAE;;;;;;;;;;;;;;;;;+EAiBgD;CAC9E,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAgIuB,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"hook-info.js","sourceRoot":"","sources":["../../src/tools/hook-info.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/mcp",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "description": "MCP server for IBL frontend packages documentation and guidance",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",