templates, handlers, CSS, JS: special cakes UI, HTMX nav, dashboard overhaul
Special cakes UI: overlay drawer, basket integration, catalogue tag filter, form parsing, JS save/edit/remove. HTMX navigation: MainContent component, nav links with hx-get, handlers return partial on HX-Request. Dashboard: metrics grid, CakeBreakdown, OrderRow with status select, CakeCounts/OrderCounts, torty filter, tort badge, results-pane. Collapsible sidebar: toggle button, localStorage, CSS transitions. Location field: dropdown replaced with pill toggle. Inline style cleanup: moved to CSS classes (tag-grid, grow, icon.sm, header-actions, toggle-group, success-icon, etc.). Dead CSS removal: pagination, status-chip, badge-pill, login-page. Helpers: exported CakeTitle/OrderTitle, added tagNames, tagIDsComma, orderItemsDesc, specialCakeDetail, removed unused helpers.
This commit is contained in:
parent
17b92a706a
commit
5a5372b831
18 changed files with 1153 additions and 422 deletions
79
server/templates/overlay.templ
Normal file
79
server/templates/overlay.templ
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
package templates
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"git.bronku.xyz/bronku/cake-order-tracker/models"
|
||||
)
|
||||
|
||||
templ SpecialCakeOverlay(allTags []models.Tag) {
|
||||
<div id="sc-overlay" class="overlay">
|
||||
<div class="overlay-backdrop" onclick="closeSpecialCakeOverlay()"></div>
|
||||
<div class="overlay-panel">
|
||||
<div class="overlay-header">
|
||||
<h2>
|
||||
<span class="material-symbols-outlined">cake_add</span>
|
||||
<span id="sc-overlay-title">Dodaj tort specjalny</span>
|
||||
</h2>
|
||||
<button type="button" class="close-btn" onclick="closeSpecialCakeOverlay()">
|
||||
<span class="material-symbols-outlined">close</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="overlay-body">
|
||||
<div class="overlay-form">
|
||||
<div class="form-group">
|
||||
<label>Nazwa *</label>
|
||||
<input class="form-input" type="text" id="sc-name" placeholder="Nazwa tortu"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Cena *</label>
|
||||
<input class="form-input" type="number" id="sc-price" min="0" step="0.01" placeholder="0.00"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Wielkość</label>
|
||||
<input class="form-input" type="text" id="sc-size" placeholder="np. 20cm, 30x40"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Kształt</label>
|
||||
<select class="form-input" id="sc-shape">
|
||||
<option value="">—</option>
|
||||
<option value="round">Okrągły</option>
|
||||
<option value="square">Kwadrat</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Smak</label>
|
||||
<input class="form-input" type="text" id="sc-flavour" placeholder="np. czekoladowy"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Notatki</label>
|
||||
<input class="form-input" type="text" id="sc-notes" placeholder="Dodatkowe informacje"/>
|
||||
</div>
|
||||
if len(allTags) > 0 {
|
||||
<div class="form-group">
|
||||
<label>Tagi</label>
|
||||
<div class="tag-grid" id="sc-overlay-tags">
|
||||
for _, t := range allTags {
|
||||
<label class="tag-chip">
|
||||
<input type="checkbox" class="sc-tag-cb" value={ strconv.Itoa(t.ID) } style="display:none"/>
|
||||
{ t.Name }
|
||||
</label>
|
||||
}
|
||||
</div>
|
||||
<div class="horizontal-group" style="margin-top:0.375rem">
|
||||
<input class="form-input grow" type="text" id="sc-new-tag" placeholder="Nowy tag..."/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="overlay-footer">
|
||||
<button type="button" class="btn outline" onclick="closeSpecialCakeOverlay()">Anuluj</button>
|
||||
<button type="button" class="btn primary" onclick="saveSpecialCake()">
|
||||
<span class="material-symbols-outlined">check</span>
|
||||
Zapisz
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue