This commit is contained in:
Matias Alejo Garcia 2015-03-06 12:00:10 -03:00
commit 320de62f13
348 changed files with 7745 additions and 30874 deletions

BIN
public/font/icomoon.eot Executable file

Binary file not shown.

52
public/font/icomoon.svg Executable file
View file

@ -0,0 +1,52 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#xe600;" d="M716.749 696.32l0.051-471.040-409.6 235.52z" />
<glyph unicode="&#xe601;" d="M747.52 665.549l-471.040 0.051 235.52-409.6z" />
<glyph unicode="&#xe602;" d="M276.48 256h471.040l-235.571 409.6z" />
<glyph unicode="&#xe603;" d="M307.251 696.32l-0.051-471.040 409.6 235.52z" />
<glyph unicode="&#xe604;" d="M585.574 741.581c-21.402-20.89-230.502-240.435-230.502-240.435-11.418-11.162-17.101-25.754-17.101-40.346s5.683-29.184 17.101-40.346c0 0 209.101-219.546 230.502-240.384 21.402-20.89 59.904-22.323 82.739 0 22.784 22.272 24.576 53.35-0.051 80.64l-191.846 200.090 191.846 200.090c24.627 27.341 22.835 58.419 0.051 80.691-22.886 22.272-61.389 20.89-82.739 0z" />
<glyph unicode="&#xe605;" d="M792.73 534.374c-20.838-21.402-240.384-230.554-240.384-230.554-11.162-11.418-25.754-17.101-40.346-17.101-14.643 0-29.235 5.683-40.346 17.101 0 0-219.546 209.152-240.435 230.554-20.838 21.402-22.272 59.853 0 82.739 22.323 22.835 53.402 24.627 80.691 0l200.090-191.898 200.038 191.846c27.341 24.627 58.47 22.835 80.691 0 22.323-22.835 20.941-61.338 0-82.688z" />
<glyph unicode="&#xe606;" d="M792.73 387.226c-20.838 21.402-240.384 230.502-240.384 230.502-11.162 11.418-25.754 17.152-40.346 17.152-14.643 0-29.235-5.734-40.346-17.152 0 0-219.546-209.101-240.435-230.502-20.838-21.402-22.272-59.904 0-82.739 22.323-22.784 53.402-24.627 80.691 0l200.090 191.846 200.038-191.846c27.341-24.627 58.47-22.784 80.691 0 22.323 22.886 20.941 61.389 0 82.739z" />
<glyph unicode="&#xe607;" d="M438.426 741.581c21.402-20.89 230.502-240.435 230.502-240.435 11.469-11.162 17.152-25.754 17.152-40.346s-5.683-29.184-17.152-40.346c0 0-209.101-219.546-230.502-240.384-21.402-20.89-59.853-22.323-82.739 0-22.835 22.272-24.627 53.35 0 80.64l191.898 200.090-191.846 200.090c-24.627 27.341-22.835 58.419 0 80.691s61.338 20.89 82.688 0z" />
<glyph unicode="&#xe608;" d="M634.829 285.798c13.722-13.875 13.722-36.301 0-50.125-13.722-13.875-35.891-13.875-49.613 0l-196.096 200.038c-13.722 13.875-13.722 36.301 0 50.125l196.096 200.090c13.722 13.875 35.891 13.875 49.613 0s13.722-36.25 0-50.125l-160.768-175.002 160.768-175.002z" />
<glyph unicode="&#xe609;" d="M687.002 583.629c13.875 13.722 36.301 13.722 50.125 0 13.875-13.722 13.875-35.891 0-49.613l-200.038-196.096c-13.875-13.722-36.301-13.722-50.125 0l-200.090 196.096c-13.824 13.722-13.824 35.891 0 49.613 13.875 13.722 36.25 13.722 50.125 0l175.002-160.768 175.002 160.768z" />
<glyph unicode="&#xe60a;" d="M336.947 337.971c-13.875-13.722-36.25-13.722-50.125 0-13.824 13.722-13.875 35.891 0 49.664l200.090 195.994c13.875 13.722 36.301 13.722 50.125 0l200.090-196.045c13.875-13.773 13.875-35.942 0-49.664s-36.25-13.722-50.125 0l-175.053 160.819-175.002-160.768z" />
<glyph unicode="&#xe60b;" d="M389.171 285.798c-13.722-13.875-13.722-36.301 0-50.125 13.67-13.875 35.891-13.875 49.613 0l196.096 200.038c13.722 13.875 13.722 36.301 0 50.125l-196.096 200.090c-13.722 13.875-35.891 13.875-49.613 0s-13.722-36.25-0.051-50.074l160.819-175.053-160.768-175.002z" />
<glyph unicode="&#xe60c;" d="M737.229 80.998c13.722-13.875 13.722-36.25 0-50.125s-35.891-13.875-49.613 0l-400.896 404.838c-13.722 13.875-13.722 36.301 0 50.125l400.896 404.89c13.722 13.875 35.891 13.875 49.613 0s13.722-36.25 0-50.125l-365.568-379.802 365.568-379.802z" />
<glyph unicode="&#xe60d;" d="M132.198 686.029c-13.875 13.722-36.301 13.722-50.125 0-13.824-13.67-13.824-35.891 0-49.613l404.89-400.896c13.875-13.722 36.25-13.722 50.125 0l404.89 400.896c13.824 13.722 13.875 35.891 0 49.613s-36.352 13.722-50.125 0.051l-379.853-365.619-379.802 365.568z" />
<glyph unicode="&#xe60e;" d="M891.802 235.571c13.875-13.722 36.301-13.722 50.125 0 13.875 13.722 13.875 35.891 0 49.613l-404.89 400.896c-13.824 13.722-36.25 13.722-50.074 0l-404.89-400.896c-13.824-13.722-13.875-35.891 0-49.613s36.25-13.722 50.125 0l379.802 365.619 379.802-365.619z" />
<glyph unicode="&#xe60f;" d="M416.562 841.898c-217.791 0-394.343-176.553-394.343-394.345s176.553-394.345 394.343-394.345c217.793 0 394.348 176.555 394.348 394.345s-176.555 394.345-394.348 394.345zM562.313 427.171c-4.394 10.103-11.158 18.977-24.686 26.444-7.206 3.952-14.146 6.852-22.316 8.785 4.744 2.196 8.785 4.744 14.321 9.663 6.589 5.8 11.51 13.795 13.705 20.469 2.286 6.589 3.603 15.814 3.076 24.776-0.968 14.76-3.867 29.078-11.598 39.358s-18.625 18.187-33.031 23.723c-11.070 4.216-22.403 6.852-39.974 7.817v56.14h-35.144v-56.227h-28.114v56.227h-36.022v-56.227h-76.522v-42.171h24.515c7.643 0 12.824-0.703 15.461-2.021 2.724-1.316 4.658-3.073 5.712-5.27 1.143-2.196 1.67-7.38 1.67-15.375v-152.166c0-7.906-0.528-13.004-1.67-15.287-1.143-2.286-1.76-4.307-4.48-5.534-2.722-1.231-2.812-1.143-10.368-1.143h-23.195l-7.643-42.171h76.436v-56.227h36.022v56.227h28.114v-56.227h35.142v56.577c22.843 1.143 39.096 4.13 52.185 9.050 16.957 6.325 29.959 15.551 39.272 27.676s13.089 30.661 13.881 44.981c0.616 12.739-0.791 29.168-4.744 38.13v0zM398.463 540.678h28.114v-65.012h-28.114v65.012zM398.463 433.496h28.114v-79.069h-28.114v79.069zM461.718 537.252c5.27-2.196 8.697-6.589 12.124-11.157 3.777-5.007 5.71-11.685 5.71-18.802 0-6.852-2.548-12.739-6.589-18.010-3.339-4.304-5.976-7.292-11.244-9.751v57.72zM487.021 373.227c-6.852-6.061-10.808-8.874-19.416-12.124-1.76-0.703-4.13-1.23-5.886-1.668v72.742c4.394-0.703 6.678-1.58 9.925-2.987 6.854-2.899 13.354-6.061 17.396-11.596s7.028-13.705 7.028-21.7c0-9.577-2.461-16.867-9.050-22.667v0z" horiz-adv-x="831" />
<glyph unicode="&#xe610;" d="M416 416.6v-64.6h64.399l360.2 360-64.8 64.6zM888.401 799.4l-25 25c-5.4 4.8-12.401 7.601-20 7.601s-14.6-3-19.8-7.601l-24.2-24.399 0.2-0.2 22.4-22.6 42.001-42.001 24.401 24.399c4.8 5.201 7.599 12.2 7.599 19.8 0.2 7.599-2.799 14.6-7.599 20zM511 320h-127v127.2l256 256h-0.6l0.8 0.8h-480.2v-576h608v444.399l0.2 5z" />
<glyph unicode="&#xe611;" d="M512 864c-229.8 0-416-186.2-416-416s186.2-416 416-416c229.8 0 416 186.2 416 416s-186.2 416-416 416zM512 66.6c-117.2 0-222.2 53.2-292.2 136.6 35.6 15.4 124.4 47.4 180.6 63.8 4.4 1.4 5.2 1.6 5.2 21.4 0 21.2-2.4 36.2-7.6 47.2-7 15-15.4 40.4-18.4 63.2-8.4 9.8-19.8 29-27.2 65.8-6.4 32.4-3.4 44.2 0.8 55.2 0.4 1.2 1 2.4 1.2 3.6 1.6 7.4-0.6 47-6.2 77.6-3.8 21 1 65.6 30 102.6 18.2 23.4 53.2 52 116 56h35c63.8-4 98.8-32.6 117-56 29-37 33.8-81.6 29.8-102.6-5.6-30.6-7.8-70-6.2-77.6 0.2-1.2 0.8-2.4 1.2-3.4 4.2-11 7.4-22.8 0.8-55.2-7.4-36.8-18.8-56-27.2-65.8-3-22.8-11.4-48-18.4-63.2-6.6-13.8-13.2-30.2-13.2-46.6 0-19.8 0.8-20 5.4-21.4 53.4-15.8 145.4-47.6 186-64.2-70-83.6-175-137-292.4-137z" />
<glyph unicode="&#xe612;" d="M896 192v484.4l-262.2-199.6 136.2-154.8-4-4-157.8 139.2-96.2-73.2-96.2 73.2-157.8-139.2-4 4 136 154.8-262 199.2v-484zM879.4 704h-735.4l368-279.8z" />
<glyph unicode="&#xe613;" d="M817 527h-30.4c-24.8 0-45.6 21.4-45.6 46.8 0 12.8 5.4 24.4 15 33l19.6 19.2c19.4 19.2 19.4 50.6 0 69.8l-44.6 44.2c-8.8 8.8-21.8 14-35 14s-26-5.2-35-14l-18.8-18.8c-9-10-21-15.4-34-15.4-25.6 0-47 20.8-47 45.4v30.6c0 27-21.8 50.2-49 50.2h-60.8c-27.2 0-48.8-23-48.8-50.2v-30.4c0-24.6-21.4-45.4-47-45.4-12.8 0-24.6 5.4-33.2 14.8l-19.4 19.2c-8.8 9-21.8 14-35 14s-26-5.2-35-14l-45-44c-19.2-19.2-19.2-50.6 0-69.6l18.8-18.8c10-9 15.6-21 15.6-33.8 0-25.6-20.8-46.8-45.6-46.8h-30.4c-27.4 0-50.4-21.4-50.4-48.6v-60.8c0-27 23-48.6 50.4-48.6h30.4c24.8 0 45.6-21.4 45.6-46.8 0-12.8-5.6-24.8-15.6-33.8l-18.8-18.6c-19.2-19.2-19.2-50.6 0-69.6l44.6-44.4c8.8-9 21.8-14 35-14s26 5.2 35 14l19.4 19.2c8.4 9.4 20.4 14.8 33.2 14.8 25.6 0 47-20.8 47-45.4v-30.4c0-27 21.6-50.2 49-50.2h60.8c27.2 0 48.8 23 48.8 50.2v30.4c0 24.6 21.4 45.4 47 45.4 12.8 0 24.8-5.6 34-15.4l18.8-18.8c9-8.8 21.8-14 35-14s26 5.2 35 14l44.6 44.4c19.2 19.2 19.2 50.6 0 69.8l-19.6 19.2c-9.6 8.6-15 20.4-15 33 0 25.6 20.8 46.8 45.6 46.8h30.4c27.2 0 46.6 21.4 46.6 48.6v61c0.4 27.2-19 48.6-46.2 48.6zM641.6 448v0c0-88.2-71.4-160-160-160s-160 71.8-160 160v0 0c0 88.2 71.4 160 160 160s160-71.8 160-160v0z" horiz-adv-x="960" />
<glyph unicode="&#xe614;" d="M480 736l-320-256v-416h224v256h192v-256h224v416l-320 256zM480 832l-192-153.6v89.6h-128v-191.998l-64-51.2v-40.982l384 307.2 384-307.2v40.982l-384 307.198z" horiz-adv-x="960" />
<glyph unicode="&#xe615;" d="M448 352c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zM656 512v144c0 114.8-93.2 208-208 208-115 0-208-93.2-208-208v-144h-112v-480h640v480h-112zM464 258v-82c0-8.8-7.2-16-16-16s-16 7.2-16 16v82c-27.6 7.2-48 32.2-48 62 0 35.4 28.6 64 64 64s64-28.6 64-64c0-29.8-20.4-54.8-48-62zM624 512h-352v144c0 97 79 176 176 176s176-79 176-176v-144z" horiz-adv-x="896" />
<glyph unicode="&#xe616;" d="M359.545 559.525c-3.994-5.364-5.983-12.063-5.983-20.109 0-11.323 3.744-20.185 11.244-26.586 7.201-6.163 16.565-10.854 28.048-14.121v79.842c-6.603-1.363-12.7-3.438-18.239-6.294-6.062-3.129-11.086-7.372-15.073-12.733zM471.301 425.47c-7.255 2.494-15.236 4.901-23.913 7.239v-93.475c4.823 0.697 9.297 1.657 13.378 2.905 9.248 2.829 16.749 6.479 22.493 10.946s9.888 9.607 12.441 15.417c2.553 5.808 3.826 11.689 3.826 17.654 0 12.212-2.955 21.223-8.85 27.034-5.906 5.804-12.372 9.895-19.377 12.282zM416.101 842.128c-218.017 0-394.756-176.739-394.756-394.756s176.739-394.756 394.756-394.756c218.017 0 394.756 176.739 394.756 394.756s-176.739 394.756-394.756 394.756v0zM547.626 346.591c-7.822-12.669-18.109-23.029-30.869-31.072-12.763-8.043-27.276-13.956-43.547-17.676-8.517-1.952-17.127-3.39-25.822-4.34v-27.956h-54.53v28.569c-8.385 1.081-16.542 2.615-24.453 4.669-17.232 4.467-32.237 11.083-44.991 20.322-12.766 9.232-22.973 20.61-30.627 35.060-7.332 13.818-11.293 32.556-11.9 47.703h59.786c0.292-9.089 2.51-19.788 6.667-27.822 4.464-8.643 10.682-14.794 18.663-20.299 7.792-5.392 16.756-9.335 26.849-11.872v104.083c-7.379 1.821-15.196 3.771-23.502 5.872-14.681 3.577-26.88 8.266-36.61 14.074-9.738 5.81-17.469 12.29-23.209 19.44-5.745 7.147-9.81 14.743-12.202 22.788-2.395 8.048-3.591 16.233-3.591 24.578 0 16.086 3.591 30.007 10.773 41.779 7.173 11.764 16.665 21.521 28.47 29.271 11.799 7.744 25.202 13.475 40.198 17.203 6.527 1.618 13.085 2.863 19.673 3.782v28.563h54.53v-28.775c7.452-1.070 14.71-2.538 21.749-4.462 15.801-4.324 29.678-10.793 41.635-19.429 11.965-8.647 21.458-19.28 28.478-31.937 6.387-11.545 9.867-24.453 10.434-39.6h-60.182c-2.281 18.175-9.618 31.282-22.035 39.148-5.956 3.778-12.683 6.655-20.081 8.746v-91.995c7.841-1.935 15.6-3.842 23.186-5.69 10.364-2.535 17.782-4.402 22.254-5.585 11.167-3.282 20.893-7.75 29.194-13.404 8.291-5.663 15.233-12.142 20.821-19.44 5.577-7.305 9.724-15.124 12.442-23.46 2.706-8.339 4.069-16.693 4.069-25.029 0.005-17.87-3.911-33.146-11.723-45.804v0z" horiz-adv-x="831" />
<glyph unicode="&#xe617;" d="M107.021 461.639l225.898-99.523 456.058 426.862zM788.979 788.979l-422.174-459.681 110.604-222.275z" horiz-adv-x="896" />
<glyph unicode="&#xe618;" d="M704.413 285.316c23.329-8.052-23.123 8.052 0 0v0zM704.413 285.316c-27.871 9.703-58.013 10.323-85.884 20.026-8.465 2.89-25.187 6.4-28.697 16.103-3.303 9.497-3.303 20.645-3.923 30.555-0.413 7.845-0.619 15.69-0.619 23.535 0 5.161 13.213 16.103 16.103 20.852 11.148 18.581 12.181 43.561 14.245 64.619 17.961-4.955 20.232 28.284 23.329 38.4 2.271 7.019 16.103 55.329-5.368 48.723 5.161 9.084 7.226 20.232 8.671 30.348 4.129 26.426 5.781 55.329-2.271 81.135-16.723 53.677-68.129 83.819-122.426 85.471-55.123 1.858-110.452-24.568-131.097-78.039-9.91-26.013-9.084-54.297-5.781-81.548 1.445-12.387 3.51-26.219 9.703-37.368-20.026 5.987-9.29-36.542-7.019-43.974 3.303-10.529 6.194-48.31 24.981-43.148 1.652-16.723 3.51-33.858 8.052-50.168 3.097-10.942 9.497-20.232 16.929-28.697 3.716-4.129 5.574-4.542 5.368-9.91-0.206-16.103 0.206-33.445-3.923-49.135s-38.606-22.297-52.439-25.187c-37.161-7.639-71.432-11.148-102.4-34.271-36.129-26.632-54.916-68.129-54.916-112.929 171.974 0 343.948 0 515.923 0 19.406 0 38.606 0 58.013 0 0 60.903-36.748 114.581-94.555 134.606zM279.329 310.71c1.239 0.619 2.477 1.239 3.303 1.652-0.619-0.206-1.239-0.619-1.652-0.826-0.619-0.206-1.032-0.413-1.652-0.826zM279.329 310.71c-7.019-3.51-15.484-7.845 1.652 0.826 6.194 3.097 4.955 2.477 1.652 0.826 14.039 6.606 29.11 8.258 44.181 9.703 5.781 0.619 8.465 4.542 4.129 10.116-8.258 10.529-36.748 12.594-48.723 17.342-7.432 2.89-9.497 5.574-10.116 13.832-0.206 3.716-2.271 20.232 0.619 22.916 2.065 2.065 15.071 1.239 17.961 1.652 11.768 1.445 23.742 3.923 34.89 8.258 4.748 1.858 9.29 4.129 13.419 7.019 4.955 3.716-3.716 12.8-5.987 17.755-7.019 15.484-10.116 32.413-11.148 49.342-2.065 33.239 3.097 66.684-3.097 99.716-9.29 50.581-48.31 75.974-98.065 75.974-30.761 0-61.11-10.529-78.245-37.368-18.994-29.523-17.961-66.271-16.929-99.923 0.619-19.2 1.445-38.606-1.239-57.806-1.239-8.258-3.097-16.31-5.987-24.155-2.271-5.987-13.832-20.852-9.29-23.948 17.135-12.181 46.039-16.31 66.684-14.658 0.619-10.116 2.477-23.123-1.239-32.619-5.781-14.865-48.929-18.787-61.935-23.123-36.129-11.974-62.968-41.29-62.968-82.581 37.781 0 75.355 0 113.135 0 16.929 0 33.858 0 50.994 0 2.684 0 13.006 19.2 15.897 22.297 14.039 15.484 31.174 28.903 49.755 38.606zM911.071 332.594c-16.723 5.368-48.929 7.019-60.903 21.471-5.987 7.226-2.684 25.6-2.065 34.271 9.084-0.826 18.994 0.619 28.284 1.858 8.465 1.239 16.723 2.89 24.774 5.781 3.716 1.445 7.432 2.89 10.942 4.955 8.052 4.748 4.335 5.574 0.206 12.594-22.503 37.781-12.387 85.677-13.419 127.174-0.826 34.477-9.91 72.258-41.29 91.665-28.284 17.548-70.194 18.168-100.542 5.781-87.535-35.097-35.923-151.123-65.858-217.6-5.161-11.148-12.594-15.071 0.413-21.677 7.226-3.716 15.071-6.194 22.916-8.052 11.974-2.89 24.361-4.542 36.748-4.955 2.065 0 0.619-26.013 0-28.697-2.271-10.116-24.361-13.006-32.619-15.277-8.465-2.271-22.503-2.89-26.632-11.768-6.194-13.213 20.439-9.91 27.045-11.148 21.265-3.923 40.052-15.69 56.568-29.11 12.387-10.116 29.11-23.742 33.652-40.258 55.123 0 110.452 0 165.574 0-0.413 41.497-27.458 71.019-63.794 82.994z" />
<glyph unicode="&#xe619;" d="M676.669 218.053c-27.491 9.803-66.917 13.213-92.064 18.754-14.492 3.197-35.589 11.295-42.622 19.607-7.033 8.524-2.771 87.163-2.771 87.163s13 20.458 20.032 38.36 14.705 66.917 14.705 66.917 14.492 0 19.607 25.361c5.541 27.705 14.066 39.212 13 59.884-1.065 19.18-11.081 20.246-12.148 20.246v0c0 0 10.442 28.983 11.934 90.359 1.705 72.671-53.917 144.277-158.342 144.277s-159.834-71.392-158.342-144.063c1.279-61.163 11.934-90.359 11.934-90.359v0c-1.065 0-11.081-1.065-12.148-20.246-1.065-20.672 7.672-31.753 13-59.458 5.115-25.361 19.607-25.573 19.607-25.573s7.672-49.228 14.705-67.13c7.033-18.114 20.032-38.36 20.032-38.36s4.262-78.638-2.771-87.163c-7.033-8.524-28.131-16.41-42.622-19.607-25.361-5.541-64.573-9.163-92.064-18.967s-112.31-42.836-112.31-111.031h681.956c0 68.196-84.819 101.228-112.31 111.031z" horiz-adv-x="896" />
<glyph unicode="&#xe61a;" d="M384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM877.6 381.2l-408 427.6c-15.2 15.2-35.2 23-55 23.2h-223c-35.2 0-63.6-28.4-63.6-63.6v-216.2c0-21.6 8.6-41 22.6-55.4l428-414.4c12.2-12.2 28.6-18.4 45-18.4 16.2 0 32.6 6 45 18.4l209 208.8c12.4 12.4 18.4 28.6 18.4 45s-6.2 32.8-18.4 45zM320 544c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z" />
<glyph unicode="&#xe61b;" d="M928 832v-274.754l-473.694-532.206 25.694-25.040 480 544v288zM576 896l-512-576 320-320 46.942 47.808 22.696 22.75 442.362 505.442v320h-320zM704 640c-35.29 0-64 28.71-64 64s28.71 64 64 64 64-28.71 64-64-28.71-64-64-64zM736 704c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
<glyph unicode="&#xe61c;" d="M963.318 194.875c0 253.125-225 196.875-225 393.75 0 16.313-1.571 30.252-4.437 42.125-14.792 99.332-80.996 179.051-166.792 203.344 0.761 3.47 1.161 7.059 1.161 10.732 0 29.248-25.313 53.176-56.25 53.176s-56.25-23.927-56.25-53.174c0-3.674 0.401-7.264 1.16-10.732-96.214-27.245-167.796-124.188-169.852-240.33-0.036-1.688-0.058-3.397-0.058-5.138 0-196.877-225-140.627-225-393.752 0-66.996 149.933-123.043 350.657-137.18 18.918-35.512 56.3-59.695 99.343-59.695s80.427 24.184 99.343 59.695c200.724 14.137 350.657 70.184 350.657 137.18 0 0.201-0.023 0.401-0.024 0.599l1.343-0.599zM788.193 147.33c-47.663-12.718-103.85-21.863-164.152-26.936-5.013 57.496-53.246 102.607-112.042 102.607s-107.028-45.111-112.042-102.607c-60.3 5.073-116.488 14.219-164.152 26.936-65.593 17.502-96.952 37.081-108.428 47.545 11.477 10.464 42.836 30.043 108.428 47.545 76.265 20.348 174.351 31.556 276.193 31.556s199.928-11.208 276.193-31.556c65.593-17.502 96.952-37.081 108.428-47.545-11.477-10.464-42.836-30.043-108.428-47.545z" />
<glyph unicode="&#xe61d;" d="M916.517 195.965l-379.483 325.272c17.672 33.204 27.7 71.093 27.7 111.332 0 131.060-106.245 237.305-237.305 237.305-23.973 0-47.108-3.569-68.922-10.179l137.102-137.102c20.509-20.509 20.509-54.069 0-74.578l-83.625-83.625c-20.509-20.509-54.069-20.509-74.578 0l-137.102 137.102c-6.61-21.814-10.179-44.95-10.179-68.922 0-131.060 106.245-237.305 237.305-237.305 40.238 0 78.127 10.028 111.332 27.702l325.272-379.483c18.876-22.020 51.099-23.258 71.607-2.75l83.627 83.627c20.507 20.508 19.269 52.729-2.75 71.605z" />
<glyph unicode="&#xe61e;" d="M849.5 448h-140.625l-196.875-196.875-196.875 196.875h-140.625l-112.5-225v-56.25h900v56.25l-112.5 225zM62 110.5h900v-56.25h-900v56.25zM568.25 616.75v225h-112.5v-225h-196.875l253.125-253.125 253.125 253.125h-196.875z" />
<glyph unicode="&#xe61f;" d="M62 110.5h900v-56.25h-900zM962 223v-56.25h-900v56.25l112.5 225h225v-112.5h225v112.5h225zM258.875 616.75l253.125 253.125 253.125-253.125h-196.875v-225h-112.5v225z" />
<glyph unicode="&#xe620;" d="M905.75 448c0-217.463-176.287-393.75-393.75-393.75s-393.75 176.287-393.75 393.75c0 95.85 34.481 183.459 91.406 251.719 4.331 7.987 10.35 14.934 17.859 19.969 1.266 1.322 2.391 2.813 3.684 4.106 0.028-0.647 0.309-1.266 0.366-1.913 8.128 4.556 17.353 7.369 27.309 7.369 31.050 0 56.25-25.2 56.25-56.25 0-19.575-9.984-36.788-25.172-46.856 0.984-0.731 1.688-1.631 2.7-2.362-38.672-48.15-61.903-109.209-61.903-175.781 0-155.334 125.916-281.25 281.25-281.25s281.25 125.916 281.25 281.25c0 66.572-23.231 127.631-61.903 175.781 1.013 0.731 1.744 1.631 2.7 2.362-15.188 10.069-25.172 27.281-25.172 46.856 0 31.050 25.2 56.25 56.25 56.25 9.956 0 19.181-2.813 27.309-7.369 0.056 0.647 0.337 1.266 0.394 1.912 1.266-1.294 2.391-2.784 3.684-4.106 7.509-5.034 13.5-11.981 17.859-19.969 56.869-68.259 91.378-155.869 91.378-251.719zM540.125 391.75h-56.25c-15.553 0-28.125 12.572-28.125 28.125v393.75c0 15.525 12.572 28.125 28.125 28.125h56.25c15.553 0 28.125-12.6 28.125-28.125v-393.75c0-15.553-12.572-28.125-28.125-28.125z" />
<glyph unicode="&#xe621;" d="M732.507 772.487h-622.859c-43.309 0-78.415-24.928-78.415-55.681v-538.232c0-30.751 35.107-55.682 78.415-55.682h622.859c43.307 0 78.416 24.931 78.416 55.682v538.232c0 30.753-35.108 55.681-78.416 55.681v0zM204.714 370.927h296.789v-41.417h-296.789v41.417zM204.714 465.646h454.657v-41.417h-454.657v41.417zM204.714 560.367h454.657v-41.417h-454.657v41.417z" horiz-adv-x="842" />
<glyph unicode="&#xe622;" d="M974.43 671.263h-17.742v104.383c0 24.103-19.539 43.643-43.645 43.643h-701.727c-24.104 0-43.645-19.539-43.645-43.643v-558.921c0-0.852 0.079-1.68 0.129-2.52-0.065-0.804-0.129-1.606-0.129-2.427v-100.461c0-19.666 15.941-35.608 35.608-35.608h669.771c19.665 0 35.606 15.941 35.606 35.608v31.445h-656.747c-8.273 0-14.977 6.705-14.977 14.977s6.705 14.977 14.977 14.977l661.131 0.363c24.104 0 43.645 19.537 43.645 43.644v68.961h6.393c49.225 0 89.271 40.047 89.271 89.271v218.382c0 42.965-34.955 77.92-77.923 77.92v0zM302.319 268.944c0-5.916-4.796-10.711-10.711-10.711s-10.711 4.793-10.711 10.711v482.019c0 5.913 4.796 10.711 10.711 10.711s10.711-4.796 10.711-10.711v-482.019zM1011.653 374.959c0-26.781-21.789-48.572-48.572-48.572h-6.393v51.273c0 23.366-18.943 42.309-42.309 42.309h-149.381c-46.556 0-84.299 37.743-84.299 84.299v42.042c0 46.556 37.743 84.299 84.299 84.299l209.432-0.046c20.525 0 37.223-16.697 37.223-37.221v-218.382z" horiz-adv-x="1218" />
<glyph unicode="&#xe623;" d="M825.441 494.573l-32.207 121.065c-0.048 1.094-0.157 2.169-0.288 3.236v43.967c0 14.829-7.431 27.95-18.754 35.865v35.201c0 14.79-7.673 27.809-19.23 35.333v30.457c0 23.248-18.914 42.164-42.161 42.164h-489.073c-23.248 0-42.164-18.914-42.164-42.164v-30.253c-11.738-7.495-19.557-20.604-19.557-35.534v-33.671c-12.626-7.676-21.076-21.562-21.076-37.389v-34.732l-34.334-133.535c-0.205-1.21-0.336-2.446-0.336-3.713v-414.179c0-12.258 10.031-22.285 22.285-22.285h674.942c12.257 0 22.285 10.029 22.285 22.285v414.179c0 1.267-0.133 2.505-0.336 3.713v0zM221.319 799.687c0 1.282 1.127 2.414 2.411 2.414h489.073c1.282 0 2.411-1.127 2.411-2.414v-23.625h-493.893v23.625zM201.757 733.899c0 1.287 1.127 2.414 2.414 2.414h527.858c1.286 0 2.411-1.127 2.411-2.414v-27.339h-532.685v27.339zM690.197 391.773c0-17.721-14.497-32.221-32.221-32.221h-383.914c-17.721 0-32.221 14.501-32.221 32.221s14.501 32.218 32.221 32.218h383.914c17.723 0 32.221-14.497 32.221-32.218v0zM179.745 667.202h573.732v-159.040h-573.732v159.040z" horiz-adv-x="934" />
<glyph unicode="&#xe624;" d="M449.248 577.472v318.528l-449.248-448 449.248-448v321.344c228.32 0 453.664-39.744 574.752-228.352-12.608 343.712-269.76 425.536-574.752 484.48z" />
<glyph unicode="&#xe625;" d="M680.75 729.25h-337.5l-281.25-337.5v-225.001c0-31.066 25.184-56.25 56.25-56.25h787.5c31.068 0 56.25 25.184 56.25 56.25v225.001l-281.25 337.5zM737.001 391.75l-112.5-112.5h-225.001l-112.5 112.5h-151.778l234.374 281.25h284.807l234.374-281.25h-151.778z" />
<glyph unicode="&#xe626;" d="M362.451 188.385v380.769q0 7.572-4.868 12.44t-12.44 4.868h-34.614q-7.572 0-12.44-4.868t-4.868-12.44v-380.769q0-7.572 4.868-12.44t12.44-4.868h34.614q7.572 0 12.44 4.868t4.868 12.44zM500.913 188.385v380.769q0 7.572-4.868 12.44t-12.44 4.868h-34.615q-7.572 0-12.44-4.868t-4.868-12.44v-380.769q0-7.572 4.868-12.44t12.44-4.868h34.615q7.572 0 12.44 4.868t4.868 12.44zM639.374 188.385v380.769q0 7.572-4.868 12.44t-12.44 4.868h-34.615q-7.572 0-12.44-4.868t-4.868-12.44v-380.769q0-7.572 4.868-12.44t12.44-4.868h34.615q7.572 0 12.44 4.868t4.868 12.44zM345.143 724.923h242.307l-25.962 63.281q-3.787 4.868-9.194 5.95h-171.455q-5.408-1.082-9.194-5.95zM847.067 707.615v-34.615q0-7.572-4.868-12.44t-12.44-4.868h-51.923v-512.739q0-44.892-25.42-77.615t-61.117-32.722h-450q-35.697 0-61.117 31.641t-25.42 76.533v514.904h-51.923q-7.572 0-12.44 4.868t-4.868 12.44v34.615q0 7.572 4.868 12.44t12.44 4.868h167.126l37.861 90.325q8.112 20.012 29.207 34.074t42.728 14.063h173.077q21.635 0 42.728-14.063t29.207-34.074l37.861-90.325h167.126q7.572 0 12.44-4.868t4.868-12.44z" horiz-adv-x="933" />
<glyph unicode="&#xe627;" d="M1024 463.238c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 282.77 229.23 512 512 512s512-229.23 512-512z" />
<glyph unicode="&#xe628;" d="M921.6 819.2h-489.165c-22.528 0-54.835-12.134-71.782-26.982l-347.955-304.435c-16.947-14.848-16.947-39.117 0-53.965l347.955-304.486c16.947-14.797 49.254-26.931 71.782-26.931h489.165c56.371 0 102.4 46.080 102.4 102.4v512c0 56.32-46.029 102.4-102.4 102.4zM777.779 256l-130.918 130.918-130.816-130.918-73.933 73.882 130.867 130.918-130.867 130.867 73.933 73.933 130.867-130.867 130.867 130.867 73.882-73.933-130.816-130.867 130.867-130.867-73.933-73.933z" />
<glyph unicode="&#xe629;" d="M536.381-73.143c-297.448 0-536.381 238.933-536.381 536.381s238.933 536.381 536.381 536.381 536.381-238.933 536.381-536.381c0-297.448-238.933-536.381-536.381-536.381zM536.381 950.857c-268.19 0-487.619-219.429-487.619-487.619s219.429-487.619 487.619-487.619c268.19 0 487.619 219.429 487.619 487.619s-219.429 487.619-487.619 487.619z" horiz-adv-x="1073" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 23 KiB

