mirror of
https://codeberg.org/Toasterson/ips.git
synced 2026-04-10 21:30:41 +00:00
Design overhaul: - Dark "Solaris Engineering" theme with amber accent colors - JetBrains Mono + Source Sans 3 typography via Google Fonts - Publisher cards with accent borders and stats layout - Styled package tables with hover states - Breadcrumb navigation and active nav indicators - Colored dependency type badges (require/optional/incorporate) - Terminal-style install command display - Floating pill-shaped P5I cart with enter animation - Custom scrollbars for manifest viewer Bug fixes: - P5I cart now hidden by default (was visible with 0 items) - "Updated" timestamp now formatted via format_packaging_date - Package count falls back to list_packages when get_info reports 0
109 lines
3.6 KiB
HTML
109 lines
3.6 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}{{ name }} — Package Detail{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="page-header">
|
|
<div class="breadcrumb">
|
|
<a href="/ui/">Publishers</a><span class="sep">/</span><a href="/ui/packages/{{ publisher }}">{{ publisher }}</a><span class="sep">/</span>{{ name }}
|
|
</div>
|
|
<h1>{{ name }}</h1>
|
|
{% if let Some(summary) = summary %}
|
|
<p class="detail-summary">{{ summary }}</p>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div class="detail-grid">
|
|
<div class="detail-card">
|
|
<h3>Package Information</h3>
|
|
<div class="info-rows">
|
|
<div class="info-row">
|
|
<span class="label">Publisher</span>
|
|
<span class="value">{{ publisher }}</span>
|
|
</div>
|
|
<div class="info-row">
|
|
<span class="label">Version</span>
|
|
<span class="value">{{ version }}</span>
|
|
</div>
|
|
{% if let Some(br) = build_release %}
|
|
<div class="info-row">
|
|
<span class="label">Build Release</span>
|
|
<span class="value">{{ br }}</span>
|
|
</div>
|
|
{% endif %}
|
|
{% if let Some(b) = branch %}
|
|
<div class="info-row">
|
|
<span class="label">Branch</span>
|
|
<span class="value">{{ b }}</span>
|
|
</div>
|
|
{% endif %}
|
|
{% if let Some(date) = packaging_date %}
|
|
<div class="info-row">
|
|
<span class="label">Packaged</span>
|
|
<span class="value">{{ date }}</span>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="detail-card">
|
|
<h3>Size</h3>
|
|
<div class="info-rows">
|
|
<div class="info-row">
|
|
<span class="label">Uncompressed</span>
|
|
<span class="value">{{ size }}</span>
|
|
</div>
|
|
<div class="info-row">
|
|
<span class="label">Compressed</span>
|
|
<span class="value">{{ csize }}</span>
|
|
</div>
|
|
<div class="info-row">
|
|
<span class="label">FMRI</span>
|
|
<span class="value">
|
|
<span class="fmri-badge">{{ fmri_str }}</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="install-cmd">
|
|
<span class="prompt">$</span> pkg install {{ fmri_str }}
|
|
</div>
|
|
|
|
{% if !dependencies.is_empty() %}
|
|
<h2 class="section-heading">Dependencies</h2>
|
|
<ul class="dep-list">
|
|
{% for dep in &dependencies %}
|
|
<li>
|
|
{% if dep.dep_type == "require" %}
|
|
<span class="dep-type dep-type-require">{{ dep.dep_type }}</span>
|
|
{% else if dep.dep_type == "optional" %}
|
|
<span class="dep-type dep-type-optional">{{ dep.dep_type }}</span>
|
|
{% else if dep.dep_type == "incorporate" %}
|
|
<span class="dep-type dep-type-incorporate">{{ dep.dep_type }}</span>
|
|
{% else %}
|
|
<span class="dep-type dep-type-default">{{ dep.dep_type }}</span>
|
|
{% endif %}
|
|
{% if let Some(link) = dep.link %}
|
|
<a href="{{ link }}">{{ dep.fmri }}</a>
|
|
{% else %}
|
|
<span style="color: var(--d-text);">{{ dep.fmri }}</span>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
|
|
<h2 class="section-heading">Manifest</h2>
|
|
<button class="manifest-trigger"
|
|
hx-get="/ui/package/{{ publisher }}/{{ fmri_encoded }}/manifest"
|
|
hx-target="#manifest-content"
|
|
hx-swap="innerHTML"
|
|
hx-indicator="#manifest-spinner">
|
|
Show Raw Manifest
|
|
</button>
|
|
<span id="manifest-spinner" class="htmx-indicator">
|
|
<span class="spinner"></span> Loading manifest...
|
|
</span>
|
|
<div id="manifest-content"></div>
|
|
{% endblock %}
|