100 lines
2.2 KiB
TypeScript
100 lines
2.2 KiB
TypeScript
import { define } from '../../src'
|
|
import { Layout } from './helpers'
|
|
import { ButtonExamplesContent } from '../button'
|
|
import { ProfileExamplesContent } from '../profile'
|
|
import { NavigationExamplesContent } from '../navigation'
|
|
|
|
const P = define('SSR_P', {
|
|
color: '#6b7280',
|
|
fontSize: 18,
|
|
marginBottom: 48,
|
|
})
|
|
|
|
const ExamplesGrid = define('SSR_ExamplesGrid', {
|
|
display: 'grid',
|
|
gap: 20,
|
|
gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 1fr))'
|
|
})
|
|
|
|
const ExampleCard = define('SSR_ExampleCard', {
|
|
base: 'a',
|
|
|
|
background: 'white',
|
|
padding: 24,
|
|
borderRadius: 12,
|
|
boxShadow: '0 1px 3px rgba(0,0,0,0.1)',
|
|
textDecoration: 'none',
|
|
transition: 'all 0.2s ease',
|
|
display: 'block',
|
|
|
|
states: {
|
|
hover: {
|
|
transform: 'translateY(-2px)',
|
|
boxShadow: '0 4px 12px rgba(0,0,0,0.15)'
|
|
}
|
|
},
|
|
|
|
parts: {
|
|
H2: {
|
|
color: '#111827',
|
|
margin: '0 0 8px 0',
|
|
fontSize: 20,
|
|
},
|
|
P: {
|
|
color: '#6b7280',
|
|
margin: 0,
|
|
fontSize: 14,
|
|
}
|
|
},
|
|
|
|
render({ props: { title, desc, ...rest }, parts: { Root, H2, P } }) {
|
|
return (
|
|
<Root {...rest}>
|
|
<H2>{title}</H2>
|
|
<P>{desc}</P>
|
|
</Root>
|
|
)
|
|
}
|
|
})
|
|
|
|
export const IndexPage = () => (
|
|
<Layout title="Forge Examples">
|
|
<P>Explore component examples built with Forge</P>
|
|
|
|
<ExamplesGrid>
|
|
<ExampleCard href="/ssr/profile"
|
|
title="Profile Card"
|
|
desc="User profile component with variants for size, theme, and verified status"
|
|
/>
|
|
|
|
<ExampleCard href="/ssr/buttons"
|
|
title="Buttons"
|
|
desc="Button component with intent, size, and disabled variants"
|
|
/>
|
|
|
|
<ExampleCard href="/ssr/navigation"
|
|
title="Navigation"
|
|
desc="Navigation patterns including tabs, pills, vertical nav, and breadcrumbs"
|
|
/>
|
|
</ExamplesGrid>
|
|
</Layout>
|
|
)
|
|
|
|
export const ButtonExamplesPage = () => (
|
|
<Layout title="Forge Button Component Examples">
|
|
<ButtonExamplesContent />
|
|
</Layout>
|
|
)
|
|
|
|
export const ProfileExamplesPage = () => (
|
|
<Layout title="Forge Profile Examples">
|
|
<ProfileExamplesContent />
|
|
</Layout>
|
|
)
|
|
|
|
export const NavigationExamplesPage = () => (
|
|
<Layout title="Forge Navigation Examples">
|
|
<NavigationExamplesContent />
|
|
</Layout>
|
|
)
|