BIN
public/font/icomoon.ttf Executable file

Binary file not shown.

BIN
public/font/icomoon.woff Executable file

Binary file not shown.

BIN
public/img/ajax-loader.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

BIN
public/img/avatar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/img/clipo-pin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
public/img/clipo-signin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
public/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/img/icon-tour1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/img/icons/copy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
public/img/icons/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
public/img/img-tour1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

BIN
public/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

20
public/img/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

BIN
public/img/notification.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
public/img/satoshi.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
public/img/step-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

30
public/img/step-1.svg Normal file
View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="159px" height="16px" viewBox="0 0 159 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.0.4 (8053) - http://www.bohemiancoding.com/sketch -->
<title>Group@1x</title>
<desc>Created with Sketch.</desc>
<defs>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.0663185009 0" in="shadowBlurOuter1" type="matrix" result="shadowMatrixOuter1"></feColorMatrix>
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetInner1" result="shadowBlurInner1"></feGaussianBlur>
<feComposite in="shadowBlurInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" in="shadowInnerInner1" type="matrix" result="shadowMatrixInner1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
</feMerge>
</filter>
</defs>
<g id="Login" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="new-2" sketch:type="MSArtboardGroup" transform="translate(-735.000000, -171.000000)">
<g id="Group" sketch:type="MSLayerGroup" transform="translate(736.000000, 171.000000)">
<path d="M71.4408381,10.856186 C72.6947093,13.3192708 75.2877935,15.0106827 78.2832665,15.0106827 C81.2787395,15.0106827 83.8718236,13.3192708 85.1256949,10.856186 L85.1256979,10.8561853 L142.032872,10.856186 C143.286744,13.3192708 145.879828,15.0106827 148.875301,15.0106827 C153.097385,15.0106827 156.52006,11.6504269 156.52006,7.50534137 C156.52006,3.36025579 153.097385,0 148.875301,0 C145.412202,0 142.486933,2.26072789 141.54712,5.36095812 L85.611447,5.36095812 C84.6716339,2.26072789 81.7463651,0 78.2832665,0 C74.8201679,0 71.894899,2.26072789 70.955086,5.36095812 L14.9264673,5.36095812 C13.9866542,2.26072789 11.0613854,0 7.59828677,0 C3.3762027,0 -0.046472702,3.36025579 -0.046472702,7.50534137 C-0.046472702,11.6504269 3.3762027,15.0106827 7.59828677,15.0106827 C10.5937598,15.0106827 13.1868439,13.3192708 14.4407152,10.856186 L71.4408351,10.8561853 Z" id="Oval-14" fill="#2C3E50" filter="url(#filter-1)" sketch:type="MSShapeGroup"></path>
<circle id="Oval-12" fill="#7A8C9E" sketch:type="MSShapeGroup" cx="7.5" cy="7.5" r="4.5"></circle>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
public/img/step-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

