/**
* Rynex Starter Template
* A premium dark-themed starter with modern UI and smooth interactions
*/
import { state } from 'rynex';
import * as UI from 'rynex';
export default function App() {
const appState = state({
hoveredButton: null as string | null
});
return UI.container({
class: 'app',
style: {
minHeight: '100vh',
background: '#000000',
color: '#ffffff',
fontFamily: '"Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'
}
}, [
// Main Content Container
UI.vbox({
class: 'container',
style: {
flex: '1',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
padding: '2rem',
gap: '2.5rem'
}
}, [
// Hero Section
UI.vbox({
class: 'hero',
style: {
textAlign: 'center',
gap: '1.5rem',
maxWidth: '800px'
}
}, [
// Logo/Badge
UI.container({
style: {
display: 'inline-block',
padding: '0.5rem 1.25rem',
background: '#0a0a0a',
border: '1px solid #333333',
borderRadius: '9999px',
marginBottom: '1rem',
boxShadow: '0 4px 6px -1px rgba(0, 255, 136, 0.1)'
}
}, [
UI.text({
style: {
fontSize: '0.875rem',
color: '#00ff88',
fontWeight: '600',
letterSpacing: '0.05em'
}
}, 'Rynex')
]),
// Main Title
UI.h1({
style: {
fontSize: '4rem',
fontWeight: '800',
lineHeight: '1.1',
margin: '0',
fontFamily: '"Montserrat", sans-serif',
background: 'linear-gradient(135deg, #ffffff 0%, #b0b0b0 100%)',
webkitBackgroundClip: 'text',
webkitTextFillColor: 'transparent',
backgroundClip: 'text'
}
}, 'Welcome to Rynex'),
// Subtitle
UI.text({
style: {
fontSize: '1.25rem',
color: '#b0b0b0',
lineHeight: '1.6',
maxWidth: '600px',
margin: '0 auto'
}
}, 'A modern, reactive web framework with elegant syntax and powerful features. Build beautiful applications with minimal code and maximum performance.'),
// Button Group
UI.hbox({
class: 'button-group',
style: {
gap: '1rem',
justifyContent: 'center',
marginTop: '1rem',
flexWrap: 'wrap'
}
}, [
// Documentation Button
UI.hbox({
onClick: () => {
window.open('https://github.com/your-repo/rynex/docs', '_blank');
},
style: {
padding: '0.875rem 2rem',
background: '#00ff88',
color: '#000000',
border: 'none',
borderRadius: '9999px',
fontSize: '1rem',
fontWeight: '600',
cursor: 'pointer',
transition: 'all 0.2s ease-in-out',
boxShadow: '0 4px 6px -1px rgba(0, 255, 136, 0.1)',
gap: '0.5rem',
alignItems: 'center',
display: 'inline-flex'
},
onHover: {
transform: 'translateY(-2px)',
background: '#00cc6a'
}
}, [
UI.svg({
viewBox: '0 0 24 24',
width: '20',
height: '20',
fill: 'currentColor',
style: { display: 'block' }
}, ''),
UI.text({}, 'Documentation')
]),
// GitHub Button
UI.hbox({
onClick: () => {
window.open('https://github.com/your-repo/rynex', '_blank');
},
style: {
padding: '0.875rem 2rem',
background: '#0a0a0a',
color: '#ffffff',
border: '1px solid #333333',
borderRadius: '9999px',
fontSize: '1rem',
fontWeight: '600',
cursor: 'pointer',
transition: 'all 0.2s ease-in-out',
boxShadow: '0 1px 2px rgba(0, 255, 136, 0.1)',
gap: '0.5rem',
alignItems: 'center',
display: 'inline-flex'
},
onHover: {
transform: 'translateY(-2px)',
borderColor: '#00ff88'
}
}, [
UI.svg({
viewBox: '0 0 24 24',
width: '20',
height: '20',
fill: 'currentColor',
style: { display: 'block' }
}, ''),
UI.text({}, 'GitHub')
])
])
]),
// Features Grid
UI.vbox({
class: 'features',
style: {
gap: '1.5rem',
maxWidth: '900px',
width: '100%'
}
}, [
UI.text({
style: {
fontSize: '1.5rem',
fontWeight: '700',
textAlign: 'center',
marginBottom: '1rem',
fontFamily: '"Montserrat", sans-serif'
}
}, 'Quick Start Guide'),
UI.hbox({
style: {
gap: '1.5rem',
flexWrap: 'wrap',
justifyContent: 'center'
}
}, [
// Feature Card 1
UI.vbox({
style: {
flex: '1',
minWidth: '250px',
padding: '1.5rem',
background: '#0a0a0a',
border: '1px solid #333333',
borderRadius: '0.5rem',
gap: '0.75rem',
boxShadow: '0 1px 2px rgba(0, 255, 136, 0.1)',
transition: 'all 0.2s ease-in-out'
}
}, [
UI.svg({
viewBox: '0 0 24 24',
width: '48',
height: '48',
fill: '#00ff88',
style: { display: 'block' }
}, '') as any,
UI.text({
style: {
fontSize: '1.125rem',
fontWeight: '600',
color: '#00ff88'
}
}, 'Reactive by Default'),
UI.text({
style: {
fontSize: '0.875rem',
color: '#b0b0b0',
lineHeight: '1.5'
}
}, 'Built-in reactivity with automatic UI updates. No manual subscriptions needed.')
]),
// Feature Card 2
UI.vbox({
style: {
flex: '1',
minWidth: '250px',
padding: '1.5rem',
background: '#0a0a0a',
border: '1px solid #333333',
borderRadius: '0.5rem',
gap: '0.75rem',
boxShadow: '0 1px 2px rgba(0, 255, 136, 0.1)',
transition: 'all 0.2s ease-in-out'
}
}, [
UI.svg({
viewBox: '0 0 24 24',
width: '48',
height: '48',
fill: '#00ff88',
style: { display: 'block' }
}, '') as any,
UI.text({
style: {
fontSize: '1.125rem',
fontWeight: '600',
color: '#00ff88'
}
}, 'Clean Syntax'),
UI.text({
style: {
fontSize: '0.875rem',
color: '#b0b0b0',
lineHeight: '1.5'
}
}, 'Elegant API design with TypeScript support for better developer experience.')
]),
// Feature Card 3
UI.vbox({
style: {
flex: '1',
minWidth: '250px',
padding: '1.5rem',
background: '#0a0a0a',
border: '1px solid #333333',
borderRadius: '0.5rem',
gap: '0.75rem',
boxShadow: '0 1px 2px rgba(0, 255, 136, 0.1)',
transition: 'all 0.2s ease-in-out'
}
}, [
UI.svg({
viewBox: '0 0 24 24',
width: '48',
height: '48',
fill: '#00ff88',
style: { display: 'block' }
}, '') as any,
UI.text({
style: {
fontSize: '1.125rem',
fontWeight: '600',
color: '#00ff88'
}
}, 'Zero Config'),
UI.text({
style: {
fontSize: '0.875rem',
color: '#b0b0b0',
lineHeight: '1.5'
}
}, 'Start building immediately with sensible defaults and minimal setup.')
])
])
])
]),
// Footer
UI.footer({
style: {
padding: '2rem',
textAlign: 'center',
borderTop: '1px solid #333333',
background: '#0a0a0a'
}
}, [
UI.text({
style: {
fontSize: '0.875rem',
color: '#b0b0b0'
}
}, '© 2025 Razen Core. Built with ❤️ and modern web technologies.')
])
]);
}