UNPKG

@ryanhelsing/ry-ui

Version:

Framework-agnostic, Light DOM web components. CSS is the source of truth.

203 lines (182 loc) 7.86 kB
<ry> <page> <!-- ═══ HEADER ═══ --> <header sticky> <cluster> <strong>ry-ui</strong> </cluster> <cluster> <a href="/demos">Demos</a> <a href="#features">Features</a> <a href="#pricing">Pricing</a> <a href="#faq">FAQ</a> <ry-button variant="outline" size="sm">Sign In</ry-button> <ry-button size="sm">Get Started</ry-button> </cluster> </header> <main> <!-- ═══ HERO ═══ --> <hero align="center" size="lg"> <ry-badge>Open Source</ry-badge> <h1>Build apps faster with<br>universal components</h1> <p>Framework-agnostic, Light DOM web components. Write once in HTML/CSS/JS. Deploy everywhere. No decisions to make. No architecture to debate.</p> <cluster> <ry-button size="lg">Get Started Free</ry-button> <ry-button variant="outline" size="lg">View on GitHub</ry-button> </cluster> </hero> <!-- ═══ STATS ═══ --> <section> <grid cols="4"> <stat value="32" label="Components"></stat> <stat value="7KB" label="Gzipped"></stat> <stat value="0" label="Dependencies"></stat> <stat value="3" label="Themes"></stat> </grid> </section> <!-- ═══ LOGO BAR ═══ --> <section class="ry-logo-bar"> <p>Trusted by teams at</p> <cluster> <span>Acme</span> <span>Globex</span> <span>Initech</span> <span>Umbrella</span> <span>Stark</span> </cluster> </section> <!-- ═══ FEATURES ═══ --> <section id="features"> <hero align="center" size="sm"> <h2>Everything you need, nothing you don't</h2> <p>Every app is a composition of the same finite primitives. We built them all — so you never have to again.</p> </hero> <feature-grid cols="3"> <feature icon="star" align="center"> <h3>Zero Dependencies</h3> <p>Pure web standards. No framework lock-in, no build step required, no node_modules bloat.</p> </feature> <feature icon="moon" align="center"> <h3>Dark Mode Built In</h3> <p>Every component supports light and dark mode out of the box via CSS custom properties.</p> </feature> <feature icon="settings" align="center"> <h3>Fully Themeable</h3> <p>Swap the entire visual layer without touching structure or behavior. Three independent layers.</p> </feature> <feature icon="check" align="center"> <h3>Accessible</h3> <p>Keyboard navigation, ARIA attributes, and focus management handled for every component.</p> </feature> <feature icon="download" align="center"> <h3>Light DOM</h3> <p>No Shadow DOM. Your CSS works. Your selectors work. Inspect and style anything.</p> </feature> <feature icon="heart" align="center"> <h3>Developer Friendly</h3> <p>Clean API, strict TypeScript, comprehensive docs. Read the source in minutes.</p> </feature> </feature-grid> </section> <!-- ═══ TESTIMONIALS ═══ --> <section> <hero align="center" size="sm"> <h2>Loved by developers</h2> <p>Teams ship faster when they stop reinventing the same UI primitives.</p> </hero> <grid cols="3"> <testimonial stars="5" avatar="https://i.pravatar.cc/128?img=1" name="Sarah Chen" role="CTO, Acme Corp"> We rebuilt our entire admin dashboard in a weekend. The component library just works — no fighting with frameworks. </testimonial> <testimonial stars="5" avatar="https://i.pravatar.cc/128?img=3" name="Marcus Johnson" role="Lead Engineer, StartupCo"> Finally, components that don't force you into a specific framework. We use these across React, Vue, and vanilla JS projects. </testimonial> <testimonial stars="5" avatar="https://i.pravatar.cc/128?img=5" name="Emily Park" role="Design Lead, BigCo"> The FORM/THEME separation is brilliant. Our design team can iterate on visuals without touching any JavaScript. </testimonial> </grid> </section> <!-- ═══ PRICING ═══ --> <section id="pricing"> <hero align="center" size="sm"> <h2>Simple, transparent pricing</h2> <p>Start free. Scale when you're ready.</p> </hero> <pricing> <pricing-card title="Starter" price="$0/mo"> <ul class="ry-check-list"> <li>All components</li> <li>3 themes included</li> <li>Community support</li> <li>MIT licensed</li> </ul> <ry-button variant="outline">Get Started</ry-button> </pricing-card> <pricing-card featured title="Pro" price="$29/mo"> <ul class="ry-check-list"> <li>Everything in Starter</li> <li>Premium themes</li> <li>Priority support</li> <li>Custom theme builder</li> <li>Figma kit</li> </ul> <ry-button>Choose Pro</ry-button> </pricing-card> <pricing-card title="Enterprise" price="Custom"> <ul class="ry-check-list"> <li>Everything in Pro</li> <li>Dedicated support</li> <li>Custom components</li> <li>SLA guarantee</li> <li>On-premise option</li> </ul> <ry-button variant="outline">Contact Sales</ry-button> </pricing-card> </pricing> </section> <!-- ═══ FAQ ═══ --> <section id="faq" narrow> <hero align="center" size="sm"> <h2>Frequently asked questions</h2> </hero> <accordion> <accordion-item title="Do I need a framework to use ry-ui?"> No. ry-ui components are vanilla web components that work in any HTML page. They also work seamlessly inside React, Vue, Svelte, Angular, or any other framework. </accordion-item> <accordion-item title="How does theming work?"> Every component has three independent layers: Function (JS behavior), Form (CSS layout), and Theme (CSS visuals). You can swap the entire theme without touching layout or behavior. Themes are just CSS files that override design tokens. </accordion-item> <accordion-item title="Is ry-ui accessible?"> Yes. All interactive components include proper ARIA attributes, keyboard navigation, and focus management. We follow WAI-ARIA patterns for every component. </accordion-item> <accordion-item title="Can I use my own CSS framework alongside ry-ui?"> Absolutely. ry-ui uses Light DOM (no Shadow DOM), so your existing CSS selectors and frameworks work as expected. You can load only the structure CSS and bring your own visual theme. </accordion-item> <accordion-item title="What's the bundle size?"> The full JS bundle is ~32KB (7KB gzipped) with zero dependencies. CSS is similarly lightweight. You're shipping less code than most icon libraries. </accordion-item> </accordion> </section> <!-- ═══ BOTTOM CTA ═══ --> <hero align="center" size="lg"> <h2>Ready to build?</h2> <p>Stop reinventing UI primitives. Start shipping.</p> <cluster> <ry-button size="lg">Get Started Free</ry-button> <ry-button variant="outline" size="lg">Read the Docs</ry-button> </cluster> </hero> </main> <!-- ═══ FOOTER ═══ --> <footer> <cluster> <span>&copy; 2026 ry-ui. MIT License.</span> </cluster> <cluster> <a href="#">GitHub</a> <a href="#">Docs</a> <a href="#">NPM</a> </cluster> </footer> </page> <ry-theme-panel></ry-theme-panel>