32
public/img/step-2.svg Normal file
View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="159px" height="18px" viewBox="0 0 159 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.0.4 (8053) - http://www.bohemiancoding.com/sketch -->
<title>Group</title>
<desc>Created with Sketch.</desc>
<defs>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.0663185009 0" in="shadowBlurOuter1" type="matrix" result="shadowMatrixOuter1"></feColorMatrix>
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetInner1" result="shadowBlurInner1"></feGaussianBlur>
<feComposite in="shadowBlurInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" in="shadowInnerInner1" type="matrix" result="shadowMatrixInner1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
</feMerge>
</filter>
</defs>
<g id="Login" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="new-3" sketch:type="MSArtboardGroup" transform="translate(-732.000000, -204.000000)">
<g id="Group" sketch:type="MSLayerGroup" transform="translate(733.000000, 204.724993)">
<path d="M71.376385,10.4695498 C72.6302562,12.9326346 75.2233404,14.6240465 78.2188133,14.6240465 C81.2142863,14.6240465 83.8073705,12.9326346 85.0612417,10.4695498 L85.0612448,10.4695491 L141.968419,10.4695498 C143.222291,12.9326346 145.815375,14.6240465 148.810848,14.6240465 C153.032932,14.6240465 156.455607,11.2637907 156.455607,7.11870514 C156.455607,2.97361957 153.032932,-0.386636224 148.810848,-0.386636224 C145.347749,-0.386636224 142.42248,1.87409167 141.482667,4.9743219 L85.5469939,4.9743219 C84.6071808,1.87409167 81.6819119,-0.386636224 78.2188133,-0.386636224 C74.7557148,-0.386636224 71.8304459,1.87409167 70.8906328,4.9743219 L14.8620142,4.9743219 C13.9222011,1.87409167 10.9969322,-0.386636224 7.53383365,-0.386636224 C3.31174957,-0.386636224 -0.110925827,2.97361957 -0.110925827,7.11870514 C-0.110925827,11.2637907 3.31174957,14.6240465 7.53383365,14.6240465 C10.5293066,14.6240465 13.1223908,12.9326346 14.376262,10.4695498 L71.3763819,10.4695491 Z" id="Oval-14" fill="#2C3E50" filter="url(#filter-1)" sketch:type="MSShapeGroup"></path>
<rect id="Rectangle-81" fill="#7A8C9E" sketch:type="MSShapeGroup" x="9.82695588" y="6.5" width="64" height="2"></rect>
<circle id="Oval-12" fill="#7A8C9E" sketch:type="MSShapeGroup" cx="7.63363776" cy="7.31145467" r="4.5"></circle>
<circle id="Oval-15" fill="#7A8C9E" sketch:type="MSShapeGroup" cx="78.0715917" cy="7.31145467" r="4.5"></circle>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
public/img/step-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

34
public/img/step-3.svg Normal file
View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="159px" height="18px" viewBox="0 0 159 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.0.4 (8053) - http://www.bohemiancoding.com/sketch -->
<title>Group</title>
<desc>Created with Sketch.</desc>
<defs>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.0663185009 0" in="shadowBlurOuter1" type="matrix" result="shadowMatrixOuter1"></feColorMatrix>
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetInner1" result="shadowBlurInner1"></feGaussianBlur>
<feComposite in="shadowBlurInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" in="shadowInnerInner1" type="matrix" result="shadowMatrixInner1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
</feMerge>
</filter>
</defs>
<g id="Login" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="new-3" sketch:type="MSArtboardGroup" transform="translate(-726.000000, -145.173121)">
<g id="Group" sketch:type="MSLayerGroup" transform="translate(727.000000, 146.000000)">
<path d="M71.4408381,10.856186 C72.6947093,13.3192708 75.2877935,15.0106827 78.2832665,15.0106827 C81.2787395,15.0106827 83.8718236,13.3192708 85.1256949,10.856186 L85.1256979,10.8561853 L142.032872,10.856186 C143.286744,13.3192708 145.879828,15.0106827 148.875301,15.0106827 C153.097385,15.0106827 156.52006,11.6504269 156.52006,7.50534137 C156.52006,3.36025579 153.097385,0 148.875301,0 C145.412202,0 142.486933,2.26072789 141.54712,5.36095812 L85.611447,5.36095812 C84.6716339,2.26072789 81.7463651,0 78.2832665,0 C74.8201679,0 71.894899,2.26072789 70.955086,5.36095812 L14.9264673,5.36095812 C13.9866542,2.26072789 11.0613854,0 7.59828677,0 C3.3762027,0 -0.046472702,3.36025579 -0.046472702,7.50534137 C-0.046472702,11.6504269 3.3762027,15.0106827 7.59828677,15.0106827 C10.5937598,15.0106827 13.1868439,13.3192708 14.4407152,10.856186 L71.4408351,10.8561853 Z" id="Oval-21" fill="#2C3E50" filter="url(#filter-1)" sketch:type="MSShapeGroup"></path>
<rect id="Rectangle-83" fill="#7A8C9E" sketch:type="MSShapeGroup" x="81" y="7" width="64" height="2"></rect>
<circle id="Oval-22" fill="#7A8C9E" sketch:type="MSShapeGroup" cx="149.5" cy="7.5" r="4.5"></circle>
<rect id="Rectangle-84" fill="#7A8C9E" sketch:type="MSShapeGroup" x="10" y="7" width="64" height="2"></rect>
<circle id="Oval-19" fill="#7A8C9E" sketch:type="MSShapeGroup" cx="7.5" cy="7.5" r="4.5"></circle>
<circle id="Oval-20" fill="#7A8C9E" sketch:type="MSShapeGroup" cx="78.5" cy="7.5" r="4.5"></circle>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/img/tour1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
public/img/tour2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
public/img/tour3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

BIN
public/img/tour4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
public/img/tour5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

59
public/index.html Normal file
View file

@ -0,0 +1,59 @@
<!doctype html>
<html lang="en" ng-app="copayApp">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta name="msapplication-tap-highlight" content="no">
<link rel="stylesheet" type="text/css" href="css/foundation.css">
<link rel="stylesheet" type="text/css" href="icons/foundation-icons.css">
<link rel="stylesheet" type="text/css" href="css/copay.css">
<title>Copay - Multisignature Wallet</title>
<link rel="shortcut icon" href="img/favicon.ico">
</head>
<body ng-cloak class="ng-cloak">
<div ui-view="splash"></div>
<div class="page"
ng-controller="indexController as index"
ng-swipe-disable-mouse
ng-swipe-left="index.closeMenu()"
ng-swipe-right="index.openMenu()">
<div class="off-canvas-wrap" id="off-canvas-wrap">
<div class="inner-wrap">
<div ui-view="topbar"></div>
<div ng-include="'views/includes/sidebar.html'" ng-if="index.hasProfile"></div>
<div notifications="right top"></div>
<div ng-include="'views/includes/offline.html'" ng-if="index.hasProfile && index.isOffLine"></div>
<div ng-include="'views/includes/clientError.html'"
ng-if="index.hasProfile && !index.isOffLine && index.clientError"></div>
<div ng-include="'views/includes/password.html'" ng-if="index.askPassword"
></div>
<section
class="main-dark"
ng-class="{'main animation': index.hasProfile, 'animation-left': index.swipeLeft,
'animation-right': index.swipeRight}"
ui-view="main"></section>
<div ui-view="menu"></div>
<a class="close-menu" ng-click="index.closeMenu()"></a>
</div>
</div>
</div>
<script src="lib/angular.js"></script>
<!-- DO NOT DELETE THIS COMMET -->
<!-- PLACEHOLDER: CORDOVA SRIPT -->
<script src="js/copay.js"></script>
</body>
</html>

32
public/views/add.html Normal file
View file

@ -0,0 +1,32 @@
<ul class="no-bullet manage size-12">
<li>
<a title="Create new wallet" ng-click="$root.go('create')">
<i class="fi-plus circle plus-fixed"></i>
<i class="icon-arrow-right3 size-18 right m20t"></i>
<span translate>Create new wallet</span>
</a>
</li>
<li>
<a title="Join shared wallet" ng-click="$root.go('join')">
<i class="icon-people circle"></i>
<i class="icon-arrow-right3 size-18 right m20t"></i>
<span translate>Join shared wallet</span>
</a>
</li>
<li>
<a title="Import wallet" ng-click="$root.go('import')">
<i class="icon-download circle"></i>
<i class="icon-arrow-right3 size-18 right m20t"></i>
<span translate>Import wallet </span>
</a>
</li>
<li>
<a title="Import wallet" ng-click="$root.go('importLegacy')">
<i class="fi-archive plus-fixed circle"></i>
<i class="icon-arrow-right3 size-18 right m20t"></i>
<span translate>Import from Copay Beta 0.9</span>
</a>
</li>
</ul>
<div class="extra-margin-bottom"></div>

62
public/views/backup.html Normal file
View file

@ -0,0 +1,62 @@
<div class="backup" ng-controller="backupController as backup">
<div class="columns m20t" ng-show="!backup.backupWalletPlainText && !backup.error">
<div class="text-warning size-14 m10v" ng-show="backup.isEncrypted">
<i class="fi-alert size-12"></i>
<span translate> This wallet have its private key encrypted. Exporting a backup will keep the private key encrypted on the backup.</span>
</div>
<label for="password"><span translate>Set up a Password for your backup</span>
</label>
<div class="input">
<input type="password" class="form-control" placeholder="{{'Your backup password'|translate}}"
name="password" ng-model="backup.password">
</div>
<label for="password"><span translate>Repeat Password</span>
</label>
<div class="input">
<input type="password" class="form-control" placeholder="{{'Repeat password'|translate}}"
name="password" ng-model="backup.repeatpassword">
</div>
<button class="black radius expand" ng-click="backup.downloadWalletBackup()" ng-disabled="backup.loading || (!backup.password || backup.password != backup.repeatpassword)" style="background-color:{{index.backgroundColor}}"
ng-show="!backup.isSafari && !backup.isCordova"><i class="fi-download"></i>
<span translate>Download backup</span></button>
<button class="black radius expand" ng-click="backup.viewWalletBackup()" ng-disabled="backup.loading" style="background-color:{{index.backgroundColor}}"
ng-show="backup.isSafari && !backup.isCordova"><i class="fi-eye"></i>
<span translate>View backup</span></button>
<div ng-show="backup.isCordova">
<h4 translate>Backup options</h4>
<button class="black radius expand" ng-disabled="backup.loading || (!backup.password || backup.password != backup.repeatpassword)" style="background-color:{{index.backgroundColor}}"
ng-click="backup.copyWalletBackup()"><i class="fi-clipboard-pencil"></i>
<span translate>Copy to clipboard</span></button>
<button class="black radius expand" ng-disabled="backup.loading || (!backup.password || backup.password != backup.repeatpassword)" style="background-color:{{index.backgroundColor}}"
ng-click="backup.sendWalletBackup()"><i class="fi-mail"></i>
<span translate>Send by email</span></button>
</div>
<div class="row m20b" ng-show="backup.backupWalletPlainText">
<div class="large-12 columns">
<h3 translate>Copy backup in a safe place</h3>
<div class="input">
<textarea class="show-for-large-up" readonly rows="7">{{backup.backupWalletPlainText}}</textarea>
<textarea class="hide-for-large-up" rows="12">{{backup.backupWalletPlainText}}</textarea>
</div>
<div class="size-12 text-gray text-right">
<i class="icon-compose"></i>
<span translate>Copy this text as it is in a safe place (notepad or email)</span>
</div>
</div>
</div>
<div class="m10 size-14 text-gray">
* You can safely install your backup on other device and
use your wallet from many devices at the same time.
</div>
</div>

