Skip to content

Commit c9dd5e7

Browse files
committed
[Feature] Message: rebuild MCP registry
1 parent 61350f2 commit c9dd5e7

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

mcp/data/registry.json

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,6 +1702,68 @@
17021702
}
17031703
]
17041704
},
1705+
"message": {
1706+
"name": "Message",
1707+
"description": "A chat message layout that pairs an avatar with bubbles, headers, and footers. Built on top of Avatar and Bubble.",
1708+
"files": [
1709+
{
1710+
"path": "message.rb",
1711+
"content": "# frozen_string_literal: true\n\nmodule RubyUI\n class Message < Base\n def initialize(align: :start, **attrs)\n @align = align\n super(**attrs)\n end\n\n def view_template(&)\n div(**attrs, &)\n end\n\n private\n\n def default_attrs\n {\n data: {slot: \"message\", align: @align},\n class: \"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse\"\n }\n end\n end\nend\n"
1712+
},
1713+
{
1714+
"path": "message_avatar.rb",
1715+
"content": "# frozen_string_literal: true\n\nmodule RubyUI\n class MessageAvatar < Base\n def view_template(&)\n div(**attrs, &)\n end\n\n private\n\n def default_attrs\n {\n data: {slot: \"message-avatar\"},\n class: \"flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-8\"\n }\n end\n end\nend\n"
1716+
},
1717+
{
1718+
"path": "message_content.rb",
1719+
"content": "# frozen_string_literal: true\n\nmodule RubyUI\n class MessageContent < Base\n def view_template(&)\n div(**attrs, &)\n end\n\n private\n\n def default_attrs\n {\n data: {slot: \"message-content\"},\n class: \"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:[&>[data-slot]]:self-end\"\n }\n end\n end\nend\n"
1720+
},
1721+
{
1722+
"path": "message_footer.rb",
1723+
"content": "# frozen_string_literal: true\n\nmodule RubyUI\n class MessageFooter < Base\n def view_template(&)\n div(**attrs, &)\n end\n\n private\n\n def default_attrs\n {\n data: {slot: \"message-footer\"},\n class: \"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-data-[align=end]/message:justify-end group-has-data-[variant=ghost]/message:px-0\"\n }\n end\n end\nend\n"
1724+
},
1725+
{
1726+
"path": "message_group.rb",
1727+
"content": "# frozen_string_literal: true\n\nmodule RubyUI\n class MessageGroup < Base\n def view_template(&)\n div(**attrs, &)\n end\n\n private\n\n def default_attrs\n {\n data: {slot: \"message-group\"},\n class: \"flex min-w-0 flex-col gap-2\"\n }\n end\n end\nend\n"
1728+
},
1729+
{
1730+
"path": "message_header.rb",
1731+
"content": "# frozen_string_literal: true\n\nmodule RubyUI\n class MessageHeader < Base\n def view_template(&)\n div(**attrs, &)\n end\n\n private\n\n def default_attrs\n {\n data: {slot: \"message-header\"},\n class: \"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0\"\n }\n end\n end\nend\n"
1732+
}
1733+
],
1734+
"dependencies": {
1735+
"components": [
1736+
"Avatar",
1737+
"Bubble"
1738+
],
1739+
"js_packages": [],
1740+
"gems": []
1741+
},
1742+
"install_command": "rails g ruby_ui:component Message",
1743+
"docs_markdown": "# Message\n\nA chat message layout that pairs an avatar with bubbles, headers, and footers. Built on top of Avatar and Bubble.\n\n## Usage\n\n### Conversation\n\n```ruby\ndiv(class: \"flex flex-col gap-6\") do\n Message(align: :end) do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/joeldrapper.png\", alt: \"@me\")\n AvatarFallback { \"ME\" }\n end\n end\n MessageContent do\n Bubble do\n BubbleContent { \"Deploying to prod real quick.\" }\n end\n end\n end\n\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) do\n BubbleContent { \"It's 4:55 PM. On a Friday.\" }\n end\n end\n end\n\n Message(align: :end) do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/joeldrapper.png\", alt: \"@me\")\n AvatarFallback { \"ME\" }\n end\n end\n MessageContent do\n Bubble do\n BubbleContent { \"It's a one-line change.\" }\n end\n MessageFooter { \"Delivered\" }\n end\n end\n\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n BubbleGroup do\n Bubble(variant: :muted) do\n BubbleContent { \"It's always a one-line change 😭.\" }\n end\n Bubble(variant: :muted) do\n BubbleContent { \"Alright, let me take a look.\" }\n BubbleReactions(role: \"img\", aria_label: \"Reaction: thumbs up\") do\n span { \"👍\" }\n end\n end\n end\n end\n end\nend\n```\n\n## With header\n\n### Header and footer\n\n```ruby\nMessage do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@oliver\")\n AvatarFallback { \"OL\" }\n end\n end\n MessageContent do\n MessageHeader { \"Oliver\" }\n Bubble(variant: :muted) do\n BubbleContent { \"Pushed the fix, can you review?\" }\n end\n MessageFooter { \"9:41 AM\" }\n end\nend\n```\n\n## Alignment\n\n### Sender and receiver\n\n```ruby\ndiv(class: \"flex flex-col gap-6\") do\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) { BubbleContent { \"Aligned to the start.\" } }\n end\n end\n Message(align: :end) do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/joeldrapper.png\", alt: \"@me\")\n AvatarFallback { \"ME\" }\n end\n end\n MessageContent do\n Bubble { BubbleContent { \"Aligned to the end.\" } }\n end\n end\nend\n```\n\n## Group\n\n### Message group\n\n```ruby\nMessageGroup do\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) { BubbleContent { \"First message.\" } }\n end\n end\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) { BubbleContent { \"Second, tighter spacing.\" } }\n end\n end\nend\n```",
1744+
"examples": [
1745+
{
1746+
"title": "Conversation",
1747+
"code": "div(class: \"flex flex-col gap-6\") do\n Message(align: :end) do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/joeldrapper.png\", alt: \"@me\")\n AvatarFallback { \"ME\" }\n end\n end\n MessageContent do\n Bubble do\n BubbleContent { \"Deploying to prod real quick.\" }\n end\n end\n end\n\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) do\n BubbleContent { \"It's 4:55 PM. On a Friday.\" }\n end\n end\n end\n\n Message(align: :end) do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/joeldrapper.png\", alt: \"@me\")\n AvatarFallback { \"ME\" }\n end\n end\n MessageContent do\n Bubble do\n BubbleContent { \"It's a one-line change.\" }\n end\n MessageFooter { \"Delivered\" }\n end\n end\n\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n BubbleGroup do\n Bubble(variant: :muted) do\n BubbleContent { \"It's always a one-line change 😭.\" }\n end\n Bubble(variant: :muted) do\n BubbleContent { \"Alright, let me take a look.\" }\n BubbleReactions(role: \"img\", aria_label: \"Reaction: thumbs up\") do\n span { \"👍\" }\n end\n end\n end\n end\n end\nend\n",
1748+
"language": "ruby"
1749+
},
1750+
{
1751+
"title": "Header and footer",
1752+
"code": "Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@oliver\")\n AvatarFallback { \"OL\" }\n end\n end\n MessageContent do\n MessageHeader { \"Oliver\" }\n Bubble(variant: :muted) do\n BubbleContent { \"Pushed the fix, can you review?\" }\n end\n MessageFooter { \"9:41 AM\" }\n end\nend\n",
1753+
"language": "ruby"
1754+
},
1755+
{
1756+
"title": "Sender and receiver",
1757+
"code": "div(class: \"flex flex-col gap-6\") do\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) { BubbleContent { \"Aligned to the start.\" } }\n end\n end\n Message(align: :end) do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/joeldrapper.png\", alt: \"@me\")\n AvatarFallback { \"ME\" }\n end\n end\n MessageContent do\n Bubble { BubbleContent { \"Aligned to the end.\" } }\n end\n end\nend\n",
1758+
"language": "ruby"
1759+
},
1760+
{
1761+
"title": "Message group",
1762+
"code": "MessageGroup do\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) { BubbleContent { \"First message.\" } }\n end\n end\n Message do\n MessageAvatar do\n Avatar(size: :sm) do\n AvatarImage(src: \"https://github.com/shadcn.png\", alt: \"@rabbit\")\n AvatarFallback { \"R\" }\n end\n end\n MessageContent do\n Bubble(variant: :muted) { BubbleContent { \"Second, tighter spacing.\" } }\n end\n end\nend\n",
1763+
"language": "ruby"
1764+
}
1765+
]
1766+
},
17051767
"native_select": {
17061768
"name": "NativeSelect",
17071769
"description": "A styled native HTML select element with consistent design system integration.",

0 commit comments

Comments
 (0)