@gostudent/shared-ui-library-mcp 1.27.0 → 1.29.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.
- package/library-manifest.json +153 -2
- package/package.json +1 -1
package/library-manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"libraryVersion": "1.
|
|
2
|
+
"libraryVersion": "1.29.0",
|
|
3
3
|
"components": [
|
|
4
4
|
{
|
|
5
5
|
"name": "Avatar",
|
|
@@ -173,6 +173,16 @@
|
|
|
173
173
|
"description": "Called with a noon-normalised `Date` when the user selects a day or clicks Today.",
|
|
174
174
|
"options": []
|
|
175
175
|
},
|
|
176
|
+
{
|
|
177
|
+
"name": "onMonthChange",
|
|
178
|
+
"description": "Called when the displayed month changes (via prev/next buttons or Today button).",
|
|
179
|
+
"options": []
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "onTodayClick",
|
|
183
|
+
"description": "Called when the Today button is clicked, before onChange fires.",
|
|
184
|
+
"options": []
|
|
185
|
+
},
|
|
176
186
|
{
|
|
177
187
|
"name": "markedDates",
|
|
178
188
|
"description": "Dates that show a dot indicator (e.g. days with booked lessons).",
|
|
@@ -1583,6 +1593,88 @@
|
|
|
1583
1593
|
}
|
|
1584
1594
|
]
|
|
1585
1595
|
},
|
|
1596
|
+
{
|
|
1597
|
+
"name": "StudentLessonCard",
|
|
1598
|
+
"description": "The student-portal counterpart to `TutorLessonCard`. It displays a lesson session from the\nstudent's perspective: the identity block shows the **tutor**, and group lessons additionally show\nan `AvatarGroup` of the fellow classmates.\n\nSupports states driven by the `lessonState`, `type`, `modality`, and `feedbackState` props:\n\n| `lessonState` | `modality` | `feedbackState` | Actions |\n|------------------|-------------|-------------------|---------|\n| `upcoming` | `online` | — | \"Workspace\" link + \"Start lesson\" + \"Rate lesson\" (inactive) |\n| `upcoming` | `offline` | — | \"Rate lesson\" (inactive) |\n| `in-progress` | `online` | — | \"Workspace\" link + \"Start lesson\" + \"Rate lesson\" (active) |\n| `in-progress` | `offline` | — | \"Rate lesson\" (active) |\n| `completed` | any | `pending` | \"Rate lesson\" button (primary, active) |\n| `completed` | any | `submitted` | \"Check feedback\" button (secondary) |\n\n### Usage\n\n```tsx\nimport { StudentLessonCard } from '@gostudent/shared-ui-library';\n\n<StudentLessonCard\n title=\"English lesson\"\n modality=\"online\"\n type=\"individual\"\n subjects={['English']}\n time=\"17:00 - 18:00\"\n lessonState=\"upcoming\"\n tutor={{ name: 'Jane Tutor' }}\n isStartLessonDisabled\n/>\n```",
|
|
1599
|
+
"storybookUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/docs/compositions-studentlessoncard",
|
|
1600
|
+
"props": [
|
|
1601
|
+
{
|
|
1602
|
+
"name": "title",
|
|
1603
|
+
"description": "Lesson title shown as the card heading.",
|
|
1604
|
+
"options": [
|
|
1605
|
+
"online",
|
|
1606
|
+
"offline"
|
|
1607
|
+
]
|
|
1608
|
+
},
|
|
1609
|
+
{
|
|
1610
|
+
"name": "type",
|
|
1611
|
+
"description": "Lesson type — group lessons show a classmate AvatarGroup beside the tutor.",
|
|
1612
|
+
"options": [
|
|
1613
|
+
"individual",
|
|
1614
|
+
"group"
|
|
1615
|
+
]
|
|
1616
|
+
},
|
|
1617
|
+
{
|
|
1618
|
+
"name": "subjects",
|
|
1619
|
+
"description": "Array of subject labels rendered as Tag pills.",
|
|
1620
|
+
"options": []
|
|
1621
|
+
},
|
|
1622
|
+
{
|
|
1623
|
+
"name": "time",
|
|
1624
|
+
"description": "Formatted time range, e.g. \"17:00 - 18:00\".",
|
|
1625
|
+
"options": [
|
|
1626
|
+
"upcoming",
|
|
1627
|
+
"in-progress",
|
|
1628
|
+
"completed"
|
|
1629
|
+
]
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"name": "feedbackState",
|
|
1633
|
+
"description": "Feedback phase for completed lessons.",
|
|
1634
|
+
"options": [
|
|
1635
|
+
"pending",
|
|
1636
|
+
"submitted"
|
|
1637
|
+
]
|
|
1638
|
+
},
|
|
1639
|
+
{
|
|
1640
|
+
"name": "isStartLessonDisabled",
|
|
1641
|
+
"description": "Disables the \"Start lesson\" button.",
|
|
1642
|
+
"options": []
|
|
1643
|
+
},
|
|
1644
|
+
{
|
|
1645
|
+
"name": "hasKebab",
|
|
1646
|
+
"description": "Show or hide the kebab menu. When enabled, passes menu items to the card.",
|
|
1647
|
+
"options": []
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
"name": "tutor",
|
|
1651
|
+
"description": "Tutor object ({ name, avatarSrc }) shown in the identity block.",
|
|
1652
|
+
"options": []
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
"name": "onStartLesson",
|
|
1656
|
+
"description": "Called when \"Start lesson\" is clicked.",
|
|
1657
|
+
"options": []
|
|
1658
|
+
}
|
|
1659
|
+
],
|
|
1660
|
+
"examples": [
|
|
1661
|
+
{
|
|
1662
|
+
"name": "UpcomingIndividual",
|
|
1663
|
+
"jsx": "<StudentLessonCard title=\"Individual lesson\" modality=\"online\" type=\"individual\" subjects={['English']} time=\"17:00 - 18:00\" lessonState=\"upcoming\" isStartLessonDisabled={true} tutor={TUTOR} hasKebab={true} />",
|
|
1664
|
+
"storyUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/story/compositions-studentlessoncard--upcoming-individual"
|
|
1665
|
+
},
|
|
1666
|
+
{
|
|
1667
|
+
"name": "UpcomingGroup",
|
|
1668
|
+
"jsx": "<StudentLessonCard title=\"Group lesson\" modality=\"online\" type=\"group\" subjects={['English', 'Biology', 'Math']} time=\"17:00 - 18:00\" lessonState=\"upcoming\" isStartLessonDisabled={true} tutor={TUTOR} classmates={CLASSMATES} hasKebab={true} />",
|
|
1669
|
+
"storyUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/story/compositions-studentlessoncard--upcoming-group"
|
|
1670
|
+
},
|
|
1671
|
+
{
|
|
1672
|
+
"name": "UpcomingGroupOffline",
|
|
1673
|
+
"jsx": "<StudentLessonCard title=\"Group lesson\" modality=\"offline\" type=\"group\" subjects={['English', 'Biology', 'Math']} time=\"17:00 - 18:00\" room=\"Room 1\" lessonCenter=\"Centrostudi Navigli\" lessonState=\"upcoming\" tutor={TUTOR} classmates={CLASSMATES} hasKebab={true} />",
|
|
1674
|
+
"storyUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/story/compositions-studentlessoncard--upcoming-group-offline"
|
|
1675
|
+
}
|
|
1676
|
+
]
|
|
1677
|
+
},
|
|
1586
1678
|
{
|
|
1587
1679
|
"name": "TopNavigation",
|
|
1588
1680
|
"description": "Responsive top navigation bar. On **mobile/tablet** (< 1024 px) it shows the logo and a hamburger button that opens a slide-in drawer.\nOn **desktop** (≥ 1024 px) it shows the logo, a tab list, and the user section (Avatar + name + role Tag + chevron) with a dropdown.\n\nThe drawer open/close state is managed internally — no external state needed.\n\n### Usage\n\n```tsx\nimport { TopNavigation } from '@gostudent/shared-ui-library';\n\n<TopNavigation\n tabs={[\n { label: 'Lessons', isSelected: true, onClick: () => {} },\n { label: 'My availability', isSelected: false, onClick: () => {} },\n ]}\n userName=\"Anna James\"\n userRole=\"tutor\"\n navItems={[\n { icon: DashboardIcon, label: 'Lessons', isSelected: true, onClick: () => {} },\n ]}\n languages={[{ value: 'en', label: 'English' }]}\n onLanguageClick={() => {}}\n onLogout={() => {}}\n/>\n```",
|
|
@@ -1628,6 +1720,11 @@
|
|
|
1628
1720
|
"description": "",
|
|
1629
1721
|
"options": []
|
|
1630
1722
|
},
|
|
1723
|
+
{
|
|
1724
|
+
"name": "onProfileDropdownOpen",
|
|
1725
|
+
"description": "",
|
|
1726
|
+
"options": []
|
|
1727
|
+
},
|
|
1631
1728
|
{
|
|
1632
1729
|
"name": "navItems",
|
|
1633
1730
|
"description": "",
|
|
@@ -1687,6 +1784,57 @@
|
|
|
1687
1784
|
}
|
|
1688
1785
|
]
|
|
1689
1786
|
},
|
|
1787
|
+
{
|
|
1788
|
+
"name": "TutorDetails",
|
|
1789
|
+
"description": "Renders a single tutor as an **Avatar** plus name in a horizontal row.\n\nBy default the name is shown in full. Set `truncate` to clip it with an ellipsis **on mobile**\nwhen it overflows — from the `tablet` breakpoint up the full name is always shown.\n\nTwo sizes are available — `md` (32px avatar, default) and `sm` (24px avatar).\n\nSetting `disabled` dims the row to 50% opacity and shows an \"Unavailable\" tooltip on hover/focus\n(override via `disabledLabel`).\n\nIntended for use inside `StudentLessonCard` as the tutor identity block — the student-portal\ncounterpart to `StudentDetails`.\n\n### Usage\n\n```tsx\nimport { TutorDetails } from '@gostudent/shared-ui-library';\n\n<TutorDetails name=\"John Doe\" avatarSrc=\"https://i.pravatar.cc/150?u=john\" />\n```",
|
|
1790
|
+
"storybookUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/docs/compositions-tutordetails",
|
|
1791
|
+
"props": [
|
|
1792
|
+
{
|
|
1793
|
+
"name": "name",
|
|
1794
|
+
"description": "Avatar status badge.",
|
|
1795
|
+
"options": [
|
|
1796
|
+
"default",
|
|
1797
|
+
"done",
|
|
1798
|
+
"pending"
|
|
1799
|
+
]
|
|
1800
|
+
},
|
|
1801
|
+
{
|
|
1802
|
+
"name": "size",
|
|
1803
|
+
"description": "Avatar size: sm=24px, md=32px (default).",
|
|
1804
|
+
"options": [
|
|
1805
|
+
"sm",
|
|
1806
|
+
"md"
|
|
1807
|
+
]
|
|
1808
|
+
},
|
|
1809
|
+
{
|
|
1810
|
+
"name": "truncate",
|
|
1811
|
+
"description": "Truncate the name with an ellipsis on mobile when it overflows. Off by default.",
|
|
1812
|
+
"options": []
|
|
1813
|
+
},
|
|
1814
|
+
{
|
|
1815
|
+
"name": "disabled",
|
|
1816
|
+
"description": "Tooltip text shown on hover/focus when disabled. Defaults to \"Unavailable\".",
|
|
1817
|
+
"options": []
|
|
1818
|
+
}
|
|
1819
|
+
],
|
|
1820
|
+
"examples": [
|
|
1821
|
+
{
|
|
1822
|
+
"name": "Default",
|
|
1823
|
+
"jsx": "<TutorDetails name=\"John Doe\" />",
|
|
1824
|
+
"storyUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/story/compositions-tutordetails--default"
|
|
1825
|
+
},
|
|
1826
|
+
{
|
|
1827
|
+
"name": "WithAvatarImage",
|
|
1828
|
+
"jsx": "<TutorDetails name=\"John Doe\" avatarSrc=\"https://i.pravatar.cc/150?u=john\" />",
|
|
1829
|
+
"storyUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/story/compositions-tutordetails--with-avatar-image"
|
|
1830
|
+
},
|
|
1831
|
+
{
|
|
1832
|
+
"name": "Small",
|
|
1833
|
+
"jsx": "<TutorDetails name=\"John Doe\" size=\"sm\" />",
|
|
1834
|
+
"storyUrl": "https://62835ff8873d45004a627ad4-snugmmtvrg.chromatic.com/?path=/story/compositions-tutordetails--small"
|
|
1835
|
+
}
|
|
1836
|
+
]
|
|
1837
|
+
},
|
|
1690
1838
|
{
|
|
1691
1839
|
"name": "TutorLessonCard",
|
|
1692
1840
|
"description": "A domain-level card that displays a lesson session with all associated metadata.\n\nSupports states driven by the `lessonState`, `type`, `modality`, and `feedbackState` props:\n\n| `lessonState` | `type` | `modality` | `feedbackState` | Description |\n|----------------|-----------------|--------------|-----------------|-------------|\n| `upcoming` | `individual` | `online` | — | Metadata row (time) + actions in a wrapping flex row, \"Workspace\" link + \"Start GoClass\" button, `StudentDetails` always visible below |\n| `upcoming` | `group` | `online` | — | Metadata row (time, student count) + actions in a wrapping flex row, optional kebab menu, always-visible `StudentDetails` (desktop) / \"N students\" disclosure (mobile) below |\n| `upcoming` | `individual` | `offline` | — | Offline modality tag, metadata row includes room/lesson center, single \"Document lesson\" button |\n| `upcoming` | `group` | `offline` | — | Offline modality tag, metadata row includes room/lesson center, \"N students\" disclosure below |\n| `completed` | `individual` | `online` | `pending` | `StudentDetails` (24px, pending badge) inline, no dropdown, \"Document lesson\" button |\n| `completed` | `group` | `online` | `pending` | Disclosure toggle revealing `StudentDetails` (24px, done/pending badges), \"Document lesson\" button |\n| `completed` | `group` | `online` | `submitted` | \"Review feedback\" button, always-visible `StudentDetails` (desktop) / \"N students\" disclosure (mobile) |\n| `completed` | `individual` | `online` | `submitted` | \"Review feedback\" button, `StudentDetails` inline at both breakpoints |\n\nOnline lessons also show a \"Workspace\" link (secondary/link-styled) alongside \"Start GoClass\" /\n\"Document lesson\", for every lesson state.\n\n### Usage\n\n```tsx\nimport { TutorLessonCard } from '@gostudent/shared-ui-library';\n\n<TutorLessonCard\n title=\"English lesson\"\n modality=\"online\"\n type=\"individual\"\n subjects={['English']}\n time=\"17:00 - 18:00\"\n lessonState=\"upcoming\"\n students={[{ name: 'Alice Smith', grade: '8', subject: 'English' }]}\n isStartLessonDisabled\n/>\n```",
|
|
@@ -1839,7 +1987,8 @@
|
|
|
1839
1987
|
"breakpointDesktopScreenWidth": "var(--breakpoint-desktop-screen-width)",
|
|
1840
1988
|
"breakpointTabletScreenWidth": "var(--breakpoint-tablet-screen-width)",
|
|
1841
1989
|
"breakpointMobileScreenWidth": "var(--breakpoint-mobile-screen-width)",
|
|
1842
|
-
"breakpointLayoutContentMaxWidth": "var(--breakpoint-layout-content-max-width)"
|
|
1990
|
+
"breakpointLayoutContentMaxWidth": "var(--breakpoint-layout-content-max-width)",
|
|
1991
|
+
"breakpointTooltipContentMaxWidth": "var(--breakpoint-tooltip-content-max-width)"
|
|
1843
1992
|
},
|
|
1844
1993
|
"error": {
|
|
1845
1994
|
"error50": "var(--error-50)",
|
|
@@ -2224,6 +2373,7 @@
|
|
|
2224
2373
|
"colorBorderFeedbackDefault": "var(--color-border-feedback-default)",
|
|
2225
2374
|
"colorBorderDark": "var(--color-border-dark)",
|
|
2226
2375
|
"colorBorderPill": "var(--color-border-pill)",
|
|
2376
|
+
"colorBorderSelected": "var(--color-border-selected)",
|
|
2227
2377
|
"colorTextPrimary": "var(--color-text-primary)",
|
|
2228
2378
|
"colorTextSecondary": "var(--color-text-secondary)",
|
|
2229
2379
|
"colorTextInverse": "var(--color-text-inverse)",
|
|
@@ -2507,6 +2657,7 @@
|
|
|
2507
2657
|
"colorBorderFeedbackDefault": "var(--color-border-feedback-default)",
|
|
2508
2658
|
"colorBorderDark": "var(--color-border-dark)",
|
|
2509
2659
|
"colorBorderPill": "var(--color-border-pill)",
|
|
2660
|
+
"colorBorderSelected": "var(--color-border-selected)",
|
|
2510
2661
|
"colorTextPrimary": "var(--color-text-primary)",
|
|
2511
2662
|
"colorTextSecondary": "var(--color-text-secondary)",
|
|
2512
2663
|
"colorTextInverse": "var(--color-text-inverse)",
|