View file

@ -0,0 +1,57 @@
<div ng-controller="copayersController as copayers" ng-init="copayers.init()"
ng-if="!index.isOffLine && !index.clientError">
<div ng-show="!index.notAuthorized">
<div class="row m10t text-center">
<div class="large-12 columns">
<h1 translate>Share this secret with your copayers</h1>
</div>
</div>
<div ng-click="copayers.copySecret(index.walletSecret)" ng-class="{'enable_text_select': !index.isCordoba}">
<div class="text-center">
<qrcode size="220" error-correction-level="L" data="{{index.walletSecret}}"></qrcode>
<div class="secret columns m10t m20b">
{{index.walletSecret || ('Loading...'|translate)}}
</div>
</div>
</div>
<div class="text-center m10t" ng-if="index.isCordova">
<span class="button outline dark-gray tiny"
ng-click="copayers.shareSecret(index.walletSecret)">
<i class="fi-share"></i>
<span translate>Share secret</span>
</span>
</div>
<h4 class="title oh m0">
<span translate>Waiting for copayers</span>
<span class="text-gray right">
[ {{index.m}} <span translate>of</span> {{index.n}} ]
</span>
</h4>
<div class="p10 line-b" ng-include="'views/includes/copayers.html'"></div>
<div ng-if="!index.isComplete" class="p10 line-b m20b">
<p class="size-12 m0">
<i class="fi-loop"></i>
<span translate>Waiting...</span>
</p>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<div class="m20tp text-center" ng-show="index.notAuthorized">
<h1 translate>Wallet incomplete and broken</h1>
<h4>Delete it and create a new one</h4>
</div>
<button class="small warning expand" ng-click="copayers.deleteWallet()">
<i class="fi-trash"></i> <span translate>Cancel</span>
</button>
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

80
public/views/create.html Normal file
View file

@ -0,0 +1,80 @@
<div class="create m20t" ng-controller="createController as create">
<div ng-show="create.loading" class="text-center text-gray animated infinite flash" translate>Creating wallet...</div>
<form name="setupForm" ng-submit="create.create(setupForm)" ng-show="!create.loading" novalidate>
<div class="row">
<div class="large-12 columns">
<div class="box-notification" ng-show="create.error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{create.error|translate}}
</span>
</div>
<div class="row">
<div class="large-12 columns">
<label><span translate>Wallet name</span>
<div class="input">
<input type="text" placeholder="{{'Family vacation funds'|translate}}" class="form-control" name="walletName" ng-model="walletName" ng-required="true">
</div>
</label>
</div>
<div class="large-12 columns" ng-show="totalCopayers != 1" >
<label><span translate>Your nickname</span>
<div class="input">
<input type="text" placeholder="{{'John'|translate}}" class="form-control" name="myName" ng-model="myName" ng-required="totalCopayers != 1" ng-disabled="totalCopayers == 1">
</div>
</label>
</div>
</div>
<div class="row">
<div class="large-6 medium-6 columns">
<label><span translate>Select total number of copayers</span>
<select class="m10t" ng-model="totalCopayers" ng-options="totalCopayers as totalCopayers for totalCopayers in create.TCValues">
</select>
</label>
</div>
<div class="large-6 medium-6 columns">
<label><span translate>Select required signatures</span>
<select class="m10t" ng-model="requiredCopayers" ng-options="requiredCopayers as requiredCopayers for requiredCopayers in create.RCValues" ng-disabled="totalCopayers == 1">
</select>
</label>
</div>
</div>
<div class="m10t oh" ng-init="hideAdv=true">
<a class="button outline light-gray expand tiny" ng-click="hideAdv=!hideAdv">
<i class="fi-widget m3r"></i>
<span translate ng-hide="!hideAdv">Show</span>
<span translate ng-hide="hideAdv">Hide</span>
<span translate>advanced options</span>
<i ng-if="hideAdv" class="icon-arrow-down4"></i>
<i ng-if="!hideAdv" class="icon-arrow-up4"></i>
</a>
</div>
<div ng-hide="hideAdv" class="row">
<div class="large-12 columns">
<label for="network-name" class="line-b oh">
<span translate>Use test network</span>
<switch id="network-name" name="isTestnet" ng-model="isTestnet" class="green right m5t m10b"></switch>
</label>
<label for="ext-master" class="m10t">
<span translate>Master extended private key</span>
<input id="ext-master"
type="text"
placeholder="{{'BIP32 master extended private key'|translate}}"
name="privateKey" ng-model="privateKey">
</div>
</div>
<button type="submit" class="button black expand radius m0" ng-disabled="setupForm.$invalid">
<span translate>Create</span>
{{requiredCopayers}}-<span translate>of</span>-{{totalCopayers}} <span translate>wallet</span>
</button>
</div>
</div>
</form>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,22 @@
<div
ng-controller="createProfileController as cp">
<div class="text-center logo-setup p20">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
<div ng-include="'views/includes/version.html'"></div>
</div>
<div ng-if="index.isOffLine" class="row">
<div class="large-12 columns">
<h1 class="text-center text-warning" translate>Warning</h1>
<div class="panel">
<p translate>You dont have an internet connection active. Copay needs connection to create a wallet</p>
</div>
</div>
</div>
<!-- <div ng&#45;if="!index.isOffLine &#38;&#38; !cp.creatingProfile" ng&#45;include="'views/includes/pin.html'" ng&#45;init="confirmPin=true"></div> -->
<div class="m20tp text-white text-center animated infinite flash" ng-if="!index.isOffLine && cp.creatingProfile">
<span translate>Creating wallet...</span>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,2 @@
<div class="settings" ng-controller="DevLoginController">
</div>

View file

@ -0,0 +1,62 @@
{{'Receive'|translate}}
{{'History'|translate}}
{{'Wrong password'|translate}}
{{'Copied to clipboard'|translate}}
{{'Please enter the required fields'|translate}}
{{'Import a backup'|translate}}
{{'Importing wallet - Reading backup...'|translate}}
{{'Importing wallet - Setting things up...'|translate}}
{{'Importing wallet - We are almost there...'|translate}}
{{'Error updating indexes:'|translate}}
{{'Please, select your backup file'|translate}}
{{'Please enter the required fields'|translate}}
{{'Fatal error connecting to Insight server'|translate}}
{{'The wallet is full'|translate}}
{{'Wallet network configuration missmatch'|translate}}
{{'The secret string you entered is invalid'|translate}}
{{'Transactions Proposals Purged'|translate}}
{{'transaction proposal purged'|translate}}
{{'Updating balance'|translate}}
{{'Scaning for transactions'|translate}}
{{'Using derived addresses from your wallet'|translate}}
{{'Finished'|translate}}
{{'The balance is updated using the derived addresses'|translate}}
{{'Login Required'|translate}}
{{'Please open wallet to complete payment'|translate}}
{{'Send'|translate}}
{{'Unable to send transaction proposal'|translate}}
{{'The transaction proposal has been created'|translate}}
{{'Form Error'|translate}}
{{'Please complete required fields'|translate}}
{{'Success'|translate}}
{{'New entry has been created'|translate}}
{{'There was an error sending the transaction'|translate}}
{{'Transaction rejected'|translate}}
{{'You rejected the transaction successfully'|translate}}
{{'There was an error signing the transaction'|translate}}
{{'Session will be closed'|translate}}
{{'Your session is about to expire due to inactivity in'|translate}}
{{'seconds'|translate}}
{{'Session closed'|translate}}
{{'Session closed because a long time of inactivity'|translate}}
{{'available.'|translate}}
{{'It\'s important that you update your wallet at https://copay.io'|translate}}
{{'Please update your wallet at https://copay.io'|translate}}
{{'Backup created'|translate}}
{{'Encrypted backup file saved'|translate}}
{{'Networking Error'|translate}}
{{'Could not connect to the Insight server. Check your settings and network configuration'|translate}}
{{'Received corrupt message from '|translate}}
{{'Transaction Update'|translate}}
{{'A transaction was signed by'|translate}}
{{'A transaction was rejected by'|translate}}
{{'Transaction Error'|translate}}
{{'Received corrupt transaction from'|translate}}
{{'New Transaction'|translate}}
{{'You have a pending transaction proposal'|translate}}
{{'You have'|translate}}
{{'pending transaction proposals'|translate}}
{{'Funds received!'|translate}}
{{'Transaction broadcasted'|translate}}
{{'Accessing your profile'|translate}}
{{'Signing out'|translate}}

56
public/views/history.html Normal file
View file

@ -0,0 +1,56 @@
<div class="history" ng-controller="historyController as history">
<div class="row m20t" ng-show="!index.txHistory[0]">
<div class="large-12 columns">
<div class="oh text-center">
<span ng-if="index.updatingTxHistory" class="text-gray" translate>Getting transactions...</span>
<span ng-if="!index.updatingTxHistory">No transactions yet</span>
</div>
</div>
</div>
<div ng-show="index.txHistory[0]" class="scroll">
<div ng-repeat="btx in index.txHistory"
ng-click="history.openTxModal(btx)"
class="row last-transactions-content">
<div class="large-3 medium-3 small-3 columns">
<span class="label tu" ng-show="btx.action == 'received'" style="background-color:{{index.backgroundColor}}">Received</span>
<span class="label tu gray" ng-show="btx.action == 'sent'">Sent</span>
<span class="label tu gray" ng-show="btx.action == 'moved'">Moved</span>
</div>
<div class="large-5 medium-5 small-5 columns">
<span class="size-18">
<span ng-if="btx.action == 'received'">+</span>
<span ng-if="btx.action == 'sent'">-</span>
{{history.formatAmount(btx.amount)}}
{{history.getUnitName()}}
</span>
</div>
<div class="large-4 medium-4 small-4 columns text-right">
<div class="m5t size-12 text-gray">
<time ng-if="btx.time">{{btx.time * 1000 | amTimeAgo}}</time>
<span translate class="text-warning"
ng-show="!btx.time && (!btx.confirmations || btx.confirmations == 0)">
Unconfirmed
</span>
</div>
</div>
<div class="size-14 text-gray columns m5t" ng-if="btx.message || btx.addressTo">
{{btx.message || btx.addressTo}}
</div>
</div>
<div class="m20t row">
<div class="columns">
<button class="outline light-gray small expand" ng-disabled="index.updatingTxHistory"
ng-click="index.updateTxHistory(index.skipHistory)" ng-show="index.txHistoryPaging">
<span ng-show="!index.updatingTxHistory">
<span translate>More</span> <i class="icon-arrow-down4 ng-scope"></i>
</span>
<span ng-show="index.updatingTxHistory" translate>
Getting transactions...
</span>
</button>
</div>
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

45
public/views/import.html Normal file
View file

@ -0,0 +1,45 @@
<div class="import m20t" ng-controller="importController as import">
<div ng-show="import.loading" class="text-center text-gray animated infinite flash" translate>Importing wallet...</div>
<div class="row" ng-show="!import.loading">
<div class="large-12 columns">
<form name="importForm" ng-submit="import.import(importForm)" novalidate>
<div class="box-notification" ng-show="import.error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{import.error|translate}}
</span>
</div>
<div ng-show="!import.isSafari && !import.isCordova" class="line-b m10b">
<label for="backupFile">
<span translate>Choose backup file from your computer</span> <i class="fi-laptop"></i>
</label>
<input type="file" class="form-control" placeholder="{{'Select a backup file'|translate}}"
name="backupFile" ng-model="import.backupFile" ng-file-select>
</div>
<div ng-show="import.isSafari || import.isCordova">
<label for="backupText">
<span translate>Paste backup plain text code</span> <i class="fi-clipboard"></i>
</label>
<textarea class="form-control" name="backupText" ng-model="import.backupText" rows="5"></textarea>
</div>
<label for="password"><span translate>Password</span> <small translate>Required</small>
</label>
<div class="input">
<input type="password" class="form-control" placeholder="{{'Your backup password'|translate}}"
name="password" ng-model="import.password">
</div>
<button translate type="submit" class="button radius expand black m0"
ng-disabled="importForm.$invalid || !import.password">
Import backup
</button>
</form>
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,75 @@
<div class="import-profile" ng-controller="importLegacyController as importLegacy">
<div class="row m20t">
<div class="large-5 large-centered medium-7 medium-centered columns">
<div class="logo-setup show-for-large-up">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
<div ng-include="'views/includes/version.html'"></div>
</div>
<div>
<div ng-show="importLegacy.importing">
<h1 class="m20b animated infinite flash"> Importing...</h1>
<ul>
<li ng-repeat="m in importLegacy.messages">
<span style="opacity: {{m.opacity}}"> {{m.message}} </span>
</ul>
</div>
<div class="box-notification" ng-show="importLegacy.error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{importLegacy.error|translate}}
</span>
</div>
<div ng-show="!importLegacy.importing">
<form name="importForm" ng-submit="importLegacy.import(importForm)" novalidate>
<label for="fromCloud" class="line-b oh m20b">
<span translate>Import from the Cloud?</span>
<switch id="fromCloud" name="fromCloud" ng-model="importLegacy.fromCloud" class="green right m5t m10b"></switch>
</label>
<label for="username">
<span translate>{{importLegacy.fromCloud ? 'Email': 'Username'}}</span>
<input type="text" class="form-control" placeholder="{{importLegacy.fromCloud ? 'Email': 'Username'}}"
name="username" ng-model="importLegacy.username" required>
</label>
<label for="password">
<span translate>Password</span>
<input type="password" class="form-control" placeholder="{{'Your profile password'|translate}}"
name="password" ng-model="importLegacy.password" required>
</label>
<label for="server" ng-show="importLegacy.fromCloud">
<span translate>Server</span>
<input type="text" class="form-control" placeholder="{{'Server URL'}}"
name="server" ng-model="importLegacy.server" required>
</label>
<button translate type="submit"
class="button black radius expand m0"
ng-disabled="deviceForm.$invalid">
Import
</button>
</form>
<form name="importLegacyForm" ng-submit="importLegacy.import(importLegacyForm)" novalidate>
<div class="box-notification" ng-show="error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{error|translate}}
</span>
</div>
</form>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,67 @@
<div class="import-profile" ng-controller="importProfileController as importProfile">
<div ng-show="$root.starting">
<div ng-include="'views/includes/loading.html'" ng-init="title = importStatus"></div>
</div>
<div class="row" ng-show="!$root.starting">
<div class="large-5 large-centered medium-7 medium-centered columns">
<div class="logo-setup show-for-large-up">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
<div ng-include="'views/includes/version.html'"></div>
</div>
<div>
<h2 translate>Import a profile</h2>
<form name="importProfileForm" ng-submit="importProfile.import(importProfileForm)" novalidate>
<div class="box-notification" ng-show="error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{error|translate}}
</span>
</div>
<div ng-show="!isSafari && !isCordova">
<div class="input">
<input type="file" class="db form-control"
placeholder="{{'Select a backup file'|translate}}" name="backupFile" ng-model="importProfile.backupFile" ng-file-select>
</div>
</div>
<div ng-show="importProfile.isSafari || importProfile.isCordova">
<div class="input">
<textarea
placeholder="{{'Paste backup plain text code'|translate}}"
class="form-control"
name="backupText"
ng-model="importProfile.backupText"
rows="5"></textarea>
<i class="icon-compose"></i>
</div>
</div>
<div class="input">
<input type="password" class="form-control" placeholder="{{'Your profile password'|translate}}"
name="password" ng-model="importProfile.password" required>
<i class="icon-locked"></i>
</div>
<button translate type="submit"
class="button primary radius expand m0"
ng-disabled="importProfileForm.$invalid">
Import backup
</button>
</form>
<div class="box-setup-footer">
<div class="left">
<a class="button outline dark-gray tiny" ng-click="$root.go('signin')">
<i class="icon-arrow-left4 size-10"></i>
<span translate>Back</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,11 @@
<div class="client-error dr-notification-wrapper">
<div class="dr-notification">
<div class="dr-notification-image">
<i class="fi-alert"></i>
</div>
<div class="dr-notification-content">
<h3 class="dr-notification-title">Connection error</h3>
<div class="dr-notification-text ellipsis">{{index.clientError.message || index.clientError}}</div>
</div>
</div>
</div>

