Merge branch 'main' into 2125-send-message-a11y-audit-unique-ids
@@ -174,8 +174,12 @@ def create_app(application):
|
||||
|
||||
@application.context_processor
|
||||
def inject_feature_flags():
|
||||
feature_best_practices_enabled = application.config.get("FEATURE_BEST_PRACTICES_ENABLED", False)
|
||||
feature_about_page_enabled = application.config.get("FEATURE_ABOUT_PAGE_ENABLED", False)
|
||||
feature_best_practices_enabled = application.config.get(
|
||||
"FEATURE_BEST_PRACTICES_ENABLED", False
|
||||
)
|
||||
feature_about_page_enabled = application.config.get(
|
||||
"FEATURE_ABOUT_PAGE_ENABLED", False
|
||||
)
|
||||
return dict(
|
||||
FEATURE_BEST_PRACTICES_ENABLED=feature_best_practices_enabled,
|
||||
FEATURE_ABOUT_PAGE_ENABLED=feature_about_page_enabled,
|
||||
@@ -205,7 +209,7 @@ def create_app(application):
|
||||
url = url.replace("NONCE", nonce)
|
||||
url = url.replace("STATE", state)
|
||||
|
||||
return {'initial_signin_url': url}
|
||||
return {"initial_signin_url": url}
|
||||
|
||||
notify_environment = os.environ["NOTIFY_ENVIRONMENT"]
|
||||
|
||||
|
||||
17
app/assets/images/contact.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="48" height="49" viewBox="0 0 48 49" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6378_116)">
|
||||
<path d="M13.3517 3.77441H4.3344C3.40346 3.80666 3.40421 5.14865 4.3344 5.18053H13.3516C14.2826 5.14828 14.2819 3.80629 13.3517 3.77441Z" fill="black"/>
|
||||
<path d="M15.8219 10.6309H5.94759C4.67037 10.6309 3.63135 11.6699 3.63135 12.9471V13.9669C3.63135 15.2441 4.67037 16.2832 5.94759 16.2832H15.8219C17.0991 16.2832 18.1381 15.2441 18.1381 13.9669V12.9471C18.1381 11.67 17.0991 10.6309 15.8219 10.6309ZM16.732 13.9669C16.732 14.4688 16.3238 14.877 15.8219 14.877H5.94759C5.4457 14.877 5.03746 14.4688 5.03746 13.9669V12.9471C5.03746 12.4452 5.4457 12.037 5.94759 12.037H15.8219C16.3238 12.037 16.732 12.4452 16.732 12.9471V13.9669Z" fill="black"/>
|
||||
<path d="M10.2759 20.161V23.0556C10.2759 24.3328 11.3149 25.3718 12.5921 25.3718H22.4664C23.7436 25.3718 24.7826 24.3328 24.7826 23.0556V20.161C24.7826 18.8838 23.7436 17.8447 22.4664 17.8447H12.5921C11.3149 17.8446 10.2759 18.8838 10.2759 20.161ZM23.3765 20.161V23.0556C23.3765 23.5575 22.9683 23.9657 22.4664 23.9657H12.5921C12.0902 23.9657 11.682 23.5575 11.682 23.0556V20.161C11.682 19.6591 12.0902 19.2508 12.5921 19.2508H22.4664C22.9683 19.2507 23.3765 19.6591 23.3765 20.161Z" fill="black"/>
|
||||
<path d="M3.63135 32.1435C3.63135 33.4207 4.67037 34.4597 5.94759 34.4597H15.8219C17.0991 34.4597 18.1381 33.4207 18.1381 32.1435V29.2489C18.1381 27.9716 17.0991 26.9326 15.8219 26.9326H5.94759C4.67037 26.9326 3.63135 27.9716 3.63135 29.2489V32.1435ZM5.03746 29.2489C5.03746 28.747 5.4457 28.3387 5.94759 28.3387H15.8219C16.3238 28.3387 16.732 28.747 16.732 29.2489V32.1435C16.732 32.6454 16.3238 33.0536 15.8219 33.0536H5.94759C5.4457 33.0536 5.03746 32.6454 5.03746 32.1435V29.2489Z" fill="black"/>
|
||||
<path d="M38.1102 19.9331C33.5406 19.9331 29.6852 23.0494 28.5583 27.2682V3.4397C28.5583 1.81976 27.2404 0.501953 25.6205 0.501953H2.93784C1.3179 0.501953 0 1.81986 0 3.4397V20.0432C0 20.4314 0.314688 20.7462 0.703056 20.7462C1.09142 20.7462 1.40611 20.4314 1.40611 20.0432V8.45258H27.1521V28.8182C23.2126 29.346 20.0003 32.203 18.9507 35.9537H5.77819C4.52478 35.9537 3.50497 36.9735 3.50497 38.227C3.50497 39.4805 4.52478 40.5002 5.77819 40.5002H18.7678C18.9094 41.2299 19.1315 41.9311 19.4245 42.5943H2.93784C2.09323 42.5943 1.40611 41.9072 1.40611 41.0626V23.6671C1.40611 23.2788 1.09142 22.964 0.703056 22.964C0.314688 22.964 0 23.2788 0 23.6671V41.0626C0 42.6825 1.3179 44.0004 2.93784 44.0004H20.1877C22.6379 47.9355 28.1585 49.6822 32.5122 47.6362L34.4133 48.4393C34.9706 48.5729 35.2962 48.357 35.39 47.7917V45.6731C37.0359 44.0629 38.0518 41.9709 38.2985 39.6981C39.9145 39.6673 41.5059 39.2395 42.9126 38.4563C43.7068 38.0141 43.0228 36.7855 42.2286 37.2278C39.8606 38.5633 36.8283 38.6501 34.3934 37.4377C34.2107 37.3484 33.9984 37.3426 33.8112 37.4218L32.5984 37.9342V36.5738C32.5984 36.3771 32.516 36.1895 32.3712 36.0564C26.7203 30.87 30.4316 21.3351 38.1102 21.3392C45.1057 21.3061 49.1324 29.5318 44.8031 35.021C44.2444 35.738 45.3535 36.6024 45.9122 35.8853C50.961 29.4838 46.2654 19.8946 38.1102 19.9331ZM1.40611 7.04647V3.4397C1.40611 2.59509 2.09323 1.90807 2.93784 1.90807H25.6205C26.4651 1.90807 27.1522 2.59519 27.1522 3.4397V7.04647H1.40611ZM5.77819 39.0941C4.62902 39.0477 4.6277 37.4068 5.77819 37.3598H18.6662C18.5935 37.9316 18.5709 38.5182 18.5987 39.0941H5.77819ZM31.1924 36.8756V38.9945C31.2862 39.5598 31.6118 39.7757 32.169 39.6421L34.0701 38.839C34.9717 39.2439 35.9161 39.5072 36.8914 39.6264C36.6543 41.6316 35.7171 43.4683 34.211 44.8537C34.0663 44.9869 33.9839 45.1745 33.9839 45.3712V46.7316L32.7711 46.2192C32.5838 46.1401 32.3715 46.1458 32.1888 46.2351C26.6793 49.009 19.9179 44.7879 19.9931 38.6138C19.993 34.0203 23.6664 30.2683 28.2304 30.14C28.3143 32.6748 29.3798 35.0983 31.1924 36.8756Z" fill="black"/>
|
||||
<path d="M40.2727 27.1796C41.2036 27.1473 41.2028 25.8053 40.2727 25.7734H35.9479C35.017 25.8057 35.0177 27.1477 35.9479 27.1796H40.2727Z" fill="black"/>
|
||||
<path d="M42.9383 29.1133H33.2819C32.351 29.1455 32.3517 30.4875 33.2819 30.5194H42.9383C43.8692 30.4871 43.8685 29.1452 42.9383 29.1133Z" fill="black"/>
|
||||
<path d="M35.9479 32.4531C35.017 32.4854 35.0177 33.8274 35.9479 33.8592H40.2727C41.2036 33.827 41.2028 32.485 40.2727 32.4531H35.9479Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6378_116">
|
||||
<rect width="48" height="48" fill="white" transform="translate(0 0.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
22
app/assets/images/fast.svg
Normal file
@@ -0,0 +1,22 @@
|
||||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6311_9508)">
|
||||
<path d="M126.125 15.0417C127.161 15.0417 128 14.2022 128 13.1667V6.11825C128 2.74475 125.255 0 121.882 0H79.0155C75.6418 0 72.897 2.74475 72.897 6.11825V32.04C72.897 32.1707 72.8253 32.2905 72.71 32.3522L66.7345 35.552C65.5993 36.16 64.8943 37.3375 64.8943 38.625C64.8943 39.9125 65.5993 41.09 66.7345 41.698L72.71 44.8975C72.8255 44.9595 72.8973 45.079 72.8973 45.21V60.1317C72.8973 63.5055 75.642 66.25 79.0158 66.25H121.882C125.255 66.25 128 63.5052 128 60.1317V21.8333C128 20.7978 127.161 19.9583 126.125 19.9583C125.09 19.9583 124.25 20.7978 124.25 21.8333V60.1315C124.25 61.4375 123.188 62.4997 121.882 62.4997H79.0155C77.7095 62.4997 76.647 61.4373 76.647 60.1315V45.21C76.647 43.694 75.8168 42.3075 74.4803 41.5918L68.9398 38.625L74.4805 35.658C75.817 34.9422 76.6473 33.556 76.6473 32.04V6.11825C76.6473 4.81225 77.7098 3.75 79.0158 3.75H121.882C123.188 3.75 124.25 4.8125 124.25 6.11825V13.1665C124.25 14.2023 125.09 15.0417 126.125 15.0417Z" fill="black"/>
|
||||
<path d="M45 49.6535V46.1367C47.5645 45.614 49.5 43.3415 49.5 40.625C49.5 37.5233 46.9767 35 43.875 35H34.875C31.7733 35 29.25 37.5233 29.25 40.625C29.25 43.3415 31.1855 45.6142 33.75 46.1367V49.6535C14.6938 52.3915 0 68.8232 0 88.625C0 100.683 5.4325 111.92 14.9047 119.453C15.7153 120.098 16.8947 119.964 17.5392 119.153C18.184 118.342 18.0495 117.163 17.239 116.519C8.6665 109.701 3.75 99.5338 3.75 88.625C3.75 68.9813 19.7313 53 39.375 53C59.0187 53 75 68.9813 75 88.625C75 108.269 59.0187 124.25 39.375 124.25C34.1278 124.25 29.0715 123.131 24.3463 120.923C23.408 120.485 22.2922 120.89 21.8538 121.828C21.4153 122.766 21.8205 123.882 22.7588 124.32C27.9848 126.762 33.5752 128 39.375 128C61.0865 128 78.75 110.337 78.75 88.625C78.75 68.8232 64.0563 52.3915 45 49.6535ZM33 40.625C33 39.591 33.841 38.75 34.875 38.75H43.875C44.909 38.75 45.75 39.591 45.75 40.625C45.75 41.659 44.909 42.5 43.875 42.5H34.875C33.841 42.5 33 41.659 33 40.625ZM37.5 49.2957V46.25H41.25V49.2957C40.6285 49.2665 40.0037 49.25 39.375 49.25C38.7463 49.25 38.1215 49.2665 37.5 49.2957Z" fill="black"/>
|
||||
<path d="M71.25 88.625C71.25 71.049 56.951 56.75 39.375 56.75C21.799 56.75 7.5 71.049 7.5 88.625C7.5 106.201 21.799 120.5 39.375 120.5C56.951 120.5 71.25 106.201 71.25 88.625ZM11.25 88.625C11.25 73.1167 23.8667 60.5 39.375 60.5C54.8833 60.5 67.5 73.1167 67.5 88.625C67.5 104.133 54.8833 116.75 39.375 116.75C23.8667 116.75 11.25 104.133 11.25 88.625Z" fill="black"/>
|
||||
<path d="M114.771 35.4187C116.496 33.7365 117.106 31.268 116.361 28.9762C115.616 26.6845 113.672 25.0457 111.288 24.6992L108.759 24.3317C108.149 24.243 107.622 23.86 107.349 23.3072L106.219 21.0152C105.152 18.8542 102.993 17.5117 100.583 17.5117C98.1738 17.5117 96.0145 18.8542 94.9483 21.015L93.8175 23.3067C93.5448 23.8597 93.0175 24.243 92.4073 24.3317L89.879 24.6992C87.4945 25.0457 85.5508 26.6845 84.806 28.9762C84.0613 31.268 84.6705 33.7365 86.3958 35.4187L88.226 37.2032C88.6678 37.634 88.869 38.254 88.7648 38.862L88.3325 41.3825C87.9253 43.7575 88.8835 46.1122 90.8328 47.5285C91.9343 48.3287 93.2228 48.7352 94.52 48.7352C95.519 48.7352 96.523 48.4942 97.4508 48.0062L99.7123 46.817C100.258 46.5302 100.909 46.53 101.455 46.817L103.715 48.0055C105.848 49.1267 108.384 48.944 110.334 47.5277C112.284 46.1115 113.242 43.7562 112.834 41.381L112.402 38.862C112.298 38.254 112.5 37.634 112.941 37.2035L114.771 35.4187ZM112.153 32.7337L110.323 34.5182C108.998 35.8105 108.393 37.6715 108.706 39.4957L109.138 42.0147C109.305 42.9872 108.928 43.914 108.13 44.4937C107.332 45.0737 106.334 45.1457 105.46 44.6865L103.2 43.498C101.562 42.6365 99.6053 42.6367 97.9668 43.498L95.7053 44.6872C94.8323 45.1462 93.8348 45.0742 93.0368 44.4945C92.2388 43.9147 91.862 42.9885 92.0285 42.0162L92.4608 39.496C92.7738 37.6715 92.1693 35.8107 90.8438 34.5182L89.0135 32.7337C88.307 32.045 88.0673 31.0737 88.3723 30.1352C88.6773 29.197 89.442 28.5522 90.4183 28.4102L92.9465 28.0427C94.7785 27.7765 96.3613 26.6262 97.1803 24.9662L98.311 22.6745C98.7475 21.79 99.5968 21.262 100.583 21.262C101.57 21.262 102.419 21.79 102.855 22.6745L103.986 24.9665C104.805 26.6265 106.388 27.7765 108.22 28.0427L110.748 28.4102C111.725 28.5522 112.489 29.197 112.794 30.1352C113.099 31.0735 112.86 32.045 112.153 32.7337Z" fill="black"/>
|
||||
<path d="M39.375 69.328C40.4105 69.328 41.25 68.4885 41.25 67.453V66.625C41.25 65.5895 40.4105 64.75 39.375 64.75C38.3395 64.75 37.5 65.5895 37.5 66.625V67.453C37.5 68.4885 38.3395 69.328 39.375 69.328Z" fill="black"/>
|
||||
<path d="M41.25 110.625V109.797C41.25 108.761 40.4105 107.922 39.375 107.922C38.3395 107.922 37.5 108.761 37.5 109.797V110.625C37.5 111.66 38.3395 112.5 39.375 112.5C40.4105 112.5 41.25 111.66 41.25 110.625Z" fill="black"/>
|
||||
<path d="M55.6717 74.9795L56.2572 74.394C56.9895 73.6618 56.9895 72.4745 56.2572 71.7425C55.525 71.0103 54.3377 71.0103 53.6057 71.7425L53.0202 72.328C52.288 73.0603 52.2625 74.2738 53.0202 74.9795C53.802 75.708 55.0207 75.6248 55.6717 74.9795Z" fill="black"/>
|
||||
<path d="M23.0783 102.27L22.4928 102.855C21.7605 103.588 21.7605 104.775 22.4928 105.507C23.203 106.217 24.4155 106.236 25.1443 105.507L25.7298 104.921C26.462 104.189 26.462 103.002 25.7298 102.27C24.9978 101.538 23.8105 101.538 23.0783 102.27Z" fill="black"/>
|
||||
<path d="M60.5471 90.5H61.3751C62.4106 90.5 63.2501 89.6605 63.2501 88.625C63.2501 87.5895 62.4106 86.75 61.3751 86.75H60.5471C59.5116 86.75 58.6721 87.5895 58.6721 88.625C58.6721 89.6605 59.5116 90.5 60.5471 90.5Z" fill="black"/>
|
||||
<path d="M18.203 86.75H17.375C16.3395 86.75 15.5 87.5895 15.5 88.625C15.5 89.6605 16.3395 90.5 17.375 90.5H18.203C19.2385 90.5 20.078 89.6605 20.078 88.625C20.078 87.5895 19.2385 86.75 18.203 86.75Z" fill="black"/>
|
||||
<path d="M53.6054 105.507C54.3159 106.217 55.5276 106.236 56.2569 105.507C56.9891 104.775 56.9891 103.587 56.2569 102.855L55.6714 102.27C54.9391 101.538 53.7519 101.538 53.0199 102.27C52.2876 103.002 52.2876 104.189 53.0199 104.921L53.6054 105.507Z" fill="black"/>
|
||||
<path d="M25.1445 71.7425C24.4123 71.0103 23.225 71.0103 22.493 71.7425C21.7608 72.4748 21.7608 73.662 22.493 74.394C22.493 74.394 23.0778 74.9788 23.0785 74.9795C23.784 75.685 25.0075 75.702 25.73 74.9795C26.4623 74.2473 26.4623 73.06 25.73 72.328L25.1445 71.7425Z" fill="black"/>
|
||||
<path d="M42.5417 93.2714L49.2532 98.3992C49.593 98.6587 49.9932 98.7844 50.3902 98.7844C50.9545 98.7844 51.5125 98.5307 51.8815 98.0477C52.5102 97.2247 52.3527 96.0482 51.53 95.4194L44.7607 90.2474C44.9157 89.7337 45.0002 89.1892 45.0002 88.6254C45.0002 86.1809 43.4325 84.0969 41.2502 83.3229V74.9092C41.2502 73.8737 40.4107 73.0342 39.3752 73.0342C38.3397 73.0342 37.5002 73.8737 37.5002 74.9092V83.3229C35.318 84.0969 33.7502 86.1809 33.7502 88.6254C33.7502 91.7272 36.2735 94.2504 39.3752 94.2504C40.5487 94.2504 41.6392 93.8887 42.5417 93.2714ZM37.5 88.6254C37.5 87.5914 38.341 86.7504 39.375 86.7504C40.409 86.7504 41.25 87.5914 41.25 88.6254C41.25 89.6594 40.409 90.5004 39.375 90.5004C38.341 90.5004 37.5 89.6594 37.5 88.6254Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6311_9508">
|
||||
<rect width="128" height="128" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
10
app/assets/images/internet.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M117.375 5.82422H27.1625C26.127 5.82422 25.2875 6.66347 25.2875 7.69922C25.2875 8.73497 26.127 9.57422 27.1625 9.57422H117.375C121.166 9.57422 124.25 12.6582 124.25 16.4492V29.1212H3.75V16.4492C3.75 12.6585 6.834 9.57422 10.625 9.57422H18.4125C19.448 9.57422 20.2875 8.73497 20.2875 7.69922C20.2875 6.66347 19.448 5.82422 18.4125 5.82422H10.625C4.76625 5.82422 0 10.5905 0 16.4492V107.668C0 113.527 4.76625 118.293 10.625 118.293H48.4953C53.1185 120.77 58.3983 122.176 64 122.176C69.6018 122.176 74.8815 120.77 79.5048 118.293H117.375C123.234 118.293 128 113.527 128 107.668V16.4492C128 10.5905 123.234 5.82422 117.375 5.82422ZM37.2557 77.5242H47.687C47.0868 80.5977 46.7183 83.9017 46.6203 87.3632H34.8717C35.0877 83.9435 35.8947 80.6245 37.2557 77.5242ZM73.674 116.778C76.1003 113.758 78.0847 109.612 79.4355 104.702H88.7452C85.26 110.259 79.956 114.565 73.674 116.778ZM73.3053 68.1122C74.1665 69.8347 74.909 71.7352 75.5245 73.774H65.875V60.3527C68.5888 61.2235 71.2215 63.945 73.3053 68.1122ZM76.4805 77.5242C77.1335 80.613 77.5238 83.9302 77.628 87.3632H65.875V77.5242H76.4805ZM77.6277 91.1132C77.5235 94.5462 77.1332 97.8635 76.4802 100.952H65.875V91.1132H77.6277ZM75.5242 104.702C74.9087 106.741 74.1663 108.642 73.305 110.364C71.2215 114.531 68.5887 117.253 65.8747 118.124V104.702H75.5242ZM62.125 100.952H51.5195C50.8665 97.8637 50.4763 94.5465 50.372 91.1135H62.125V100.952ZM62.125 104.702V118.124C59.4113 117.253 56.7785 114.531 54.6948 110.364C53.8335 108.642 53.0913 106.741 52.4757 104.702H62.125ZM90.733 100.952H80.313C80.9133 97.879 81.2818 94.575 81.3798 91.1135H93.128C92.9062 94.5922 92.0723 97.9077 90.733 100.952ZM81.3798 87.3632C81.2818 83.9015 80.9135 80.5977 80.313 77.5242H90.733C92.0725 80.569 92.9062 83.8842 93.128 87.3632H81.3798ZM79.4355 73.7742C78.0847 68.8642 76.1003 64.7182 73.674 61.6985C79.956 63.9117 85.26 68.2172 88.7452 73.7742H79.4355ZM62.125 60.353V73.7742H52.4757C53.0913 71.7355 53.8338 69.8347 54.6948 68.1125C56.7785 63.945 59.4113 61.2235 62.125 60.353ZM62.125 77.5242V87.3632H50.3722C50.4765 83.9302 50.8667 80.613 51.5197 77.5242H62.125ZM46.6203 91.1132C46.7183 94.575 47.0865 97.8787 47.687 100.952H37.267C35.9277 97.9075 35.0938 94.5922 34.872 91.1132H46.6203ZM48.5645 104.702C49.9152 109.612 51.8997 113.758 54.326 116.778C48.044 114.565 42.74 110.259 39.2547 104.702H48.5645ZM124.25 107.668C124.25 111.459 121.166 114.543 117.375 114.543H85.0622C92.3148 108.496 96.9375 99.397 96.9375 89.2382C96.9375 71.1897 82.282 56.3007 64 56.3007C56.5457 56.3007 49.2417 58.8607 43.4333 63.5095C42.6248 64.1565 42.494 65.3365 43.141 66.145C43.7878 66.9532 44.968 67.0847 45.7765 66.4372C48.3908 64.345 51.276 62.7467 54.347 61.6722C51.9113 64.694 49.9193 68.8497 48.5645 73.774H39.2405C39.506 73.35 39.783 72.932 40.0715 72.5197C40.6652 71.6712 40.4592 70.5022 39.6107 69.9085C38.7625 69.3142 37.5933 69.5202 36.9995 70.369C33.1152 75.917 31.0623 82.442 31.0623 89.2382C31.0623 99.397 35.6852 108.496 42.9375 114.543H10.625C6.834 114.543 3.75 111.459 3.75 107.668V48.4022H78.2968C79.3325 48.4022 80.1718 47.563 80.1718 46.5272C80.1718 45.4915 79.3325 44.6522 78.2968 44.6522H3.75V32.871H124.25V36.8865H104.122C102.787 36.8865 101.531 37.4065 100.587 38.3507L94.6523 44.2855C94.4157 44.5217 94.1017 44.652 93.768 44.652H87.2968C86.261 44.652 85.4218 45.4912 85.4218 46.527C85.4218 47.5627 86.261 48.402 87.2968 48.402H93.768C95.1032 48.402 96.3585 47.882 97.3037 46.9377L103.239 41.0027C103.475 40.7667 103.788 40.6365 104.122 40.6365H124.25V107.668Z" fill="black"/>
|
||||
<path d="M120.234 19.3476C120.234 16.1728 117.651 13.5898 114.477 13.5898C111.302 13.5898 108.719 16.1728 108.719 19.3476C108.719 22.5223 111.302 25.1053 114.477 25.1053C117.651 25.1053 120.234 22.5223 120.234 19.3476ZM112.469 19.3476C112.469 18.2403 113.369 17.3398 114.476 17.3398C115.583 17.3398 116.484 18.2406 116.484 19.3476C116.484 20.4546 115.583 21.3553 114.476 21.3553C113.369 21.3553 112.469 20.4546 112.469 19.3476Z" fill="black"/>
|
||||
<path d="M104.703 19.3476C104.703 16.1728 102.12 13.5898 98.9453 13.5898C95.7705 13.5898 93.1875 16.1726 93.1875 19.3476C93.1875 22.5226 95.7705 25.1053 98.9453 25.1053C102.12 25.1053 104.703 22.5223 104.703 19.3476ZM96.9375 19.3476C96.9375 18.2403 97.8383 17.3398 98.9453 17.3398C100.052 17.3398 100.953 18.2406 100.953 19.3476C100.953 20.4546 100.052 21.3553 98.9453 21.3553C97.8383 21.3553 96.9375 20.4546 96.9375 19.3476Z" fill="black"/>
|
||||
<path d="M89.172 19.3476C89.172 16.1728 86.589 13.5898 83.4142 13.5898C80.2395 13.5898 77.6565 16.1728 77.6565 19.3476C77.6565 22.5223 80.2395 25.1053 83.4142 25.1053C86.589 25.1053 89.172 22.5223 89.172 19.3476ZM81.4062 19.3476C81.4062 18.2403 82.307 17.3398 83.414 17.3398C84.521 17.3398 85.4217 18.2406 85.4217 19.3476C85.4217 20.4546 84.521 21.3553 83.414 21.3553C82.307 21.3553 81.4062 20.4546 81.4062 19.3476Z" fill="black"/>
|
||||
<path d="M7.76538 17.3398V21.3553C7.76538 23.4231 9.44763 25.1053 11.5154 25.1053H38.8279C40.8956 25.1053 42.5779 23.4231 42.5779 21.3553V17.3398C42.5779 15.2721 40.8956 13.5898 38.8279 13.5898H11.5154C9.44788 13.5898 7.76538 15.2721 7.76538 17.3398ZM38.8304 21.3556H11.5154V17.3398H38.8279L38.8304 21.3556Z" fill="black"/>
|
||||
<path d="M93.0546 38.7617C93.0546 37.726 92.2154 36.8867 91.1796 36.8867H25.1716C24.1361 36.8867 23.2966 37.726 23.2966 38.7617C23.2966 39.7975 24.1361 40.6367 25.1716 40.6367H91.1794C92.2151 40.6367 93.0546 39.7972 93.0546 38.7617Z" fill="black"/>
|
||||
<path d="M17.4062 40.6367C18.4418 40.6367 19.2812 39.7973 19.2812 38.7617C19.2812 37.7262 18.4418 36.8867 17.4062 36.8867C16.3707 36.8867 15.5312 37.7262 15.5312 38.7617C15.5312 39.7973 16.3707 40.6367 17.4062 40.6367Z" fill="black"/>
|
||||
<path d="M9.64038 40.6367C10.6759 40.6367 11.5154 39.7973 11.5154 38.7617C11.5154 37.7262 10.6759 36.8867 9.64038 36.8867C8.60485 36.8867 7.76538 37.7262 7.76538 38.7617C7.76538 39.7973 8.60485 40.6367 9.64038 40.6367Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
17
app/assets/images/security.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6311_9575)">
|
||||
<path d="M13.1356 105.339H93.2878C94.3236 105.339 95.1628 104.5 95.1628 103.464C95.1628 102.428 94.3236 101.589 93.2878 101.589H13.1356C11.6753 101.589 10.4873 100.401 10.4873 98.9407V26.0474H44.2016C41.9081 29.6852 40.5788 33.9892 40.5788 38.5982V46.6989C37.1923 47.1732 34.5773 50.0874 34.5773 53.6027V86.9362C34.5773 90.7812 37.7053 93.9092 41.5503 93.9092H86.8113C90.6563 93.9092 93.7843 90.7812 93.7843 86.9362V53.6029C93.7843 50.0877 91.1693 47.1734 87.7826 46.6992V38.5984C87.7826 33.9892 86.4533 29.6854 84.1598 26.0477H119.138V98.9409C119.138 100.401 117.95 101.589 116.49 101.589H102.282C101.246 101.589 100.407 102.428 100.407 103.464C100.407 104.5 101.246 105.339 102.282 105.339H116.49C120.018 105.339 122.888 102.469 122.888 98.9409V14.1582C122.888 9.20744 118.86 5.17969 113.909 5.17969H38.9261C37.8903 5.17969 37.0511 6.01894 37.0511 7.05469C37.0511 8.09044 37.8903 8.92969 38.9261 8.92969H113.909C116.792 8.92969 119.138 11.2752 119.138 14.1582V22.2974H81.3611C81.3201 22.2974 81.2798 22.3009 81.2393 22.3034C76.9391 17.8034 70.8815 14.9962 64.1805 14.9962C57.4533 14.9962 51.3748 17.8257 47.0716 22.3564C46.9241 22.3192 10.4873 22.2972 10.4873 22.2972V14.1582C10.4873 11.2752 12.8328 8.92969 15.7158 8.92969H30.1583C31.1941 8.92969 32.0333 8.09044 32.0333 7.05469C32.0333 6.01894 31.1941 5.17969 30.1583 5.17969H15.7158C10.7651 5.17969 6.7373 9.20744 6.7373 14.1582V98.9409C6.7373 102.469 9.60755 105.339 13.1356 105.339ZM90.0343 53.6029V86.9364C90.0343 88.7134 88.5886 90.1594 86.8113 90.1594H41.5503C39.7733 90.1594 38.3273 88.7137 38.3273 86.9364V53.6029C38.3273 51.8259 39.7731 50.3799 41.5503 50.3799H86.8113C88.5886 50.3802 90.0343 51.8259 90.0343 53.6029ZM74.5733 46.6302H53.7881V38.5984C53.7881 32.8677 58.4501 28.2057 64.1805 28.2057C69.911 28.2057 74.5731 32.8677 74.5731 38.5984V46.6302H74.5733ZM64.1808 18.7464C75.1271 18.7464 84.0326 27.6519 84.0326 38.5982V46.6299H78.3233V38.5982C78.3233 30.7999 71.979 24.4554 64.1808 24.4554C56.3826 24.4554 50.0383 30.7999 50.0383 38.5982V46.6299H44.3291V38.5982C44.3288 27.6519 53.2346 18.7464 64.1808 18.7464Z" fill="black"/>
|
||||
<path d="M91.6201 17.4883C92.6558 17.4883 93.4951 16.649 93.4951 15.6133C93.4951 14.5775 92.6558 13.7383 91.6201 13.7383H89.5701C88.5343 13.7383 87.6951 14.5775 87.6951 15.6133C87.6951 16.649 88.5343 17.4883 89.5701 17.4883H91.6201Z" fill="black"/>
|
||||
<path d="M100.641 17.4883C101.676 17.4883 102.516 16.649 102.516 15.6133C102.516 14.5775 101.676 13.7383 100.641 13.7383H98.5906C97.5548 13.7383 96.7156 14.5775 96.7156 15.6133C96.7156 16.649 97.5548 17.4883 98.5906 17.4883H100.641Z" fill="black"/>
|
||||
<path d="M109.661 17.4883C110.697 17.4883 111.536 16.649 111.536 15.6133C111.536 14.5775 110.697 13.7383 109.661 13.7383H107.611C106.575 13.7383 105.736 14.5775 105.736 15.6133C105.736 16.649 106.575 17.4883 107.611 17.4883H109.661Z" fill="black"/>
|
||||
<path d="M126.125 113.899H105.969C105.146 110.921 102.414 108.728 99.1775 108.728C95.9412 108.728 93.2095 110.921 92.3863 113.899H35.6138C34.7905 110.921 32.0588 108.728 28.8228 108.728C25.5865 108.728 22.8547 110.921 22.0315 113.899H1.875C0.83925 113.899 0 114.738 0 115.774C0 116.81 0.83925 117.649 1.875 117.649H22.0315C22.8547 120.627 25.5865 122.82 28.8228 122.82C32.0588 122.82 34.7905 120.627 35.6138 117.649H92.3865C93.2097 120.627 95.9415 122.82 99.1777 122.82C102.414 122.82 105.146 120.627 105.969 117.649H126.125C127.161 117.649 128 116.81 128 115.774C128 114.738 127.161 113.899 126.125 113.899ZM28.8228 119.07C27.005 119.07 25.5263 117.591 25.5263 115.774C25.5263 113.956 27.005 112.477 28.8228 112.477C30.6402 112.477 32.119 113.956 32.119 115.774C32.119 117.591 30.6402 119.07 28.8228 119.07ZM99.1775 119.07C97.3597 119.07 95.881 117.591 95.881 115.774C95.881 113.956 97.3597 112.477 99.1775 112.477C100.995 112.477 102.474 113.956 102.474 115.774C102.474 117.591 100.995 119.07 99.1775 119.07Z" fill="black"/>
|
||||
<path d="M74.6482 63.1457C73.9162 62.4137 72.7289 62.4135 71.9967 63.146C71.2644 63.8782 71.2644 65.0655 71.9969 65.7975L76.4694 70.2697L71.9967 74.7422C71.2644 75.4747 71.2644 76.6617 71.9967 77.394C72.3629 77.76 72.8429 77.943 73.3227 77.943C73.8024 77.943 74.2824 77.76 74.6487 77.394L80.4469 71.5957C80.7984 71.244 80.9959 70.7672 80.9959 70.2697C80.9959 69.7722 80.7984 69.2957 80.4467 68.9437L74.6482 63.1457Z" fill="black"/>
|
||||
<path d="M51.8922 70.2697L56.3647 65.7974C57.0972 65.0652 57.0972 63.8779 56.365 63.1459C55.6327 62.4139 54.4455 62.4134 53.7135 63.1456L47.9152 68.9436C47.5635 69.2954 47.366 69.7722 47.366 70.2697C47.366 70.7672 47.5635 71.2436 47.915 71.5956L53.7132 77.3939C54.0795 77.7599 54.5595 77.9429 55.0392 77.9429C55.519 77.9429 55.999 77.7599 56.3652 77.3939C57.0975 76.6614 57.0975 75.4744 56.3652 74.7421L51.8922 70.2697Z" fill="black"/>
|
||||
<path d="M66.0639 62.6508C65.0587 62.4026 64.0422 63.0161 63.7937 64.0211L60.9274 75.6176C60.6792 76.6228 61.2927 77.6393 62.2977 77.8878C62.4487 77.9251 62.6002 77.9431 62.7492 77.9431C63.5912 77.9431 64.3569 77.3716 64.5679 76.5176L67.4342 64.9211C67.6824 63.9158 67.0689 62.8996 66.0639 62.6508Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6311_9575">
|
||||
<rect width="128" height="128" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
12
app/assets/images/send.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6311_9539)">
|
||||
<path d="M107.26 81.0871C108.302 81.0871 109.145 80.2431 109.145 79.2021V61.7874C109.145 60.7464 108.302 59.9023 107.26 59.9023H103.538C102.497 59.9023 101.653 60.7464 101.653 61.7874C101.653 62.8285 102.497 63.6725 103.538 63.6725H105.375V79.2021C105.375 80.2431 106.219 81.0871 107.26 81.0871Z" fill="black"/>
|
||||
<path d="M105.03 95.3332C104.018 95.0871 102.999 95.7069 102.752 96.7186L97.7374 117.306C97.6188 117.793 97.2262 117.927 97.0625 117.963C96.8997 117.998 96.486 118.037 96.1776 117.642L59.5854 70.7809L122.95 13.8064L115.318 45.1362C115.072 46.1479 115.692 47.1676 116.703 47.4139C116.853 47.4503 117.003 47.4679 117.151 47.4679C118 47.4679 118.771 46.8901 118.981 46.0285L127.914 9.35889C128.13 8.46888 127.846 7.53061 127.173 6.91004C126.499 6.28972 125.541 6.08387 124.671 6.37267L34.2959 36.438C33.3079 36.7667 32.7735 37.8339 33.1023 38.8217C33.4308 39.8095 34.4985 40.3441 35.4858 40.0153L119.097 12.2011L56.5961 68.3984L5.56399 49.9696L27.7773 42.58C28.7653 42.2513 29.2997 41.1841 28.9709 40.1963C28.6424 39.2088 27.5755 38.6744 26.5874 39.0027L1.98209 47.1877C0.793983 47.5828 0.0163241 48.647 0.000238096 49.8989C-0.0153452 51.1506 0.735168 52.2342 1.91221 52.6592L37.0421 65.3453V98.9988C37.0421 100.55 37.8471 101.934 39.1953 102.701C39.8571 103.077 40.5798 103.265 41.3014 103.265C42.0504 103.265 42.7986 103.062 43.4772 102.659L51.7857 97.7167C52.6807 97.1843 52.9743 96.0276 52.4422 95.1328C51.9098 94.2378 50.7532 93.9442 49.8584 94.4763L41.5499 99.4185C41.3479 99.5386 41.1717 99.4871 41.0591 99.4233C40.9465 99.3592 40.8122 99.2335 40.8122 98.9988V66.7068L55.8657 72.1429L65.8687 84.9529L56.7635 90.3691C55.8685 90.9015 55.5749 92.0581 56.107 92.9529C56.4597 93.5456 57.0863 93.8746 57.729 93.8746C58.057 93.8746 58.3887 93.7891 58.6908 93.6094L68.2077 87.9484L93.2062 119.962C94.1045 121.113 95.4456 121.755 96.8595 121.755C97.1892 121.755 97.523 121.72 97.856 121.648C99.6162 121.27 100.974 119.948 101.401 118.198L106.416 97.6108C106.662 96.5994 106.042 95.5797 105.03 95.3332Z" fill="black"/>
|
||||
<path d="M126.484 72.7292C125.468 72.51 124.464 73.1573 124.244 74.1747C122.533 82.1121 115.391 87.873 107.26 87.873C97.6782 87.873 89.8825 80.0773 89.8825 70.495C89.8825 60.9128 97.6782 53.1171 107.26 53.1171C115.446 53.1171 122.599 58.9234 124.269 66.9232C124.482 67.9424 125.482 68.5969 126.5 68.3832C127.519 68.1703 128.173 67.1718 127.96 66.1526C125.927 56.4145 117.221 49.3467 107.261 49.3467C95.5995 49.3467 86.1125 58.8337 86.1125 70.4948C86.1125 82.1559 95.5995 91.6429 107.261 91.6429C112.123 91.6429 116.871 89.9511 120.63 86.8791C124.335 83.8517 126.927 79.6216 127.93 74.9685C128.149 73.9515 127.502 72.9484 126.484 72.7292Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6311_9539">
|
||||
<rect width="128" height="128" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
1
app/assets/images/status.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg id="Capa_1" enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><g><path d="m488.19 30.63h-48.55c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h48.551c4.857 0 8.81 3.952 8.81 8.811v39.835h-482.001v-39.836c0-4.858 3.952-8.811 8.81-8.811h380.83c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-380.83c-13.129.001-23.81 10.683-23.81 23.811v403.12c0 13.129 10.681 23.811 23.81 23.811h69c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-69c-4.857 0-8.81-3.952-8.81-8.811v-348.285h482v348.285c0 4.858-3.952 8.811-8.81 8.811h-360.38c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h360.38c13.129 0 23.81-10.682 23.81-23.811v-403.12c0-13.128-10.681-23.81-23.81-23.81z"/><path d="m185.41 134.28h-131.91c-7.444 0-13.5 6.056-13.5 13.5v66.13c0 7.444 6.056 13.5 13.5 13.5h405c7.444 0 13.5-6.056 13.5-13.5v-66.13c0-7.444-6.056-13.5-13.5-13.5h-238.09c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h236.59v63.13h-321.142v-63.13h49.552c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5zm-64.552 78.13h-65.858v-63.13h65.858z"/><path d="m67.935 188.478 11.756 9.094c1.321 1.021 2.937 1.567 4.589 1.567.329 0 .66-.021.989-.065 1.986-.265 3.783-1.312 4.992-2.909l18.666-24.671c2.499-3.304 1.847-8.007-1.456-10.507-3.304-2.499-8.006-1.847-10.507 1.456l-14.092 18.626-5.76-4.456c-3.275-2.533-7.985-1.934-10.521 1.344-2.534 3.275-1.933 7.985 1.344 10.521z"/><path d="m153.684 180.845c0 4.143 3.357 7.5 7.5 7.5h72.66c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-72.66c-4.143 0-7.5 3.357-7.5 7.5z"/><path d="m431.671 188.345c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-162.823c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5z"/><path d="m53.504 441.366h404.992c7.444 0 13.5-6.056 13.5-13.5v-66.132c0-7.444-6.056-13.5-13.5-13.5h-404.992c-7.444 0-13.5 6.056-13.5 13.5v66.132c0 7.445 6.056 13.5 13.5 13.5zm403.492-15h-321.138v-63.132h321.138zm-401.992-63.132h65.854v63.132h-65.854z"/><path d="m98.342 394.8 6.604-6.604c2.929-2.93 2.929-7.678 0-10.607-2.93-2.928-7.678-2.928-10.607 0l-6.604 6.604-6.604-6.604c-2.93-2.928-7.678-2.928-10.607 0-2.929 2.93-2.929 7.678 0 10.607l6.604 6.604-6.604 6.604c-2.929 2.93-2.929 7.678 0 10.607 1.465 1.464 3.385 2.196 5.304 2.196s3.839-.732 5.304-2.196l6.604-6.604 6.604 6.604c1.465 1.464 3.385 2.196 5.304 2.196s3.839-.732 5.304-2.196c2.929-2.93 2.929-7.678 0-10.607z"/><path d="m161.184 402.3h72.66c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-72.66c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5z"/><path d="m268.848 402.3h162.823c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-162.823c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5z"/><path d="m458.496 241.257h-404.992c-7.444 0-13.5 6.056-13.5 13.5v66.132c0 7.444 6.056 13.5 13.5 13.5h404.992c7.444 0 13.5-6.056 13.5-13.5v-66.132c0-7.445-6.056-13.5-13.5-13.5zm-403.492 15h65.854v63.132h-65.854zm401.992 63.132h-321.138v-63.132h321.138z"/><path d="m107.471 269.506c-3.304-2.499-8.006-1.847-10.507 1.456l-14.092 18.626-5.76-4.456c-3.275-2.534-7.985-1.933-10.521 1.344-2.534 3.276-1.933 7.986 1.344 10.521l11.756 9.094c1.321 1.021 2.937 1.567 4.589 1.567.329 0 .66-.021.989-.065 1.986-.265 3.783-1.312 4.992-2.909l18.666-24.671c2.499-3.304 1.846-8.007-1.456-10.507z"/><path d="m359.011 295.322h72.66c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-72.66c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5z"/><path d="m161.184 295.322h162.823c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-162.823c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5z"/><g><circle cx="42.069" cy="69.954" r="7.5"/><circle cx="76.192" cy="69.954" r="7.5"/><circle cx="110.31" cy="69.954" r="7.5"/></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
12
app/assets/images/translation.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6311_9544)">
|
||||
<path d="M31.5182 96.3591C31.7232 97.3748 32.7129 98.0311 33.7269 97.8261C38.9609 96.7696 42.8322 94.7671 45.6829 92.5183C48.5337 94.7671 52.4049 96.7698 57.6389 97.8261C58.6529 98.0311 59.6429 97.3746 59.8477 96.3591C60.0524 95.3441 59.3957 94.3551 58.3807 94.1503C54.1179 93.2898 50.8949 91.7473 48.4574 89.9433C51.1487 87.0021 52.9734 83.4338 53.8114 79.8881H58.3314C59.3672 79.8881 60.2064 79.0486 60.2064 78.0131C60.2064 76.9776 59.3672 76.1381 58.3314 76.1381H47.5584V71.7363C47.5584 70.7008 46.7192 69.8613 45.6834 69.8613C44.6477 69.8613 43.8084 70.7008 43.8084 71.7363V76.1381H33.0344C31.9987 76.1381 31.1594 76.9776 31.1594 78.0131C31.1594 79.0486 31.9987 79.8881 33.0344 79.8881H37.5544C38.3907 83.4258 40.2092 86.9866 42.8907 89.9241C40.4537 91.7403 37.2347 93.2923 32.9852 94.1501C31.9699 94.3548 31.3132 95.3441 31.5182 96.3591ZM41.4162 79.8881H49.9329C49.3807 81.7618 48.1822 84.6693 45.6567 87.4271C43.1337 84.6718 41.9552 81.7671 41.4162 79.8881Z" fill="black"/>
|
||||
<path d="M82.3162 18.748C81.5372 18.748 80.839 19.23 80.5627 19.9585L71.3715 44.2103C71.0045 45.1785 71.492 46.261 72.4602 46.628C73.429 46.995 74.5112 46.5073 74.8782 45.5393L76.6965 40.7418C76.7585 40.748 76.8212 40.7513 76.885 40.7513H87.84C87.873 40.7513 87.905 40.748 87.9375 40.7463L89.754 45.539C90.1212 46.5075 91.2042 46.9945 92.172 46.6278C93.1402 46.2608 93.6277 45.1783 93.2607 44.21L84.0695 19.9583C83.7935 19.23 83.0955 18.748 82.3162 18.748ZM78.1142 37.0013L82.3162 25.9138L86.5182 37.0013H78.1142Z" fill="black"/>
|
||||
<path d="M11.7858 116.457H16.6226C18.1479 116.457 19.5237 117.42 20.0462 118.853L22.5182 125.628C23.0439 127.069 24.3747 128 25.9087 128C27.4427 128 28.7737 127.069 29.2997 125.628L31.7715 118.852C32.2943 117.42 33.67 116.457 35.195 116.457H53.6349C54.6707 116.457 55.5099 115.618 55.5099 114.582C55.5099 113.547 54.6707 112.707 53.6349 112.707H35.1953C32.1008 112.707 29.3092 114.66 28.2487 117.567L25.9092 123.98L23.5694 117.567C22.5089 114.66 19.7174 112.707 16.6229 112.707H11.7858C7.35481 112.707 3.75003 109.103 3.75003 104.672V62.0325C3.75003 57.6015 7.35481 53.9967 11.7858 53.9967H36.633V54.4249C36.633 60.9237 41.9201 66.2108 48.4189 66.2108H87.6172V104.672C87.6172 109.103 84.0122 112.708 79.5811 112.708H62.3852C61.3495 112.708 60.5102 113.547 60.5102 114.583C60.5102 115.618 61.3495 116.458 62.3852 116.458H79.5811C86.0799 116.458 91.3672 111.171 91.3672 104.672V66.2108H92.805C94.33 66.2108 95.706 67.1735 96.2285 68.606L98.7003 75.3813C99.2263 76.8226 100.558 77.7536 102.091 77.7536C103.626 77.7536 104.956 76.8221 105.482 75.3813L107.954 68.606C108.477 67.1735 109.852 66.2108 111.377 66.2108H116.214C122.713 66.2108 128 60.9237 128 54.4249V38.8768C128 37.8413 127.161 37.0018 126.125 37.0018C125.089 37.0018 124.25 37.8413 124.25 38.8768V54.4249C124.25 58.856 120.645 62.4607 116.214 62.4607H111.377C108.283 62.4607 105.491 64.4138 104.431 67.3205L102.091 73.7338L99.7515 67.3205C98.6908 64.4138 95.899 62.4607 92.805 62.4607C91.289 62.4607 50.0484 62.4607 48.4189 62.4607C43.9878 62.4607 40.3831 58.856 40.3831 54.4249C40.3831 52.6232 40.3831 14.9124 40.3831 11.7856C40.3831 7.35481 43.9878 3.75003 48.4186 3.75003H116.214C120.645 3.75003 124.25 7.35481 124.25 11.7858V30.1267C124.25 31.1622 125.089 32.0018 126.125 32.0018C127.161 32.0018 128 31.1622 128 30.1267V11.7858C128 5.28704 122.713 0 116.214 0H48.4186C41.9201 0 36.6328 5.28704 36.6328 11.7858V50.2466H11.7858C5.28729 50.2466 0 55.5337 0 62.0325V104.672C0 111.17 5.28729 116.457 11.7858 116.457Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6311_9544">
|
||||
<rect width="128" height="128" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -9,6 +9,10 @@ in the form $setting: value,
|
||||
|
||||
@use "uswds-core" with (
|
||||
$theme-font-type-sans: "public-sans",
|
||||
$theme-card-border-radius: 0,
|
||||
$theme-card-gap: 4,
|
||||
$theme-card-border-width: 2px,
|
||||
$theme-card-border-color: "ink",
|
||||
$theme-show-notifications: false,
|
||||
$theme-banner-max-width: "desktop-lg",
|
||||
$theme-grid-container-max-width: "desktop-lg",
|
||||
|
||||
@@ -55,7 +55,7 @@ def index():
|
||||
return render_template(
|
||||
"views/signedout.html",
|
||||
sms_rate=CURRENT_SMS_RATE,
|
||||
counts=status_api_client.get_count_of_live_services_and_organizations()
|
||||
counts=status_api_client.get_count_of_live_services_and_organizations(),
|
||||
)
|
||||
|
||||
|
||||
@@ -309,6 +309,13 @@ def why_text_messaging():
|
||||
)
|
||||
|
||||
|
||||
@main.route("/join-notify")
|
||||
def join_notify():
|
||||
return render_template(
|
||||
"views/join-notify.html",
|
||||
)
|
||||
|
||||
|
||||
@main.route("/using-notify/guidance/create-and-send-messages")
|
||||
@user_is_logged_in
|
||||
def create_and_send_messages():
|
||||
|
||||
@@ -483,6 +483,7 @@ def send_one_off_step(service_id, template_id, step_index):
|
||||
link_to_upload=(
|
||||
request.endpoint == "main.send_one_off_step" and step_index == 0
|
||||
),
|
||||
errors=form.errors if form.errors else None
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p><a href="#">See if Notify is right for you</a></p>
|
||||
<p><a href="/join-notify">See if Notify is right for you</a></p>
|
||||
<p>Notify.gov is a product of the <a href="#">Public Benefits Studio</a>, a product accelerator inside
|
||||
the federal government. </p>
|
||||
</section>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
{% from "components/banner.html" import banner_wrapper %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/components/button/macro.njk" import usaButton %}
|
||||
{% from "components/components/skip-link/macro.njk" import usaSkipLink %}
|
||||
{% from "components/components/back-link/macro.njk" import usaBackLink %}
|
||||
|
||||
{% set file_contents_header_id = 'file-preview' %}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
{% from "components/table.html" import list_table, field, text_field, hidden_field_heading %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/components/button/macro.njk" import usaButton %}
|
||||
{% from "components/components/skip-link/macro.njk" import usaSkipLink %}
|
||||
{% from "components/components/back-link/macro.njk" import usaBackLink %}
|
||||
|
||||
{% set file_contents_header_id = 'file-preview' %}
|
||||
|
||||
212
app/templates/views/join-notify.html
Normal file
@@ -0,0 +1,212 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% set page_title = "Join Notify" %}
|
||||
|
||||
{% block per_page_title %}{{page_title}}{% endblock %}
|
||||
|
||||
{% block content_column_content %}
|
||||
|
||||
<section class="usa-prose">
|
||||
<h1>{{page_title}}</h1>
|
||||
<h2>Who is Notify.gov for?</h2>
|
||||
<p>
|
||||
Government agencies at any level of government who deliver <b>federal programs</b> are able to use Notify.gov. Those
|
||||
who sign up to new Notify.gov become our partners.
|
||||
</p>
|
||||
<p>
|
||||
All <b>federal agencies</b> are invited to use Notify.gov to send text messages to their employees, other federal
|
||||
agencies, or to the public.
|
||||
</p>
|
||||
<p>
|
||||
<b>
|
||||
Non-federal agencies (state, local, territorial, or tribal governments) who administer or deliver federally-funded
|
||||
services
|
||||
</b> may qualify to use Notify.gov. These programs must specify which federal program the messages they want to
|
||||
send are related to. The Notify.gov team confirms our authority to work with these programs as part of our
|
||||
agreements process.
|
||||
</p>
|
||||
<h3>What partners receive</h3>
|
||||
<p>
|
||||
To use Notify.gov to send messages (outside of our Trial Mode), partners sign a one-year Memorandum of Understanding
|
||||
with us. This is a basic agreement outlining our relationship and responsibilities.
|
||||
</p>
|
||||
<p class="padding-bottom-3"><b>Our core, no-cost, service offering includes:</b></p>
|
||||
{% set product_highlights = [
|
||||
{
|
||||
"svg_src": "#chat",
|
||||
"card_heading": "Up to 250,000 messages to use over your first year*",
|
||||
},
|
||||
{
|
||||
"svg_src": "#phone",
|
||||
"card_heading": "One toll-free sending phone number",
|
||||
},
|
||||
{
|
||||
"svg_src": "#forum",
|
||||
"card_heading": "An easy-to-use web-based interface for sending bulk or individual messages",
|
||||
},
|
||||
{
|
||||
"svg_src": "#assessment",
|
||||
"card_heading": "Dashboards and downloadable reports for tracking message delivery",
|
||||
},
|
||||
] %}
|
||||
<ul class="usa-icon-list">
|
||||
{% for item in product_highlights %}
|
||||
<li class="usa-icon-list__item">
|
||||
<div class="usa-icon-list__content padding-left-0">
|
||||
<div class="usa-icon-list__icon display-flex flex-align-start">
|
||||
<svg aria-hidden="true" focusable="false" role="img" class="icon-list">
|
||||
<use xlink:href="{{ asset_url('img/sprite.svg') }}{{ item.svg_src }}"></use>
|
||||
</svg>
|
||||
<b>{{item.card_heading}}</b>
|
||||
</div>
|
||||
<p class="indented-paragraph">{{item.p_text}}</p>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p class="font-body-xs">*We plan to offer plans with additional messages soon; please contact us if you need more
|
||||
messages so that we can understand your use case!</p>
|
||||
|
||||
<h2 class="padding-bottom-2" id="summary-box-how-to-get-started">How to get started</h2>
|
||||
<div class="usa-summary-box maxw-tablet __web-inspector-hide-shortcut__" role="region"
|
||||
aria-labelledby="summary-box-how-to-get-started">
|
||||
<div class="usa-summary-box__body">
|
||||
<div class="usa-summary-box__text">
|
||||
<p>Interested in trying Notify.gov before signing an agreement? We can provide qualifying partners with access
|
||||
to Trial Mode to review Notify.gov features before deciding. In Trial Mode, you can test sending messages,
|
||||
explore the personalization and customization features, and review sample delivery reports.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4>Tell us about your program</h4>
|
||||
<p class="padding-bottom-3">
|
||||
Let’s determine if Notify.gov is a good fit for your organization. To <b>get started</b>, we’ll ask you for
|
||||
information such as:
|
||||
</p>
|
||||
{% set bullet_items = [
|
||||
"Organization name and type",
|
||||
"Point of contact’s name and email address",
|
||||
"Your associated federal funding, program, or authority",
|
||||
"The program(s) you want to text about",
|
||||
"Who you are planning to text",
|
||||
"What you’d like to achieve by texting these people",
|
||||
"The estimate number of texts you’d like to send in the first year",
|
||||
"Who would you like to include on the Trial Mode account?",
|
||||
"Provide the official government email address to invite your team members",
|
||||
"When would you like to send your first text(s)?"
|
||||
] %}
|
||||
<ul class="usa-icon-list padding-bottom-2">
|
||||
{% for item in bullet_items %}
|
||||
<li class="usa-icon-list__item">
|
||||
<div class="usa-icon-list__icon display-flex flex-align-start">
|
||||
<svg class="usa-icon checkmark-icon icon-list" aria-hidden="true" focusable="false" role="img">
|
||||
<use xlink:href="{{ asset_url('img/sprite.svg') }}#check"></use>
|
||||
</svg>
|
||||
<b>{{ item }}</b>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<a href="https://docs.google.com/forms/d/e/1FAIpQLSdZvsPndZaLeFBTtIxvDCx0Rdjyhln_dWXSLSwfgKw4ftEslw/viewform"
|
||||
class="usa-button margin-bottom-3">Get started</a>
|
||||
<hr class="maxw-tablet margin-left-0">
|
||||
<h2>Next Steps</h2>
|
||||
<p>
|
||||
Our team will review the information you provide, and follow up with any questions. We’ll contact you no matter your
|
||||
qualification status.
|
||||
</p>
|
||||
<p>
|
||||
We provide you a one-year, Memorandum of Understanding (MOU). To text the public fully in Live Mode, your
|
||||
organization will need to sign our MOU.
|
||||
</p>
|
||||
|
||||
<h3 class="padding-bottom-3">Getting Started FAQs</h3>
|
||||
{% set accordion_content = [
|
||||
{
|
||||
"heading": "What if I need more than 250,000 messages?",
|
||||
"p_text": "Plans that include additional messages for a fee will be available soon. We want to design these plans
|
||||
based on our partners’ needs, so please <a href='mailto:tts-notify@gsa.gov'>contact us</a> if you hope to be able to
|
||||
send more messages. We’d like to talk with you.",
|
||||
"position": "b-a1"
|
||||
},
|
||||
{
|
||||
"heading": "What phone numbers can my agency send to?",
|
||||
"p_text": "Right now, Notify.gov supports sending messages to North American numbers (+1). If you’d like to send to
|
||||
international numbers, we want to <u>hear from you</u>.",
|
||||
"position": "b-a2",
|
||||
},
|
||||
{
|
||||
"heading": "Can we send from a shortcode or an existing customer service number?",
|
||||
"p_text": "At this time, Notify.gov provides toll-free service numbers. We will be exploring offering shortcodes in
|
||||
the near future. If you wish to send from an existing phone number owned or operated by your agency, this is something
|
||||
that might be possible in the future, but is not currently on our roadmap.",
|
||||
"position": "b-a3",
|
||||
},
|
||||
{
|
||||
"heading": "Can we use API integrations with Notify?",
|
||||
"p_text": "While public API integrations are not yet available, we are working on enabling these. If you're looking
|
||||
for this feature <a href='/about/contact'>we want to hear from you</a>.",
|
||||
"position": "b-a4",
|
||||
},
|
||||
{
|
||||
"heading": "My IT team has questions about how Notify.gov is built, where can I direct them to more information?",
|
||||
"p_text": "To understand how Notify.gov works, see our <a href='/about/security'>Security page </a> for the
|
||||
basics. If your IT team needs more
|
||||
information we’re happy to share a larger security package upon request.",
|
||||
"position": "b-a5",
|
||||
},
|
||||
{
|
||||
"heading": "How does Notify.gov support our records retention policy?",
|
||||
"p_text": "We are not a System of Record. For more see our <a href='/about/security'>Security page</a>.",
|
||||
"position": "b-a6",
|
||||
},
|
||||
{
|
||||
"heading": "My OGC is asking about consent, where can I get more information for them?",
|
||||
"p_text": "Text message notifications are governed by the Telephone Consumer Protection Act. Different levels of
|
||||
government have different consent requirements. Download and share our <a
|
||||
href='https://github.com/GSA/notifications-admin/files/15100120/TCPA.Overview_Notify.gov.pdf'>overview of the
|
||||
TCPA</a> with your legal counsel as
|
||||
a starting point.",
|
||||
"position": "b-a7",
|
||||
},
|
||||
{
|
||||
"heading": "What information does Notify provide about message delivery?",
|
||||
"p_text": "Notify.gov shares back information about message delivery that we receive from individual mobile phone
|
||||
carriers. Carriers can only provide information about whether a message was successfully delivered to a specific phone
|
||||
number (not a person).
|
||||
|
||||
If you happen to send a message to a landline or out-of-service phone number, these messages will show up as ‘failed’
|
||||
in delivery reports.",
|
||||
"position": "b-a8",
|
||||
},
|
||||
{
|
||||
"heading": "Can I track engagement with the messages I send?",
|
||||
"p_text": "Unlike email, you cannot see if someone reads a message or clicks on a link you included in a message. This
|
||||
is a limitation of SMS in general, not Notify.gov. We do highly recommend setting goals for your texting campaigns and
|
||||
tracking performance. By combining the delivery reports provided by Notify.gov with other information from your
|
||||
program, you may be able to assess engagement and impact.",
|
||||
"position": "b-a9",
|
||||
},
|
||||
{
|
||||
"heading": "Is there technical product support offered?",
|
||||
"p_text": "We’re on call to answer any questions as you get started using Notify.gov",
|
||||
"position": "b-a10",
|
||||
},
|
||||
] %}
|
||||
<div class="usa-accordion usa-accordion--bordered maxw-tablet">
|
||||
{% for item in accordion_content %}
|
||||
<h4 class="usa-accordion__heading">
|
||||
<button type="button" class="usa-accordion__button" aria-controls="{{item.position}}">
|
||||
{{item.heading}}
|
||||
</button>
|
||||
</h4>
|
||||
<div id="{{item.position}}" class="usa-accordion__content usa-prose">
|
||||
<p>
|
||||
{{ item.p_text | safe }}
|
||||
</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
@@ -12,6 +12,19 @@
|
||||
{{ usaBackLink({ "href": back_link }) }}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block skipLink %}
|
||||
{% set skipLink = usaSkipLink({
|
||||
"href": '#main-content',
|
||||
"text": 'Skip to main content'
|
||||
}) %}
|
||||
{% if errors %}
|
||||
<div>{{ skipLink }}</div>
|
||||
{% else %}
|
||||
{{ skipLink }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
|
||||
{{ page_header(page_title) }}
|
||||
|
||||
@@ -1,323 +1,187 @@
|
||||
{% extends "base.html" %}
|
||||
{% from "components/components/button/macro.njk" import usaButton %}
|
||||
|
||||
{% block meta %}
|
||||
<meta name="description"
|
||||
content="Notify.gov lets you send text messages to your users. Try it now if you work in federal, state, or local government.">
|
||||
{% endblock %}
|
||||
|
||||
{% block pageTitle %}
|
||||
Notify.gov
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{% block beforeContent %}{% endblock %}
|
||||
<main id="main-content" role="main">
|
||||
{% block content %}
|
||||
<section class="usa-section--dark usa-hero" aria-label="Introduction">
|
||||
<div class="grid-container padding-y-4">
|
||||
<div class="grid-row grid-gap display-flex flex-align-center">
|
||||
<div class="desktop:grid-col-7 tablet:grid-col-12">
|
||||
<h1 class="font-serif-2xl usa-hero__heading">Reach people where they are with government-powered text messages</h1>
|
||||
<p class="font-sans-lg">Notify.gov is a text message service that helps federal, state, local, tribal and territorial governments more effectively communicate with the people they serve.</p>
|
||||
<div class="usa-button-group margin-bottom-5 flex-align-center">
|
||||
<a class="usa-button usa-button login-button login-button--primary margin-right-2" href="{{ initial_signin_url }}">Sign in with <img src="{{ asset_url('images/logo-login.svg') }}" alt="Login.gov logo">
|
||||
</a>
|
||||
if you are an existing pilot partner
|
||||
</div>
|
||||
<p class="font-sans-md">Currently we are only working with select pilot partners. If you are interested in using Notify.gov in the future, please contact <br><a href="mailto:tts-benefits-studio@gsa.gov">tts-benefits-studio@gsa.gov</a> to learn more.</p>
|
||||
</div>
|
||||
<div class="desktop:grid-col-4 grid-offset-1 desktop:display-block display-none margin-x-5">
|
||||
<img src="{{ asset_url('images/product/phone-text.png') }}"
|
||||
alt="An illustration of notifications to a phone.">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="grid-container usa-section usa-section__home">
|
||||
<div class="grid-row grid-gap">
|
||||
<div class="tablet:grid-col-5 margin-bottom-3 usa-prose">
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3">
|
||||
Control your content
|
||||
</h2>
|
||||
<p>You do not need any technical knowledge to create message templates.</p>
|
||||
</div>
|
||||
<div class="tablet:grid-col-6 tablet:grid-offset-1">
|
||||
<img src="{{ asset_url('images/product/01-templates-no-chrome.svg') }}"
|
||||
alt="Example screenshot of adding a new text message template">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="grid-container usa-section usa-section__home">
|
||||
<div class="grid-row grid-gap">
|
||||
<div class="tablet:grid-col-5 margin-bottom-3 usa-prose">
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3">
|
||||
See how your messages perform
|
||||
</h2>
|
||||
<p>Track how many messages you’ve sent and find out which ones are not being delivered.</p>
|
||||
</div>
|
||||
<div class="tablet:grid-col-6 tablet:grid-offset-1">
|
||||
<img src="{{ asset_url('images/product/02-reporting-no-chrome.svg') }}"
|
||||
alt="A screenshot of Notify.gov showing counts of emails and text messages sent">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="grid-container usa-section usa-section__home">
|
||||
<div class="grid-row grid-gap">
|
||||
<div class="tablet:grid-col-5 margin-bottom-3 usa-prose">
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3">
|
||||
No technical integration needed
|
||||
</h2>
|
||||
<p>Upload a spreadsheet of phone numbers and Notify.gov sends batches of messages for you.</p>
|
||||
</div>
|
||||
<div class="tablet:grid-col-6 tablet:grid-offset-1">
|
||||
<img src="{{ asset_url('images/product/03-spreadsheet-no-chrome.svg') }}"
|
||||
alt="A screenshot of a spreadsheet with phone numbers, names, and a reference number">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- <section class="grid-container usa-section border-top border-base-lighter">
|
||||
<div class="grid-row grid-gap">
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3 bold">
|
||||
Send messages manually or automatically
|
||||
</h2>
|
||||
</div>
|
||||
<div class="grid-row grid-gap">
|
||||
<div class="tablet:grid-col-6 usa-prose">
|
||||
<p>Upload a spreadsheet of phone numbers and Notify sends the messages.</p>
|
||||
<img src="{{ asset_url('images/product/03-spreadsheet-no-chrome.svg') }}"
|
||||
alt="A screenshot of a spreadsheet with columns for email address, name and color">
|
||||
</div>
|
||||
<div class="tablet:grid-col-6 usa-prose">
|
||||
<p>
|
||||
Integrate the Notify.gov API with your web application or
|
||||
back office system.
|
||||
</p>
|
||||
<img src="{{ asset_url('images/product/04-api-no-chrome.svg') }}"
|
||||
alt="A screenshot of some computer code with a notify.send_email function">
|
||||
</div>
|
||||
</div>
|
||||
</section> -->
|
||||
<!-- <section id="whos-using-notify"
|
||||
class="grid-container usa-section border-top border-base-lighter padding-top-4 padding-bottom-5">
|
||||
<div class="grid-row grid-gap flex-column">
|
||||
<h2 class="font-heading-xl display-flex flex-justify-center margin-top-0 margin-bottom-3 bold">
|
||||
Who’s using Notify.gov
|
||||
</h2>
|
||||
<p class="display-flex flex-justify-center font-body-sm margin-bottom-3">
|
||||
See the
|
||||
<a class="usa-link margin-left-05" href="{{ url_for('main.performance') }}">list of services and
|
||||
organizations</a>.
|
||||
{% extends "base.html" %} {% from "components/components/button/macro.njk"
|
||||
import usaButton %} {% block meta %}
|
||||
<meta
|
||||
name="description"
|
||||
content="Notify.gov lets you send text messages to your users. Try it now if you work in federal, state, or local government."
|
||||
/>
|
||||
{% endblock %} {% block pageTitle %} Notify.gov {% endblock %} {% block main %}
|
||||
{% block beforeContent %}{% endblock %}
|
||||
<main id="main-content" role="main">
|
||||
{% block content %}
|
||||
<section class="usa-section--dark usa-hero" aria-label="Introduction">
|
||||
<div class="grid-container padding-y-4">
|
||||
<div class="grid-row grid-gap display-flex flex-align-center">
|
||||
<div class="desktop:grid-col-8 tablet:grid-col-12">
|
||||
<h1 class="font-sans-2xl usa-hero__heading">
|
||||
Reach people where they are with government-powered text messages
|
||||
</h1>
|
||||
<p class="font-sans-lg">
|
||||
Notify.gov is a text messaging service that helps federal, state,
|
||||
local, tribal and territorial governments more effectively
|
||||
communicate with the people they serve.
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid-row">
|
||||
<div class="tablet:grid-col-6 display-flex flex-justify-center flex-align-center flex-column">
|
||||
<span class="usa-sr-only">There are</span>
|
||||
<div class="large-number">{{ counts.organizations|format_thousands }}</div>
|
||||
<p class="font-body-lg margin-bottom-0">Organizations</p>
|
||||
</div>
|
||||
<div class="tablet:grid-col-6 display-flex flex-justify-center flex-align-center flex-column">
|
||||
<span class="usa-sr-only">and</span>
|
||||
<div class="large-number">{{ counts.services|format_thousands }}</div>
|
||||
<p class="font-body-lg margin-bottom-0">Services</p>
|
||||
<span class="usa-sr-only">using Notify.</span>
|
||||
<div class="usa-button-group margin-bottom-5 flex-align-center">
|
||||
<a
|
||||
class="usa-button usa-button login-button login-button--primary margin-right-2"
|
||||
href="{{ initial_signin_url }}"
|
||||
>Sign in with
|
||||
<img
|
||||
src="{{ asset_url('images/logo-login.svg') }}"
|
||||
alt="Login.gov logo"
|
||||
/>
|
||||
</a>
|
||||
if you are an existing partner
|
||||
</div>
|
||||
</div>
|
||||
</section> -->
|
||||
<section class="grid-container usa-section usa-section__home border-top border-base-lighter usa-prose">
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3">
|
||||
About the product
|
||||
</h2>
|
||||
<p class="usa-body">
|
||||
Keeping program participants updated on status changes, due dates, and appointments can be a huge challenge, and many
|
||||
recipients fall through the cracks, ultimately losing their benefits. In the benefits space, data shows that sending
|
||||
text messages helps decrease re-enrollment churn and save money for administering agencies.
|
||||
</p>
|
||||
<p class="usa-body">
|
||||
Notify.gov is an easy text messaging platform that helps government agencies provide program participants with one-way
|
||||
reminders and updates. With minimal set-up and secure, personalized messaging, Notify.gov helps agencies include text
|
||||
messaging as part of their outreach program. Administering agencies can quickly assess the impact of text messaging for
|
||||
their programs, after which they can build a case to expand their texting program if they choose to.
|
||||
</p>
|
||||
<p class="usa-body">
|
||||
Notify.gov is a new shared service currently being piloted by the Public Benefits Studio, within Technology
|
||||
Transformation Services at the General Services Administration.
|
||||
</p>
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3">
|
||||
Who's Eligible?
|
||||
</h2>
|
||||
<p class="usa-body">
|
||||
Eligible partners include federal agencies as well as state, local, territorial, tribal agencies
|
||||
administering federally funded programs. As part of the onboarding process, non-federal
|
||||
programs must specify the federal program that the messages they want to send are related
|
||||
to. TTS will also seek concurrence from the federal funder.
|
||||
</p>
|
||||
<p class="usa-body">
|
||||
We prioritize partnerships focused on use cases related to increasing transparency and
|
||||
reducing the burden of navigating government programs for low income individuals and
|
||||
families.
|
||||
</p>
|
||||
</section>
|
||||
<div
|
||||
class="desktop:grid-col-3 grid-offset-1 desktop:display-block display-none margin-x-5"
|
||||
>
|
||||
<img
|
||||
src="{{ asset_url('images/product/phone-text.png') }}"
|
||||
alt="Illustration of a mobile phone displaying a text message and number on its screen, with a speech bubble coming out from outside the phone, symbolizing communication or notification."
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section
|
||||
class="grid-container usa-section usa-section__home border-top border-base-lighter usa-prose padding-bottom-1"
|
||||
>
|
||||
<h2 class="font-body-xl margin-top-0 margin-bottom-3">
|
||||
Government texting made easy
|
||||
</h2>
|
||||
<p class="usa-body">
|
||||
Notify.gov is a text messaging platform built for government agencies.
|
||||
With minimal set-up and secure, personalized messaging, you can make
|
||||
one-way texting a part of your outreach program.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<!-- <div class="product-page-intro"></div> -->
|
||||
<section class="grid-container usa-section usa-section__home usa-prose padding-bottom-1">
|
||||
<h2 class="font-sans-xl margin-top-0">Key features</h2>
|
||||
<div class="home-cards margin-top-5">
|
||||
<ul class="usa-card-group display-flex margin-bottom-4">
|
||||
<li class="usa-card tablet:grid-col-4 mobile-lg:grid-col-12">
|
||||
<div class="usa-card__container">
|
||||
<img src="{{ asset_url('images/internet.svg') }}" alt="Globe on top of a web browser" />
|
||||
<div class="usa-card__header">
|
||||
<h3 class="font-heading-md">Web-based</h3>
|
||||
</div>
|
||||
<div class="usa-card__body">
|
||||
<p>Nothing to download or install</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="usa-card tablet:grid-col-4 mobile-lg:grid-col-12">
|
||||
<div class="usa-card__container">
|
||||
<img src="{{ asset_url('images/fast.svg') }}" alt="Stopwatch with a notification speech bubble with a star inside" />
|
||||
<div class="usa-card__header">
|
||||
<h3 class="font-heading-md">Fast and easy</h3>
|
||||
</div>
|
||||
<div class="usa-card__body">
|
||||
<p>No technical expertise required</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="usa-card tablet:grid-col-4 mobile-lg:grid-col-12">
|
||||
<div class="usa-card__container">
|
||||
<img src="{{ asset_url('images/status.svg') }}" alt="3 status messages, 2 successes and one failure" />
|
||||
<div class="usa-card__header">
|
||||
<h3 class="font-heading-md">Track message delivery</h3>
|
||||
</div>
|
||||
<div class="usa-card__body">
|
||||
<p>See which messages were received</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="usa-card-group">
|
||||
<li class="usa-card tablet:grid-col-4 mobile-lg:grid-col-12">
|
||||
<div class="usa-card__container">
|
||||
<img
|
||||
src="{{ asset_url('images/translation.svg') }}"
|
||||
alt="Speech bubbles with the letter A and the Chinese character for language"
|
||||
/>
|
||||
<div class="usa-card__header">
|
||||
<h3 class="font-heading-md">Send in recipients' preferred language</h3>
|
||||
</div>
|
||||
<div class="usa-card__body">
|
||||
<p>Notify.gov has support for more than 30 character sets</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="usa-card tablet:grid-col-4 mobile-lg:grid-col-12">
|
||||
<div class="usa-card__container">
|
||||
<img src="{{ asset_url('images/security.svg') }}" alt="Lock with code icon inside on top of a web browser" />
|
||||
<div class="usa-card__header">
|
||||
<h3 class="font-heading-md">Security and privacy</h3>
|
||||
</div>
|
||||
<div class="usa-card__body">
|
||||
<p>
|
||||
Limited data retention, encryption, and multi-factor authentication
|
||||
protect user data and manage risk
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="usa-card tablet:grid-col-4 mobile-lg:grid-col-12">
|
||||
<div class="usa-card__container">
|
||||
<img src="{{ asset_url('images/send.svg') }}" alt="Paper airplane and a notification icon with the number 1 inside" />
|
||||
<div class="usa-card__header">
|
||||
<h3 class="font-heading-md">Send bulk, customized, one-way messages</h3>
|
||||
</div>
|
||||
<div class="usa-card__body">
|
||||
<p>
|
||||
Send hundreds or thousands of individually customized messages with
|
||||
just a few clicks
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- <div class="product-page-intro-wrapper" data-module="homepage">
|
||||
<nav class="breadcrumbs breadcrumbs--inverse" aria-label="Breadcrumbs">
|
||||
|
||||
</nav>
|
||||
<div class="grid-row">
|
||||
<div class="grid-col-8">
|
||||
<h1>
|
||||
Send text messages to your users
|
||||
</h1>
|
||||
<p>
|
||||
Try Notify.gov now if you work in federal, state, or local government.
|
||||
</p>
|
||||
<div class="button-container">
|
||||
{{ usaButton({
|
||||
"element": "a",
|
||||
"text": "Create an account",
|
||||
"classes": "product-page-button button-container__button",
|
||||
"href": url_for('main.register' )
|
||||
}) }}
|
||||
or <a class="usa-link" href="{{ url_for('.sign_in' )}}">sign in</a> if you’ve used
|
||||
it before
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-col-4">
|
||||
<section class="grid-container usa-section usa-section__home usa-prose grid-container padding-bottom-10">
|
||||
<h2 class="font-heading-xl margin-top-0 margin-bottom-3">
|
||||
Who can use Notify.gov?
|
||||
</h2>
|
||||
<p class="usa-body">
|
||||
All <span class="text-bold">federal</span> agencies and programs are
|
||||
eligible to use Notify.gov.
|
||||
</p>
|
||||
<p class="usa-body">
|
||||
US
|
||||
<span class="text-bold">state, local, territorial, or tribal</span>
|
||||
governments that administer or deliver federally-funded programs or
|
||||
services may qualify to use Notify.gov to communicate with applicants and
|
||||
participants in these programs.
|
||||
</p>
|
||||
<div class="grid-container margin-top-4 padding-left-0 padding-right-0">
|
||||
<div class="grid-row grid-gap-3">
|
||||
<a class="text-no-underline tablet:grid-col-4 mobile-lg:grid-col-12" href="mailto:tts-notify@gsa.gov">
|
||||
<div class="contact-us-card">
|
||||
<div class="grid-row flex-align-center grid-gap-2">
|
||||
<div class="grid-col-auto">
|
||||
<img
|
||||
src="{{ asset_url('images/product/proposition-illustration.png') }}"
|
||||
alt="An illustration of notifications to a phone, a laptop, and a letter.">
|
||||
src="{{ asset_url('images/contact.svg') }}"
|
||||
alt=""
|
||||
class="height-7 width-7"
|
||||
/>
|
||||
</div>
|
||||
<div class="grid-col">
|
||||
<p class="margin-0">
|
||||
<strong>Contact us</strong><br />
|
||||
To learn more about becoming a partner!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="product-page-section">
|
||||
<div class="grid-row">
|
||||
<div class="grid-col-6">
|
||||
<h2>
|
||||
Control your content
|
||||
</h2>
|
||||
<p>
|
||||
You do not need any technical knowledge to create message templates.
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid-col-6">
|
||||
<img
|
||||
src="{{ asset_url('images/product/01-templates.svg') }}"
|
||||
alt="Example screenshot of adding a new text message template">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-page-section">
|
||||
<div class="grid-row">
|
||||
<div class="grid-col-6">
|
||||
<h2>
|
||||
See how your messages perform
|
||||
</h2>
|
||||
<p>
|
||||
Track how many messages you’ve sent and
|
||||
find out which ones are not being delivered.
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid-col-6">
|
||||
<img
|
||||
src="{{ asset_url('images/product/02-reporting.svg') }}"
|
||||
alt="A screenshot of Notify.gov showing counts of emails and text messages sent"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-page-section">
|
||||
<h2 class="with-keyline">
|
||||
Send messages manually or automatically
|
||||
</h2>
|
||||
<div class="grid-row">
|
||||
<div class="grid-col-6">
|
||||
<p>
|
||||
Upload a spreadsheet of phone numbers and Notify sends the messages.
|
||||
</p>
|
||||
<img
|
||||
src="{{ asset_url('images/product/03-spreadsheet.svg') }}"
|
||||
alt="A screenshot of a spreadsheet with columns for email address, name and color"
|
||||
>
|
||||
</div>
|
||||
<div class="grid-col-6">
|
||||
<p>
|
||||
Integrate the Notify.gov API with your web application or
|
||||
back office system.
|
||||
</p>
|
||||
<img
|
||||
src="{{ asset_url('images/product/04-api.svg') }}"
|
||||
alt="A screenshot of some computer code with a notify.send_email function"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-page-section">
|
||||
<div class="with-keyline bottom-gutter-2" id="whos-using-notify">
|
||||
<h2>Who’s using Notify.gov</h2>
|
||||
<div class="grid-row bottom-gutter">
|
||||
<div class="grid-col-6">
|
||||
<span class="usa-sr-only">There are</span>
|
||||
<div class="product-page-big-number">{{ counts.organizations|format_thousands }}</div>
|
||||
<span>organizations</span>
|
||||
</div>
|
||||
<div class="grid-col-6">
|
||||
<span class="usa-sr-only">and</span>
|
||||
<div class="product-page-big-number">{{ counts.services|format_thousands }}</div>
|
||||
<span>services</span>
|
||||
<span class="usa-sr-only">using Notify.</span>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
See the
|
||||
<a class="usa-link" href="{{ url_for('main.performance') }}">list of services and organizations</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-page-section">
|
||||
<div class="with-keyline bottom-gutter-2">
|
||||
<h2>Pricing</h2>
|
||||
<div class="grid-row bottom-gutter">
|
||||
<div class="grid-col-6">
|
||||
<h3 class="usa-sr-only">Emails</h3>
|
||||
<div class="product-page-big-number">Unlimited</div>
|
||||
<span>free emails</span>
|
||||
</div>
|
||||
<div class="grid-col-6">
|
||||
<h3 class="usa-sr-only">Text messages</h3>
|
||||
<div class="product-page-big-number">Up to 40,000</div>
|
||||
<span>free text messages a year,<br>
|
||||
then {{ sms_rate }} pence per message</span>
|
||||
</div>
|
||||
<div class="grid-col-6">
|
||||
<p class="align-with-big-number-hint">
|
||||
There’s no monthly charge, no setup fee and no procurement process.
|
||||
</p>
|
||||
<p>Find out more about <a class="usa-link" href="https://www.notifications.service.gov.uk/pricing">pricing</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-page-section">
|
||||
<div class="grid-row margin-bottom-">
|
||||
<div class="grid-col-12">
|
||||
<h2 class="with-keyline">
|
||||
The team
|
||||
</h2>
|
||||
<p>
|
||||
Notify.gov is built and maintained by the Public Benefits Studio, within the General Services Administration's Technology Transformation Services.
|
||||
</p>
|
||||
<p>
|
||||
<a class="usa-link" href="{{ url_for('main.support') }}">Contact us</a> if you have a question or want
|
||||
to give feedback.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
{% endblock %}
|
||||
</main>
|
||||
{% endblock %}
|
||||
</main>
|
||||
{% endblock %}
|
||||
|
||||
@@ -20,21 +20,14 @@ def test_non_logged_in_user_can_see_homepage(
|
||||
"Reach people where they are with government-powered text messages"
|
||||
)
|
||||
|
||||
assert (
|
||||
page.select_one(
|
||||
"a.usa-button.login-button.login-button--primary.margin-right-2"
|
||||
).text
|
||||
== "Sign in with \n"
|
||||
# Assert the entire HTML of the button to include the image
|
||||
button = page.select_one(
|
||||
"a.usa-button.login-button.login-button--primary.margin-right-2"
|
||||
)
|
||||
assert page.select_one("meta[name=description]") is not None
|
||||
# This area is hidden for the pilot
|
||||
# assert normalize_spaces(page.select_one('#whos-using-notify').text) == (
|
||||
# 'Who’s using Notify.gov ' # Hiding this next area for the pilot
|
||||
# # Hiding this next area for the pilot
|
||||
# # 'See the list of services and organizations. '
|
||||
# 'There are 111 Organizations and 9,999 Services using Notify.'
|
||||
# )
|
||||
assert "Sign in with" in button.text.strip() # Assert button text
|
||||
assert button.find("img")["alt"] == "Login.gov logo" # Assert image presence
|
||||
|
||||
assert page.select_one("meta[name=description]") is not None
|
||||
assert page.select_one("#whos-using-notify a") is None
|
||||
|
||||
|
||||
@@ -125,7 +118,7 @@ def test_static_pages(client_request, mock_get_organization_by_domain, view, moc
|
||||
"write_for_action",
|
||||
"multiple_languages",
|
||||
"benchmark_performance",
|
||||
"guidance_index"
|
||||
"guidance_index",
|
||||
]
|
||||
return (
|
||||
not current_app.config["FEATURE_BEST_PRACTICES_ENABLED"]
|
||||
|
||||
@@ -350,9 +350,13 @@ def test_should_show_templates_folder_page(
|
||||
assert normalize_spaces(page.select_one("h1").text) == expected_title_tag
|
||||
|
||||
# remove this line if you don't want the breadcrumb on the first page
|
||||
assert len(page.select("nav#breadcrumb-template-folders a")) == len(expected_parent_link_args)
|
||||
assert len(page.select("nav#breadcrumb-template-folders a")) == len(
|
||||
expected_parent_link_args
|
||||
)
|
||||
|
||||
for index, parent_link in enumerate(page.select("nav#breadcrumb-template-folders a")):
|
||||
for index, parent_link in enumerate(
|
||||
page.select("nav#breadcrumb-template-folders a")
|
||||
):
|
||||
assert parent_link["href"] == url_for(
|
||||
"main.choose_template",
|
||||
service_id=SERVICE_ONE_ID,
|
||||
|
||||
@@ -69,7 +69,9 @@ def test_should_show_empty_page_when_no_templates(
|
||||
service_id=service_one["id"],
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select_one("h1").text) == ("Select or create a template")
|
||||
assert normalize_spaces(page.select_one("h1").text) == (
|
||||
"Select or create a template"
|
||||
)
|
||||
assert normalize_spaces(page.select_one("main p").text) == (expected_message)
|
||||
assert page.select_one("#add_new_folder_form")
|
||||
assert page.select_one("#add_new_template_form")
|
||||
@@ -87,7 +89,9 @@ def test_should_show_add_template_form_if_service_has_folder_permission(
|
||||
service_id=service_one["id"],
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select_one("h1").text) == ("Select or create a template")
|
||||
assert normalize_spaces(page.select_one("h1").text) == (
|
||||
"Select or create a template"
|
||||
)
|
||||
assert normalize_spaces(page.select_one("main p").text) == (
|
||||
"Every message starts with a template. You can change it later. "
|
||||
"You need a template before you can send messages."
|
||||
|
||||
@@ -125,6 +125,7 @@ EXCLUDED_ENDPOINTS = tuple(
|
||||
"integration_testing",
|
||||
"invite_org_user",
|
||||
"invite_user",
|
||||
"join_notify",
|
||||
"link_service_to_organization",
|
||||
"live_services",
|
||||
"live_services_csv",
|
||||
|
||||
@@ -26,149 +26,24 @@ def test_landing_page(end_to_end_context):
|
||||
name="Reach people where they are with government-powered text messages",
|
||||
)
|
||||
sign_in_button = page.get_by_role("link", name="Sign in with")
|
||||
benefits_studio_email = page.get_by_role("link", name="tts-benefits-studio@gsa.gov")
|
||||
|
||||
# Check to make sure the elements are visible.
|
||||
expect(main_header).to_be_visible()
|
||||
expect(sign_in_button).to_be_visible()
|
||||
expect(benefits_studio_email).to_be_visible()
|
||||
|
||||
# Check to make sure the sign-in button and email links are correct.
|
||||
href_value = sign_in_button.get_attribute("href")
|
||||
assert href_value is not None, "The sign-in button does not have an href attribute"
|
||||
expect(benefits_studio_email).to_have_attribute(
|
||||
"href", "mailto:tts-benefits-studio@gsa.gov"
|
||||
)
|
||||
|
||||
# Retrieve all other main content headers and check that they're
|
||||
# visible.
|
||||
content_headers = [
|
||||
"Control your content",
|
||||
"See how your messages perform",
|
||||
"No technical integration needed",
|
||||
"About the product",
|
||||
"Government texting made easy",
|
||||
"Key features",
|
||||
"Who can use Notify.gov",
|
||||
]
|
||||
|
||||
for content_header in content_headers:
|
||||
expect(
|
||||
page.get_by_role("heading", name=re.compile(content_header))
|
||||
).to_be_visible()
|
||||
|
||||
|
||||
# def test_sign_in_and_mfa_pages(end_to_end_context):
|
||||
# # Open a new page and go to the staging site.
|
||||
# page = end_to_end_context.new_page()
|
||||
# page.goto(f"{E2E_TEST_URI}/")
|
||||
# print(f"test_sign_in_and_mfa_pages initial {page}")
|
||||
#
|
||||
# sign_in_button = page.get_by_role("link", name="Sign in")
|
||||
#
|
||||
# # Test trying to sign in.
|
||||
# sign_in_button.click()
|
||||
#
|
||||
# # Check to make sure that we've arrived at the next page.
|
||||
# page.wait_for_load_state("domcontentloaded")
|
||||
#
|
||||
# # Check the page title exists and matches what we expect.
|
||||
# expect(page).to_have_title(re.compile("Sign in"))
|
||||
#
|
||||
# # Check for the sign in heading.
|
||||
# sign_in_heading = page.get_by_role("heading", name="Sign in")
|
||||
# expect(sign_in_heading).to_be_visible()
|
||||
#
|
||||
# # Check for the sign in form elements.
|
||||
# # NOTE: Playwright cannot find input elements by role and recommends using
|
||||
# # get_by_label() instead; however, hidden form elements do not have
|
||||
# # labels associated with them, hence the XPath!
|
||||
# # See https://playwright.dev/python/docs/api/class-page#page-get-by-label
|
||||
# # and https://playwright.dev/python/docs/locators#locate-by-css-or-xpath
|
||||
# # for more information.
|
||||
# email_address_input = page.get_by_label("Email address")
|
||||
# password_input = page.get_by_label("Password")
|
||||
# csrf_token = page.locator('xpath=//input[@name="csrf_token"]')
|
||||
# continue_button = page.get_by_role("button", name=re.compile("Continue"))
|
||||
# forgot_password_link = page.get_by_role("link", name="Forgot your password?")
|
||||
#
|
||||
# # Make sure form elements are visible and not visible as expected.
|
||||
# expect(email_address_input).to_be_visible()
|
||||
# expect(password_input).to_be_visible()
|
||||
# expect(continue_button).to_be_visible()
|
||||
# expect(forgot_password_link).to_be_visible()
|
||||
#
|
||||
# expect(csrf_token).to_be_hidden()
|
||||
#
|
||||
# # Make sure form elements are configured correctly with the right
|
||||
# # attributes.
|
||||
# expect(email_address_input).to_have_attribute("type", "email")
|
||||
# expect(password_input).to_have_attribute("type", "password")
|
||||
# expect(csrf_token).to_have_attribute("type", "hidden")
|
||||
# expect(continue_button).to_have_attribute("type", "submit")
|
||||
# expect(forgot_password_link).to_have_attribute("href", "/forgot-password")
|
||||
#
|
||||
# # Sign in to the site.
|
||||
# email_address_input.fill(os.getenv("NOTIFY_E2E_TEST_EMAIL"))
|
||||
# password_input.fill(os.getenv("NOTIFY_E2E_TEST_PASSWORD"))
|
||||
# print(f"email and password {os.getenv('NOTIFY_E2E_TEST_EMAIL')} {os.getenv('NOTIFY_E2E_TEST_PASSWORD')}")
|
||||
# continue_button.click()
|
||||
#
|
||||
# # Wait for the next page to fully load.
|
||||
# page.wait_for_load_state("domcontentloaded")
|
||||
#
|
||||
# # Check the page title exists and matches what we expect.
|
||||
# print(f"test_sign_in_and_mfa_pages finally is {page}")
|
||||
# expect(page).to_have_title(re.compile("Check your phone"))
|
||||
#
|
||||
# # Check for the sign in heading.
|
||||
# sign_in_heading = page.get_by_role("heading", name="Check your phone")
|
||||
# expect(sign_in_heading).to_be_visible()
|
||||
#
|
||||
# # Check for the sign in form elements.
|
||||
# # NOTE: Playwright cannot find input elements by role and recommends using
|
||||
# # get_by_label() instead; however, hidden form elements do not have
|
||||
# # labels associated with them, hence the XPath!
|
||||
# # See https://playwright.dev/python/docs/api/class-page#page-get-by-label
|
||||
# # and https://playwright.dev/python/docs/locators#locate-by-css-or-xpath
|
||||
# # for more information.
|
||||
# mfa_input = page.get_by_label("Text message code")
|
||||
# csrf_token = page.locator('xpath=//input[@name="csrf_token"]')
|
||||
# continue_button = page.get_by_role("button", name=re.compile("Continue"))
|
||||
# not_received_message_link = page.get_by_role(
|
||||
# "link", name="Not received a text message?"
|
||||
# )
|
||||
#
|
||||
# # Make sure form elements are visible and not visible as expected.
|
||||
# expect(mfa_input).to_be_visible()
|
||||
# expect(continue_button).to_be_visible()
|
||||
# expect(not_received_message_link).to_be_visible()
|
||||
#
|
||||
# expect(csrf_token).to_be_hidden()
|
||||
#
|
||||
# # Make sure form elements are configured correctly with the right
|
||||
# # attributes.
|
||||
# expect(mfa_input).to_have_attribute("type", "tel")
|
||||
# expect(mfa_input).to_have_attribute("pattern", "[0-9]*")
|
||||
# expect(csrf_token).to_have_attribute("type", "hidden")
|
||||
# expect(continue_button).to_have_attribute("type", "submit")
|
||||
# expect(not_received_message_link).to_have_attribute("href", "/text-not-received")
|
||||
#
|
||||
# # Enter MFA code and continue.
|
||||
# # TODO: Revisit this at a later point in time.
|
||||
# # totp = pyotp.TOTP(
|
||||
# # os.getenv('MFA_TOTP_SECRET'),
|
||||
# # digits=int(os.getenv('MFA_TOTP_LENGTH'))
|
||||
# # )
|
||||
#
|
||||
# # mfa_input.fill('totp.now()')
|
||||
# # continue_button.click()
|
||||
#
|
||||
# # # Check to make sure that we've arrived at the next page.
|
||||
# # page.wait_for_load_state('domcontentloaded')
|
||||
#
|
||||
# # # Check that no MFA code error happened.
|
||||
# # code_not_found_error = page.get_by_text('Code not found')
|
||||
# # expect(code_not_found_error).to_have_count(0)
|
||||
#
|
||||
# # # Check the page title exists and matches what we expect.
|
||||
# # # This could be either the Dashboard of a service if there is only
|
||||
# # # one, or choosing a service if there are multiple.
|
||||
# # expect(page).to_have_title(re.compile('Dashboard|Choose service'))
|
||||
|
||||