').addClass(this.$element.prop("checked")?this._onstyle:this._offstyle+" off").addClass(b).addClass(this.options.style);this.$element.wrap(g),a.extend(this,{$toggle:this.$element.parent(),$toggleOn:c,$toggleOff:d,$toggleGroup:f}),this.$toggle.append(f);var h=this.options.width||Math.max(c.outerWidth(),d.outerWidth())+e.outerWidth()/2,i=this.options.height||Math.max(c.outerHeight(),d.outerHeight());c.addClass("toggle-on"),d.addClass("toggle-off"),this.$toggle.css({width:h,height:i}),this.options.height&&(c.css("line-height",c.height()+"px"),d.css("line-height",d.height()+"px")),this.update(!0),this.trigger(!0)},c.prototype.toggle=function(){this.$element.prop("checked")?this.off():this.on()},c.prototype.on=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._offstyle+" off").addClass(this._onstyle),this.$element.prop("checked",!0),void(a||this.trigger()))},c.prototype.off=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._onstyle).addClass(this._offstyle+" off"),this.$element.prop("checked",!1),void(a||this.trigger()))},c.prototype.enable=function(){this.$toggle.removeAttr("disabled"),this.$element.prop("disabled",!1)},c.prototype.disable=function(){this.$toggle.attr("disabled","disabled"),this.$element.prop("disabled",!0)},c.prototype.update=function(a){this.$element.prop("disabled")?this.disable():this.enable(),this.$element.prop("checked")?this.on(a):this.off(a)},c.prototype.trigger=function(b){this.$element.off("change.bs.toggle"),b||this.$element.change(),this.$element.on("change.bs.toggle",a.proxy(function(){this.update()},this))},c.prototype.destroy=function(){this.$element.off("change.bs.toggle"),this.$toggleGroup.remove(),this.$element.removeData("bs.toggle"),this.$element.unwrap()};var d=a.fn.bootstrapToggle;a.fn.bootstrapToggle=b,a.fn.bootstrapToggle.Constructor=c,a.fn.toggle.noConflict=function(){return a.fn.bootstrapToggle=d,this},a(function(){a("input[type=checkbox][data-toggle^=toggle]").bootstrapToggle()}),a(document).on("click.bs.toggle","div[data-toggle^=toggle]",function(b){var c=a(this).find("input[type=checkbox]");c.bootstrapToggle("toggle"),b.preventDefault()})}(jQuery);
-//# sourceMappingURL=bootstrap-toggle.min.js.map
\ No newline at end of file
+/* Copyright Notice
+ * bootstrap5-toggle v5.0.4
+ * https://palcarazm.github.io/bootstrap5-toggle/
+ * @author 2011-2014 Min Hur (https://github.com/minhur)
+ * @author 2018-2019 Brent Ely (https://github.com/gitbrent)
+ * @author 2022 Pablo Alcaraz MartÃnez (https://github.com/palcarazm)
+ * @funding GitHub Sponsors
+ * @see https://github.com/sponsors/palcarazm
+ * @license MIT
+ * @see https://github.com/palcarazm/bootstrap5-toggle/blob/master/LICENSE
+ */
+
+"use strict";!function(){class s{constructor(e,t){const i="BOOTSTRAP TOGGLE DEPRECATION CHECK -- a0Jhux0QySypjjs4tLtEo8xT2kx0AbYaq9K6mgNjWSs0HF0L8T8J0M0o3Kr7zkm7 --",s="attribute",n="option",l=function(e,t,i){console.warn(`Bootstrap Toggle deprecation warning: Using ${t} ${e} is deprected. Use ${i} instead.`)},o="On",a="primary",h=null,d=null,r="Off",m="secondary",g=null,b=null,c="",u="",f=null,p=null,v=0,A=!1,y=null;t=t||{},this.element=e,this.options={onlabel:this.element.getAttribute("data-onlabel")||t.onlabel||i||o,onstyle:this.element.getAttribute("data-onstyle")||t.onstyle||a,onvalue:this.element.getAttribute("value")||this.element.getAttribute("data-onvalue")||t.onvalue||h,ontitle:this.element.getAttribute("data-ontitle")||t.ontitle||this.element.getAttribute("title")||d,offlabel:this.element.getAttribute("data-offlabel")||t.offlabel||i||r,offstyle:this.element.getAttribute("data-offstyle")||t.offstyle||m,offvalue:this.element.getAttribute("data-offvalue")||t.offvalue||g,offtitle:this.element.getAttribute("data-offtitle")||t.offtitle||this.element.getAttribute("title")||b,size:this.element.getAttribute("data-size")||t.size||c,style:this.element.getAttribute("data-style")||t.style||u,width:this.element.getAttribute("data-width")||t.width||f,height:this.element.getAttribute("data-height")||t.height||p,tabindex:this.element.getAttribute("tabindex")||t.tabindex||v,tristate:this.element.hasAttribute("tristate")||t.tristate||A,name:this.element.getAttribute("name")||t.name||y},this.options.onlabel===i&&(this.element.getAttribute("data-on")?(l(s,"data-on","data-onlabel"),this.options.onlabel=this.element.getAttribute("data-on")):t.on?(l(n,"on","onlabel"),this.options.onlabel=t.on):this.options.onlabel=o),this.options.offlabel===i&&(this.element.getAttribute("data-off")?(l(s,"data-off","data-offlabel"),this.options.offlabel=this.element.getAttribute("data-off")):t.off?(l(n,"off","offlabel"),this.options.offlabel=t.off):this.options.offlabel=r),this.render()}render(){function e(e){var t=window.getComputedStyle(e),e=e.offsetHeight,i=parseFloat(t.borderTopWidth);return e-parseFloat(t.borderBottomWidth)-i-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)}let t;switch(this.options.size){case"large":case"lg":t="btn-lg";break;case"small":case"sm":t="btn-sm";break;case"mini":case"xs":t="btn-xs";break;default:t=""}var i=document.createElement("span"),s=(i.setAttribute("class","btn btn-"+this.options.onstyle+" "+t),i.innerHTML=this.options.onlabel,this.options.ontitle&&i.setAttribute("title",this.options.ontitle),document.createElement("span")),n=(s.setAttribute("class","btn btn-"+this.options.offstyle+" "+t),s.innerHTML=this.options.offlabel,this.options.offtitle&&s.setAttribute("title",this.options.offtitle),document.createElement("span")),l=(n.setAttribute("class","toggle-handle btn "+t),document.createElement("div"));l.setAttribute("class","toggle-group"),l.appendChild(i),l.appendChild(s),l.appendChild(n);let o=document.createElement("div"),a=(o.setAttribute("class","toggle btn"),o.classList.add(this.element.checked?"btn-"+this.options.onstyle:"btn-"+this.options.offstyle),o.setAttribute("tabindex",this.options.tabindex),this.element.checked||o.classList.add("off"),this.options.size&&o.classList.add(t),this.options.style&&this.options.style.split(" ").forEach(e=>{o.classList.add(e)}),(this.element.disabled||this.element.readOnly)&&(o.classList.add("disabled"),o.setAttribute("disabled","disabled")),this.options.onvalue&&this.element.setAttribute("value",this.options.onvalue),null);this.options.offvalue&&((a=this.element.cloneNode()).setAttribute("value",this.options.offvalue),a.setAttribute("data-toggle","invert-toggle"),a.removeAttribute("id"),a.checked=!this.element.checked),this.element.parentElement.insertBefore(o,this.element),o.appendChild(this.element),a&&o.appendChild(a),o.appendChild(l),o.style.width=(this.options.width||Math.max(i.getBoundingClientRect().width,s.getBoundingClientRect().width)+n.getBoundingClientRect().width/2)+"px",o.style.height=(this.options.height||Math.max(i.getBoundingClientRect().height,s.getBoundingClientRect().height))+"px",i.classList.add("toggle-on"),s.classList.add("toggle-off"),this.options.height&&(i.style.lineHeight=e(i)+"px",s.style.lineHeight=e(s)+"px"),o.addEventListener("touchstart",e=>{this.#toggleActionPerformed(e)}),o.addEventListener("click",e=>{this.#toggleActionPerformed(e)}),o.addEventListener("keypress",e=>{" "==e.key&&this.#toggleActionPerformed(e)}),this.element.id&&document.querySelectorAll('label[for="'+this.element.id+'"]').forEach(e=>{e.addEventListener("touchstart",e=>{this.toggle(),o.focus()}),e.addEventListener("click",e=>{this.toggle(),o.focus()})}),this.ecmasToggle=o,this.invElement=a,this.element.bsToggle=this}#toggleActionPerformed(e){this.options.tristate?this.ecmasToggle.classList.contains("indeterminate")?(this.determinate(!0),this.toggle()):this.indeterminate():this.toggle(),e.preventDefault()}toggle(e=!1){this.element.checked?this.off(e):this.on(e)}on(e=!1){if(this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("btn-"+this.options.offstyle),this.ecmasToggle.classList.add("btn-"+this.options.onstyle),this.ecmasToggle.classList.remove("off"),this.element.checked=!0,this.invElement&&(this.invElement.checked=!1),e||this.trigger()}off(e=!1){if(this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("btn-"+this.options.onstyle),this.ecmasToggle.classList.add("btn-"+this.options.offstyle),this.ecmasToggle.classList.add("off"),this.element.checked=!1,this.invElement&&(this.invElement.checked=!0),e||this.trigger()}indeterminate(e=!1){if(!this.options.tristate||this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.add("indeterminate"),this.element.indeterminate=!0,this.element.removeAttribute("name"),this.invElement&&(this.invElement.indeterminate=!0),this.invElement&&this.invElement.removeAttribute("name"),e||this.trigger()}determinate(e=!1){if(!this.options.tristate||this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("indeterminate"),this.element.indeterminate=!1,this.options.name&&this.element.setAttribute("name",this.options.name),this.invElement&&(this.invElement.indeterminate=!1),this.invElement&&this.options.name&&this.invElement.setAttribute("name",this.options.name),e||this.trigger()}enable(){this.ecmasToggle.classList.remove("disabled"),this.ecmasToggle.removeAttribute("disabled"),this.element.removeAttribute("disabled"),this.element.removeAttribute("readonly"),this.invElement&&(this.invElement.removeAttribute("disabled"),this.invElement.removeAttribute("readonly"))}disable(){this.ecmasToggle.classList.add("disabled"),this.ecmasToggle.setAttribute("disabled",""),this.element.setAttribute("disabled",""),this.element.removeAttribute("readonly"),this.invElement&&(this.invElement.setAttribute("disabled",""),this.invElement.removeAttribute("readonly"))}readonly(){this.ecmasToggle.classList.add("disabled"),this.ecmasToggle.setAttribute("disabled",""),this.element.removeAttribute("disabled"),this.element.setAttribute("readonly",""),this.invElement&&(this.invElement.removeAttribute("disabled"),this.invElement.setAttribute("readonly",""))}update(e){this.element.disabled?this.disable():this.element.readOnly?this.readonly():this.enable(),this.element.checked?this.on(e):this.off(e)}trigger(e){e||this.element.dispatchEvent(new Event("change",{bubbles:!0}))}destroy(){this.ecmasToggle.parentNode.insertBefore(this.element,this.ecmasToggle),this.ecmasToggle.parentNode.removeChild(this.ecmasToggle),delete this.element.bsToggle,delete this.ecmasToggle}}Element.prototype.bootstrapToggle=function(e,t){var i=this.bsToggle||new s(this,e);e&&"string"==typeof e&&("toggle"==e.toLowerCase()?i.toggle(t):"on"==e.toLowerCase()?i.on(t):"off"==e.toLowerCase()?i.off(t):"indeterminate"==e.toLowerCase()?i.indeterminate(t):"determinate"==e.toLowerCase()?i.determinate(t):"enable"==e.toLowerCase()?i.enable():"disable"==e.toLowerCase()?i.disable():"readonly"==e.toLowerCase()?i.readonly():"destroy"==e.toLowerCase()&&i.destroy())},"undefined"!=typeof window&&(window.onload=function(){document.querySelectorAll('input[type=checkbox][data-toggle="toggle"]').forEach(function(e){e.bootstrapToggle()})}),"undefined"!=typeof module&&module.exports&&(module.exports=s)}();
+//# sourceMappingURL=bootstrap5-toggle.ecmas.min.js.map
\ No newline at end of file
diff --git a/passkeys/templates/passkeys/PassKeys.html b/passkeys/templates/passkeys/PassKeys.html
index facb70a..f589c13 100644
--- a/passkeys/templates/passkeys/PassKeys.html
+++ b/passkeys/templates/passkeys/PassKeys.html
@@ -120,10 +120,8 @@
{%endif%}
-
-
-{#
#}
-{# #}
+
+
{% endblock %}
{% block content %}
{{block.super}}
From 2fbc6a953a53618c0e7175948333392fb6fbbfe4 Mon Sep 17 00:00:00 2001
From: Shlomo Markowitz <75799735+smark-1@users.noreply.github.com>
Date: Tue, 7 Nov 2023 20:07:05 -0500
Subject: [PATCH 6/9] Fixed Tests
---
example/test_app/tests/test_views.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/example/test_app/tests/test_views.py b/example/test_app/tests/test_views.py
index e6f4d2d..f3a8f42 100644
--- a/example/test_app/tests/test_views.py
+++ b/example/test_app/tests/test_views.py
@@ -19,16 +19,16 @@ def setUp(self) -> None:
self.user = self.user_model.objects.get(username="test")
def test_disabling_key(self):
- key =UserPasskey.objects.filter(user=self.user).latest('id')
- self.client.get(reverse('passkeys:toggle') + "?id=" + str(key.id))
+ key = UserPasskey.objects.filter(user=self.user).latest('id')
+ self.client.post(reverse('passkeys:toggle'),{"id":key.id})
self.assertFalse(UserPasskey.objects.get(id=key.id).enabled)
- self.client.get(reverse('passkeys:toggle') + "?id=" + str(key.id))
+ self.client.post(reverse('passkeys:toggle'),{"id":key.id})
self.assertTrue(UserPasskey.objects.get(id=key.id).enabled)
def test_deleting_key(self):
key = UserPasskey.objects.filter(user=self.user).latest('id')
- self.client.get(reverse('passkeys:delKey') + "?id=" + str(key.id))
+ self.client.post(reverse('passkeys:delKey'),{"id":key.id})
self.assertEquals(UserPasskey.objects.filter(id=key.id).count(), 0)
def test_wrong_ownership(self):
@@ -38,9 +38,9 @@ def test_wrong_ownership(self):
key = UserPasskey.objects.filter(user=self.user).latest('id')
self.user = self.user_model.objects.create_user(username="test2", password="test2")
self.client.post("/auth/login", {"username": "test2", "password": "test2", 'passkeys': ''})
- r = self.client.get(reverse('passkeys:delKey') + "?id="+str(key.id))
+ r = self.client.post(reverse('passkeys:delKey'),{"id":key.id})
self.assertEquals(r.status_code, 403)
self.assertEquals(r.content,b"Error: You own this token so you can't delete it")
- r = self.client.get(reverse('passkeys:toggle') + "?id=" + str(key.id))
+ r = self.client.post(reverse('passkeys:toggle'),{"id":key.id})
self.assertEquals(r.status_code, 403)
- self.assertEquals(r.content, b"Error: You own this token so you can't toggle it")
+ self.assertEquals(r.content, b"Error: You own this token so you can't toggle it")
\ No newline at end of file
From 506e3b889d25b8cf587973cc92016f302d6312ba Mon Sep 17 00:00:00 2001
From: smark-1 <75799735+smark-1@users.noreply.github.com>
Date: Wed, 4 Sep 2024 22:52:58 +0000
Subject: [PATCH 7/9] Make files lowercase
---
README.md | 4 ++--
passkeys/templates/passkeys/{PassKeys.html => passkeys.html} | 2 +-
.../passkeys/{PassKeys_base.html => passkeys_base.html} | 0
passkeys/views.py | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
rename passkeys/templates/passkeys/{PassKeys.html => passkeys.html} (99%)
rename passkeys/templates/passkeys/{PassKeys_base.html => passkeys_base.html} (100%)
diff --git a/README.md b/README.md
index 8b7201d..c8960cd 100644
--- a/README.md
+++ b/README.md
@@ -63,8 +63,8 @@ Currently, it support Django 2.0+, Python 3.7+
6. To match the look and feel of your project, Passkeys includes `base.html` but it needs blocks named `head` & `content` to added its content to it.
**Notes:**
- 1. You can override `passkeys/PassKeys_base.html` which is used by `passkeys/Passkeys.html` so you can control the styling better and current `passkeys/Passkeys_base.html` extends `base.html`
- 1. Currently, `passkeys/PassKeys_base.html` needs bootstrap 5.
+ 1. You can override `passkeys/passkeys_base.html` which is used by `passkeys/passkeys.html` so you can control the styling better and current `passkeys/passkeys_base.html` extends `base.html`
+ 1. Currently, `passkeys/passkeys_base.html` needs bootstrap 5.
7. Somewhere in your app, add a link to 'passkeys:home'
```
Passkeys ```
diff --git a/passkeys/templates/passkeys/PassKeys.html b/passkeys/templates/passkeys/passkeys.html
similarity index 99%
rename from passkeys/templates/passkeys/PassKeys.html
rename to passkeys/templates/passkeys/passkeys.html
index f589c13..9ddd1f6 100644
--- a/passkeys/templates/passkeys/PassKeys.html
+++ b/passkeys/templates/passkeys/passkeys.html
@@ -1,4 +1,4 @@
-{% extends "passkeys/PassKeys_base.html" %}
+{% extends "passkeys/passkeys_base.html" %}
{% load static %}
{% block head %}
{{block.super}}
diff --git a/passkeys/templates/passkeys/PassKeys_base.html b/passkeys/templates/passkeys/passkeys_base.html
similarity index 100%
rename from passkeys/templates/passkeys/PassKeys_base.html
rename to passkeys/templates/passkeys/passkeys_base.html
diff --git a/passkeys/views.py b/passkeys/views.py
index b8d9f8f..fe63888 100644
--- a/passkeys/views.py
+++ b/passkeys/views.py
@@ -8,7 +8,7 @@
@login_required
def index(request,enroll=False): # noqa
keys = UserPasskey.objects.filter(user=request.user) # pragma: no cover
- return render(request,'passkeys/PassKeys.html',{"keys":keys,"enroll":enroll}) # pragma: no cover
+ return render(request,'passkeys/passkeys.html',{"keys":keys,"enroll":enroll}) # pragma: no cover
@require_http_methods(["POST"])
@login_required
From df5ab3fe6167970564acfd4b9ab0578119f00ca6 Mon Sep 17 00:00:00 2001
From: smark-1 <75799735+smark-1@users.noreply.github.com>
Date: Wed, 4 Sep 2024 23:32:31 +0000
Subject: [PATCH 8/9] update contributors
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index c8960cd..b68aab2 100644
--- a/README.md
+++ b/README.md
@@ -147,6 +147,7 @@ Tidelift will coordinate the fix and disclosure.
* [jacopsd](https://github.com/jacopsd)
* [gasparbrogueira](https://github.com/gasparbrogueira)
* [pulse-mind](https://github.com/pulse-mind)
+* [smark-1](https://github.com/smark-1)
From ac2043836e75a6708ffcf6820d669344a21eb30e Mon Sep 17 00:00:00 2001
From: smark-1 <75799735+smark-1@users.noreply.github.com>
Date: Sun, 8 Sep 2024 16:55:49 -0400
Subject: [PATCH 9/9] Remove sourceMappingURL
---
passkeys/static/passkeys/css/bootstrap-toggle.min.css | 3 +--
passkeys/static/passkeys/js/bootstrap-toggle.min.js | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/passkeys/static/passkeys/css/bootstrap-toggle.min.css b/passkeys/static/passkeys/css/bootstrap-toggle.min.css
index 2eccdb0..f9557e5 100644
--- a/passkeys/static/passkeys/css/bootstrap-toggle.min.css
+++ b/passkeys/static/passkeys/css/bootstrap-toggle.min.css
@@ -10,5 +10,4 @@
* @see https://github.com/palcarazm/bootstrap5-toggle/blob/master/LICENSE
*/
-.btn-group-xs>.btn,.btn-xs{padding:.35rem .4rem .25rem .4rem;font-size:.875rem;line-height:.5;border-radius:.2rem}.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-1.25rem;margin-right:.35rem}.toggle{position:relative;overflow:hidden}.toggle:focus>.toggle-group>.btn,.toggle:hover>.toggle-group>.btn{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.toggle:focus>.toggle-group>.toggle-handle,.toggle:hover>.toggle-group>.toggle-handle{background-color:var(--bs-light);opacity:.5}.toggle>input[type=checkbox]{display:none}.toggle>.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;user-select:none;-moz-user-select:none;-webkit-user-select:none}.toggle>.toggle-group>span{cursor:pointer}.toggle.off>.toggle-group{left:-100%}.toggle.indeterminate>.toggle-group{left:-50%}.toggle>.toggle-group>.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}.toggle>.toggle-group>.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0;box-shadow:none}.toggle>.toggle-group>.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px;background-color:var(--bs-light);border-color:var(--bs-light)}.input-group .toggle>.toggle-group>.toggle-off,.input-group .toggle>.toggle-group>.toggle-on{position:absolute}.toggle:not(:hover):not(:focus).btn-outline-primary>.toggle-group>.toggle-handle{background-color:var(--bs-primary);border-color:var(--bs-primary)}.toggle:not(:hover):not(:focus).btn-outline-secondary>.toggle-group>.toggle-handle{background-color:var(--bs-secondary);border-color:var(--bs-secondary)}.toggle:not(:hover):not(:focus).btn-outline-success>.toggle-group>.toggle-handle{background-color:var(--bs-success);border-color:var(--bs-success)}.toggle:not(:hover):not(:focus).btn-outline-danger>.toggle-group>.toggle-handle{background-color:var(--bs-danger);border-color:var(--bs-danger)}.toggle:not(:hover):not(:focus).btn-outline-warning>.toggle-group>.toggle-handle{background-color:var(--bs-warning);border-color:var(--bs-warning)}.toggle:not(:hover):not(:focus).btn-outline-info>.toggle-group>.toggle-handle{background-color:var(--bs-info);border-color:var(--bs-info)}.toggle:not(:hover):not(:focus).btn-outline-light>.toggle-group>.toggle-handle{background-color:var(--bs-light);border-color:var(--bs-light)}.toggle:not(:hover):not(:focus).btn-outline-dark>.toggle-group>.toggle-handle{background-color:var(--bs-dark);border-color:var(--bs-dark)}.toggle.btn{min-width:3.7rem;min-height:2.15rem}.toggle>.toggle-group>.toggle-on.btn{padding-right:1.5rem}.toggle>.toggle-group>.toggle-off.btn{padding-left:1.5rem}.toggle.btn-lg{min-width:5rem;min-height:2.815rem}.toggle>.toggle-group>.toggle-on.btn-lg{padding-right:2rem}.toggle>.toggle-group>.toggle-off.btn-lg{padding-left:2rem}.toggle>.toggle-group>.toggle-handle.btn-lg{width:2.5rem}.toggle.btn-sm{min-width:3.125rem;min-height:1.938rem}.toggle>.toggle-group>.toggle-on.btn-sm{padding-right:1rem}.toggle>.toggle-group>.toggle-off.btn-sm{padding-left:1rem}.toggle.btn-xs{min-width:2.19rem;min-height:1.375rem}.toggle>.toggle-group>.toggle-on.btn-xs{padding-right:.8rem}.toggle>.toggle-group>.toggle-off.btn-xs{padding-left:.8rem}
-/*# sourceMappingURL=bootstrap5-toggle.min.css.map */
\ No newline at end of file
+.btn-group-xs>.btn,.btn-xs{padding:.35rem .4rem .25rem .4rem;font-size:.875rem;line-height:.5;border-radius:.2rem}.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-1.25rem;margin-right:.35rem}.toggle{position:relative;overflow:hidden}.toggle:focus>.toggle-group>.btn,.toggle:hover>.toggle-group>.btn{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.toggle:focus>.toggle-group>.toggle-handle,.toggle:hover>.toggle-group>.toggle-handle{background-color:var(--bs-light);opacity:.5}.toggle>input[type=checkbox]{display:none}.toggle>.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;user-select:none;-moz-user-select:none;-webkit-user-select:none}.toggle>.toggle-group>span{cursor:pointer}.toggle.off>.toggle-group{left:-100%}.toggle.indeterminate>.toggle-group{left:-50%}.toggle>.toggle-group>.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}.toggle>.toggle-group>.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0;box-shadow:none}.toggle>.toggle-group>.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px;background-color:var(--bs-light);border-color:var(--bs-light)}.input-group .toggle>.toggle-group>.toggle-off,.input-group .toggle>.toggle-group>.toggle-on{position:absolute}.toggle:not(:hover):not(:focus).btn-outline-primary>.toggle-group>.toggle-handle{background-color:var(--bs-primary);border-color:var(--bs-primary)}.toggle:not(:hover):not(:focus).btn-outline-secondary>.toggle-group>.toggle-handle{background-color:var(--bs-secondary);border-color:var(--bs-secondary)}.toggle:not(:hover):not(:focus).btn-outline-success>.toggle-group>.toggle-handle{background-color:var(--bs-success);border-color:var(--bs-success)}.toggle:not(:hover):not(:focus).btn-outline-danger>.toggle-group>.toggle-handle{background-color:var(--bs-danger);border-color:var(--bs-danger)}.toggle:not(:hover):not(:focus).btn-outline-warning>.toggle-group>.toggle-handle{background-color:var(--bs-warning);border-color:var(--bs-warning)}.toggle:not(:hover):not(:focus).btn-outline-info>.toggle-group>.toggle-handle{background-color:var(--bs-info);border-color:var(--bs-info)}.toggle:not(:hover):not(:focus).btn-outline-light>.toggle-group>.toggle-handle{background-color:var(--bs-light);border-color:var(--bs-light)}.toggle:not(:hover):not(:focus).btn-outline-dark>.toggle-group>.toggle-handle{background-color:var(--bs-dark);border-color:var(--bs-dark)}.toggle.btn{min-width:3.7rem;min-height:2.15rem}.toggle>.toggle-group>.toggle-on.btn{padding-right:1.5rem}.toggle>.toggle-group>.toggle-off.btn{padding-left:1.5rem}.toggle.btn-lg{min-width:5rem;min-height:2.815rem}.toggle>.toggle-group>.toggle-on.btn-lg{padding-right:2rem}.toggle>.toggle-group>.toggle-off.btn-lg{padding-left:2rem}.toggle>.toggle-group>.toggle-handle.btn-lg{width:2.5rem}.toggle.btn-sm{min-width:3.125rem;min-height:1.938rem}.toggle>.toggle-group>.toggle-on.btn-sm{padding-right:1rem}.toggle>.toggle-group>.toggle-off.btn-sm{padding-left:1rem}.toggle.btn-xs{min-width:2.19rem;min-height:1.375rem}.toggle>.toggle-group>.toggle-on.btn-xs{padding-right:.8rem}.toggle>.toggle-group>.toggle-off.btn-xs{padding-left:.8rem}
\ No newline at end of file
diff --git a/passkeys/static/passkeys/js/bootstrap-toggle.min.js b/passkeys/static/passkeys/js/bootstrap-toggle.min.js
index 1ee0b6d..1b1eb66 100644
--- a/passkeys/static/passkeys/js/bootstrap-toggle.min.js
+++ b/passkeys/static/passkeys/js/bootstrap-toggle.min.js
@@ -10,5 +10,4 @@
* @see https://github.com/palcarazm/bootstrap5-toggle/blob/master/LICENSE
*/
-"use strict";!function(){class s{constructor(e,t){const i="BOOTSTRAP TOGGLE DEPRECATION CHECK -- a0Jhux0QySypjjs4tLtEo8xT2kx0AbYaq9K6mgNjWSs0HF0L8T8J0M0o3Kr7zkm7 --",s="attribute",n="option",l=function(e,t,i){console.warn(`Bootstrap Toggle deprecation warning: Using ${t} ${e} is deprected. Use ${i} instead.`)},o="On",a="primary",h=null,d=null,r="Off",m="secondary",g=null,b=null,c="",u="",f=null,p=null,v=0,A=!1,y=null;t=t||{},this.element=e,this.options={onlabel:this.element.getAttribute("data-onlabel")||t.onlabel||i||o,onstyle:this.element.getAttribute("data-onstyle")||t.onstyle||a,onvalue:this.element.getAttribute("value")||this.element.getAttribute("data-onvalue")||t.onvalue||h,ontitle:this.element.getAttribute("data-ontitle")||t.ontitle||this.element.getAttribute("title")||d,offlabel:this.element.getAttribute("data-offlabel")||t.offlabel||i||r,offstyle:this.element.getAttribute("data-offstyle")||t.offstyle||m,offvalue:this.element.getAttribute("data-offvalue")||t.offvalue||g,offtitle:this.element.getAttribute("data-offtitle")||t.offtitle||this.element.getAttribute("title")||b,size:this.element.getAttribute("data-size")||t.size||c,style:this.element.getAttribute("data-style")||t.style||u,width:this.element.getAttribute("data-width")||t.width||f,height:this.element.getAttribute("data-height")||t.height||p,tabindex:this.element.getAttribute("tabindex")||t.tabindex||v,tristate:this.element.hasAttribute("tristate")||t.tristate||A,name:this.element.getAttribute("name")||t.name||y},this.options.onlabel===i&&(this.element.getAttribute("data-on")?(l(s,"data-on","data-onlabel"),this.options.onlabel=this.element.getAttribute("data-on")):t.on?(l(n,"on","onlabel"),this.options.onlabel=t.on):this.options.onlabel=o),this.options.offlabel===i&&(this.element.getAttribute("data-off")?(l(s,"data-off","data-offlabel"),this.options.offlabel=this.element.getAttribute("data-off")):t.off?(l(n,"off","offlabel"),this.options.offlabel=t.off):this.options.offlabel=r),this.render()}render(){function e(e){var t=window.getComputedStyle(e),e=e.offsetHeight,i=parseFloat(t.borderTopWidth);return e-parseFloat(t.borderBottomWidth)-i-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)}let t;switch(this.options.size){case"large":case"lg":t="btn-lg";break;case"small":case"sm":t="btn-sm";break;case"mini":case"xs":t="btn-xs";break;default:t=""}var i=document.createElement("span"),s=(i.setAttribute("class","btn btn-"+this.options.onstyle+" "+t),i.innerHTML=this.options.onlabel,this.options.ontitle&&i.setAttribute("title",this.options.ontitle),document.createElement("span")),n=(s.setAttribute("class","btn btn-"+this.options.offstyle+" "+t),s.innerHTML=this.options.offlabel,this.options.offtitle&&s.setAttribute("title",this.options.offtitle),document.createElement("span")),l=(n.setAttribute("class","toggle-handle btn "+t),document.createElement("div"));l.setAttribute("class","toggle-group"),l.appendChild(i),l.appendChild(s),l.appendChild(n);let o=document.createElement("div"),a=(o.setAttribute("class","toggle btn"),o.classList.add(this.element.checked?"btn-"+this.options.onstyle:"btn-"+this.options.offstyle),o.setAttribute("tabindex",this.options.tabindex),this.element.checked||o.classList.add("off"),this.options.size&&o.classList.add(t),this.options.style&&this.options.style.split(" ").forEach(e=>{o.classList.add(e)}),(this.element.disabled||this.element.readOnly)&&(o.classList.add("disabled"),o.setAttribute("disabled","disabled")),this.options.onvalue&&this.element.setAttribute("value",this.options.onvalue),null);this.options.offvalue&&((a=this.element.cloneNode()).setAttribute("value",this.options.offvalue),a.setAttribute("data-toggle","invert-toggle"),a.removeAttribute("id"),a.checked=!this.element.checked),this.element.parentElement.insertBefore(o,this.element),o.appendChild(this.element),a&&o.appendChild(a),o.appendChild(l),o.style.width=(this.options.width||Math.max(i.getBoundingClientRect().width,s.getBoundingClientRect().width)+n.getBoundingClientRect().width/2)+"px",o.style.height=(this.options.height||Math.max(i.getBoundingClientRect().height,s.getBoundingClientRect().height))+"px",i.classList.add("toggle-on"),s.classList.add("toggle-off"),this.options.height&&(i.style.lineHeight=e(i)+"px",s.style.lineHeight=e(s)+"px"),o.addEventListener("touchstart",e=>{this.#toggleActionPerformed(e)}),o.addEventListener("click",e=>{this.#toggleActionPerformed(e)}),o.addEventListener("keypress",e=>{" "==e.key&&this.#toggleActionPerformed(e)}),this.element.id&&document.querySelectorAll('label[for="'+this.element.id+'"]').forEach(e=>{e.addEventListener("touchstart",e=>{this.toggle(),o.focus()}),e.addEventListener("click",e=>{this.toggle(),o.focus()})}),this.ecmasToggle=o,this.invElement=a,this.element.bsToggle=this}#toggleActionPerformed(e){this.options.tristate?this.ecmasToggle.classList.contains("indeterminate")?(this.determinate(!0),this.toggle()):this.indeterminate():this.toggle(),e.preventDefault()}toggle(e=!1){this.element.checked?this.off(e):this.on(e)}on(e=!1){if(this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("btn-"+this.options.offstyle),this.ecmasToggle.classList.add("btn-"+this.options.onstyle),this.ecmasToggle.classList.remove("off"),this.element.checked=!0,this.invElement&&(this.invElement.checked=!1),e||this.trigger()}off(e=!1){if(this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("btn-"+this.options.onstyle),this.ecmasToggle.classList.add("btn-"+this.options.offstyle),this.ecmasToggle.classList.add("off"),this.element.checked=!1,this.invElement&&(this.invElement.checked=!0),e||this.trigger()}indeterminate(e=!1){if(!this.options.tristate||this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.add("indeterminate"),this.element.indeterminate=!0,this.element.removeAttribute("name"),this.invElement&&(this.invElement.indeterminate=!0),this.invElement&&this.invElement.removeAttribute("name"),e||this.trigger()}determinate(e=!1){if(!this.options.tristate||this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("indeterminate"),this.element.indeterminate=!1,this.options.name&&this.element.setAttribute("name",this.options.name),this.invElement&&(this.invElement.indeterminate=!1),this.invElement&&this.options.name&&this.invElement.setAttribute("name",this.options.name),e||this.trigger()}enable(){this.ecmasToggle.classList.remove("disabled"),this.ecmasToggle.removeAttribute("disabled"),this.element.removeAttribute("disabled"),this.element.removeAttribute("readonly"),this.invElement&&(this.invElement.removeAttribute("disabled"),this.invElement.removeAttribute("readonly"))}disable(){this.ecmasToggle.classList.add("disabled"),this.ecmasToggle.setAttribute("disabled",""),this.element.setAttribute("disabled",""),this.element.removeAttribute("readonly"),this.invElement&&(this.invElement.setAttribute("disabled",""),this.invElement.removeAttribute("readonly"))}readonly(){this.ecmasToggle.classList.add("disabled"),this.ecmasToggle.setAttribute("disabled",""),this.element.removeAttribute("disabled"),this.element.setAttribute("readonly",""),this.invElement&&(this.invElement.removeAttribute("disabled"),this.invElement.setAttribute("readonly",""))}update(e){this.element.disabled?this.disable():this.element.readOnly?this.readonly():this.enable(),this.element.checked?this.on(e):this.off(e)}trigger(e){e||this.element.dispatchEvent(new Event("change",{bubbles:!0}))}destroy(){this.ecmasToggle.parentNode.insertBefore(this.element,this.ecmasToggle),this.ecmasToggle.parentNode.removeChild(this.ecmasToggle),delete this.element.bsToggle,delete this.ecmasToggle}}Element.prototype.bootstrapToggle=function(e,t){var i=this.bsToggle||new s(this,e);e&&"string"==typeof e&&("toggle"==e.toLowerCase()?i.toggle(t):"on"==e.toLowerCase()?i.on(t):"off"==e.toLowerCase()?i.off(t):"indeterminate"==e.toLowerCase()?i.indeterminate(t):"determinate"==e.toLowerCase()?i.determinate(t):"enable"==e.toLowerCase()?i.enable():"disable"==e.toLowerCase()?i.disable():"readonly"==e.toLowerCase()?i.readonly():"destroy"==e.toLowerCase()&&i.destroy())},"undefined"!=typeof window&&(window.onload=function(){document.querySelectorAll('input[type=checkbox][data-toggle="toggle"]').forEach(function(e){e.bootstrapToggle()})}),"undefined"!=typeof module&&module.exports&&(module.exports=s)}();
-//# sourceMappingURL=bootstrap5-toggle.ecmas.min.js.map
\ No newline at end of file
+"use strict";!function(){class s{constructor(e,t){const i="BOOTSTRAP TOGGLE DEPRECATION CHECK -- a0Jhux0QySypjjs4tLtEo8xT2kx0AbYaq9K6mgNjWSs0HF0L8T8J0M0o3Kr7zkm7 --",s="attribute",n="option",l=function(e,t,i){console.warn(`Bootstrap Toggle deprecation warning: Using ${t} ${e} is deprected. Use ${i} instead.`)},o="On",a="primary",h=null,d=null,r="Off",m="secondary",g=null,b=null,c="",u="",f=null,p=null,v=0,A=!1,y=null;t=t||{},this.element=e,this.options={onlabel:this.element.getAttribute("data-onlabel")||t.onlabel||i||o,onstyle:this.element.getAttribute("data-onstyle")||t.onstyle||a,onvalue:this.element.getAttribute("value")||this.element.getAttribute("data-onvalue")||t.onvalue||h,ontitle:this.element.getAttribute("data-ontitle")||t.ontitle||this.element.getAttribute("title")||d,offlabel:this.element.getAttribute("data-offlabel")||t.offlabel||i||r,offstyle:this.element.getAttribute("data-offstyle")||t.offstyle||m,offvalue:this.element.getAttribute("data-offvalue")||t.offvalue||g,offtitle:this.element.getAttribute("data-offtitle")||t.offtitle||this.element.getAttribute("title")||b,size:this.element.getAttribute("data-size")||t.size||c,style:this.element.getAttribute("data-style")||t.style||u,width:this.element.getAttribute("data-width")||t.width||f,height:this.element.getAttribute("data-height")||t.height||p,tabindex:this.element.getAttribute("tabindex")||t.tabindex||v,tristate:this.element.hasAttribute("tristate")||t.tristate||A,name:this.element.getAttribute("name")||t.name||y},this.options.onlabel===i&&(this.element.getAttribute("data-on")?(l(s,"data-on","data-onlabel"),this.options.onlabel=this.element.getAttribute("data-on")):t.on?(l(n,"on","onlabel"),this.options.onlabel=t.on):this.options.onlabel=o),this.options.offlabel===i&&(this.element.getAttribute("data-off")?(l(s,"data-off","data-offlabel"),this.options.offlabel=this.element.getAttribute("data-off")):t.off?(l(n,"off","offlabel"),this.options.offlabel=t.off):this.options.offlabel=r),this.render()}render(){function e(e){var t=window.getComputedStyle(e),e=e.offsetHeight,i=parseFloat(t.borderTopWidth);return e-parseFloat(t.borderBottomWidth)-i-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)}let t;switch(this.options.size){case"large":case"lg":t="btn-lg";break;case"small":case"sm":t="btn-sm";break;case"mini":case"xs":t="btn-xs";break;default:t=""}var i=document.createElement("span"),s=(i.setAttribute("class","btn btn-"+this.options.onstyle+" "+t),i.innerHTML=this.options.onlabel,this.options.ontitle&&i.setAttribute("title",this.options.ontitle),document.createElement("span")),n=(s.setAttribute("class","btn btn-"+this.options.offstyle+" "+t),s.innerHTML=this.options.offlabel,this.options.offtitle&&s.setAttribute("title",this.options.offtitle),document.createElement("span")),l=(n.setAttribute("class","toggle-handle btn "+t),document.createElement("div"));l.setAttribute("class","toggle-group"),l.appendChild(i),l.appendChild(s),l.appendChild(n);let o=document.createElement("div"),a=(o.setAttribute("class","toggle btn"),o.classList.add(this.element.checked?"btn-"+this.options.onstyle:"btn-"+this.options.offstyle),o.setAttribute("tabindex",this.options.tabindex),this.element.checked||o.classList.add("off"),this.options.size&&o.classList.add(t),this.options.style&&this.options.style.split(" ").forEach(e=>{o.classList.add(e)}),(this.element.disabled||this.element.readOnly)&&(o.classList.add("disabled"),o.setAttribute("disabled","disabled")),this.options.onvalue&&this.element.setAttribute("value",this.options.onvalue),null);this.options.offvalue&&((a=this.element.cloneNode()).setAttribute("value",this.options.offvalue),a.setAttribute("data-toggle","invert-toggle"),a.removeAttribute("id"),a.checked=!this.element.checked),this.element.parentElement.insertBefore(o,this.element),o.appendChild(this.element),a&&o.appendChild(a),o.appendChild(l),o.style.width=(this.options.width||Math.max(i.getBoundingClientRect().width,s.getBoundingClientRect().width)+n.getBoundingClientRect().width/2)+"px",o.style.height=(this.options.height||Math.max(i.getBoundingClientRect().height,s.getBoundingClientRect().height))+"px",i.classList.add("toggle-on"),s.classList.add("toggle-off"),this.options.height&&(i.style.lineHeight=e(i)+"px",s.style.lineHeight=e(s)+"px"),o.addEventListener("touchstart",e=>{this.#toggleActionPerformed(e)}),o.addEventListener("click",e=>{this.#toggleActionPerformed(e)}),o.addEventListener("keypress",e=>{" "==e.key&&this.#toggleActionPerformed(e)}),this.element.id&&document.querySelectorAll('label[for="'+this.element.id+'"]').forEach(e=>{e.addEventListener("touchstart",e=>{this.toggle(),o.focus()}),e.addEventListener("click",e=>{this.toggle(),o.focus()})}),this.ecmasToggle=o,this.invElement=a,this.element.bsToggle=this}#toggleActionPerformed(e){this.options.tristate?this.ecmasToggle.classList.contains("indeterminate")?(this.determinate(!0),this.toggle()):this.indeterminate():this.toggle(),e.preventDefault()}toggle(e=!1){this.element.checked?this.off(e):this.on(e)}on(e=!1){if(this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("btn-"+this.options.offstyle),this.ecmasToggle.classList.add("btn-"+this.options.onstyle),this.ecmasToggle.classList.remove("off"),this.element.checked=!0,this.invElement&&(this.invElement.checked=!1),e||this.trigger()}off(e=!1){if(this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("btn-"+this.options.onstyle),this.ecmasToggle.classList.add("btn-"+this.options.offstyle),this.ecmasToggle.classList.add("off"),this.element.checked=!1,this.invElement&&(this.invElement.checked=!0),e||this.trigger()}indeterminate(e=!1){if(!this.options.tristate||this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.add("indeterminate"),this.element.indeterminate=!0,this.element.removeAttribute("name"),this.invElement&&(this.invElement.indeterminate=!0),this.invElement&&this.invElement.removeAttribute("name"),e||this.trigger()}determinate(e=!1){if(!this.options.tristate||this.element.disabled||this.element.readOnly)return!1;this.ecmasToggle.classList.remove("indeterminate"),this.element.indeterminate=!1,this.options.name&&this.element.setAttribute("name",this.options.name),this.invElement&&(this.invElement.indeterminate=!1),this.invElement&&this.options.name&&this.invElement.setAttribute("name",this.options.name),e||this.trigger()}enable(){this.ecmasToggle.classList.remove("disabled"),this.ecmasToggle.removeAttribute("disabled"),this.element.removeAttribute("disabled"),this.element.removeAttribute("readonly"),this.invElement&&(this.invElement.removeAttribute("disabled"),this.invElement.removeAttribute("readonly"))}disable(){this.ecmasToggle.classList.add("disabled"),this.ecmasToggle.setAttribute("disabled",""),this.element.setAttribute("disabled",""),this.element.removeAttribute("readonly"),this.invElement&&(this.invElement.setAttribute("disabled",""),this.invElement.removeAttribute("readonly"))}readonly(){this.ecmasToggle.classList.add("disabled"),this.ecmasToggle.setAttribute("disabled",""),this.element.removeAttribute("disabled"),this.element.setAttribute("readonly",""),this.invElement&&(this.invElement.removeAttribute("disabled"),this.invElement.setAttribute("readonly",""))}update(e){this.element.disabled?this.disable():this.element.readOnly?this.readonly():this.enable(),this.element.checked?this.on(e):this.off(e)}trigger(e){e||this.element.dispatchEvent(new Event("change",{bubbles:!0}))}destroy(){this.ecmasToggle.parentNode.insertBefore(this.element,this.ecmasToggle),this.ecmasToggle.parentNode.removeChild(this.ecmasToggle),delete this.element.bsToggle,delete this.ecmasToggle}}Element.prototype.bootstrapToggle=function(e,t){var i=this.bsToggle||new s(this,e);e&&"string"==typeof e&&("toggle"==e.toLowerCase()?i.toggle(t):"on"==e.toLowerCase()?i.on(t):"off"==e.toLowerCase()?i.off(t):"indeterminate"==e.toLowerCase()?i.indeterminate(t):"determinate"==e.toLowerCase()?i.determinate(t):"enable"==e.toLowerCase()?i.enable():"disable"==e.toLowerCase()?i.disable():"readonly"==e.toLowerCase()?i.readonly():"destroy"==e.toLowerCase()&&i.destroy())},"undefined"!=typeof window&&(window.onload=function(){document.querySelectorAll('input[type=checkbox][data-toggle="toggle"]').forEach(function(e){e.bootstrapToggle()})}),"undefined"!=typeof module&&module.exports&&(module.exports=s)}();
\ No newline at end of file