View file

@ -0,0 +1,10 @@
<ul class="no-bullet m0">
<li class="" ng-repeat="copayer in index.copayers">
<span class="size-12" ng-show="copayer.id == index.copayerId">
<i class="fi-check m5r"></i> {{'Me'|translate}}
</span>
<span class="size-12 text-gray" ng-show="copayer.id != index.copayerId">
<i class="fi-check m5r"></i> {{copayer.name}}
</span>
</li>
</ul>

View file

@ -0,0 +1,6 @@
<div class="loading-screen">
<div class="loading-screen-content">
<img src="img/ajax-loader.gif" alt="Loading...">
<div class="text-gray size-12" ng-show="title">{{title|translate}}...</div>
</div>
</div>

View file

@ -0,0 +1,19 @@
<div
ng-show="!index.noFocusedWallet"
class="bottom-bar row collapse"
ng-controller="menuController as menu">
<div class="medium-3 small-3 columns text-center bottombar-item" ng-repeat="item in menu.menu">
<a ng-click="menu.go(item.link)" ng-class="{'active': activeMenu == item.link}"
style="border-top-color:{{activeMenu==item.link ? index.backgroundColor : ''}}">
<i class="size-36 {{item.icon}} db"></i>
<div class="size-10 tu">
{{item.title|translate}}
<span
class="label alert round"
ng-if="item.link=='walletHome' && index.pendingTxProposalsCountForUs > 0">{{index.pendingTxProposalsCountForUs}}</span>
</div>
</a>
</div>
</div>

View file

@ -0,0 +1,13 @@
<div class="dr-notification-wrapper" ng-repeat="noti in queue" ng-click="removeNotification(noti)">
<div class="dr-notification animated bounceInDown">
<div class="dr-notification-image" ng-switch on="noti.image">
<i class="{{noti.icon}}" ng-switch-when="false"></i>
<img ng-src="{{noti.image}}" ng-switch-default />
</div>
<div class="dr-notification-content">
<h3 class="dr-notification-title">{{noti.title|translate}}</h3>
<div class="dr-notification-text label" style="background-color:{{noti.userData.color}}">{{noti.content|translate}}</div>
</div>
</div>
</div>

View file

@ -0,0 +1,11 @@
<div class="offline dr-notification-wrapper">
<div class="dr-notification">
<div class="dr-notification-image">
<i class="fi-alert"></i>
</div>
<div class="dr-notification-content">
<h3 class="dr-notification-title">{{'No internet connection'|translate}}</h3>
<div class="dr-notification-text ellipsis">{{'Copay needs connection to run basic functions'|translate}}</div>
</div>
</div>
</div>

View file

@ -0,0 +1,43 @@
<div class="passModalMask">
</div>
<div ng-controller="passwordController as pass" class="passModal"
ng-class="{'animated bounceInDown':index.askPassword}"
>
<div class="columns m20t">
<label class="size-14 text-center" for="password" ng-if="index.askPassword.isSetup">
<span ng-show="!pass.isVerification" translate>Set up a Password</span>
<span ng-show="pass.isVerification" translate>Repeat Password</span>
</label>
<label class="size-14 text-center" for="password" ng-if="!index.askPassword.isSetup">
<span translate>Enter your password</span>
</label>
<div class="input m20t">
<input type="password" placeholder="{{'Your password'|translate}}"
name="password" ng-model="pass.password">
</div>
</div>
<div class="row">
<div class="small-6 columns">
<button class="radius small-6 columns outline dark-gray expand" ng-click="pass.close(index.askPassword.callback)" translate>
CANCEL
</button>
</div>
<div class="small-6 columns">
<button class="radius expand" ng-click="pass.set(index.askPassword.isSetup, index.askPassword.callback)" ng-disabled="!pass.password" style="background-color:{{index.backgroundColor}}" >
<span translate ng-if="index.askPassword.isSetup" translate>SET</span>
<span translate ng-if="!index.askPassword.isSetup" translate>ENTER</span>
</button>
</div>
</div>
<div class="text-warning size-12 columns m20t" ng-show="index.askPassword.isSetup">
<i class="fi-alert"></i>
<span translate ng-show="!pass.error"> Password cannot be recovered. Be sure to write it down</span>
<span ng-show="pass.error">{{pass.error|translate}}</span>
</div>
</div>

View file

@ -0,0 +1 @@
<span class="photo-container"><i class="fi-torso size-42"></i></span>

View file

@ -0,0 +1,54 @@
<div ng-controller="pinController as pin" ng-init="pin.init(confirmPin, testPin)">
<h3 class="text-center text-white">
<span ng-show="pin.askForPin == 1">Setup a PIN</span>
<span ng-show="pin.askForPin == 2">Repeat PIN</span>
</h3>
<div class="text-center size-12 text-warning" ng-show="pin.error || cp.error">
{{(pin.error || cp.error)|translate}}
</div>
<div class="pin" ng-show="!pin.error && !cp.error">
<div class="pin-box">
<i class="icon-circle" ng-show="!pin.defined[0]"></i>
<i class="icon-circle-active" ng-show="pin.defined[0]"></i>
</div>
<div class="pin-box">
<i class="icon-circle" ng-show="!pin.defined[1]"></i>
<i class="icon-circle-active" ng-show="pin.defined[1]"></i>
</div>
<div class="pin-box">
<i class="icon-circle" ng-show="!pin.defined[2]"></i>
<i class="icon-circle-active" ng-show="pin.defined[2]"></i>
</div>
<div class="pin-box">
<i class="icon-circle" ng-show="!pin.defined[3]"></i>
<i class="icon-circle-active" ng-show="pin.defined[3]"></i>
</div>
</div>
<div class="pin-numbers">
<div class="pin-button-bar">
<a class="pin-button" ng-click="pin.press(1)">1</a>
<a class="pin-button" ng-click="pin.press(2)">2</a>
<a class="pin-button" ng-click="pin.press(3)">3</a>
</div>
<div class="pin-button-bar">
<a class="pin-button" ng-click="pin.press(4)">4</a>
<a class="pin-button" ng-click="pin.press(5)">5</a>
<a class="pin-button" ng-click="pin.press(6)">6</a>
</div>
<div class="pin-button-bar">
<a class="pin-button" ng-click="pin.press(7)">7</a>
<a class="pin-button" ng-click="pin.press(8)">8</a>
<a class="pin-button" ng-click="pin.press(9)">9</a>
</div>
<div class="pin-button-bar">
<a class="pin-button" ng-click="pin.skip()">
<i class="text-primary size-16 vm" translate>Skip</i>
</a>
<a class="pin-button" ng-click="pin.press(0)">0</a>
<a class="pin-button" ng-click="pin.clear()"><i class="fi-arrow-left"></i></a>
</div>
</div>
</div>

View file

@ -0,0 +1,28 @@
<nav class="sidebar left-off-canvas-menu" ng-controller="sidebarController as sidebar">
<header>
<img src="img/logo-negative-beta.svg" alt="Copay" width="80">
<div ng-include="'views/includes/version.html'"></div>
</header>
<ul class="off-canvas-list">
<li ng-show="sidebar.wallets[0]"
ng-repeat="item in sidebar.wallets track by $index"
ng-class="{'selected': item.id == index.walletId}"
class="nav-item">
<a ng-click="sidebar.switchWallet(item.id)">
<div class="avatar-wallet" style="background-color:{{item.color}}">{{(item.name || item.id) | limitTo: 1}}</div>
<div class="ellipsis name-wallet">{{item.name || item.id}}</div>
<div class="size-12">{{item.m}} of {{item.n}}</div>
</a>
</li>
<li ng-if="!index.isOffLine">
<a ng-click="$root.go('add')">
<i class="icon-arrow-right3 size-18 right m10t"></i>
<i class="fi-plus size-24 db left m10r"></i>
<div class="tu text-bold">
<span class="size-12" translate>Add wallet</span>
</div>
<div translate>Create, join or import</div>
</a>
</li>
</ul>
</nav>

View file

@ -0,0 +1,22 @@
<nav ng-controller="topbarController as topbar" class="tab-bar">
<section class="left-small">
<a class="p10" ng-show="!goBackToState && !index.noFocusedWallet"
ng-click="index.openMenu()"><i class="fi-list size-24"></i>
</a>
<a ng-show="goBackToState"
ng-click="$root.go(goBackToState); goBackToState = null"><i class="icon-arrow-left3 icon-back"></i>
<span class="text-back" translate>Back</span>
</a>
</section>
<section class="right-small" ng-show="index.isComplete && !goBackToState">
<a class="p10"
ng-click="topbar.openScanner()"><i class="fi-camera size-24"></i></a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" style="color:{{index.backgroundColor}}">
{{(titleSection|translate) || index.walletName}}
</h1>
</section>
</nav>

View file

@ -0,0 +1,25 @@
<div class="last-transactions-content"
ng-class="{'text-gray':!tx.pendingForUs}"
ng-click="openTxModal(tx, index.copayers)">
<div class="m5b size-12 text-gray">
<time>{{ (tx.ts || tx.createdTs ) | amTimeAgo}}</time>
</div>
<div class="row collapse">
<div class="ellipsis small-8 columns size-14">
<span translate>To</span>:
<span ng-if="tx.merchant">
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span>
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span>
</span>
<contact address="{{tx.toAddress}}" ng-hide="tx.merchant"> </contact>
{{tx.toAddress}}
</div>
<div class="small-4 columns text-right">
<span class="text-bold size-14" ng-if="!$root.updatingBalance">
{{tx.amountStr}}
</span>
</div>
</div>
</div>

View file

@ -0,0 +1,5 @@
<span ng-controller="versionController as v">
<small>v{{v.version}}</small>
<small>#{{v.commitHash}}</small>
</span>

66
public/views/join.html Normal file
View file

@ -0,0 +1,66 @@
<div class="join m20t" ng-controller="joinController as join">
<div ng-show="join.loading" class="text-center text-gray animated infinite flash" translate>Joining shared wallet...</div>
<div class="row" ng-show="!join.loading">
<div class="large-12 columns">
<form name="joinForm" ng-submit="join.join(joinForm)" novalidate>
<label><span translate>Your nickname</span>
<div class="input">
<input type="text" placeholder="{{'John'|translate}}" class="form-control" name="myName" ng-model="myName" ng-required="true">
</div>
</label>
<div class="row collapse">
<label for="secret" class="left"><span translate>Wallet Secret</span>
<small translate ng-show="joinForm.secret.$pristine">Required</small>
</label>
<span class="has-error right size-12" ng-show="joinForm.secret.$invalid
&& !joinForm.secret.$pristine">
<span class="icon-input"><i class="fi-x"></i></span>
<span translate>Wallet Secret is not valid!</span>
</span>
<small class="icon-input right" ng-show="joinForm.secret.$valid
&& !joinForm.secret.$pristine"><i class="fi-check"></i></small>
</div>
<div class="input">
<input id="secret" type="text" placeholder="{{'Paste wallet secret here'|translate}}" name="secret" ng-model="secret" wallet-secret required>
<div ng-hide="showScanner || disableScanner">
<a class="postfix" ng-click="join.openScanner()"><i class="fi-camera size-24">&nbsp;</i></a>
</div>
<div ng-show="showScanner">
<a class="postfix button warning" ng-click="cancelScanner()"><i class="fi-x">&nbsp;</i></a>
</div>
</div>
<div id="scanner"
class="row"
ng-if="showScanner"
ng-include="'views/includes/scanner.html'">
</div>
<a class="button outline light-gray tiny expand" ng-click="join.hideAdv=!join.hideAdv">
<i class="fi-widget m3r"></i>
<span translate ng-show="!join.hideAdv">Show</span>
<span translate ng-show="join.hideAdv">Hide</span>
<span translate>advanced options</span>
<i ng-show="!join.hideAdv" class="icon-arrow-down4"></i>
<i ng-show="join.hideAdv" class="icon-arrow-up4"></i>
</a>
<div ng-show="join.hideAdv" class="row">
<div class="large-12 columns">
<label for="ext-master">Master extended private key
<input id="ext-master"
type="text"
placeholder="{{'BIP32 master extended private key'|translate}}"
name="privateKey" ng-model="privateKey">
</label>
</div>
</div>
<button translate type="submit" class="button expand black m0 radius" ng-disabled="joinForm.$invalid">Join</button>
</form>
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,88 @@
<nav class="tab-bar text-right hide-for-large-up">
<span ng-click="close()" class="p10 text-white" translate>Close</span>
</nav>
<div class="modal-mobile">
<h1 ng-show="!showForm" translate>Address Book</h1>
<h1 ng-show="showForm" translate>Add a new entry</h1>
<p translate class="text-gray m15b" ng-show="!showForm && !hasEntry()" translate>
Empty. Create an alias for your addresses
</p>
<div class="box-notification" ng-show="success">
<div class="box-icon success">
<i class="size-24 fi-check"></i>
</div>
<span class="size-14 text-success">
{{success|translate}}
</span>
</div>
<table class="addressbook line-t" ng-show="!showForm && hasEntry()">
<thead class="show-for-large-up">
<tr>
<th translate>Entry</th>
<th class="show-for-large-up" ng-class="{'hide-for-small-only' : $root.wallet.isShared()}" ng-show="$root.wallet.isShared()" translate>Creator</th>
<th class="show-for-large-up" translate>Date</th>
<th class="show-for-large-up" translate>Visible</th>
</tr>
</thead>
<tbody>
<tr
ng-repeat="(addr, info) in addressBook"
ng-class="{'addressbook-disabled': info.hidden}">
<td ng-click="copyToSend(addr)">
<b>{{info.label}}</b><br>
<small class="address-size">{{::addr}}</small>
</td>
<td class="show-for-large-up" ng-click="copyToSend(addr)" ng-show="$root.wallet.isShared()">{{$root.wallet.publicKeyRing.nicknameForCopayer(info.copayerId)}}</td>
<td ng-click="copyToSend(addr)" class="show-for-large-up"><time>{{::info.createdTs | amCalendar}}</time></td>
<td class="show-for-large-up text-center">
<a ng-click="toggleAddressBookEntry(addr)" title="{{ info.hidden ? 'Enable' : 'Disable'}} address">
<i class="fi-checkbox size-21"
ng-class="{'text-success':!info.hidden, 'text-gray':info.hidden}"></i>
</a>
</td>
</tr>
</tbody>
</table>
<form ng-show="showForm" class="m0" name="addressBookForm"
ng-disabled="loading"
ng-submit="submitAddressBook(addressBookForm)" novalidate>
<div class="box-notification" ng-show="error">
<div class="box-icon error">
<i class="size-24 fi-x"></i>
</div>
<span class="size-14 text-warning">
{{error|translate}}
</span>
</div>
<div class="row collapse">
<label for="newaddress" class="left"><span translate>Address</span>
<small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">Required</small>
</label>
<span class="has-error right size-12" ng-show="addressBookForm.newaddress.$invalid && newaddress">
<span class="icon-input"><i class="fi-x"></i></span>
<span translate>Not valid</span>
</span>
<small class="icon-input right" ng-show="!addressBookForm.newaddress.$invalid && newaddress"><i class="fi-check"></i></small>
</div>
<div class="input">
<input type="text" name="newaddress"
placeholder="{{'Address'|translate}}" ng-model="newaddress" valid-address required>
</div>
<label for="newlabel"><span translate>Label</span>
<small translate ng-hide="!addressBookForm.newlabel.$pristine || newlabel">Required</small>
<div class="input">
<input type="text" name="newlabel"
placeholder="{{'Label'|translate}}" ng-model="newlabel" required>
</div>
</label>
<a translate class="button secondary default" ng-show="!loading" ng-click="cancel(addressBookForm)">Cancel</a>
<button class="primary right"
ng-disabled="addressBookForm.$invalid || loading"
ng-click="submitAddressBook(addressBookForm)">{{'Add'|translate}}</button>
</form>
<a ng-show="!showForm" class="button primary expand" ng-disabled="loading" ng-click="toggleForm()">
<i class="fi-plus"></i> <span translate>Add entry</span>
</a>
<a class="close-reveal-modal show-for-large-up" ng-click="close()"><i class="fi-x size-18"></i></a>
</div>

