#load "../lib/app.uce"
COMPONENT(Request& context)
{
DValue asset_props;
asset_props["css"]["0"] = "views/marketing.css";
print(component("../components/theme/assets", asset_props, context));
context.call["app"]["page_title"] = "Home";
DValue props;
props["title"] = "Stunning Apps";
props["subtitle"] = "Experience the power of super bloated PHP development with our gigantic and truly unwieldy component-based framework. Seriously though, this page only serves as an example repository of different styles and blocks.";
props["cta_text"] = "Get Started Free(mium)";
props["cta_link"] = "#features";
print(component("../components/example/marketing_blocks:HERO_SECTION", props, context));
print(component("../components/example/marketing_blocks:FEATURES_GRID", context));
props.clear();
DValue stat;
stat["number"] = "10K+"; stat["label"] = "Happy Vibe Coders"; props["stats"].push(stat); stat.clear();
stat["number"] = "<1s"; stat["label"] = "Page Load Time"; props["stats"].push(stat); stat.clear();
stat["number"] = "99.9%"; stat["label"] = "Uptime"; props["stats"].push(stat); stat.clear();
stat["number"] = "24/7"; stat["label"] = "Support"; props["stats"].push(stat);
print(component("../components/example/marketing_blocks:STATS_SECTION", props, context));
print(component("../components/example/marketing_blocks:BRANDS_SHOWCASE", context));
print(component("../components/example/marketing_blocks:TESTIMONIALS", context));
print(component("../components/example/marketing_blocks:PRICING_TABLE", context));
<>
Demo
Try our unbelievable components in action
Button Variations
Success message example
Warning message example
Error message example
Theme Families
Compare the starter’s built-in theme families and jump to the live gallery.
context.cfg.get_by_path("theme/options").each([&](DValue theme, String key) {
if(key != "portal-light" && key != "portal-dark" && key != "localfirst")
return;
StringMap theme_params;
theme_params["theme"] = key;
?>
= theme["label"].to_string() ?>
= theme["description"].to_string() ?>
">Preview Theme
}); ?>
Starter Themes
The original light and dark starter skins remain available in the same gallery for side-by-side checks.
">Open Gallery
>
props.clear();
props["title"] = "Ready to Transform Your Development?";
props["subtitle"] = "Join thousands of developers who have already modernized their workflow with our framework.";
props["cta_text"] = "Start Your Project";
props["secondary_text"] = "View GitHub";
print(component("../components/example/marketing_blocks:CTA_SECTION", props, context));
DValue island_props;
island_props["name"] = "StarterGuidelines";
island_props["id"] = "starter-guidelines-island";
island_props["props"]["route"] = context.call["route"]["l_path"].to_string();
island_props["props"]["enhancement"] = "progressive";
<>
Component Development Guidelines
🏷️Use semantic HTML5 elements
🎨Implement CSS custom properties for theming
📱Add responsive design with mobile-first approach
♿Include accessibility attributes
⚡Use progressive enhancement for JavaScript features
>
props.clear();
DValue row;
row["name"] = "John Doe"; row["age"] = "25"; row["gender"] = "male"; row["department"] = "Engineering"; row["salary"] = "75000"; row["active"] = "true"; props["items"].push(row); row.clear();
row["name"] = "Jane Smith"; row["age"] = "30"; row["gender"] = "female"; row["department"] = "Design"; row["salary"] = "82000"; row["active"] = "true"; props["items"].push(row); row.clear();
row["name"] = "Bob Johnson"; row["age"] = "35"; row["gender"] = "male"; row["department"] = "Marketing"; row["salary"] = "68000"; row["active"] = "false"; props["items"].push(row); row.clear();
row["name"] = "Alice Brown"; row["age"] = "40"; row["gender"] = "female"; row["department"] = "Engineering"; row["salary"] = "95000"; row["active"] = "true"; props["items"].push(row);
props["height"] = "350px";
<>
Simple Data Table (ag-Grid)
Basic data table with auto-generated columns, sorting, and filtering:
>
}