43 lines
1.6 KiB
Plaintext
43 lines
1.6 KiB
Plaintext
#load "../lib/app.uce"
|
|
|
|
COMPONENT(Request& context)
|
|
{
|
|
DValue asset_props;
|
|
asset_props["css"]["0"] = "views/themes.css";
|
|
print(component("../components/theme/assets", asset_props, context));
|
|
context.call["app"]["page_title"] = "Themes";
|
|
String current_theme = context.cfg.get_by_path("theme/key").to_string();
|
|
|
|
<>
|
|
<div class="theme-gallery-shell">
|
|
<section class="theme-gallery-hero card">
|
|
<span class="theme-gallery-kicker">Starter Theme Gallery</span>
|
|
<h1>Compare Themes</h1>
|
|
<p>Open each theme preview directly to judge shell fit, typography, and token balance.</p>
|
|
</section>
|
|
<div class="theme-gallery-grid">
|
|
<? context.cfg.get_by_path("theme/options").each([&](DValue theme_info, String theme_key) {
|
|
StringMap params;
|
|
params["theme"] = theme_key;
|
|
String preview_href = app_link("theme-preview", params, context);
|
|
StringMap home_params;
|
|
home_params["theme"] = theme_key;
|
|
?><section class="theme-gallery-card<?= theme_key == current_theme ? " is-active" : "" ?>">
|
|
<div class="theme-gallery-head">
|
|
<div>
|
|
<h2><?= theme_info["label"].to_string() ?></h2>
|
|
<p><?= first(theme_info["description"].to_string(), "Reusable starter theme family.") ?></p>
|
|
</div>
|
|
<? if(theme_key == current_theme) { ?><span class="theme-gallery-badge">Active</span><? } ?>
|
|
</div>
|
|
<div class="theme-gallery-actions">
|
|
<a class="btn" href="<?= preview_href ?>">Open Preview</a>
|
|
<a class="btn btn-secondary" href="<?= app_link("", home_params, context) ?>">Open Home</a>
|
|
</div>
|
|
</section><?
|
|
}); ?>
|
|
</div>
|
|
</div>
|
|
</>
|
|
}
|