View file

@ -0,0 +1,16 @@
<div class="m20tp text-center">
<div class="row">
<h1 class="text-center m20b">{{title|translate}}</h1>
<div class="large-6 medium-6 small-6 columns">
<button class="button light-gray expand outline radius" ng-disabled="loading"
ng-click="cancel()">
<i class="fi-x"></i> <span class="tu" translate>Cancel</span>
</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<button class="warning expand radius" ng-disabled="loading" ng-click="ok()">
<i class="fi-trash"></i> <span translate>OK</span>
</button>
</div>
</div>
</div>

View file

@ -0,0 +1,25 @@
<nav class="tab-bar">
<section class="right-small">
<a ng-click="cancel()">
<span class="text-close" translate>Close</span>
</a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" translate>
Copayers
</h1>
</section>
</nav>
<ul class="no-bullet p60t">
<li class="line-b p10" ng-repeat="copayer in copayers">
<span class="size-12" ng-show="copayer.id == copayerId">
<i class="icon-contact size-24 m10r"></i> {{copayer.name}} ({{'Me'|translate}}) <i class="fi-check m5r right"></i>
</span>
<span class="size-12 text-gray" ng-show="copayer.id != copayerId">
<i class="icon-contact size-24 m10r"></i> {{copayer.name}}<i class="fi-check m5r right"></i>
</span>
</li>
</ul>

View file

@ -0,0 +1,50 @@
<nav class="tab-bar">
<section class="right-small">
<a ng-click="cancel()">
<span class="text-close" translate>Close</span>
</a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" style="color:{{color}}" translate>
Payment protocol request
</h1>
</section>
</nav>
<div class="row p60t">
<div class="large-12 columns">
<div class="text-center">
<div class="size-48">
{{unitTotal}} {{unitName}}
</div>
<div class="size-18 m5t text-gray">
{{ alternative }} {{ alternativeIsoCode }}
</div>
</div>
<div class="line-b m10v"></div>
<div class="ellipsis m10v">
<i translate>To:</i> {{paypro.domain}}
</div>
<div class="m10v">
<i translate>Certified by:</i>
<span ng-show="paypro.verified"><i class="fi-lock color-greeni"></i> {{paypro.verifyData.caName}}</span>
<span ng-show="!paypro.verified"><i class="fi-unlock color-yellowi"></i> <span translate>Untrusted</span></span>
</div>
<div ng-if="md.pr.pd.memo" class="m10v lh140">
<i translate>Merchant Message:</i>
<span class="text-gray">
{{paypro.memo}}
</span>
</div>
<div ng-if="md.expirationDate" class="m10v">
<i translate>Expires:</i> {{paypro.expires | amTimeAgo }}
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,26 @@
<nav class="tab-bar">
<section class="right-small">
<a ng-click="cancel()">
<span class="text-close" translate>Close</span>
</a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" translate>
Address
</h1>
</section>
</nav>
<div class="p60t text-center" ng-init="addr = address.address">
<qrcode size="220" data="{{addr}}"></qrcode>
<div class="size-12" ng-class="{'enable_text_select': !isCordova}">
{{addr}}
</div>
<div class="m5t size-10 text-secondary" ng-show="address.isChange" translate>change</div>
<div class="text-center m10t" ng-if="isCordova">
<button class="secondary" ng-click="copyAddress(addr)">
<i class="fi-clipboard-pencil"></i> <span translate>Copy to clipboard</span>
</button>
</div>
</div>

View file

@ -0,0 +1,16 @@
<nav class="tab-bar">
<section class="right-small">
<a ng-click="cancel()">
<span class="text-close" translate>Close</span>
</a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" translate>
QR-Scanner
</h1>
</section>
</nav>
<div class="p60t text-center" ng-init="init()">
<canvas id="qr-canvas" width="200" height="150"></canvas>
<video id="qrcode-scanner-video" width="300" height="225"></video>
</div>

View file

@ -0,0 +1,100 @@
<nav class="tab-bar">
<section class="right-small">
<a ng-click="cancel()">
<span class="text-close" translate>Close</span>
</a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" style="color:{{color}}" translate>
Transaction
</h1>
</section>
</nav>
<div class="p45t">
<div class="header-modal text-center">
<div class="size-42">
<span ng-if="btx.action == 'received'">+</span><span ng-if="btx.action == 'sent'">-</span>{{btx.amountStr}} {{settings.unitName}}
</div>
<div class="size-18 m5t text-gray" ng-show="btx.alternativeAmount">
{{btx.alternativeAmount}} {{settings.alternativeIsoCode}}
</div>
</div>
<h4 class="title m0" translate>Information</h4>
<ul class="no-bullet size-14 m0">
<li ng-if="btx.addressTo" class="line-b p10 oh">
<span class="text-gray" translate>To:</span>
<span class="right">
<span ng-if="btx.merchant">
<span ng-show="btx.merchant.pr.ca"><i class="fi-lock color-greeni"></i> {{btx.merchant.domain}}</span>
<span ng-show="!btx.merchant.pr.ca"><i class="fi-unlock color-yellowi"></i> {{btx.merchant.domain}}</span>
</span>
<span ng-if="!btx.merchant">
<span class="text-gray enable_text_select"> {{btx.labelTo || btx.addressTo}}</span>
</span>
</span>
</li>
<li ng-if="btx.time" class="line-b p10">
<span class="text-gray" translate>Date:</span>
<span class="right">
<time>{{ btx.time * 1000 | amCalendar}}</time>
</span>
</li>
<li ng-if="btx.message" class="line-b p10 oh">
<span class="text-gray" translate>Note:</span>
<span class="right">
{{btx.message}}
</span>
</li>
<li ng-if="btx.merchant" class="line-b p10 oh">
<span class="text-gray" translate>Merchant Message:</span>
<span class="right">
{{btx.merchant.pr.pd.memo}}
</span>
</li>
<li ng-if="btx.time" class="line-b p10">
<span class="text-gray" translate>Confirmations:</span>
<span class="right">
<span class="text-warning" ng-show="!btx.confirmations || btx.confirmations == 0" translate>
Unconfirmed
</span>
<span class="text-secondary" ng-show="btx.confirmations>0">
{{btx.confirmations}}
</span>
</span>
</li>
</ul>
<div ng-if="btx.actions[0]">
<h4 class="title m0" translate>Signatures</h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10 text-gray" ng-repeat="c in btx.actions">
<span class="right">
<i ng-if="c.type == 'reject'" class="fi-x icon-sign x db"></i>
<i ng-if="c.type == 'accept'" class="fi-check icon-sign check db"></i>
</span>
<span>{{c.copayerName}}</span>
</li>
</ul>
</div>
<div ng-show="btx.txid" class="tx-details-blockchain">
<h4 class="title m0" translate>Blockchain</h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10 oh">
<span class="text-gray">ID:</span>
<span class="right">
<small class="ellipsis text-gray enable_text_select m5t">{{btx.txid}}</small>
</span>
</li>
<li class="line-b p10"
ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' + btx.txid)">
<span class="text-gray" translate>See it on the blockchain</span>
<i class="icon-arrow-right3 size-24 right text-gray"></i>
</li>
</ul>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,32 @@
<div ng-if="statusStr && statusStr == 'Transaction broadcasted'" class="popup-txsent">
<i class="small-centered columns fi-check m20tp"></i>
<div class="text-center size-18 text-white text-bold tu p20">
<span translate>Payment Sent</span>
</div>
<div class="text-center">
<a class="button outline white small-5 tiny" ng-click="cancel()" translate>OKAY</a>
</div>
</div>
<div ng-if="statusStr && statusStr == 'Transaction proposal signed'" class="popup-txsigned">
<i class="small-centered columns fi-check m20tp"></i>
<div class="text-center size-18 text-primary tu text-bold p20">
{{statusStr|translate}}
</div>
<div class="text-center">
<a class="button outline light-gray small-5 tiny" ng-click="cancel()" translate>OKAY</a>
</div>
</div>
<div ng-if="statusStr && statusStr == 'Transaction was rejected'" class="popup-txrejected">
<i class="fi-x small-centered columns m20tp"></i>
<div class="text-center size-18 tu text-warning text-bold p20">
{{statusStr|translate}}
</div>
<div class="text-center">
<a class="button outline light-gray small-5 tiny" ng-click="cancel()" translate>OKAY</a>
</div>
</div>

View file

@ -0,0 +1,143 @@
<nav class="tab-bar">
<section class="right-small">
<a ng-click="cancel()">
<span class="text-close" translate>Close</span>
</a>
</section>
<section class="middle tab-bar-section">
<h1 class="title ellipsis" style="color:{{color}}" translate>
Transaction proposal
</h1>
</section>
</nav>
<div class="p45t" ng-init="updateCopayerList()">
<h4 class="title m0" translate> Information </h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10">
<span class="text-gray">To:</span>
<span class="right">{{tx.toAddress}}</span>
</li>
<li class="line-b p10">
<span class="text-gray">Amount:</span>
<span class="right">{{tx.amountStr}}
<span class="label gray radius">{{tx.alternativeAmountStr}}</span>
</span>
</li>
<li class="line-b p10">
<span class="text-gray">Time:</span>
<span class="right">
<time>{{ (tx.ts || tx.createdOn ) * 1000 | amTimeAgo}}</time>
</span>
</li>
<li class="line-b p10 oh">
<span class="text-gray">Create by:</span>
<span class="right">{{tx.creatorName}}</span>
</li>
<li class="line-b p10 oh">
<span class="text-gray">Note:</span>
<span class="right">{{tx.message}}</span>
</li>
</ul>
<div ng-if="tx.paypro">
<h4 class="title m0">PAYMENT DETAILS</h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10">
<span class="text-gray">To:</span>
<span class="right">
<span>
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.paypro.domain}}</span>
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.paypro.domain}}</span>
</span>
<contact address="{{tx.toAddress}}" ng-hide="tx.merchant"></contact>
</span>
</li>
<li class="line-b p10">
<span class="text-gray">Expires:</span>
<span class="right">
<time>{{tx.paypro.expirationDate | amTimeAgo }}</time>
</span>
</li>
<li class="line-b p10">
<span class="text-gray">Merchant Message:</span>
<span class="db">{{tx.paypro.pr.pd.memo}}</span>
</li>
</ul>
</div>
<div ng-if="tx.actions[0] && !txRejected && !txBroadcasted">
<h4 class="title m0">Signatures:</h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10 text-gray" ng-repeat="ac in tx.actions">
<i class="icon-contact size-24"></i>
<span>{{ac.copayerName}}</span>
<span class="right">
<i ng-if="ac.type == 'reject'" class="fi-x icon-sign x db"></i>
<i ng-if="ac.type == 'accept'" class="fi-check icon-sign check db"></i>
<i ng-if="!ac.type" class="fi-loop"></i>
</span>
</li>
</ul>
</div>
<div class="box-notification" ng-show="error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{error|translate}}
</span>
</div>
<div class="row column m20t text-center text-warning" ng-if="tx.removed">
The transaction was removed by creator
</div>
<div class="row column m20t" ng-if="tx.couldRemove">
<button class="button expand outline dark-gray m0 expand" ng-click="hideTxInfo = true; remove(tx);"
ng-disabled="loading" ng-show="tx.couldRemove">
<i class="fi-x icon-sign x"></i>
<span translate>Remove</span>
</button>
<div class="text-gray size-12 text-center" show="tx.couldRemove" translate>
* Only transactions created by yourself with no peer signatures can be removed
</div>
</div>
<div class="row m20t" ng-if="tx.pendingForUs">
<div class="large-5 medium-5 small-6 columns">
<button class="button outline dark-gray m0 expand" ng-click="hideTxInfo = true; reject(tx);"
ng-disabled="loading">
<i class="fi-x icon-sign x"></i>
<span translate>Reject</span>
</button>
</div>
<div class="large-5 medium-5 small-6 columns text-right">
<button class="button primary m0 expand" ng-click="hideTxInfo = true; sign(tx)" style="background-color:{{color}}"
ng-disabled="loading">
<i class="fi-check icon-sign check"></i>
<span translate>Sign</span>
</button>
</div>
</div>
<div ng-show="!hideTxInfo">
<div class="row collapse m10t"
ng-show="tx.status=='accepted' && !txBroadcasted && !txRejected">
<button class="primary expand"
ng-click="broadcast(tx)"
ng-disabled="loading"> <i class="fi-upload-cloud"></i>
<span translate>Broadcast Transaction</span>
</button>
</div>
<div class="text-success m10t oh"
ng-show="txBroadcasted">
<span translate>Transaction sent!</span>
</div>
<div class="text-center text-warning"
ng-show="txRejected" translate>
Transaction finally rejected
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,30 @@
<nav class="tab-bar text-right hide-for-large-up">
<span ng-click="cancel()" class="p10 text-white" translate>Close</span>
</nav>
<div class="modal-mobile" ng-init="setWallets()">
<h1 class="line-b" translate>Select a wallet to make the payment</h1>
<div class="m20v" ng-show="!wallets[0]" translate>Loading...</div>
<ul class="wallet-selection wallets" ng-show="wallets[0]">
<li ng-repeat="item in wallets track by $index" class="nav-item" ng-show="+item.balanceInfo.totalBalanceBTC > 0" ng-click="ok(item)">
<div class="col1">
<div class="avatar-wallet">{{item.getName() | limitTo: 1}}</div>
</div>
<div class="col2">
<a class="size-12 wallet-item">
<div class="oh">
<div class="right size-10 type-wallet">
[ {{item.requiredCopayers}} of {{item.totalCopayers}} ]</div>
<div class="ellipsis name-wallet">{{item.getName()}}</div>
</div>
<div class="oh">
<b class="m5r size-12">{{item.balanceInfo.totalBalance || 0}} {{item.settings.unitName}}</b>
<span class="alt-currency size-10">{{item.balanceInfo.totalBalanceAlternative}} {{item.balanceInfo.alternativeIsoCode}}</span>
</div>
</a>
</div>
</li>
</ul>
<a class="close-reveal-modal show-for-large-up" ng-click="cancel()"><i class="fi-x size-18"></i></a>
</div>

View file

@ -0,0 +1,23 @@
<div class="row m20t" ng-controller="paymentUriController as payment">
<div class="large-12 columns" ng-init="uri = payment.checkBitcoinUri()">
<div class="panel text-center" ng-show="!uri">
<h1 translate>Bitcoin URI is NOT valid!</h1>
</div>
<div ng-show="uri">
<div class="panel size-14">
<div class="ellipsis"><b translate>Address</b>: {{uri.address.toString()}}</div>
<div ng-show="uri.amount"><b translate>Amount</b>: {{uri.amount}}</div>
<div ng-show="uri.message"><b translate>Message</b>: {{uri.message}}</div>
</div>
<h1 translate>Select a wallet</h1>
<ul class="no-bullet" ng-init="wallets = payment.getWallets()">
<li class="panel" ng-repeat="w in wallets">
<a ng-click="payment.selectWallet(w.id)">
<div class="ellipsis">{{w.name || w.id}}</div>
<div class="size-12">{{w.m}} of {{w.n}}</div>
</a>
</li>
</ul>
</div>
</div>
</div>

