refactor(css): inline dugmad na semantičke .btn-* klase

Dodate klase .btn-opasno (puno crveno) i .btn-upozorenje (narandžasto/storno);
.btn-primarno-malo dobio cursor:pointer (nedostajao). Inline dugmad zamenjena
klasama u: admin_profil (lozinka/2FA/regeneriši/podesi/deaktiviraj), prodaja/
servis/nabavka_detalji (obriši/storno), servis (traži), magacin (premesti),
admin_login_istorija (nazad). Override-i tipa class=btn-primarno style=background
uklonjeni u korist .btn-opasno/.btn-upozorenje.

Ostala samo kontekstualna inline svojstva (width/align-self/veličina po instanci).
Bez promene izgleda — samo izdvajanje ponovljenog stila. Šabloni parsiraju.
This commit is contained in:
2026-06-12 23:58:00 +02:00
parent eec9562995
commit 0c23b0d721
8 changed files with 49 additions and 12 deletions
+37
View File
@@ -455,6 +455,7 @@ body {
padding: 4px 10px; padding: 4px 10px;
font-size: 12px; font-size: 12px;
font-weight: 500; font-weight: 500;
cursor: pointer;
text-decoration: none; text-decoration: none;
transition: opacity 0.2s; transition: opacity 0.2s;
} }
@@ -493,6 +494,42 @@ body {
} }
.btn-obrisi-malo:hover { opacity: 0.8; } .btn-obrisi-malo:hover { opacity: 0.8; }
/* opasno dugme (Obriši/Deaktiviraj) — pun format, crveno */
.btn-opasno {
display: inline-flex;
align-items: center;
background: #dc2626;
color: #fff;
border: none;
border-radius: 8px;
padding: 8px 16px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
white-space: nowrap;
transition: opacity 0.2s;
}
.btn-opasno:hover { opacity: 0.85; }
/* upozoravajuće dugme (Storno) — pun format, narandžasto */
.btn-upozorenje {
display: inline-flex;
align-items: center;
background: #f97316;
color: #fff;
border: none;
border-radius: 8px;
padding: 8px 16px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
white-space: nowrap;
transition: opacity 0.2s;
}
.btn-upozorenje:hover { opacity: 0.85; }
/* nazad link na formama */ /* nazad link na formama */
.nazad-link { .nazad-link {
display: inline-flex; display: inline-flex;
@@ -8,7 +8,7 @@
{{end}} {{define "sadrzaj"}} {{end}} {{define "sadrzaj"}}
<div style="display: flex; flex-direction: column; gap: 16px"> <div style="display: flex; flex-direction: column; gap: 16px">
<div style="display: flex; align-items: center; gap: 12px; flex-wrap: wrap"> <div style="display: flex; align-items: center; gap: 12px; flex-wrap: wrap">
<a href="/admin/korisnici" style="display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 0.5px solid var(--ivica); border-radius: 8px; color: var(--tekst-sporedni); font-size: 13px; text-decoration: none">← Nazad</a> <a href="/admin/korisnici" class="btn-sekundarno">← Nazad</a>
<span style="font-size: 15px; font-weight: 500; color: var(--tekst-glavni)">Istorija prijava — {{.PrikazKorisnik.KorisnickoIme}}</span> <span style="font-size: 15px; font-weight: 500; color: var(--tekst-glavni)">Istorija prijava — {{.PrikazKorisnik.KorisnickoIme}}</span>
</div> </div>
+5 -5
View File
@@ -29,7 +29,7 @@
<input type="password" name="nova_lozinka_potvrda" required style="width: 100%" /> <input type="password" name="nova_lozinka_potvrda" required style="width: 100%" />
</div> </div>
<div> <div>
<button type="submit" style="padding: 9px 20px; background: var(--sb-akcent); color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer">Sačuvaj novu lozinku</button> <button type="submit" class="btn-primarno">Sačuvaj novu lozinku</button>
</div> </div>
</div> </div>
</form> </form>
@@ -62,7 +62,7 @@
<label style="font-size: 13px; color: var(--tekst-sporedni); display: block; margin-bottom: 6px">Verifikacioni kod</label> <label style="font-size: 13px; color: var(--tekst-sporedni); display: block; margin-bottom: 6px">Verifikacioni kod</label>
<input type="text" name="kod" inputmode="numeric" pattern="[0-9]{6}" maxlength="6" required autofocus style="width: 160px; font-size: 18px; text-align: center; letter-spacing: 4px" /> <input type="text" name="kod" inputmode="numeric" pattern="[0-9]{6}" maxlength="6" required autofocus style="width: 160px; font-size: 18px; text-align: center; letter-spacing: 4px" />
</div> </div>
<button type="submit" style="padding: 9px 20px; background: var(--sb-akcent); color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer">Potvrdi i uključi 2FA</button> <button type="submit" class="btn-primarno">Potvrdi i uključi 2FA</button>
</form> </form>
{{ else if .TotpAktivan }} {{ else if .TotpAktivan }}
@@ -73,7 +73,7 @@
<div style="font-size: 13px; color: var(--tekst-sporedni)">Prijava zahteva TOTP kod pored lozinke.</div> <div style="font-size: 13px; color: var(--tekst-sporedni)">Prijava zahteva TOTP kod pored lozinke.</div>
</div> </div>
<form method="POST" action="/admin/profil/totp/deaktiviraj" onsubmit="return confirm('Da li ste sigurni? Ovo će isključiti dvostepenu verifikaciju.');"> <form method="POST" action="/admin/profil/totp/deaktiviraj" onsubmit="return confirm('Da li ste sigurni? Ovo će isključiti dvostepenu verifikaciju.');">
<button type="submit" style="padding: 9px 18px; background: #dc2626; color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer">Deaktiviraj 2FA</button> <button type="submit" class="btn-opasno">Deaktiviraj 2FA</button>
</form> </form>
</div> </div>
@@ -90,7 +90,7 @@
<div style="font-size: 13px; color: var(--tekst-sporedni); margin-bottom: 10px">Rezervni kodovi: preostalo <strong>{{ .BrojRezervnih }}</strong>. Koriste se za prijavu kada nemate pristup aplikaciji sa kodovima.</div> <div style="font-size: 13px; color: var(--tekst-sporedni); margin-bottom: 10px">Rezervni kodovi: preostalo <strong>{{ .BrojRezervnih }}</strong>. Koriste se za prijavu kada nemate pristup aplikaciji sa kodovima.</div>
{{ end }} {{ end }}
<form method="POST" action="/admin/profil/totp/kodovi" onsubmit="return confirm('Generisati nove rezervne kodove? Stari kodovi više neće važiti.');"> <form method="POST" action="/admin/profil/totp/kodovi" onsubmit="return confirm('Generisati nove rezervne kodove? Stari kodovi više neće važiti.');">
<button type="submit" style="padding: 8px 16px; background: transparent; color: var(--sb-akcent); border: 1px solid var(--sb-akcent); border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer">Regeneriši rezervne kodove</button> <button type="submit" class="btn-sekundarno">Regeneriši rezervne kodove</button>
</form> </form>
</div> </div>
@@ -104,7 +104,7 @@
</div> </div>
<div style="font-size: 13px; color: var(--tekst-sporedni)">Preporučujemo uključivanje dvostepene verifikacije.</div> <div style="font-size: 13px; color: var(--tekst-sporedni)">Preporučujemo uključivanje dvostepene verifikacije.</div>
</div> </div>
<a href="/admin/profil/totp/pokreni" style="padding: 9px 18px; background: var(--sb-akcent); color: #fff; border-radius: 8px; font-size: 14px; font-weight: 500; text-decoration: none">Podesi 2FA</a> <a href="/admin/profil/totp/pokreni" class="btn-primarno">Podesi 2FA</a>
</div> </div>
{{ end }} {{ end }}
</div> </div>
+1 -1
View File
@@ -183,7 +183,7 @@
{{/* padajući meni za premeštanje artikla — prima dict {ID, Kategorije}; koristi se i u tabeli i u mobilnoj kartici */}} {{/* padajući meni za premeštanje artikla — prima dict {ID, Kategorije}; koristi se i u tabeli i u mobilnoj kartici */}}
{{define "premestiMeni"}} {{define "premestiMeni"}}
<button type="button" class="btn-primarno-malo" style="cursor:pointer;align-self:center;" <button type="button" class="btn-primarno-malo" style="align-self:center;"
onclick="document.getElementById('premesti-{{.ID}}').showModal()">Premesti</button> onclick="document.getElementById('premesti-{{.ID}}').showModal()">Premesti</button>
{{/* nativni modal — showModal() ga stavlja u „top layer", pa je uvek iznad svega bez obzira na z-index/overflow */}} {{/* nativni modal — showModal() ga stavlja u „top layer", pa je uvek iznad svega bez obzira na z-index/overflow */}}
<dialog id="premesti-{{.ID}}" class="premesti-modal" onclick="if(event.target===this)this.close()"> <dialog id="premesti-{{.ID}}" class="premesti-modal" onclick="if(event.target===this)this.close()">
+1 -1
View File
@@ -136,7 +136,7 @@
</div> </div>
</div> </div>
<form method="POST" action="/nabavke/obrisi/{{.Nabavka.ID}}"> <form method="POST" action="/nabavke/obrisi/{{.Nabavka.ID}}">
<button type="submit" class="btn-primarno" style="background:#dc2626;" <button type="submit" class="btn-opasno"
data-potvrda="Da li ste sigurni da želite da obrišete ovu nabavku? Brisanje ne vraća količine artikala u magacin."> data-potvrda="Da li ste sigurni da želite da obrišete ovu nabavku? Brisanje ne vraća količine artikala u magacin.">
Obriši nabavku Obriši nabavku
</button> </button>
+2 -2
View File
@@ -239,7 +239,7 @@
<form method="POST" action="/prodaja/storno/{{.Nalog.ID}}" style="display:flex;flex-direction:column;gap:8px;align-items:flex-end;"> <form method="POST" action="/prodaja/storno/{{.Nalog.ID}}" style="display:flex;flex-direction:column;gap:8px;align-items:flex-end;">
<input type="hidden" name="csrf_token" value="{{.CsrfToken}}"> <input type="hidden" name="csrf_token" value="{{.CsrfToken}}">
<input type="text" name="razlog" placeholder="Razlog storniranja (opciono)" style="width:240px;"> <input type="text" name="razlog" placeholder="Razlog storniranja (opciono)" style="width:240px;">
<button type="submit" class="btn-primarno" style="background:#f97316;" <button type="submit" class="btn-upozorenje"
data-potvrda="Stornirati nalog {{.Nalog.BrojNaloga}}?"> data-potvrda="Stornirati nalog {{.Nalog.BrojNaloga}}?">
Storniraj nalog Storniraj nalog
</button> </button>
@@ -257,7 +257,7 @@
</div> </div>
<form method="POST" action="/prodaja/obrisi/{{.Nalog.ID}}"> <form method="POST" action="/prodaja/obrisi/{{.Nalog.ID}}">
<input type="hidden" name="csrf_token" value="{{.CsrfToken}}"> <input type="hidden" name="csrf_token" value="{{.CsrfToken}}">
<button type="submit" class="btn-primarno" style="background:#dc2626;" <button type="submit" class="btn-opasno"
data-potvrda="Da li ste sigurni da želite da obrišete nalog {{.Nalog.BrojNaloga}}?"> data-potvrda="Da li ste sigurni da želite da obrišete nalog {{.Nalog.BrojNaloga}}?">
Obriši nalog Obriši nalog
</button> </button>
+1 -1
View File
@@ -69,7 +69,7 @@
<a href="/servis/novi" class="btn-primarno" style="white-space:nowrap;flex-shrink:0;">+ Novi nalog</a> <a href="/servis/novi" class="btn-primarno" style="white-space:nowrap;flex-shrink:0;">+ Novi nalog</a>
</div> </div>
<div> <div>
<button type="submit" class="btn-primarno" style="white-space:nowrap;">Traži</button> <button type="submit" class="btn-primarno">Traži</button>
</div> </div>
</form> </form>
+1 -1
View File
@@ -248,7 +248,7 @@
</div> </div>
</div> </div>
<form method="POST" action="/servis/obrisi/{{.Nalog.ID}}"> <form method="POST" action="/servis/obrisi/{{.Nalog.ID}}">
<button type="submit" class="btn-primarno" style="background:#dc2626;" <button type="submit" class="btn-opasno"
data-potvrda="Da li ste sigurni da želite da obrišete nalog {{.Nalog.BrojNaloga}}?"> data-potvrda="Da li ste sigurni da želite da obrišete nalog {{.Nalog.BrojNaloga}}?">
Obriši nalog Obriši nalog
</button> </button>