@gostudent/shared-ui-library-mcp 1.28.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "libraryVersion": "1.28.0",
2
+ "libraryVersion": "1.29.0",
3
3
  "components": [
4
4
  {
5
5
  "name": "Avatar",
@@ -1593,6 +1593,88 @@
1593
1593
  }
1594
1594
  ]
1595
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
+ },
1596
1678
  {
1597
1679
  "name": "TopNavigation",
1598
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```",
@@ -1702,6 +1784,57 @@
1702
1784
  }
1703
1785
  ]
1704
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
+ },
1705
1838
  {
1706
1839
  "name": "TutorLessonCard",
1707
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```",
@@ -1854,7 +1987,8 @@
1854
1987
  "breakpointDesktopScreenWidth": "var(--breakpoint-desktop-screen-width)",
1855
1988
  "breakpointTabletScreenWidth": "var(--breakpoint-tablet-screen-width)",
1856
1989
  "breakpointMobileScreenWidth": "var(--breakpoint-mobile-screen-width)",
1857
- "breakpointLayoutContentMaxWidth": "var(--breakpoint-layout-content-max-width)"
1990
+ "breakpointLayoutContentMaxWidth": "var(--breakpoint-layout-content-max-width)",
1991
+ "breakpointTooltipContentMaxWidth": "var(--breakpoint-tooltip-content-max-width)"
1858
1992
  },
1859
1993
  "error": {
1860
1994
  "error50": "var(--error-50)",
@@ -2239,6 +2373,7 @@
2239
2373
  "colorBorderFeedbackDefault": "var(--color-border-feedback-default)",
2240
2374
  "colorBorderDark": "var(--color-border-dark)",
2241
2375
  "colorBorderPill": "var(--color-border-pill)",
2376
+ "colorBorderSelected": "var(--color-border-selected)",
2242
2377
  "colorTextPrimary": "var(--color-text-primary)",
2243
2378
  "colorTextSecondary": "var(--color-text-secondary)",
2244
2379
  "colorTextInverse": "var(--color-text-inverse)",
@@ -2522,6 +2657,7 @@
2522
2657
  "colorBorderFeedbackDefault": "var(--color-border-feedback-default)",
2523
2658
  "colorBorderDark": "var(--color-border-dark)",
2524
2659
  "colorBorderPill": "var(--color-border-pill)",
2660
+ "colorBorderSelected": "var(--color-border-selected)",
2525
2661
  "colorTextPrimary": "var(--color-text-primary)",
2526
2662
  "colorTextSecondary": "var(--color-text-secondary)",
2527
2663
  "colorTextInverse": "var(--color-text-inverse)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gostudent/shared-ui-library-mcp",
3
- "version": "1.28.0",
3
+ "version": "1.29.0",
4
4
  "description": "MCP server for @gostudent/shared-ui-library — exposes components, icons, and tokens to Claude",
5
5
  "type": "module",
6
6
  "bin": {