View file

@ -0,0 +1,55 @@
<div class="preferences" ng-controller="preferencesController as preferences">
<ul class="no-bullet m0 size-14">
<h4 class="title m0" translate>{{index.walletName}} settings</h4>
<li class="line-b p20" ng-click="$root.go('preferencesColor')">
<span translate>Color</span>
<span class="right text-gray">
<i class="icon-arrow-right3 size-24 right"></i>
<span style="color:{{index.backgroundColor || '#1ABC9C'}}">&block;</span>
</span>
</li>
<li class="line-b p20">
<span translate>Encrypt Private Key</span>
<switch id="network-name" name="encrypt" ng-model="encrypt" class="green right"></switch>
</li>
<h4 class="title m0" translate>&nbsp;</h4>
<li class="line-b p20" ng-click="$root.go('backup')">
<i class="icon-arrow-right3 size-24 right text-gray"></i>
<span translate>Backup</span>
</li>
<li class="line-b p20" ng-click="$root.go('delete')">
<i class="icon-arrow-right3 size-24 right text-gray"></i>
<span translate>Delete</span>
</li>
<h4 class="title m0" translate>Global settings</h4>
<li class="line-b p20" ng-click="$root.go('preferencesUnit')">
<span translate>Unit</span>
<span class="right text-gray">
<i class="icon-arrow-right3 size-24 right"></i>
{{preferences.unitName}}
</span>
</li>
<li class="line-b p20" ng-click="$root.go('preferencesAltCurrency')">
<span translate>Alternative Currency</span>
<span class="right text-gray">
<i class="icon-arrow-right3 size-24 right"></i>
{{preferences.selectedAlternative.name}}
</span>
</li>
<li class="line-b p20" ng-click="$root.go('preferencesBwsUrl')">
<span translate>Bitcore Wallet Service</span>
<span class="text-gray db">
<i class="icon-arrow-right3 size-24 right"></i>
{{preferences.bwsurl}}
</span>
</li>
</ul>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,8 @@
<div class="preferences" ng-controller="preferencesAltCurrencyController as prefAltCurrency">
<div ng-repeat="altCurrency in prefAltCurrency.alternativeOpts" ng-click="prefAltCurrency.save(altCurrency)" class="line-b p20 size-14">
<span>{{altCurrency.name}}</span>
<i class="fi-check size-16 right" ng-show="altCurrency.name == prefAltCurrency.selectedAlternative.name"></i>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,9 @@
<div class="preferences m20t columns" ng-controller="preferencesBwsUrlController as prefBwsUrl">
<form name="settingsBwsUrlForm" ng-submit="prefBwsUrl.save()" class="m20t">
<label translate>Bitcore Wallet Service URL</label>
<input type="text" id="bwsurl" type="text" name="bwsurl" ng-model="prefBwsUrl.bwsurl">
<input type="submit" class="button expand black radius" value="{{'Save'|translate}}"
style="background-color:{{index.backgroundColor}}">
</form>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,7 @@
<div class="preferences" ng-controller="preferencesColorController as p">
<div ng-repeat="c in p.colorOpts" ng-click="p.save(c)" class="line-b p20 size-14">
<span style="color:{{c}}">&block;</span>
<i class="fi-check size-16 right" ng-show="p.color == c"></i>
</div>
</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,17 @@
<div class="m20t" ng-controller="preferencesDeleteWalletController as preferences">
<h4 class="text-warning text-center m0" translate> Warning! </h4>
<div class="box-notification" ng-show="preferences.error" >
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{preferences.error|translate}}
</span>
</div>
<div class="columns text-center m10t">
<p translate class="size-12 text-gray">Permanently delete this wallet. WARNING: this action cannot be reversed.</p>
<button class="button expand warning" ng-click="preferences.deleteWallet()">
Delete wallet
</button>
</div>
</div>

View file

@ -0,0 +1,7 @@
<div class="preferences" ng-controller="preferencesUnitController as prefUnit">
<div ng-repeat="unit in prefUnit.unitOpts" ng-click="prefUnit.save(unit)" class="line-b p20 size-14">
<span>{{unit.shortName}}</span>
<i class="fi-check size-16 right" ng-show="prefUnit.unitName == unit.shortName"></i>
</div>
</div>
<div class="extra-margin-bottom"></div>

124
public/views/profile.html Normal file
View file

@ -0,0 +1,124 @@
<div class="backup" ng-controller="ProfileController" ng-init="init()">
<div class="row">
<div class="large-12 columns">
<div class="panel">
<div class="row collapse">
<div class="large-2 medium-2 columns text-center">
<a class="photo-container profile"
ng-click="$root.openExternalLink('https://gravatar.com/')"
ng-init="isHover=0"
ng-mouseenter="isHover=1"
ng-mouseleave="isHover=0">
<img ng-show="!isHover" gravatar-src="'{{username}}'" gravatar-size="80">
<img ng-show="isHover" src="img/change-avatar.png" with="80">
</a>
</div>
<div class="large-10 medium-10 columns">
<h2>
<span translate>Profile</span>
<span class="size-12 text-warning" ng-if="$root.iden.backupNeeded">
[ <span translate>Needs Backup</span> ]
</span>
</h2>
<span translate class="text-gray">It's important to backup your profile so that you can recover it in case of disaster. The backup will include all your profile's wallets</span>
</div>
</div>
</div>
</div>
</div>
<div class="row" ng-show="!backupProfilePlainText">
<div class="large-12 columns">
<button class="primary expand" ng-click="downloadProfileBackup()" ng-disabled="loading"
ng-show="!isSafari && !isCordova"><i class="fi-download"></i>
<span translate>Download backup</span></button>
<button class="primary expand" ng-click="viewProfileBackup()" ng-disabled="loading"
ng-show="isSafari && !isCordova"><i class="fi-eye"></i>
<span translate>View backup</span></button>
<div ng-show="isCordova">
<h4 translate>Backup options</h4>
<button class="primary expand"
ng-click="copyProfileBackup()"><i class="fi-clipboard-pencil"></i>
<span translate>Copy to clipboard</span></button>
<button class="primary expand"
ng-click="sendProfileBackup()"><i class="fi-mail"></i>
<span translate>Send by email</span></button>
</div>
</div>
</div>
<div class="row m20b" ng-show="backupProfilePlainText">
<div class="large-12 columns">
<h3 translate>Copy backup in a safe place</h3>
<div class="input">
<textarea class="show-for-large-up" readonly rows="5">{{backupProfilePlainText}}</textarea>
<textarea class="hide-for-large-up" rows="5">{{backupProfilePlainText}}</textarea>
</div>
<div class="size-12 text-gray text-right">
<i class="icon-compose"></i>
<span translate>Copy this text as it is in a safe place (notepad or email)</span>
</div>
</div>
</div>
<div ng-show="$root.quotaPerItem">
<div class="line-dashed-h m20b"></div>
<div class="row size-12 m20b">
<div class="large-12 columns">
<div ng-if="perItem" translate>
Your current server usage quotas are: <b>{{perItem}}kB</b> per wallet and up to <b>{{nrWallets}}</b> wallets.
</div>
<div ng-if="$root.needsEmailConfirmation" class="m10t">
<i class="fi-alert"></i>
<span translate>Confirm your email address to increase storage usage limits.</span>
</div>
</div>
</div>
</div>
<div class="line-dashed-h m20b"></div>
<div class="row oh m20b">
<div class="large-12 columns">
<a class="button outline light-gray tiny" ng-click="hideAdv=!hideAdv">
<i class="fi-widget m3r"></i>
<span translate ng-hide="!hideAdv">Show</span>
<span translate ng-hide="hideAdv">Hide</span>
<span translate>advanced options</span>
<i ng-if="hideAdv" class="icon-arrow-down4"></i>
<i ng-if="!hideAdv" class="icon-arrow-up4"></i>
</a>
</div>
</div>
<div ng-hide="hideAdv" class="row">
<div class="large-12 columns">
<div class="panel">
<h2><i class="fi-minus-circle m10r"></i>
<span translate>Delete Profile</span>
</h2>
<p translate class="text-gray">Permanently delete this profile and all its wallets. WARNING: this action cannot be reversed.</p>
<div ng-show="!confirmDelete">
<a translate class="button warning m0" ng-click="confirmDelete=!confirmDelete">Delete Profile
</a>
</div>
<div class="text-center" ng-show="confirmDelete">
<h2 translate>Are you sure you want to delete this profile?</h2>
<div class="row">
<div class="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete" translate>Cancel</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<button class="warning" ng-disabled="loading" ng-click="deleteProfile()">
<i class="fi-trash"></i> <span translate>Delete</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

71
public/views/receive.html Normal file
View file

@ -0,0 +1,71 @@
<div class="receive" ng-controller="receiveController as receive" ng-init="receive.getAddress()">
<div ng-show="index.needsBackup && !receive.skipBackup" class="p60t row text-center">
<div class="text-warning text-bold m15b">
<i class="fi-alert"></i>
<span translate>
WARNING: Backup needed
</span>
</div>
<div class="text-gray m15h" translate>
Before receiving funds, it is highly recommended you backup your wallet keys.
</div>
<div class="small-6 columns m20t">
<span class="button expand outline dark-gray tiny"
ng-click="receive.skipBackup = true">
<span translate>SKIP BACKUP</span>
</span>
</div>
<div class="small-6 columns m20t">
<span class="button black expand radius tiny"
ng-click="$root.go('backup')" style="background-color:{{index.backgroundColor}}" >
<span translate>Backup now</span>
</span>
</div>
</div>
<div ng-show="!index.needsBackup || receive.skipBackup">
<div class="row" ng-show="receive.generatingAddress">
<div class="large-12 columns">
<div class="oh text-center">
<span class="text-gray" translate>Generating a new address...</span>
</div>
</div>
</div>
<div ng-show="!receive.generatingAddress">
<div class="row" ng-show="receive.addr">
<!-- Address-->
<div class="large-12 columns">
<h2 class="text-center m10t" translate>My Bitcoin address:</h2>
<div class="text-center" ng-click="receive.copyAddress(receive.addr)">
<qrcode size="220" data="bitcoin:{{receive.addr}}"></qrcode>
<div class="m10t">
<h4 ng-class="{'enable_text_select': !index.isCordova}" class="size-12">{{receive.addr}}</h4>
</div>
</div>
<div class="m10t text-center" ng-show="index.isCordova">
<span class="button outline dark-gray tiny"
ng-click="receive.shareAddress(receive.addr)">
<i class="fi-share"></i>
<span translate>Share address</span>
</span>
</div>
<div class="line-t size-12" translate>
Share this with anyone to have them send you payments. To protect your privacy, new addresses are generated automatically once you use them.
</div>
</div>
</div>
<div class="row m20t" ng-show="receive.addr && !index.isOffLine && !index.clientError">
<div class="large-12 columns">
<a class="button black expand radius" ng-click="receive.newAddress()" style="background-color:{{index.backgroundColor}}" translate>
Generate new address
</a>
</div>
</div>
</div>
</div>
</div>
<div class="extra-margin-bottom"></div>

165
public/views/send.html Normal file
View file

@ -0,0 +1,165 @@
<div class="send" ng-controller="sendController as send" ng-init="send.init()" ng-show="!index.isOffLine">
<div ng-show="index.lockedBalance">
<h4 class="title m0">
<div class="left">
<i class="fi-info size-36 m10r lh"></i>
</div>
<div class="size-12">
<span class="db text-bold">
<span translate>Available Balance</span>:
{{index.availableBalanceStr }}
</span>
<span class="text-gray">
{{index.lockedBalanceStr}}
<span translate>in pending transactions</span>
</span>
</div>
</h4>
</div>
<div class="row m20t">
<div class="large-12 large-centered columns">
<div class="box-notification" ng-show="send.fetchingURL">
<div class="box-icon secondary">
<i class="fi-bitcoin-circle size-24"></i>
</div>
<span class="text-secondary size-14" translate>
Fetching Payment Information...
</span>
</div>
<form ng-show="!send.fetchingURL" name="sendForm" ng-submit="send.submitForm(sendForm)" ng-disabled="send.blockUx" novalidate>
<div class="box-notification" ng-show="send.error && !send.hideForWP ">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{send.error|translate}}
</span>
<a class="close-notification text-warning" ng-click="send.resetForm(sendForm)">&#215;</a>
</div>
<div class="box-notification" ng-show="success">
<div class="box-icon success">
<i class="fi-check size-24"></i>
</div>
<span class="text-success size-14">
{{success|translate}}
</span>
<a class="close-notification text-success" ng-click="success=null">&#215;</a>
</div>
<div ng-hide="send._paypro || send.hideAddress">
<div class="row collapse">
<label for="address" class="left" >
<span translate>To</span>
</label>
<span ng-hide="sendForm.address.$pristine">
<span class="has-error right size-12" ng-show="sendForm.address.$invalid && _address">
<span class="icon-input">
<i class="fi-x"></i>
</span>
<span translate>Not valid</span>
</span>
<small class="icon-input right" ng-show="!sendForm.address.$invalid">
<i class="fi-check"></i>
</small>
</span>
</div>
<div class="input">
<input type="text" id="address" name="address" ng-disabled="send.blockUx || send.lockAddress" placeholder="{{'Bitcoin address'|translate}}" ng-model="_address" valid-address required ng-focus="send.formFocus('address')" ng-blur="send.formFocus(false)">
<!--
<a class="postfix" ng-click="openAddressBook()"><i class="fi-address-book size-24"></i></a>
-->
</div>
</div>
<div ng-show="send._paypro && !send.hideAddress">
<div class="row collapse" ng-click="send.openPPModal(send._paypro)">
<label for="domain">
<span translate>Payment to</span>
</label>
<div class="input block">
<input class="p45li" type="text" id="domain" name="domain" ng-model="send._paypro.domain" ng-disabled="1">
<i ng-show="send._paypro.verified" class="fi-lock color-greeni"></i>
<i ng-show="!send._paypro.verified" class="fi-unlock color-yellowi"></i>
</div>
</div>
</div>
<div class="row" ng-init="showAlternative = false" ng-hide="send.hideAmount">
<div class="large-12 medium-12 columns">
<div class="m5b right" ng-hide="sendForm.amount.$pristine">
<span class="has-error right size-12" ng-show="sendForm.amount.$invalid">
<span class="icon-input"><i class="fi-x"></i></span>
<span translate>Not valid</span>
</span>
<small class="icon-input right" ng-show="!sendForm.amount.$invalid">
<i class="fi-check"></i>
</small>
</div>
<div ng-show="!showAlternative">
<label for="amount">
<span translate>Amount</span>
</label>
<div class="input">
<input type="number" id="amount" ng-disabled="send.blockUx || send.lockAmount" name="amount" placeholder="{{'Amount'|translate}}" ng-minlength="0.00000001" ng-maxlength="10000000000" ng-model="_amount" valid-amount required autocomplete="off" ng-focus="send.formFocus('amount')" ng-blur="send.formFocus(false)">
<a class="postfix" ng-click="showAlternative = true">{{send.unitName}}</a>
</div>
</div>
<div ng-show="showAlternative">
<label for="alternative"><span translate>Amount in</span> {{ send.alternativeName }}
</label>
<div class="input">
<input type="number" id="alternative" ng-disabled="send.blockUx || !send.isRateAvailable || send.lockAmount" name="alternative" placeholder="{{'Amount'|translate}}" ng-model="_alternative" requiredautocomplete="off" ng-focus="send.formFocus('amount')" ng-blur="send.formFocus(false)">
<a class="postfix" ng-click="showAlternative = false"> {{ send.alternativeIsoCode }}</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<label for="comment"><span translate>Note</span>
<small translate ng-hide="!sendForm.comment.$pristine">optional</small>
<small translate class="has-error" ng-show="sendForm.comment.$invalid && !sendForm.comment.$pristine">too long!</small>
</label>
<div class="input">
<textarea id="comment" ng-disabled="send.blockUx" name="comment" ng-if="index.n > 1"
placeholder="{{'Leave a private message to your copayers'|translate}}"
ng-maxlength="100" ng-model="_comment" ng-focus="send.formFocus('msg')"
ng-blur="send.formFocus(false)"></textarea>
<textarea id="comment" ng-disabled="send.blockUx" name="comment" ng-if="index.n == 1"
placeholder="{{'Add a private comment to identify the transaction'|translate}}"
ng-maxlength="100" ng-model="_comment" ng-focus="send.formFocus('msg')"
ng-blur="send.formFocus(false)"></textarea>
</div>
</div>
</div>
<div class="text-gray text-center m10t animated infinite flash" ng-show="send.onGoingProcess" >
<span translate>{{send.onGoingProcess}}...</span>
</div>
<div class="row" ng-show="!send.onGoingProcess">
<div class="large-6 medium-6 small-12 columns">
<button type="submit" class="button black radius expand" ng-disabled="sendForm.$invalid || send.blockUx" style="background-color:{{index.backgroundColor}}" translate>
Send
</button>
</div>
<div class="large-4 medium-4 small-12 columns text-right">
<a ng-click="send.resetForm(sendForm)" class="button expand warning"
ng-show="(send._paypro || send.lockAddress) && !send.blockUx" translate>Cancel</a>
</div>
</div>
</form>
</div>
</div>
<!-- end of row -->
</div>
<div ng-if="index.isOffLine" class="m20tp text-center" translate>Checking your internet connection...</div>
<div class="extra-margin-bottom"></div>

