diff --git a/css/export.css b/css/export.css index 786d976..d183f5d 100644 --- a/css/export.css +++ b/css/export.css @@ -8,6 +8,10 @@ body{ overflow-x: hidden; } +body * { + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + #passky-logo{ background-color: #e6f5ff; } diff --git a/css/index.css b/css/index.css index 808b457..ef34f51 100644 --- a/css/index.css +++ b/css/index.css @@ -2,6 +2,10 @@ body{ min-width: 300px; } +body * { + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + input::-webkit-outer-spin-button, input::-webkit-inner-spin-button{ -webkit-appearance: none; diff --git a/css/passwords.css b/css/passwords.css index 27bdbe8..cc155bc 100644 --- a/css/passwords.css +++ b/css/passwords.css @@ -8,6 +8,10 @@ body{ overflow-x: hidden; } +body * { + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + input::-webkit-outer-spin-button, input::-webkit-inner-spin-button{ -webkit-appearance: none; diff --git a/css/settings.css b/css/settings.css index 24f947e..48f2b00 100644 --- a/css/settings.css +++ b/css/settings.css @@ -8,6 +8,10 @@ body{ overflow-x: hidden; } +body * { + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + select{ -webkit-appearance: none; } \ No newline at end of file diff --git a/css/tailwind.min.css b/css/tailwind.min.css index f3517b8..aec6c0d 100644 --- a/css/tailwind.min.css +++ b/css/tailwind.min.css @@ -1 +1 @@ -/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.left-0{left:0}.top-0{top:0}.left-\[75\%\]{left:75%}.isolate{isolation:isolate}.z-10{z-index:10}.z-0{z-index:0}.col-span-1{grid-column:span 1/span 1}.float-right{float:right}.m-8{margin:2rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-6{margin-top:1.5rem}.-mt-px{margin-top:-1px}.-mr-px{margin-right:-1px}.ml-3{margin-left:.75rem}.mt-3{margin-top:.75rem}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.mt-8{margin-top:2rem}.-ml-px{margin-left:-1px}.mb-8{margin-bottom:2rem}.ml-4{margin-left:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.h-16{height:4rem}.h-8{height:2rem}.h-6{height:1.5rem}.h-24{height:6rem}.h-screen{height:100vh}.h-12{height:3rem}.h-20{height:5rem}.h-5{height:1.25rem}.h-1\.5{height:.375rem}.h-1{height:.25rem}.h-4{height:1rem}.h-10{height:2.5rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-auto{width:auto}.w-6{width:1.5rem}.w-24{width:6rem}.w-0{width:0}.w-full{width:100%}.w-12{width:3rem}.w-5{width:1.25rem}.w-\[1px\]{width:1px}.w-4{width:1rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.min-w-full{min-width:100%}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-lg{max-width:32rem}.max-w-xs{max-width:20rem}.max-w-\[16rem\]{max-width:16rem}.flex-1{flex:1 1 0%}.flex-initial{flex:0 1 auto}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-0,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[spin_0\.7s_ease-in-out\]{animation:spin .7s ease-in-out}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-6{gap:1.5rem}.gap-5{gap:1.25rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.-space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(-1px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(-1px*var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.-space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*var(--tw-space-x-reverse));margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-none{border-radius:0}.rounded{border-radius:.25rem}.rounded-b-md{border-bottom-right-radius:.375rem}.rounded-b-md,.rounded-l-md{border-bottom-left-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem}.rounded-r-md{border-bottom-right-radius:.375rem}.rounded-r-md,.rounded-t-md{border-top-right-radius:.375rem}.rounded-t-md,.rounded-tl-md{border-top-left-radius:.375rem}.rounded-tr-md{border-top-right-radius:.375rem}.rounded-bl-md{border-bottom-left-radius:.375rem}.rounded-br-md{border-bottom-right-radius:.375rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-transparent{border-color:#0000}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-red-500{--tw-gradient-from:#ef4444;--tw-gradient-to:#ef444400;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-green-500{--tw-gradient-to:#22c55e}.p-2{padding:.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pr-4{padding-right:1rem}.pt-5{padding-top:1.25rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.tracking-tight{letter-spacing:-.025em}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.focus-within\:z-10:focus-within{z-index:10}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:z-10:focus{z-index:10}.focus\:z-20:focus{z-index:20}.focus\:border-indigo-500:focus{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-indigo-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}@media (min-width:640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:ml-4{margin-left:1rem}.sm\:mt-4{margin-top:1rem}.sm\:ml-10{margin-left:2.5rem}.sm\:ml-3{margin-left:.75rem}.sm\:mt-px{margin-top:1px}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-screen{height:100vh}.sm\:h-10{height:2.5rem}.sm\:w-full{width:100%}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-\[21rem\]{max-width:21rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:items-start{align-items:flex-start}.sm\:rounded-lg{border-radius:.5rem}.sm\:border-l{border-left-width:1px}.sm\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.sm\:border-transparent{border-color:#0000}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pl-4{padding-left:1rem}.sm\:pt-2{padding-top:.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:block{display:block}.md\:grid{display:grid}.md\:max-w-\[27rem\]{max-width:27rem}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:place-items-center{place-items:center}}@media (min-width:1024px){.lg\:ml-6{margin-left:1.5rem}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:max-w-\[35rem\]{max-width:35rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:justify-end{justify-content:flex-end}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:px-0{padding-left:0;padding-right:0}}@media (min-width:1280px){.xl\:max-w-\[45rem\]{max-width:45rem}}@media (min-width:1536px){.\32xl\:max-w-\[45rem\]{max-width:45rem}} \ No newline at end of file +/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.left-0{left:0}.top-0{top:0}.left-\[75\%\]{left:75%}.isolate{isolation:isolate}.z-10{z-index:10}.z-0{z-index:0}.col-span-1{grid-column:span 1/span 1}.float-right{float:right}.m-8{margin:2rem}.m-auto{margin:auto}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-6{margin-top:1.5rem}.-mt-px{margin-top:-1px}.-mr-px{margin-right:-1px}.ml-3{margin-left:.75rem}.mt-3{margin-top:.75rem}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.mt-8{margin-top:2rem}.-ml-px{margin-left:-1px}.mb-8{margin-bottom:2rem}.ml-4{margin-left:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.h-16{height:4rem}.h-8{height:2rem}.h-6{height:1.5rem}.h-24{height:6rem}.h-screen{height:100vh}.h-12{height:3rem}.h-20{height:5rem}.h-5{height:1.25rem}.h-1\.5{height:.375rem}.h-1{height:.25rem}.h-4{height:1rem}.h-10{height:2.5rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-auto{width:auto}.w-6{width:1.5rem}.w-24{width:6rem}.w-0{width:0}.w-full{width:100%}.w-12{width:3rem}.w-5{width:1.25rem}.w-\[1px\]{width:1px}.w-4{width:1rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-16{width:4rem}.min-w-full{min-width:100%}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-lg{max-width:32rem}.max-w-xs{max-width:20rem}.max-w-\[14rem\]{max-width:14rem}.flex-1{flex:1 1 0%}.flex-initial{flex:0 1 auto}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-0,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[spin_0\.7s_ease-in-out\]{animation:spin .7s ease-in-out}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-6{gap:1.5rem}.gap-5{gap:1.25rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.-space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(-1px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(-1px*var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.-space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*var(--tw-space-x-reverse));margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-none{border-radius:0}.rounded{border-radius:.25rem}.rounded-b-md{border-bottom-right-radius:.375rem}.rounded-b-md,.rounded-l-md{border-bottom-left-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem}.rounded-r-md{border-bottom-right-radius:.375rem}.rounded-r-md,.rounded-t-md{border-top-right-radius:.375rem}.rounded-t-md,.rounded-tl-md{border-top-left-radius:.375rem}.rounded-tr-md{border-top-right-radius:.375rem}.rounded-bl-md{border-bottom-left-radius:.375rem}.rounded-br-md{border-bottom-right-radius:.375rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-transparent{border-color:#0000}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-red-500{--tw-gradient-from:#ef4444;--tw-gradient-to:#ef444400;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-green-500{--tw-gradient-to:#22c55e}.p-2{padding:.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pr-4{padding-right:1rem}.pt-5{padding-top:1.25rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.tracking-tight{letter-spacing:-.025em}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.focus-within\:z-10:focus-within{z-index:10}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:z-10:focus{z-index:10}.focus\:z-20:focus{z-index:20}.focus\:border-indigo-500:focus{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-indigo-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}@media (min-width:640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:ml-4{margin-left:1rem}.sm\:mt-4{margin-top:1rem}.sm\:ml-10{margin-left:2.5rem}.sm\:ml-3{margin-left:.75rem}.sm\:mt-px{margin-top:1px}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-screen{height:100vh}.sm\:h-10{height:2.5rem}.sm\:w-full{width:100%}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-\[16rem\]{max-width:16rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:items-start{align-items:flex-start}.sm\:rounded-lg{border-radius:.5rem}.sm\:border-l{border-left-width:1px}.sm\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.sm\:border-transparent{border-color:#0000}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pl-4{padding-left:1rem}.sm\:pt-2{padding-top:.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:block{display:block}.md\:grid{display:grid}.md\:max-w-\[24rem\]{max-width:24rem}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:place-items-center{place-items:center}}@media (min-width:1024px){.lg\:ml-6{margin-left:1.5rem}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:max-w-\[34rem\]{max-width:34rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:justify-end{justify-content:flex-end}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:px-0{padding-left:0;padding-right:0}}@media (min-width:1280px){.xl\:max-w-\[50rem\]{max-width:50rem}}@media (min-width:1536px){.\32xl\:max-w-\[54rem\]{max-width:54rem}} \ No newline at end of file diff --git a/index.html b/index.html index f8ba755..67fb4f4 100644 --- a/index.html +++ b/index.html @@ -22,7 +22,7 @@
- Passky +
diff --git a/js/export.js b/js/export.js index 939d8b4..b507bdb 100644 --- a/js/export.js +++ b/js/export.js @@ -100,12 +100,12 @@ function import_bitwarden(){ let ido = JSON.parse(imported_data); - if(ido["encrypted"] == null || typeof(ido["encrypted"]) == 'undefined' || ido["encrypted"] == true){ + if(typeof(ido["encrypted"]) == 'undefined' || ido["encrypted"] == null || ido["encrypted"] == true){ changeDialog(2, 1, 2); return; } - if(ido["items"] == null || typeof(ido["items"]) == 'undefined'){ + if(typeof(ido["items"]) == 'undefined' || ido["items"] == null){ changeDialog(2, 1, 2); return; } @@ -118,18 +118,22 @@ function import_bitwarden(){ if(typeof(ido["items"][i]["login"]["uris"]) != 'undefined' && typeof(ido["items"][i]["login"]["uris"][0]) != 'undefined' && typeof(ido["items"][i]["login"]["uris"][0]["uri"]) != 'undefined'){ website = ido["items"][i]["login"]["uris"][0]["uri"]; } - + if(typeof(website) == 'undefined' || website == null) continue; website = website.replace("http://", "").replace("https://", "").replace("www.", "").replace(" ", "-"); if(website.slice(-1) == '/') website = website.slice(0, -1); let username = ido["items"][i]["login"]["username"]; let password = ido["items"][i]["login"]["password"]; let message = ido["items"][i]["login"]["notes"]; + if(typeof(username) == 'undefined' || username == null) continue; + if(typeof(password) == 'undefined' || password == null) continue; + if(typeof(message) == 'undefined' || message == null) message = ""; + passwords[j] = {}; - passwords[j]["website"] = website; - passwords[j]["username"] = username; - passwords[j]["password"] = password; - passwords[j]["message"] = message; + passwords[j]["website"] = website.toString(); + passwords[j]["username"] = username.toString(); + passwords[j]["password"] = password.toString(); + passwords[j]["message"] = message.toString(); j++; } @@ -341,7 +345,9 @@ function import_csv(id){ let passwords = []; for(let i = 1, j = 0; i < ido.length; i++){ - let website = ido[i][websiteID].replace("http://", "").replace("https://", "").replace("www.", "").replace(" ", "-"); + let website = ido[i][websiteID]; + if(typeof(website) == 'undefined' || website == null) website = ido[i][titleID]; + website = website.replace("http://", "").replace("https://", "").replace("www.", "").replace(" ", "-"); if(website.slice(-1) == '/') website = website.slice(0, -1); if(!Validate.pWebsite(website)){ @@ -353,11 +359,15 @@ function import_csv(id){ let password = ido[i][passwordID]; let message = ido[i][messageID]; + if(typeof(username) == 'undefined' || username == null) continue; + if(typeof(password) == 'undefined' || password == null) continue; + if(typeof(message) == 'undefined' || message == null) message = ""; + passwords[j] = {}; - passwords[j]["website"] = website; - passwords[j]["username"] = username; - passwords[j]["password"] = password; - passwords[j]["message"] = message; + passwords[j]["website"] = website.toString(); + passwords[j]["username"] = username.toString(); + passwords[j]["password"] = password.toString(); + passwords[j]["message"] = message.toString(); j++; } @@ -373,7 +383,7 @@ function import_data(passwords, encrypted = false){ showDialogButtons(); - if(typeof response['error'] === 'undefined'){ + if(typeof(response['error']) == 'undefined'){ changeDialog(0, lang["server_unreachable"]); return; } diff --git a/js/login.js b/js/login.js index 40aff08..bae87b4 100644 --- a/js/login.js +++ b/js/login.js @@ -25,6 +25,8 @@ loadData().then(() => { }); +let debugMode = 0; + document.getElementById("login_form").addEventListener("submit", e => { e.preventDefault(); login_check(); @@ -43,6 +45,15 @@ document.getElementById("server-picker").addEventListener("click", () => { toggleServerPicker('passky-server', 'passky-server2', 'server-picker'); }); +document.getElementById('passky-logo').addEventListener('click', () => { + debugMode++; + if(debugMode >= 5){ + debugMode = 0; + changeDialog(5); + show("dialog"); + } +}); + function toggleServerPicker(id, id2, buttonID){ if(isfHidden(id)){ fhide(id2); @@ -130,6 +141,25 @@ function changeDialog(style, text){ hideDialogButtons(); break; + case 5: + //Debug dialog + document.getElementById('dialog-icon').className = "mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-green-100 sm:mx-0 sm:h-10 sm:w-10"; + document.getElementById('dialog-icon').innerHTML = ""; + + document.getElementById('dialog-title').innerText = "Debug"; + + document.getElementById('dialog-text').innerText = getDebugInfo(); + + document.getElementById('dialog-button-cancel').style.display = 'initial'; + document.getElementById("dialog-button-cancel").onclick = () => hide("dialog"); + + document.getElementById('dialog-button').className = "primaryButton inline-flex justify-center w-full rounded-md border border-transparent shadow-sm px-4 py-2 text-base font-medium focus:outline-none sm:w-auto sm:text-sm"; + document.getElementById('dialog-button').innerText = lang["copy"]; + document.getElementById('dialog-button').onclick = () => { + copyToClipboard(getDebugInfo()); + hide('dialog'); + } + break; } } @@ -267,4 +297,16 @@ function forget_username(){ break; } }); +} + +function getDebugInfo(){ + let info = "Client Version: 8.0.1"; + if(readData('url') != null) info += "\nServer: " + readData('url'); + if(readData('username') != null) info += "\nUsername: " + readData('username'); + info += "\nTheme: " + readData('theme'); + info += "\nLanguage: " + readData('lang'); + info += "\nSession Duration: " + readData('sessionDuration'); + info += "\nWorkers Supported: " + !!window.Worker; + info += "\nUser Agent: " + navigator.userAgent; + return info; } \ No newline at end of file diff --git a/js/passwords.js b/js/passwords.js index 72ee36f..771853f 100644 --- a/js/passwords.js +++ b/js/passwords.js @@ -94,25 +94,25 @@ loadData().then(() => { }else{ html_passwords += ""; } - html_passwords += "
"; + html_passwords += "
"; //Url html_passwords += website; - html_passwords += "
"; + html_passwords += "
"; //Username html_passwords += username; - html_passwords += "
"; + html_passwords += "
"; //Copy username html_passwords += ""; - html_passwords += ""; + html_passwords += ""; //Copy password html_passwords += ""; - html_passwords += ""; + html_passwords += ""; //Edit Password html_passwords += ""; - html_passwords += ""; + html_passwords += ""; //Delete Password html_passwords += ""; - html_passwords += ""; + html_passwords += ""; } document.getElementById("table-data").innerHTML = html_passwords; @@ -192,7 +192,27 @@ document.getElementById("signout-link").addEventListener("click", () => { function updateGeneratedPassword(upper, number, special) { let length = document.getElementById('btn-length').value; - document.getElementById('generated-password').innerText = PasswordGenerator.generate(length, upper, number, special); + let password = PasswordGenerator.generate(length, upper, number, special); + let entropy = 100 - (PasswordEntropy.calculate(password)); + if(entropy <= 1) entropy = 0; + + document.getElementById('pass-length').innerText = length; + document.getElementById("entropy").style.width = entropy + "%"; + document.getElementById('generated-password').value = password; +} + +function togglePasswordHider(){ + try{ + let pg = document.getElementById('generated-password'); + let ph = document.getElementById('password-hider'); + if(pg.type === 'password'){ + pg.type = 'text'; + ph.innerHTML = ""; + }else{ + pg.type = 'password'; + ph.innerHTML = ""; + } + }catch{} } function changeDialog(style, text) { @@ -268,7 +288,7 @@ function changeDialog(style, text) { document.getElementById('dialog-title').innerText = lang["password_generator"]; - document.getElementById('dialog-text').innerHTML = "
A-Z
0-9
!@#$%?&*
" + lang["length"] + "
"; + document.getElementById('dialog-text').innerHTML = "
" + lang["length"] + "20
A-Z
0-9
!@#$%?&*
"; document.getElementById('dialog-button').className = "primaryButton inline-flex justify-center w-full rounded-md border border-transparent shadow-sm px-4 py-2 text-base font-medium focus:outline-none sm:w-auto sm:text-sm"; @@ -295,17 +315,17 @@ function changeDialog(style, text) { if (pg_data[0] == null) { document.getElementById('dialog-button').innerText = lang["copy"]; - document.getElementById('dialog-button').onclick = () => copyToClipboard(document.getElementById('generated-password').innerText); + document.getElementById('dialog-button').onclick = () => copyToClipboard(document.getElementById('generated-password').value); } else if (pg_data[0] == "-1") { document.getElementById('dialog-button').innerText = lang["use"]; document.getElementById('dialog-button').onclick = () => { - text = pg_data[0] + ";;;" + pg_data[1] + ";;;" + pg_data[2] + ";;;" + document.getElementById('generated-password').innerText + ";;;" + pg_data[4]; + text = pg_data[0] + ";;;" + pg_data[1] + ";;;" + pg_data[2] + ";;;" + document.getElementById('generated-password').value + ";;;" + pg_data[4]; changeDialog(0, text); } } else { document.getElementById('dialog-button').innerText = lang["use"]; document.getElementById('dialog-button').onclick = () => { - text = pg_data[0] + ";;;" + pg_data[1] + ";;;" + pg_data[2] + ";;;" + document.getElementById('generated-password').innerText + ";;;" + pg_data[4]; + text = pg_data[0] + ";;;" + pg_data[1] + ";;;" + pg_data[2] + ";;;" + document.getElementById('generated-password').value + ";;;" + pg_data[4]; changeDialog(4, text); } } @@ -315,6 +335,8 @@ function changeDialog(style, text) { animateButton('btn-upper', btn_upper_enabled); animateButton('btn-numbers', btn_numbers_enabled); animateButton('btn-special', btn_special_enabled); + + document.getElementById('password-hider').onclick = () => togglePasswordHider(); break; case 6: //Delete password dialog diff --git a/lang/es-ES/lang.json b/lang/es-ES/lang.json index 1199dc1..877a447 100644 --- a/lang/es-ES/lang.json +++ b/lang/es-ES/lang.json @@ -27,8 +27,8 @@ "26": "La autenticación de dos factores ya está activada.", "27": "La autenticación de dos factores no está activada.", "28": "El correo electrónico no está activado en este servidor.", - "29": "License key is invalid!", - "30": "This license key has already been used.", + "29": "¡La clave de licencia no es válida!", + "30": "Esta clave de licencia ya se ha utilizado.", "300": "¡El sitio web es demasiado largo!", "301": "¡El nombre de usuario es demasiado largo!", "302": "¡La contraseña es demasiado larga!", @@ -100,9 +100,9 @@ "password_generator": "Generar contraseña", "delete_password": "Eliminar contraseña", "delete_password_confirmation": "¿Esta seguro que desea eliminar su contraseña? Su contraseña será eliminada permanentemente del servidor. Esta acción NO puede revertirse.", - "delete_passwords": "Delete passwords", - "delete_passwords_info": "Deleted passwords can not be recovered.", - "delete_passwords_confirmation": "Are you sure you want to delete your passwords? Your passwords will be permanently removed from the server. This action can NOT be undone.", + "delete_passwords": "Eliminar contraseñas", + "delete_passwords_info": "Las contraseñas eliminadas no se pueden recuperar.", + "delete_passwords_confirmation": "¿Está seguro de que desea eliminar sus contraseñas? Sus contraseñas se eliminarán permanentemente del servidor. Esta acción no se puede deshacer.", "delete_account": "Eliminar cuenta", "delete_account_info": "Una vez eliminada su cuenta, perderá toda la información asociada a ella.", "delete_account_confirmation": "¿Está seguro que desea eliminar su cuenta? Toda su información será eliminada permanentemente del servidor. Esta acción NO puede revertirse.", @@ -131,28 +131,28 @@ "total_passwords": "Total de contraseñas", "decryption_time": "Tiempo de descifrado", "client_version": "Versión del cliente", - "upgrade_account": "Upgrade Account", - "validate": "Validate", - "license_key": "License Key", - "account": "Account", - "expiration": "Expiration", - "free": "Free", - "premium": "Premium", - "never": "Never", - "license_added_successfully": "Your account has been successfully upgraded to Premium and it will last until {date}.", - "please_wait": "PLEASE WAIT", - "saving_password": "Saving password...", - "changing_password": "Changing password...", - "deleting_password": "Deleting password...", - "deleting_passwords": "Deleting passwords...", - "deleting_account": "Deleting account...", - "signing_in": "Signing in...", - "signing_up": "Signing up...", - "sending_email": "Sending email...", - "enabling_2fa": "Enabling 2FA...", - "disabling_2fa": "Disabling 2FA...", - "adding_yubikey": "Adding Yubikey...", - "removing_yubikey": "Removing Yubikey...", - "validating_license": "Validating license key...", - "decrypting_passwords": "Decrypting passwords..." + "upgrade_account": "Actualizar cuenta", + "validate": "Validar", + "license_key": "Clave de licencia", + "account": "Cuenta", + "expiration": "Vencimiento", + "free": "Libre", + "premium": "Prémium", + "never": "Nunca", + "license_added_successfully": "Su cuenta se ha actualizado con éxito a Prémium y durará hasta él {date}.", + "please_wait": "ESPERE POR FAVOR", + "saving_password": "Guardando contraseña...", + "changing_password": "Cambiando contraseña...", + "deleting_password": "Eliminando contraseña...", + "deleting_passwords": "Eliminando contraseñas...", + "deleting_account": "Eliminando cuenta...", + "signing_in": "Iniciando sesión...", + "signing_up": "Registrarse...", + "sending_email": "Enviando correo electrónico...", + "enabling_2fa": "Habilitando 2FA...", + "disabling_2fa": "Deshabilitando 2FA...", + "adding_yubikey": "Agregando Yubikey...", + "removing_yubikey": "Eliminando Yubikey...", + "validating_license": "Validando clave de licencia...", + "decrypting_passwords": "Descifrando contraseñas..." } \ No newline at end of file diff --git a/lang/hu/lang.json b/lang/hu/lang.json index 626b419..eaf7680 100644 --- a/lang/hu/lang.json +++ b/lang/hu/lang.json @@ -4,7 +4,7 @@ "2": "A jelszó helytelen!", "3": "Valami hiba történt az adatok adatbázisba való beillesztése közben!", "4": "A felhasználónév már regisztrálva van!", - "5": "Your password is too weak!", + "5": "A jelszava túl gyenge!", "6": "Az e-mail érvénytelen!", "7": "Felhasználónév nem létezik!", "8": "Nincs elmentett jelszava.", @@ -16,143 +16,143 @@ "14": "A JSON érvénytelen!", "15": "Ez a szerver nem tud több felhasználót fogadni!", "16": "Elérted a maximum jelszók számát!", - "17": "Account with this email doesn't exist!", - "18": "Message is too long!", - "19": "OTP is incorrect!", - "20": "You can only link up to 5 Yubikeys!", - "21": "This Yubikey is already linked with your account.", - "23": "Provided Yubikey OTP is invalid!", - "24": "Yubikey with provided ID isn't linked to your account.", - "25": "The token is incorrect or it has expired. Please Sign in again.", - "26": "Two-factor authentication is already enabled.", - "27": "Two-factor authentication is not enabled.", - "28": "Mail is not enabled on this server.", - "29": "License key is invalid!", - "30": "This license key has already been used.", - "300": "Website is too long!", - "301": "Username is too long!", - "302": "Password is too long!", - "303": "Message is too long!", - "400": "Action was not provided in GET!", - "401": "Action is invalid!", - "403": "You didn't provide all required values in POST.", + "17": "Ehhez az email címhez nem tartozik fiók!", + "18": "Az üzenet túl hosszú!", + "19": "Az egyszeri jelszó helytelen!", + "20": "Legfeljebb 5 Yubikeyt csatolhat a fiókjához!", + "21": "Ez a Yubikey már hozzá volt adva a fiókjához.", + "23": "A megadott Yubikey egyszeri jelszó helytelen!", + "24": "A Yubikey a megadott ID-vel nincs a fiókjához csatolva.", + "25": "A bejelentkezési token helytelen vagy expirált. Kérjük, jelentkezzen be újra.", + "26": "A kétlépcsős hitelesítés már be van kapcsolva.", + "27": "Kétlépcsős hitelesítés kikapcsolva.", + "28": "A mail ki van kapcsolva ezen a szerveren.", + "29": "Licenc kulcs érvénytelen!", + "30": "Ez a licenc kúlcs már használt.", + "300": "A webcím túl hosszú!", + "301": "A felhasználónév túl hosszú!", + "302": "A jelszó túl hosszú!", + "303": "Az üzenet túl hosszú!", + "400": "GET kérelem művelet nélkül!", + "401": "Művelet érvénytelen!", + "403": "Hiányzó szükséges értékek a POST kérelemben.", "404": "Nem lehet csatlakozni az API hoz.", - "429": "You are sending too many requests! Please wait before executing this action again.", - "505": "Something went wrong while connecting to the database!", - "506": "Something went wrong while connecting to the mail server!", - "999": "You do NOT have permission to use this endpoint.", + "429": "Túl sok kérvény! Kérjük, várjon mielőtt megismételi ezt a műveletet.", + "505": "Valami hiba történt az adatbázishoz való csatlakozás közben!", + "506": "Valami hiba történt a mail szerverhez való csatlakozás közben!", + "999": "Nincs engedélye ennek a végpont használatához.", "server": "Kiszolgáló", - "website": "Website", - "username": "Username", + "website": "Weboldal", + "username": "Felhasználónév", "email": "Email", - "password": "Password", + "password": "Jelszó", "signin": "Bejelentkezés", "signup": "Regisztráció", "signout": "Kijelentkezés", - "terms_of_service": "Terms of Service", - "okay": "Okay", - "add": "Add", + "terms_of_service": "Felhasználási feltételek", + "okay": "Oké", + "add": "Hozzáadás", "change": "Változtatás", - "use": "Use", - "copy": "Copy", - "send": "Send", - "cancel": "Cancel", - "try_again": "Try again", - "success": "SUCCESS", - "error": "ERROR", - "enable": "Enable", - "disable": "Disable", - "remove": "Remove", - "delete": "Delete", - "import": "Import", - "importing": "Importing", - "importing_passwords": "Importing {amount} passwords...", - "import_from": "Import from {name}", - "import_paste": "Paste {type} data from {name} password manager.", - "import_invalid": "The data in your import is invalid!", - "import_success": "{success_number} passwords imported successfully!", - "import_errors": "{success_number} passwords imported successfully, but {error_number} passwords NOT imported!", - "backup": "Backup", - "export": "Export", - "passwords": "Passwords", - "import_export": "Import & Export", - "language": "Language", - "theme": "Theme", - "search": "Search", - "length": "Length", - "settings": "Settings", - "minutes": "minutes", - "optional_note": "Optional Note", - "session_duration": "Session Duration", - "website_icons": "Website Icons", - "website_icons_info": "Enabling website icons might reduce your privacy.", - "only_browser_extension": "Only available in the browser extension.", - "missing_language": "Missing language? Translate it on {name}.", - "forgot_username": "Forgot username?", - "email_sent_success": "Email sent successfully", - "add_password": "Add password", - "add_password_success": "Password has been added successfully", - "change_password_success": "Password has been changed successfully", - "remove_password_success": "Password has been removed successfully", - "copy_password_success": "Password has been copied successfully", - "copy_username_success": "Username has been copied successfully", - "edit_password": "Change password", - "password_generator": "Generate password", - "delete_password": "Delete password", - "delete_password_confirmation": "Are you sure you want to delete your password? Your password will be permanently removed from the server. This action can NOT be undone.", - "delete_passwords": "Delete passwords", - "delete_passwords_info": "Deleted passwords can not be recovered.", - "delete_passwords_confirmation": "Are you sure you want to delete your passwords? Your passwords will be permanently removed from the server. This action can NOT be undone.", - "delete_account": "Delete account", - "delete_account_info": "Once you delete your account, you will lose all data associated with it.", - "delete_account_confirmation": "Are you sure you want to delete your account? All of your data will be permanently removed from the server. This action can NOT be undone.", - "url_invalid": "Server url is invalid!", - "server_unreachable": "Server is unreachable!", - "registration_completed": "Registration is completed!", - "dont_have_account_link": "Don't have an account yet? Sign up here.", - "already_have_account_link": "Already registered? Sign in here.", - "username_validation": "Username should be between 2 and 100 characters long!", - "password_validation": "Password should be between 2 and 100 characters long!", - "website_validation": "Website should be between 2 and 100 characters long!", - "otp_contains": "OTP contains 6 numbers.", - "otp_not_setup": "If you did not setup 2FA on your account leave this field empty.", - "enable_2fa_question": "Are you sure you want to enable Two-Factor Authentication?", - "disable_2fa_question": "Are you sure you want to disable Two-Factor Authentication?", - "totp_applications": "Before enabling, make sure you have installed one of the following applications on your phone:", - "scan_qr_code": "Scan QR Code:", - "or_enter_key_manually": "or enter key manually:", - "backup_codes": "Backup codes:", - "yubikey_added_successfully": "Your Yubikey has been added successfully", - "yubikey_removed_successfully": "Your Yubikey has been removed successfully", - "yubikey_insert_device": "1. Insert your Yubikey into the computer", - "yubikey_focus_input": "2. Click on OTP Input", - "yubikey_press_button": "3. Press the gold button located on your Yubikey", - "auto_search": "Auto Search", - "total_passwords": "Total Passwords", - "decryption_time": "Decryption Time", - "client_version": "Client Version", - "upgrade_account": "Upgrade Account", - "validate": "Validate", - "license_key": "License Key", - "account": "Account", - "expiration": "Expiration", - "free": "Free", - "premium": "Premium", - "never": "Never", - "license_added_successfully": "Your account has been successfully upgraded to Premium and it will last until {date}.", - "please_wait": "PLEASE WAIT", - "saving_password": "Saving password...", - "changing_password": "Changing password...", - "deleting_password": "Deleting password...", - "deleting_passwords": "Deleting passwords...", - "deleting_account": "Deleting account...", - "signing_in": "Signing in...", - "signing_up": "Signing up...", - "sending_email": "Sending email...", - "enabling_2fa": "Enabling 2FA...", - "disabling_2fa": "Disabling 2FA...", - "adding_yubikey": "Adding Yubikey...", - "removing_yubikey": "Removing Yubikey...", - "validating_license": "Validating license key...", - "decrypting_passwords": "Decrypting passwords..." + "use": "Használás", + "copy": "Másolás", + "send": "Küldés", + "cancel": "Mégsem", + "try_again": "Újrapróbálás", + "success": "SIKER", + "error": "HIBA", + "enable": "Bekapcsolás", + "disable": "Kikapcsolás", + "remove": "Eltávolítás", + "delete": "Törlés", + "import": "Importálás", + "importing": "Importálás", + "importing_passwords": "{amount} jelszó importálása folyamatban...", + "import_from": "Importálás {name}-ból/-ből", + "import_paste": "Kérjük illesztje be a(z) {type} adatokat a {name} jelszókezelőből.", + "import_invalid": "Az importált adatok helytelenek!", + "import_success": "{success_number} jelszó sikeresen importálva!", + "import_errors": "{success_number} jelszó sikeresen importálva, de sajnos {error_number} jelszavat NEM sikerült importálni!", + "backup": "Biztonsági mentés", + "export": "Exportálás", + "passwords": "Jelszavak", + "import_export": "Importálás & Exportálás", + "language": "Nyelv", + "theme": "Téma", + "search": "Keresés", + "length": "Hossz", + "settings": "Beállítások", + "minutes": "perc", + "optional_note": "Opcionális megjegyzés", + "session_duration": "Munkamenet időtartama", + "website_icons": "Weboldal ikonok", + "website_icons_info": "A weboldal ikonok bekapcsolása gyengítheti az adatai biztonságát.", + "only_browser_extension": "Kizárólag a böngésző bővítményben elérhető.", + "missing_language": "Hiányzó nyelv? Fordítsa le a {name} segítségével.", + "forgot_username": "Elfelejtett felhasználónév?", + "email_sent_success": "E-mail sikeresen elküldve", + "add_password": "Jelszó hozzáadása", + "add_password_success": "A jelszó sikeresen hozzáadva", + "change_password_success": "A jelszó sikeresen módosítva", + "remove_password_success": "A jelszó sikeresen eltávolítva", + "copy_password_success": "A jelszó sikeresen másolva", + "copy_username_success": "A felhasználónév sikeresen másolva", + "edit_password": "Jelszó módosítása", + "password_generator": "Jelszó generálás", + "delete_password": "Jelszó törlése", + "delete_password_confirmation": "Biztos, hogy törölni szeretné a jelszavát? A jelszava véglegesen törölve lesz a szerverről. Ez a művelet NEM visszavonható.", + "delete_passwords": "Jelszavak törlése", + "delete_passwords_info": "Törölt jelszavakat nem lehet helyreállítani.", + "delete_passwords_confirmation": "Biztos, hogy törölni szeretné a jelszavait? A jelszavai véglegesen törölve lesznek a szerverről. Ez a művelet NEM visszavonható.", + "delete_account": "Fiók törlése", + "delete_account_info": "Miután törli fiókját, az összes kapcsolódó adat elveszik.", + "delete_account_confirmation": "Biztos, hogy törölni szeretné a fiókját? Az összes adata véglegesen törölve lesz a szerverről. Ez a művelet NEM visszavonható.", + "url_invalid": "A szerver url helytelen!", + "server_unreachable": "A szerver nem elérhető!", + "registration_completed": "Regisztráció befejezve!", + "dont_have_account_link": "Még nincs fiókja? Itt regisztráljon.", + "already_have_account_link": "Már van fiókja? Jelentkezzen be itt.", + "username_validation": "A felhasználónévnek 2 és 100 karakter között kell lennie!", + "password_validation": "A jelszónak 2 és 100 karakter között kell lennie!", + "website_validation": "A weboldalnak 2 és 100 karakter között kell lennie!", + "otp_contains": "Az egyszeri jelszónak 6 számot kell tartalmaznia.", + "otp_not_setup": "Ha még nem kapcsolta be a kétlépcsős hitelesítést, kérjük hagyja ezt a mezőt üresen.", + "enable_2fa_question": "Biztosan be szeretné kapcsolni a kétlépcsős hitelesítést?", + "disable_2fa_question": "Biztosan ki szeretné kapcsolni a kétlépcsős hitelesítést?", + "totp_applications": "Mielőtt bekapcsolná, kérjük bizonyosodjon be arról, hogy az alábbiak közül az egyik alkalmazást telepítette a telefonjára:", + "scan_qr_code": "QR kód beolvasása:", + "or_enter_key_manually": "vagy adja meg a kulcsot kézileg:", + "backup_codes": "Tartalék kódok:", + "yubikey_added_successfully": "A Yubikey sikeresen hozzáadva", + "yubikey_removed_successfully": "A Yubikey sikeresen eltávolítva", + "yubikey_insert_device": "1. Illesztje be a Yubikey-jét a számítógépbe", + "yubikey_focus_input": "2. Nyomja meg az OTP Input gombot", + "yubikey_press_button": "3. Nyomja meg a Yubikey-jén található arany gombot", + "auto_search": "Automatikus keresés", + "total_passwords": "Jelszavak összesen", + "decryption_time": "Dekódolási idő", + "client_version": "Kliens verzió", + "upgrade_account": "Fiók bővítése", + "validate": "Érvényesítés", + "license_key": "Licenc kulcs", + "account": "Fiók", + "expiration": "Lejárat", + "free": "Ingyenes", + "premium": "Prémium", + "never": "Soha", + "license_added_successfully": "A fiókja sikeresen bővítve lett prémiumra, {date} dátumig.", + "please_wait": "KÉRJÜK VÁRJON", + "saving_password": "Jelszó mentése...", + "changing_password": "Jelszó módosítása...", + "deleting_password": "Jelszó törlése...", + "deleting_passwords": "Jelszavak törlése...", + "deleting_account": "Fiók törlése...", + "signing_in": "Bejelentkezés...", + "signing_up": "Regisztráció...", + "sending_email": "E-mail küldése...", + "enabling_2fa": "Kétlépcsős hitelesítés bekapcsolása...", + "disabling_2fa": "Kétlépcsős hitelesítés kikapcsolása...", + "adding_yubikey": "Yubikey hozzáadása...", + "removing_yubikey": "Yubikey eltávolítása...", + "validating_license": "Licenc kulcs érvényesítése...", + "decrypting_passwords": "Jelszavak dekódolása..." } \ No newline at end of file diff --git a/lang/ko/lang.json b/lang/ko/lang.json index 6c851b3..21c4d15 100644 --- a/lang/ko/lang.json +++ b/lang/ko/lang.json @@ -140,19 +140,19 @@ "premium": "프리미엄", "never": "절대", "license_added_successfully": "귀하의 계정은 프리미엄으로 성공적으로 업그레이드되었으며 {date} 까지 유지됩니다.", - "please_wait": "PLEASE WAIT", - "saving_password": "Saving password...", - "changing_password": "Changing password...", - "deleting_password": "Deleting password...", - "deleting_passwords": "Deleting passwords...", - "deleting_account": "Deleting account...", - "signing_in": "Signing in...", - "signing_up": "Signing up...", - "sending_email": "Sending email...", - "enabling_2fa": "Enabling 2FA...", - "disabling_2fa": "Disabling 2FA...", - "adding_yubikey": "Adding Yubikey...", - "removing_yubikey": "Removing Yubikey...", - "validating_license": "Validating license key...", - "decrypting_passwords": "Decrypting passwords..." + "please_wait": "기다리세요", + "saving_password": "비밀번호 저장 중...", + "changing_password": "비밀번호 변경 중...", + "deleting_password": "비밀번호 삭제 중...", + "deleting_passwords": "비밀번호 삭제 중...", + "deleting_account": "계정 삭제 중...", + "signing_in": "로그인...", + "signing_up": "가입 중...", + "sending_email": "이메일을 보내는 중...", + "enabling_2fa": "2FA 사용 설정 중...", + "disabling_2fa": "2FA 비활성화 중...", + "adding_yubikey": "유비키 추가 중...", + "removing_yubikey": "유비키 제거 중...", + "validating_license": "라이센스 키 확인 중...", + "decrypting_passwords": "암호 해독 중..." } \ No newline at end of file diff --git a/lang/pl/lang.json b/lang/pl/lang.json index 9d0e8b8..a336b96 100644 --- a/lang/pl/lang.json +++ b/lang/pl/lang.json @@ -27,8 +27,8 @@ "26": "Uwierzytelnianie dwuskładnikowe jest już włączone.", "27": "Uwierzytelnianie dwuskładnikowe nie jest włączone.", "28": "Mail nie jest włączony na tym serwerze.", - "29": "License key is invalid!", - "30": "This license key has already been used.", + "29": "Klucz licencyjny jest nieprawidłowy!", + "30": "Ten klucz licencyjny został już użyty.", "300": "Strona jest za długa!", "301": "Nazwa użytkownika jest zbyt długa!", "302": "Hasło jest za długie!", @@ -68,7 +68,7 @@ "importing": "Importowanie", "importing_passwords": "Importowanie haseł w liczbie: {amount}...", "import_from": "Importuj z {name}", - "import_paste": "Paste {type} data from {name} password manager.", + "import_paste": "Wklej dane {type} z menedżera haseł {name}.", "import_invalid": "Importowane dane są nieprawidłowe!", "import_success": "Pomyślnie zaimportowano {success_number} haseł!", "import_errors": "Pomyślnie zaimportowano {success_number} haseł, {error_number} haseł NIE udało się zaimportować!", @@ -87,7 +87,7 @@ "website_icons": "Ikony witryny", "website_icons_info": "Włączenie ikon witryny może zmniejszyć Twoją prywatność.", "only_browser_extension": "Dostępne tylko w rozszerzeniu przeglądarki.", - "missing_language": "Missing language? Translate it on {name}.", + "missing_language": "Brakuje Ci języka? Przetłumacz to na {name}.", "forgot_username": "Nie pamiętasz nazwy użytkownika?", "email_sent_success": "E-mail wysłany pomyślnie", "add_password": "Dodaj hasło", @@ -100,9 +100,9 @@ "password_generator": "Wygeneruj hasło", "delete_password": "Usuń hasło", "delete_password_confirmation": "Czy masz pewność, że chcesz usunąć swoje hasło? Twoje hasło zostanie trwale usunięte z serwera. Tej akcji NIE można cofnąć.", - "delete_passwords": "Delete passwords", - "delete_passwords_info": "Deleted passwords can not be recovered.", - "delete_passwords_confirmation": "Are you sure you want to delete your passwords? Your passwords will be permanently removed from the server. This action can NOT be undone.", + "delete_passwords": "Usuń hasła", + "delete_passwords_info": "Usuniętych haseł nie można odzyskać.", + "delete_passwords_confirmation": "Czy na pewno chcesz usunąć swoje hasła? Twoje hasła zostaną trwale usunięte z serwera. Tej czynności NIE można cofnąć.", "delete_account": "Usuń konto", "delete_account_info": "Po usunięciu konta stracisz wszystkie powiązane z nim dane.", "delete_account_confirmation": "Czy masz pewność, że chcesz usunąć swoje konto? Wszystkie Twoje dane zostaną trwale usunięte z serwera. Tej akcji NIE można cofnąć.", @@ -131,28 +131,28 @@ "total_passwords": "Wszystkich haseł", "decryption_time": "Czas odszyfrowania", "client_version": "Wersja klienta", - "upgrade_account": "Upgrade Account", - "validate": "Validate", - "license_key": "License Key", - "account": "Account", - "expiration": "Expiration", - "free": "Free", - "premium": "Premium", - "never": "Never", - "license_added_successfully": "Your account has been successfully upgraded to Premium and it will last until {date}.", - "please_wait": "PLEASE WAIT", - "saving_password": "Saving password...", - "changing_password": "Changing password...", - "deleting_password": "Deleting password...", - "deleting_passwords": "Deleting passwords...", - "deleting_account": "Deleting account...", - "signing_in": "Signing in...", - "signing_up": "Signing up...", - "sending_email": "Sending email...", - "enabling_2fa": "Enabling 2FA...", - "disabling_2fa": "Disabling 2FA...", - "adding_yubikey": "Adding Yubikey...", - "removing_yubikey": "Removing Yubikey...", - "validating_license": "Validating license key...", - "decrypting_passwords": "Decrypting passwords..." + "upgrade_account": "Ulepsz konto", + "validate": "Uprawomocnić", + "license_key": "Klucz licencyjny", + "account": "Rachunek", + "expiration": "Wygaśnięcie\n", + "free": "Bezpłatny", + "premium": "Premia", + "never": "Nigdy", + "license_added_successfully": "Twoje konto zostało pomyślnie uaktualnione do Premium i będzie aktywne do {date}.", + "please_wait": "PROSZĘ CZEKAĆ", + "saving_password": "Zapisywanie hasła...", + "changing_password": "Zmiana hasła...", + "deleting_password": "Usuwanie hasła...", + "deleting_passwords": "Usuwanie haseł...\n", + "deleting_account": "Usuwanie konta...", + "signing_in": "Dołączanie do...", + "signing_up": "Logować się...", + "sending_email": "Wysyłać email...", + "enabling_2fa": "Włączanie 2FA...", + "disabling_2fa": "Wyłączanie 2FA...", + "adding_yubikey": "Dodawanie YubiKey'ego...\n", + "removing_yubikey": "Usuwanie Yubikey'ego...", + "validating_license": "Weryfikowanie klucza licencyjnego...", + "decrypting_passwords": "Odszyfrowywanie haseł..." } \ No newline at end of file diff --git a/lang/ro/lang.json b/lang/ro/lang.json index 9a13303..0af367c 100644 --- a/lang/ro/lang.json +++ b/lang/ro/lang.json @@ -2,9 +2,9 @@ "0": "Reușit", "1": "Numele de utilizator nu este valid!", "2": "Parola este incorectă!", - "3": "Something went wrong while inserting data to the database!", + "3": "Ceva a mers prost la inserarea datelor în baza de date!", "4": "Numele de utilizator este deja înregistrat!", - "5": "Your password is too weak!", + "5": "Parola dvs. este prea slabă!", "6": "Adresa de e-mail este invalida!", "7": "Numele de utilizator nu există!", "8": "Nu aveți nicio parolă salvată.", @@ -16,30 +16,30 @@ "14": "Json-ul nu este valid!", "15": "Acest server nu poate accepta mai mulți utilizatori!", "16": "Ați atins numărul maxim de parole stocate!", - "17": "Account with this email doesn't exist!", - "18": "Message is too long!", - "19": "OTP is incorrect!", - "20": "You can only link up to 5 Yubikeys!", - "21": "This Yubikey is already linked with your account.", - "23": "Provided Yubikey OTP is invalid!", - "24": "Yubikey with provided ID isn't linked to your account.", - "25": "The token is incorrect or it has expired. Please Sign in again.", - "26": "Two-factor authentication is already enabled.", - "27": "Two-factor authentication is not enabled.", - "28": "Mail is not enabled on this server.", - "29": "License key is invalid!", - "30": "This license key has already been used.", - "300": "Website is too long!", - "301": "Username is too long!", - "302": "Password is too long!", - "303": "Message is too long!", - "400": "Action was not provided in GET!", + "17": "Contul cu acest e-mail nu există!", + "18": "Mesajul este prea lung!", + "19": "OTP este incorect!", + "20": "Puteți conecta doar până la 5 Yubikey-uri!", + "21": "Acest Yubikey este deja conectat la contul tău.", + "23": "Cu condiția ca Yubikey OTP să fie invalid!", + "24": "Yubikey cu ID furnizat nu este conectat la contul dvs.", + "25": "Indicatorul este incorect sau a expirat. Vă rugăm să vă conectați din nou.", + "26": "Autentificarea cu doi factori este deja activată.", + "27": "Autentificarea cu doi factori nu este activată.", + "28": "Poșta nu este activată pe acest server.", + "29": "Cheia de licență este nevalidă!", + "30": "Această cheie de licență a fost deja utilizată.", + "300": "Site-ul este prea lung!", + "301": "Numele de utilizator este prea lung!", + "302": "Parola este prea lungă!", + "303": "Mesajul este prea lung!", + "400": "Acțiunea nu a fost furnizată în GET!", "401": "Acțiunea nu este validă!", "403": "Nu ați furnizat toate valorile necesare în POST.", "404": "Nu se poate conecta la API.", "429": "Trimiteți prea multe solicitări! Vă rugăm să așteptați înainte de a executa din nou această acțiune.", "505": "A apărut o eroare la conectarea la baza de date!", - "506": "Something went wrong while connecting to the mail server!", + "506": "A apărut o eroare în timpul conectării la serverul de e-mail!", "999": "NU aveți permisiunea de a utiliza acest endpoint.", "server": "Server", "website": "Website", @@ -49,26 +49,26 @@ "signin": "Conectare", "signup": "Înregistrare", "signout": "Deconectare", - "terms_of_service": "Terms of Service", + "terms_of_service": "Termenii serviciului", "okay": "Bine", "add": "Adăuga", "change": "Schimbă", "use": "Utilizează", "copy": "Copiază", - "send": "Send", + "send": "Trimite", "cancel": "Anulează", "try_again": "Încearcă din nou", "success": "SUCCES", "error": "EROARE", - "enable": "Enable", - "disable": "Disable", - "remove": "Remove", + "enable": "Permite", + "disable": "Dezactivați", + "remove": "Elimina", "delete": "Șterge", "import": "Importă", - "importing": "Importing", - "importing_passwords": "Importing {amount} passwords...", + "importing": "Importing\n", + "importing_passwords": "Se importă {amount} parole...", "import_from": "Importă din {name}", - "import_paste": "Paste {type} data from {name} password manager.", + "import_paste": "Inserați datele {type} din managerul de parole {name}.", "import_invalid": "Datele din importul dvs. nu sunt valide!", "import_success": "{success_number} parole importate cu succes!", "import_errors": "{success_number} parole importate cu succes, dar {error_number} parole NU au fost importate!", @@ -76,33 +76,33 @@ "export": "Exportă", "passwords": "Parole", "import_export": "Importă & Exportă", - "language": "Language", + "language": "Limba", "theme": "Temă", "search": "Caută", "length": "Lungime", - "settings": "Settings", + "settings": "Setări", "minutes": "minutes", - "optional_note": "Optional Note", - "session_duration": "Session Duration", - "website_icons": "Website Icons", - "website_icons_info": "Enabling website icons might reduce your privacy.", - "only_browser_extension": "Only available in the browser extension.", - "missing_language": "Missing language? Translate it on {name}.", - "forgot_username": "Forgot username?", - "email_sent_success": "Email sent successfully", + "optional_note": "Notă opțională", + "session_duration": "Durata sesiunii", + "website_icons": "Pictogramele site-ului web", + "website_icons_info": "Activarea pictogramelor site-ului vă poate reduce confidențialitatea.", + "only_browser_extension": "Disponibil numai în extensia browserului.", + "missing_language": "Limbă lipsă? Traduceți-l pe {name}.", + "forgot_username": "Ai uitat numele de utilizator?", + "email_sent_success": "Email-ul a fost trimis cu succes", "add_password": "Adăugați o parolă", "add_password_success": "Parola a fost adăugată cu succes", "change_password_success": "Parola a fost schimbată cu succes", "remove_password_success": "Parola a fost eliminată cu succes", - "copy_password_success": "Password has been copied successfully", - "copy_username_success": "Username has been copied successfully", + "copy_password_success": "Parola a fost copiată cu succes", + "copy_username_success": "Numele de utilizator a fost copiat cu succes", "edit_password": "Schimbați parola", "password_generator": "Generați parola", "delete_password": "Ștergeți parola", "delete_password_confirmation": "Sigur doriți să ștergeți parola? Parola dvs. va fi eliminată definitiv de pe server. Această acțiune nu poate fi anulată.", - "delete_passwords": "Delete passwords", - "delete_passwords_info": "Deleted passwords can not be recovered.", - "delete_passwords_confirmation": "Are you sure you want to delete your passwords? Your passwords will be permanently removed from the server. This action can NOT be undone.", + "delete_passwords": "Ștergeți parolele", + "delete_passwords_info": "Parolele șterse nu pot fi recuperate.", + "delete_passwords_confirmation": "Sigur doriți să vă ștergeți parolele? Parolele tale vor fi șterse definitiv de pe server. Această acțiune nu poate fi anulată.", "delete_account": "Șterge contul", "delete_account_info": "După ce vă ștergeți contul, veți pierde toate datele asociate acestuia.", "delete_account_confirmation": "Sigur doriți să vă ștergeți contul? Toate datele dvs. vor fi șterse definitiv de pe server. Această acțiune nu poate fi anulată.", @@ -111,48 +111,48 @@ "registration_completed": "Înregistrarea este finalizată!", "dont_have_account_link": "Nu aveți încă un cont? Înscrieți-vă aici.", "already_have_account_link": "Deja înregistrat? Conectați-vă aici.", - "username_validation": "Username should be between 2 and 100 characters long!", - "password_validation": "Password should be between 2 and 100 characters long!", - "website_validation": "Website should be between 2 and 100 characters long!", - "otp_contains": "OTP contains 6 numbers.", - "otp_not_setup": "If you did not setup 2FA on your account leave this field empty.", - "enable_2fa_question": "Are you sure you want to enable Two-Factor Authentication?", - "disable_2fa_question": "Are you sure you want to disable Two-Factor Authentication?", - "totp_applications": "Before enabling, make sure you have installed one of the following applications on your phone:", - "scan_qr_code": "Scan QR Code:", - "or_enter_key_manually": "or enter key manually:", - "backup_codes": "Backup codes:", - "yubikey_added_successfully": "Your Yubikey has been added successfully", - "yubikey_removed_successfully": "Your Yubikey has been removed successfully", - "yubikey_insert_device": "1. Insert your Yubikey into the computer", - "yubikey_focus_input": "2. Click on OTP Input", - "yubikey_press_button": "3. Press the gold button located on your Yubikey", - "auto_search": "Auto Search", - "total_passwords": "Total Passwords", - "decryption_time": "Decryption Time", - "client_version": "Client Version", - "upgrade_account": "Upgrade Account", - "validate": "Validate", - "license_key": "License Key", - "account": "Account", - "expiration": "Expiration", - "free": "Free", + "username_validation": "Numele de utilizator trebuie să aibă între 2 și 100 de caractere!", + "password_validation": "Parola trebuie să aibă între 2 și 100 de caractere!", + "website_validation": "Site-ul ar trebui să aibă între 2 și 100 de caractere!", + "otp_contains": "OTP conține 6 numere.", + "otp_not_setup": "Dacă nu ați configurat 2FA în contul dvs., lăsați acest câmp necompletat.", + "enable_2fa_question": "Sigur doriți să activați autentificarea cu doi factori?", + "disable_2fa_question": "Sigur doriți să dezactivați autentificarea cu doi factori?", + "totp_applications": "Înainte de a activa, asigurați-vă că ați instalat una dintre următoarele aplicații pe telefon:", + "scan_qr_code": "Scanați codul QR:", + "or_enter_key_manually": "sau introduceți manual cheia:", + "backup_codes": "Coduri de rezervă:", + "yubikey_added_successfully": "Yubikey-ul dvs. a fost adăugat cu succes", + "yubikey_removed_successfully": "Yubikey-ul dvs. a fost eliminat cu succes", + "yubikey_insert_device": "1. Introduceți Yubikey-ul în computer", + "yubikey_focus_input": "2. Faceți clic pe OTP Input", + "yubikey_press_button": "3. Apăsați butonul auriu situat pe Yubikey", + "auto_search": "Căutare automată", + "total_passwords": "Total parole", + "decryption_time": "Timp de decriptare", + "client_version": "Versiune client", + "upgrade_account": "Actualizare cont", + "validate": "Valida", + "license_key": "Cheie de licență", + "account": "Cont", + "expiration": "Expirare", + "free": "Gratuit", "premium": "Premium", - "never": "Never", - "license_added_successfully": "Your account has been successfully upgraded to Premium and it will last until {date}.", - "please_wait": "PLEASE WAIT", - "saving_password": "Saving password...", - "changing_password": "Changing password...", - "deleting_password": "Deleting password...", - "deleting_passwords": "Deleting passwords...", - "deleting_account": "Deleting account...", - "signing_in": "Signing in...", - "signing_up": "Signing up...", - "sending_email": "Sending email...", - "enabling_2fa": "Enabling 2FA...", - "disabling_2fa": "Disabling 2FA...", - "adding_yubikey": "Adding Yubikey...", - "removing_yubikey": "Removing Yubikey...", - "validating_license": "Validating license key...", - "decrypting_passwords": "Decrypting passwords..." + "never": "Niciodată!", + "license_added_successfully": "Contul dvs. a fost actualizat cu succes la Premium și va dura până la {date}.", + "please_wait": "VA RUGAM ASTEPTATI", + "saving_password": "Se salvează parola...", + "changing_password": "Se schimbă parola...", + "deleting_password": "Se șterge parola...", + "deleting_passwords": "Se șterg parolele...", + "deleting_account": "Se șterge contul...", + "signing_in": "Conectare...", + "signing_up": "Înscrierea...", + "sending_email": "Se trimite e-mail...\n", + "enabling_2fa": "Se activează 2FA...", + "disabling_2fa": "Se dezactivează 2FA...", + "adding_yubikey": "Se adaugă Yubikey...", + "removing_yubikey": "Se elimină Yubikey...", + "validating_license": "Se validează cheia de licență...\n", + "decrypting_passwords": "Se decriptează parolele..." } \ No newline at end of file diff --git a/lang/ru/lang.json b/lang/ru/lang.json index 6251ced..8edf946 100644 --- a/lang/ru/lang.json +++ b/lang/ru/lang.json @@ -146,7 +146,7 @@ "deleting_password": "Удаление пароля...", "deleting_passwords": "Удаление паролей...", "deleting_account": "Удаление учётной записи...", - "signing_in": "Выполняется вход...", + "signing_in": "Вход...", "signing_up": "Регистрация...", "sending_email": "Отправка эл. письма...", "enabling_2fa": "Включение 2FA...", diff --git a/package.json b/package.json index 6e65ac4..e9ccb88 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "passky", - "version": "8.0.0", + "version": "8.0.1", "license": "GPL-3.0", "author": "Rabbit Company LLC ", "homepage": "https://passky.org", diff --git a/passwords.html b/passwords.html index 27414ff..79b3f6c 100644 --- a/passwords.html +++ b/passwords.html @@ -92,7 +92,7 @@
Client Version
-
8.0.0
+
8.0.1
@@ -169,6 +169,7 @@

+ diff --git a/settings.html b/settings.html index 4024e07..a30a388 100644 --- a/settings.html +++ b/settings.html @@ -86,6 +86,7 @@ + @@ -105,7 +106,7 @@ -