Build Beautiful Interfaces
A modern React component library focused on intuitive interactions and seamless user experiences.
Examples
LM
Liam Patel
Swipe to see actions
import { Heart, Trash } from "lucide-react"
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
import {
SwipeLeftActions,
SwipeRightActions,
SwipeRow,
SwipeRowContent,
} from "@/components/molecule-ui/swipe-row"
export function SwipeRowDemo() {
return (
<div className="w-full md:w-2/3">
<SwipeRow className="rounded-md bg-muted">
<SwipeLeftActions>
<LeftActions />
</SwipeLeftActions>
<SwipeRowContent>
<div className="flex items-center gap-4">
<div>
<Avatar>
<AvatarImage
src="https://avatars.githubusercontent.com/u/1?v=4"
alt="MUI"
/>
<AvatarFallback>LM</AvatarFallback>
</Avatar>
</div>
<div>
<h3>Liam Patel</h3>
<p className="text-sm text-muted-foreground">
Swipe to see actions
</p>
</div>
</div>
</SwipeRowContent>
<SwipeRightActions>
<RightActions />
</SwipeRightActions>
</SwipeRow>
</div>
)
}
function LeftActions() {
return (
<>
<button className="h-full px-6 bg-blue-500 text-white flex items-center justify-center transition-colors">
<Heart size={20} />
</button>{" "}
</>
)
}
function RightActions() {
return (
<>
<button className="h-full px-6 bg-red-500 text-white flex items-center justify-center transition-colors">
<Trash size={20} />
</button>
</>
)
}
MUIJane Smith@janesmith•1 hour agoThis is a great article! Thanks for sharing your insights. I particularly enjoyed the section about accessibility best practices.
Jane Smith
@janesmith
•1 hour ago
This is a great article! Thanks for sharing your insights. I particularly enjoyed the section about accessibility best practices.
MUILiam Patel@liampatel•34 minutes agoI agree! The examples were particularly helpful. Do you have any recommendations for further reading?
Liam Patel
@liampatel
•34 minutes ago
I agree! The examples were particularly helpful. Do you have any recommendations for further reading?
MUISarah Wilson@sarahwilson•14 minutes agoThanks for the detailed explanation! This will definitely help with my current project.
Sarah Wilson
@sarahwilson
•14 minutes ago
Thanks for the detailed explanation! This will definitely help with my current project.
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
import { ScrollArea } from "@/components/ui/scroll-area"
import {
Discussion,
DiscussionBody,
DiscussionContent,
DiscussionExpand,
DiscussionItem,
DiscussionReplies,
DiscussionTitle,
} from "@/components/molecule-ui/discussion"
export function DiscussionDemo() {
return (
<div className="w-full md:w-3/4">
<ScrollArea className="max-h-[400px] overflow-auto">
<Discussion
defaultValue={["item-1"]}
type="multiple"
className="w-full"
>
<DiscussionItem value="item-1">
<DiscussionContent className="gap-2">
<div>
<Avatar>
<AvatarImage src="https://randomuser.me/api/portraits/women/44.jpg" />
<AvatarFallback>MUI</AvatarFallback>
</Avatar>
</div>
<div className="flex flex-col gap-2">
<div className="flex flex-col gap-1">
<DiscussionTitle className="flex gap-2 items-center">
<div>Jane Smith</div>
<div className="text-muted-foreground text-xs ">
@janesmith
</div>
<span className="text-muted-foreground text-xs">•</span>
<div className="text-muted-foreground text-xs ">
1 hour ago
</div>
</DiscussionTitle>
<DiscussionBody>
This is a great article! Thanks for sharing your insights. I
particularly enjoyed the section about accessibility best
practices.
</DiscussionBody>
</div>
<DiscussionExpand />
</div>
</DiscussionContent>
<DiscussionReplies>
<DiscussionItem value="item-1.1">
<DiscussionContent className="gap-2">
<div>
<Avatar>
<AvatarImage src="https://randomuser.me/api/portraits/men/22.jpg" />
<AvatarFallback>MUI</AvatarFallback>
</Avatar>
</div>
<div className="flex flex-col gap-2">
<div className="flex flex-col gap-1">
<DiscussionTitle className="flex gap-2 items-center">
<div>Liam Patel</div>
<div className="text-muted-foreground text-xs ">
@liampatel
</div>
<span className="text-muted-foreground text-xs">•</span>
<div className="text-muted-foreground text-xs ">
34 minutes ago
</div>
</DiscussionTitle>
<DiscussionBody>
I agree! The examples were particularly helpful. Do you
have any recommendations for further reading?
</DiscussionBody>
</div>
<DiscussionExpand />
</div>
</DiscussionContent>
<DiscussionReplies>
<DiscussionItem value="item-1.1.1">
<DiscussionContent className="gap-2">
<div>
<Avatar>
<AvatarImage src="https://randomuser.me/api/portraits/women/68.jpg" />
<AvatarFallback>MUI</AvatarFallback>
</Avatar>
</div>
<div className="flex flex-col gap-2">
<div className="flex flex-col gap-1">
<DiscussionTitle className="flex gap-2 items-center">
<div>Alex Chen</div>
<div className="text-muted-foreground text-xs ">
@alexchen
</div>
<span className="text-muted-foreground text-xs">
•
</span>
<div className="text-muted-foreground text-xs ">
26 minutes ago
</div>
</DiscussionTitle>
<DiscussionBody>
Check out the MDN docs on ARIA - they're
comprehensive and well-maintained.
</DiscussionBody>
</div>
</div>
</DiscussionContent>
</DiscussionItem>
</DiscussionReplies>
</DiscussionItem>
<DiscussionItem value="item-1.2">
<DiscussionContent className="gap-2">
<div>
<Avatar>
<AvatarImage src="https://randomuser.me/api/portraits/women/32.jpg" />
<AvatarFallback>MUI</AvatarFallback>
</Avatar>
</div>
<div className="flex flex-col gap-2">
<div className="flex flex-col gap-1">
<DiscussionTitle className="flex gap-2 items-center">
<div>Sarah Wilson</div>
<div className="text-muted-foreground text-xs ">
@sarahwilson
</div>
<span className="text-muted-foreground text-xs">•</span>
<div className="text-muted-foreground text-xs ">
14 minutes ago
</div>
</DiscussionTitle>
<DiscussionBody>
Thanks for the detailed explanation! This will
definitely help with my current project.
</DiscussionBody>
</div>
</div>
</DiscussionContent>
</DiscussionItem>
</DiscussionReplies>
</DiscussionItem>
</Discussion>
</ScrollArea>
</div>
)
}
Loading...
import { SpinningCircle } from "@/components/molecule-ui/spinning-circle"
export function SpinningCircleWithMessageDemo() {
return <SpinningCircle message="Loading..." />
}