View file

@ -0,0 +1,60 @@
<div class="settings row" ng-controller="settingsController as settings" ng-init="settings.init()">
<h1 class="hide-for-small-only">{{$root.title|translate}}</h1>
<div class="large-5 large-centered medium-7 medium-centered columns">
<div class="logo-setup show-for-large-up" id="top">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
<div ng-include="'views/includes/version.html'"></div>
</div>
<h2>Settings</h2>
<form name="settingsForm">
<div class="box-notification" ng-show="message">
<div class="box-icon">
<i class="fi-check size-24"></i>
</div>
<span class="text-primary size-14">
{{message|translate}}
</span>
</div>
<fieldset>
<legend translate>Bitcore wallet service</legend>
<div class="row collapse">
<label class="left" for="bws">URL</label>
<div class="has-error right size-12" ng-show="settingsForm.bws.$invalid">
<span class="icon-input"><i class="fi-x"></i></span>
<span translate>Not valid</span>
</div>
</div>
<div class="input">
<input type="text" class="form-control" name="bws" ng-model="settings.bws" valid-url required>
</div>
<small class="text-gray">
<span translate>Bitcore wallet service is open-source software. You can run your own instances, check</span>
<a href
ng-click="$root.openExternalLink('https://github.com/bitpay/bitcore-wallet-service')">Github repository</a>
</small>
</fieldset>
<button translate
type="submit"
class="button primary radius expand m0"
ng-disabled="settingsForm.$invalid || loading" ng-click="settings.save()">
Save
</button>
</form>
<div class="box-setup-footer">
<div class="left">
<a class="button outline dark-gray tiny" ng-click="$root.go('signin')">
<i class="icon-arrow-left4 size-10"></i>
<span translate>Back</span>
</a>
</div>
<div class="right">
<a class="button outline dark-gray tiny" href="" ng-click="settings.reset()">
<i class="fi-page-delete"></i>
<span translate>Reset settings</span>
</a>
</div>
</div>
</div>
</div>

132
public/views/signin.html Normal file
View file

@ -0,0 +1,132 @@
<div class="signin" ng-controller="signinController as signin" ng-init="signin.init()">
<div ng-if="askForPin || ($root.hasPin && !$root.iden)">
<div ng-include="'views/includes/pin-number.html'"></div>
</div>
<div ng-show="$root.starting">
<div ng-include="'views/includes/loading.html'" ng-init="title = 'Accessing your profile'"></div>
</div>
<div class="row" ng-show="signin.showDisclaimer">
<div class="large-8 medium-10 small-12 large-centered medium-centered columns">
<h1 class="text-white text-center" translate>Disclaimer</h1>
<p class="text-white" translate>
The software you are about to use is free, open source, and unsupported beta software. It is important to understand
that beta software refers to software that is undergoing testing and has not officially been released, could have
bugs, and may not act in a reliable fashion. Because the software is currently in beta, it is possible but not certain
that you may lose bitcoin or the value of your bitcoin. It is recommended that you store only nominal amounts of
bitcoins. You acknowledge that your use of this software is at your own discretion and in compliance with all
applicable laws. You are responsible for safekeeping your login IDs, passwords, private key pairs, PINs and any other
codes you use to access the software. IF YOU HAVE NOT SEPARATELY STORED A BACKUP OF ANY WALLET ADDRESSES AND PRIVATE
KEY PAIRS MAINTAINED IN YOUR ACCOUNT, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOINS YOU HAVE ASSOCIATED WITH SUCH WALLET
ADDRESSES WILL BECOME INACCESSIBLE IF YOU DO NOT HAVE YOUR ACCOUNT PASSWORD AND/OR PIN. All transaction requests are
irreversible. The authors of the software, employees and affiliates of Bitpay, copyright holders, and BitPay, Inc.
cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction
confirmation as they do not have control over the Bitcoin network. You agree to provide accurate and complete
information in connection with your use of the account. You assume any and all risk associated with the use of the
software. To the fullest extent permitted by law, this software is provided “as is” and no representations or
warranties can be made of any kind, express or implied, including but not limited to the warranties of
merchantability, fitness or a particular purpose and noninfringement. In no event shall the authors of the software,
employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other
liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the
software or the use or other dealings in the software. We reserve the right to modify this disclaimer from time to
time.
</p>
<button class="success expand" ng-click="signin.agreeDisclaimer()">
{{'I read and agree with these terms'|translate}}
</button>
</div>
</div>
<div class="row">
<div class="large-5 large-centered medium-7 medium-centered columns" ng-show="!$root.starting && !signin.showDisclaimer">
<div class="logo-setup" ng-show="!$root.iden && !signin.hideForWP && !$root.hasPin">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
<div ng-include="'views/includes/version.html'"></div>
</div>
<div ng-if='askForPin || ($root.hasPin && !$root.iden)'>
<h2 ng-show="$root.hasPin && !$root.iden" translate>Enter PIN</h2>
<h2 ng-show="signin.askForPin && signin.askForPin !=2" translate>Set up a PIN</h2>
<h2 ng-show="signin.askForPin == 2" translate>Repeat PIN</h2>
<div class="box-notification" ng-show="signin.error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{signin.error|translate}}
</span>
</div>
<div ng-include="'views/includes/pin.html'"></div>
</div>
<div ng-if='!$root.hasPin && !signin.askForPin && !$root.iden'>
<h2 translate>Signin</h2>
<div class="p10 bg-success m20b text-white" ng-show="signin.pendingPayment">
<div class="left">
<i class="size-36 m10r"></i>
</div>
<div class="size-14" translate>
Please sign in to make the payment
</div>
</div>
<form name="loginForm" ng-submit="signin.openWithCredentials(loginForm)" novalidate>
<div class="box-notification" ng-show="error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{error|translate}}
</span>
</div>
<div class="input">
<input type="text" ng-model="email" class="form-control" name="email" placeholder="{{'Username'|translate}}"
required show-focus="!isMobile" ng-focus="formFocus()">
<i class="icon-person"></i>
</div>
<div class="input">
<input type="password" ng-model="password" class="form-control" name="password"
placeholder="{{'Password'|translate}}" required ng-focus="formFocus()">
<i class="icon-locked"></i>
</div>
<button type="submit" class="button primary radius expand m0"
ng-disabled="loginForm.$invalid">
{{'Sign in'|translate}}
</button>
</form>
<div class="box-setup-footer">
<div class="right">
<a class="button outline dark-gray tiny" ng-click="$root.go('settings')">
<i class="icon-wrench show-for-large-up size-14"></i>
<span translate>Settings</span>
</a>
</div>
<div class="left m10r">
<a class="button outline dark-gray tiny" ng-click="$root.go('createProfile')">
<i class="icon-person show-for-large-up size-14"></i>
<span translate>Create profile</span>
</a>
</div>
<div class="left">
<a class="button outline dark-gray tiny" ng-click="$root.go('importProfile')">
<i class="icon-upload show-for-large-up size-14"></i>
<span translate>Import</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,17 @@
<div class="panel text-center m15 splash">
<div class="row">
<div class="medium-6 large-4 medium-centered small-centered large-centered columns">
<div class="m50b p20">
<h4 class="text-bold size-14" translate>WELCOME TO</h4>
<img src="img/logo.svg" alt="tour1" width="100">
</div>
<div class="line-b"></div>
<span class="text-gray size-14 db m10b m10t" translate>
* In case you need to import wallets from previous Copay versions go to <b>Menu</b>
</span>
<div class="line-b m20b"></div>
</div>
</div>
<button ng-click="$root.go('createProfile')" class="button black expand radius " translate> START </button>
</div>

View file

@ -0,0 +1,3 @@
<div class="tour">
<img ng-click="$root.go('splash.four')" class="m15t" src="img/tour2.png" alt="tour1" width="90%">
</div>

View file

@ -0,0 +1,3 @@
<div class="tour">
<img ng-click="$root.go('splash.four')" class="m15t" src="img/tour3.png" alt="tour1" width="90%">
</div>

View file

@ -0,0 +1,3 @@
<div class="tour">
<img ng-click="$root.go('walletHome')" class="m15t" src="img/tour4.png" alt="tour1" width="90%">
</div>

View file

@ -0,0 +1,15 @@
<div class="tour">
<img ng-click="$root.go('splash.finish')" class="m15t" src="img/tour5.png" alt="tour1" width="90%">
</div>
<div class="row tour5">
<div class="small-6 columns">
<button class="button outline light-gray radius expand">
SKIP
</button>
</div>
<div class="small-6 columns">
<button class="black radius expand">
SET A PIN
</button>
</div>
</div>

View file

@ -0,0 +1,14 @@
<div class="wide-page" ng-controller="unsupportedController">
<div class="text-center">
<img src="img/logo-negative-beta.svg" alt="Copay" width="146" height="59">
<div class="text-white" ng-include="'views/includes/version.html'"></div>
</div>
<h1 translate class="text-center text-white">Browser unsupported</h1>
<h3 class="text-center text-white">
Copay does not support your browser.
Please use a current version of Google Chrome, Mozilla Firefox, Internet Explorer, Safari, or Opera.
<br>
Note that localStorage should also be enabled (enabled by default in most cases).
</h3>
</div>

View file

@ -0,0 +1,114 @@
<div class="home-wallet" ng-controller="walletHomeController as home" ng-init="home.init()">
<div class="row" ng-show="!index.noFocusedWallet">
<div class="amount" style="background-color:{{index.backgroundColor}}">
<div class="size-36">
<strong>
<span ng-show="!index.hideBalance">
<span ng-class="{'animated pulse':!index.hideBalance}">{{index.totalBalanceStr || '...'}}</span>
</span>
<span ng-show="index.hideBalance">...</span>
</strong>
</div>
<div class="size-14" ng-show="!index.hideBalance">
<span ng-if="index.alternativeBalanceAvailable" ng-class="{'animated fadeIn':!index.hideBalance}">{{index.totalBalanceAlternative}} {{index.alternativeIsoCode}}</span>
<span ng-if="!index.alternativeBalanceAvailable">N/A</span>
</div>
<div class="size-14" ng-show="index.hideBalance">
&nbsp;
</div>
</div>
<div class="pr columns line-b">
<div class="avatar-wallet left" style="background-color:{{index.backgroundColor}}">{{index.walletName | limitTo: 1}}</div>
<div class="right">
<a ng-click="$root.go('preferences')" class="button outline light-gray tiny m0">
<i class="fi-widget size-18 vm"></i>
<span class="show-for-medium-up" translate>Preferences</span>
</a>
</div>
<div class="wallet-info" ng-click="openCopayersModal(index.copayers, index.copayerId)">
<p class="m0">
{{index.m}} <span translate>of</span> {{index.n}}
</p>
<div class="size-12 text-gray">
<span ng-if="index.n > 1" translate>Multisignature wallet </span>
<span ng-if="index.n == 1" translate>Personal Wallet</span>
<span ng-if="index.network != 'livenet'" translate> - Testnet</span>
</div>
</div>
</div>
</div>
<div ng-show="index.notAuthorized">
<div class="text-center text-warning">
<i class="fi-alert"></i>
<span translate>
WARNING: Wallet not registered
</span>
</div>
<div class="text-center text-gray m15r m15l" translate>
This wallet is not registered at the given Bitcore Wallet Service (BWS).
You can recreate it from the local information.
</div>
<div class="text-center m10t ">
<span class="button outline dark-gray tiny"
ng-click="index.recreate()"
<span translate>Recreate</span>
</span>
</div>
</div>
<div ng-show="index.requiresMultipleSignatures && index.txps[0]">
<h4 class="title m0" translate>Spend proposals</h4>
<div class="last-transactions pr" ng-repeat="tx in index.txps | orderBy:'-createdTs'"
ng-include="'views/includes/transaction.html'">
</div>
<div class="text-gray text-center size-12 p10t"
ng-show="index.lockedBalance && !index.updatingStatus">
<span translate>Total Locked Balance</span>:
<b>{{index.lockedBalance}} {{index.unitName}} </b>
<span> {{index.lockedBalanceAlternative}}
{{index.alternativeIsoCode}} </span>
</div>
<div class="pr" ng-if="!index.txps[0]">
<p translate>No pending spend proposals at the moment.</p>
</div>
</div>
<div ng-if="!index.requiresMultipleSignatures && index.txps[0]">
<div class="row">
<div class="large-12 columns">
<div class="panel oh">
<h2 class="line-b" translate>Unsent transactions</h2>
<div class="last-transactions pr" ng-repeat="tx in index.txps"
ng-include="'views/includes/transaction.html'">
</div>
</div>
</div>
</div>
</div>
<div class="row columns m20tp" ng-show="index.noFocusedWallet">
<div class="text-center text-warning m20b">
<i class="fi-alert"></i> <span translate>You do not have any wallet</span>
</div>
<button class="button black expand" ng-click="$root.go('add')" translate>Create</button>
</div>
<div class="text-gray text-center m10t animated infinite flash" ng-show="index.anyOnGoingProcess" >
<span translate ng-show="index.onGoingProcessName == 'openingWallet'">Opening Wallet...</span>
<span translate ng-show="index.onGoingProcessName == 'updatingStatus'">Updating Status...</span>
<span translate ng-show="index.onGoingProcessName == 'updatingBalance'">Updating Balance...</span>
<span translate ng-show="index.onGoingProcessName == 'updatingPendingTxps'">Updating Pending Transactions...</span>
<span translate ng-show="index.onGoingProcessName == 'scanning'">Scanning Wallet funds...</span>
<span translate ng-show="index.onGoingProcessName == 'recreating'">Recreating Wallet on BWS...</span>
</div>
</div>
<div class="extra-margin-bottom"></div>

26
public/views/warning.html Normal file
View file

@ -0,0 +1,26 @@
<div class="wide-page" ng-controller="WarningController"
ng-init="checkLock()">
<div class="text-center">
<img src="img/logo-negative-beta.svg" alt="Copay" width="146" height="59">
<div class="text-white" ng-include="'views/includes/version.html'"></div>
</div>
<h1 translate class="text-center text-warning">Warning!</h1>
<h3 class="text-center text-white">
<span translate>This wallet appears to be currently open.</span>
<br>
<span translate>Opening the wallet in multiple browser tabs could lead to unexpected results</span>
</h3>
<div class="text-center m30v large-12 columns">
<div class="row">
<div class="large-12 columns medium-12 small-12 text-center">
<a href class="button sucess" ng-click="signout()">&laquo; <span translate>Back</span></a>
<br>
<br>
<a translate href ng-click="ignoreLock()">Continue anyways</a>
</div>
</div>
</div>
<div class="text-center text-gray small cb">
</div>
</div>