forge/examples/ssr/pages.tsx
2025-12-27 21:14:58 -08:00

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>
)