Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions examples/ui/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# mdxui Component Examples

This example shows how to compose the basic `mdxui` components.

```tsx
import { AppShell, NavBar, Sidebar, Footer, HeroSection } from 'mdxui'

export default function Demo() {
return (
<AppShell
nav={<NavBar title='Demo' />}
sidebar={<Sidebar>Menu</Sidebar>}
footer={<Footer>Footer</Footer>}
>
<HeroSection title='Hello' subtitle='mdxui components in action' />
</AppShell>
)
}
```
8 changes: 8 additions & 0 deletions examples/ui/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "mdxui-demo",
"private": true,
"type": "module",
"dependencies": {
"mdxui": "workspace:*"
}
}
27 changes: 27 additions & 0 deletions packages/mdxui/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# mdxui

Reusable React components for MDX-based apps.

## Installation

```bash
npm install mdxui
```

## Usage

```tsx
import { AppShell, Sidebar, NavBar, Footer, HeroSection } from 'mdxui'

export default function Example() {
return (
<AppShell
nav={<NavBar title='My App' />}
sidebar={<Sidebar>Links</Sidebar>}
footer={<Footer>© 2025</Footer>}
>
<HeroSection title='Welcome' subtitle='Building with mdxui' />
</AppShell>
)
}
```
5 changes: 5 additions & 0 deletions packages/mdxui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
"version": "0.0.1",
"type": "module",
"exports": {
"./app-shell": "./src/app-shell.tsx",
"./sidebar": "./src/sidebar.tsx",
"./nav-bar": "./src/nav-bar.tsx",
"./footer": "./src/footer.tsx",
"./hero-section": "./src/hero-section.tsx",
"./*": "./src/*.tsx"
},
"scripts": {
Expand Down
14 changes: 14 additions & 0 deletions packages/mdxui/src/app-shell.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { ReactNode } from 'react'

export function AppShell({ nav, sidebar, footer, children }: { nav?: ReactNode; sidebar?: ReactNode; footer?: ReactNode; children: ReactNode }) {
return (
<div className='app-shell'>
{nav && <header>{nav}</header>}
<div className='app-body'>
{sidebar && <aside>{sidebar}</aside>}
<main>{children}</main>
</div>
{footer && <footer>{footer}</footer>}
</div>
)
}
5 changes: 5 additions & 0 deletions packages/mdxui/src/footer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { ReactNode } from 'react'

export function Footer({ children, className }: { children: ReactNode; className?: string }) {
return <footer className={className}>{children}</footer>
}
11 changes: 11 additions & 0 deletions packages/mdxui/src/hero-section.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { ReactNode } from 'react'

export function HeroSection({ title, subtitle, children, className }: { title: string; subtitle?: string; children?: ReactNode; className?: string }) {
return (
<section className={className}>
<h1>{title}</h1>
{subtitle && <p>{subtitle}</p>}
{children}
</section>
)
}
10 changes: 10 additions & 0 deletions packages/mdxui/src/nav-bar.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ReactNode } from 'react'

export function NavBar({ title, children, className }: { title?: string; children?: ReactNode; className?: string }) {
return (
<div className={className}>
{title && <span>{title}</span>}
{children}
</div>
)
}
5 changes: 5 additions & 0 deletions packages/mdxui/src/sidebar.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { ReactNode } from 'react'

export function Sidebar({ children, className }: { children: ReactNode; className?: string }) {
return <nav className={className}>{children}</nav>
}