Make branding configurable (#173)
* Remove orphan function * Add centralized branding helpers and update locales * Remove _plus and add (proper) brand * No longer Sure, configurable * Consistency with compose file naming * Missed `product_name` mapping * Fix brand/product name in mailers * Product name in email reset flow * Fix i18n errors/tests * Fix password mailer brand/product name (again) * Missed hardcoded `Sure` in onboarding goals Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Juan José Mata <jjmata@jjmata.com> * PR nitpick on documentation * Missing interpolation key for invited UI * Orphan assets * New logos --------- Signed-off-by: Juan José Mata <jjmata@jjmata.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@@ -62,6 +62,10 @@ POSTGRES_USER=postgres
|
||||
# This is the domain that your Sure instance will be hosted at. It is used to generate links in emails and other places.
|
||||
APP_DOMAIN=
|
||||
|
||||
# Product/Brand Name
|
||||
PRODUCT_NAME=
|
||||
BRAND_NAME=
|
||||
|
||||
# Disable enforcing SSL connections
|
||||
# DISABLE_SSL=true
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 895 B |
@@ -1,35 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
width="36" height="36" viewBox="0 0 512 512" fill="none">
|
||||
|
||||
<!-- single gold-to-amber gradient shared by every pill -->
|
||||
<defs>
|
||||
<linearGradient id="s-grad" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#FFBC47"/>
|
||||
<stop offset="100%" stop-color="#C97700"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- the “S” from the 512-grid artwork, scaled & shifted so its
|
||||
visible pixels sit inside the old-M bounding box (131-381 × 57-455) -->
|
||||
<g transform="translate(131 131) scale(0.48828125)">
|
||||
<rect x="80" y="0" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||
<rect x="236" y="0" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||
|
||||
<rect x="0" y="74" width="140" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
<rect x="252" y="74" width="140" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
|
||||
<rect x="0" y="149" width="140" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
|
||||
<rect x="80" y="224" width="144" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
<rect x="240" y="224" width="192" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
|
||||
<rect x="376" y="299" width="136" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
|
||||
<rect x="120" y="374" width="136" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
<rect x="376" y="374" width="136" height="64" rx="32" fill="url(#s-grad)"/>
|
||||
|
||||
<rect x="136" y="449" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||
<rect x="292" y="449" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||
</g>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 160 145" fill="none">
|
||||
<path d="M116.51 119.37C120.062 119.37 122.809 118.751 124.752 117.513C126.696 116.274 127.701 114.58 127.768 112.429L158.828 122.303C157.621 126.409 155.042 130.156 151.088 133.545C147.201 136.869 142.276 139.509 136.312 141.464C130.348 143.419 123.68 144.397 116.309 144.397C110.01 144.397 104.113 143.712 98.6179 142.344C93.19 140.975 88.3986 138.922 84.2439 136.185C80.1562 133.382 76.9397 129.896 74.5943 125.725C72.2489 121.553 71.0762 116.698 71.0762 111.158C71.0762 105.618 72.2489 100.763 74.5943 96.5919C76.9397 92.4208 80.1562 88.9666 84.2439 86.2293C88.3986 83.4268 93.2234 81.3412 98.7184 79.9726C104.213 78.6039 110.077 77.9196 116.309 77.9196C122.675 77.9196 128.505 78.6039 133.799 79.9726C139.16 81.3412 143.75 83.4594 147.57 86.327C151.456 89.1295 154.438 92.714 156.516 97.0807C158.66 101.382 159.732 106.498 159.732 112.429H104.95C104.95 112.429 104.917 112.429 104.85 112.429C104.85 112.429 104.85 112.462 104.85 112.527C104.85 113.504 105.118 114.417 105.654 115.264C106.19 116.111 106.927 116.861 107.865 117.513C108.871 118.099 110.077 118.555 111.484 118.881C112.958 119.207 114.634 119.37 116.51 119.37ZM116.309 102.653C113.025 102.653 110.311 103.24 108.167 104.413C106.023 105.521 104.95 107.117 104.95 109.203C104.95 109.268 104.95 109.333 104.95 109.399C105.017 109.399 105.051 109.399 105.051 109.399H127.466C127.533 109.399 127.567 109.399 127.567 109.399C127.567 109.333 127.567 109.268 127.567 109.203C127.567 108.16 127.265 107.248 126.662 106.466C126.126 105.618 125.355 104.934 124.35 104.413C123.345 103.826 122.139 103.403 120.732 103.142C119.391 102.816 117.917 102.653 116.309 102.653Z" fill="#62a446"/>
|
||||
<path d="M37.5666 81.9011C37.5666 85.8115 37.5666 89.7546 37.5666 93.7301C37.5666 97.6406 37.5666 101.584 37.5666 105.559C37.5666 109.47 37.5666 113.413 37.5666 117.388C37.5666 121.559 37.5666 125.73 37.5666 129.902C37.5666 134.073 37.5666 138.276 37.5666 142.513H2.74774C2.74774 136.06 2.74774 129.608 2.74774 123.156C2.74774 116.704 2.74774 110.252 2.74774 103.799C2.74774 100.15 2.74774 96.5 2.74774 92.8503C2.74774 89.2006 2.74774 85.5508 2.74774 81.9011H37.5666ZM37.466 119.246L42.9001 92.9481C43.5039 90.1456 44.678 87.8319 46.4222 86.0071C48.2336 84.117 50.3469 82.6832 52.7621 81.7056C55.1773 80.728 57.6596 80.1414 60.2089 79.9459C62.7583 79.6852 65.1063 79.783 67.2532 80.2392C69.4 80.6302 71.1108 81.3146 72.3854 82.2922L64.7374 118.659C62.7918 117.095 60.4102 116.02 57.5925 115.433C54.8418 114.846 52.0577 114.651 49.24 114.846C46.4223 114.977 43.94 115.433 41.7932 116.215C39.6463 116.997 38.2039 118.007 37.466 119.246Z" fill="#61a446"/>
|
||||
<path d="M155.301 0.291725C155.301 4.65836 155.301 20.0576 155.301 24.4894C155.301 28.9212 155.301 33.353 155.301 37.7848C155.301 41.5649 155.301 45.3776 155.301 49.2228C155.301 53.0029 155.301 56.783 155.301 60.563C155.301 64.3431 155.301 68.1232 155.301 71.9033H121.476C121.476 69.166 121.476 66.3961 121.476 63.5936C121.476 60.7912 121.476 57.9887 121.476 55.1862C121.476 52.3186 121.476 49.5487 121.476 46.8766C121.476 40.8154 121.476 34.8846 121.476 29.0841C121.476 23.2185 121.476 6.28771 121.476 0.291725H155.301ZM111.113 5.29173C111.113 8.74593 111.113 18.2327 111.113 21.7521C111.113 25.2063 111.113 28.6605 111.113 32.1147C111.113 35.5689 111.113 39.0557 111.113 42.5751C111.113 44.0089 111.341 45.182 111.798 46.0945C112.319 46.9417 112.971 47.5609 113.753 47.9519C114.6 48.2778 115.48 48.4407 116.392 48.4407C117.305 48.4407 118.217 48.2778 119.13 47.9519C120.107 47.6261 120.889 47.235 121.476 46.7788L113.655 70.9257C111.83 71.8381 109.582 72.5876 106.909 73.1742C104.303 73.7607 101.565 74.054 98.6976 74.054C96.0906 74.054 93.5163 73.7281 90.9745 73.0764C88.4327 72.4898 86.1191 71.4796 84.0335 70.0458C82.0131 68.612 80.3838 66.722 79.1455 64.3757C77.9072 62.0295 77.288 59.0966 77.288 55.5773C77.288 50.8848 77.288 46.1922 77.288 41.4997C77.288 36.8072 77.288 32.1147 77.288 27.4222C77.288 24.7501 77.288 22.078 77.288 19.4058C77.288 16.6686 77.288 7.96384 77.288 5.29173H111.113Z" fill="black"/>
|
||||
<path d="M0.698853 30.6484C0.698853 26.9335 1.74163 23.7074 3.82719 20.9701C5.97792 18.2328 8.87815 15.9517 12.5279 14.1269C16.1776 12.2368 20.3161 10.8356 24.9435 9.92315C29.5708 9.01072 34.3937 8.5545 39.412 8.5545C45.6035 8.5545 51.3388 9.10848 56.6179 10.2164C61.9621 11.3244 66.785 12.7908 71.0864 14.6157V37.2961C69.2616 35.9275 66.8502 34.7543 63.8522 33.7767C60.9194 32.7991 57.791 32.0496 54.4672 31.5282C51.2085 31.0068 48.1127 30.7461 45.1799 30.7461C43.2247 30.7461 41.4324 30.8765 39.8031 31.1372C38.2389 31.3327 36.968 31.6586 35.9904 32.1148C35.078 32.571 34.6218 33.1576 34.6218 33.8745C34.6218 34.2655 34.7521 34.5588 35.0128 34.7543C35.3387 34.9499 35.7949 35.0802 36.3815 35.1454C36.968 35.2105 37.7175 35.2431 38.63 35.2431C40.1289 35.2431 41.465 35.2431 42.6381 35.2431C43.8113 35.2431 45.1147 35.2431 46.5486 35.2431C49.8072 35.2431 53.0659 35.4712 56.3246 35.9275C59.6485 36.3185 62.6465 37.1332 65.3186 38.3715C68.0559 39.6098 70.2392 41.402 71.8685 43.7483C73.4979 46.0294 74.3125 49.06 74.3125 52.84C74.3125 56.8156 73.2046 60.2047 70.9887 63.0071C68.838 65.7444 65.8726 67.9929 62.0925 69.7526C58.3776 71.4471 54.1739 72.6854 49.4814 73.4675C44.854 74.2496 40.0312 74.6406 35.0128 74.6406C29.082 74.6406 23.2164 74.0867 17.4159 72.9787C11.6806 71.8708 6.76001 70.2414 2.65406 68.0907V44.2371C4.28341 45.9968 6.59707 47.4632 9.59506 48.6363C12.6582 49.7443 15.9495 50.5915 19.4689 51.1781C23.0534 51.6995 26.4099 51.9602 29.5382 51.9602C31.5586 51.9602 33.3835 51.8624 35.0128 51.6669C36.6421 51.4062 37.913 51.0478 38.8255 50.5915C39.8031 50.0701 40.2919 49.4184 40.2919 48.6363C40.2919 48.3105 40.1941 48.0823 39.9986 47.952C39.8031 47.8217 39.4772 47.7239 39.021 47.6587C38.63 47.5936 38.076 47.561 37.3591 47.561C36.3815 47.561 35.3713 47.561 34.3285 47.561C33.2857 47.561 32.3407 47.561 31.4934 47.561C29.2123 47.561 26.6706 47.4958 23.8681 47.3654C21.1308 47.1699 18.3935 46.8115 15.6562 46.2901C12.9189 45.7035 10.4097 44.8237 8.12865 43.6505C5.91275 42.4122 4.12047 40.7503 2.75182 38.6648C1.38318 36.514 0.698853 33.8419 0.698853 30.6484Z" fill="black"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 6.1 KiB |
@@ -1,36 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
width="233" height="233"
|
||||
viewBox="0 0 512 512"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<!-- single-tone fill that matches the old “M” -->
|
||||
<style>.pill{fill:#0E1017;}</style>
|
||||
|
||||
<!-- full “S” artwork: no extra translate, no non-uniform scaling -->
|
||||
<!-- Row 0 -->
|
||||
<rect class="pill" x="80" y="0" width="140" height="63" rx="31.5"/>
|
||||
<rect class="pill" x="236" y="0" width="140" height="63" rx="31.5"/>
|
||||
|
||||
<!-- Row 1 -->
|
||||
<rect class="pill" x="0" y="74" width="140" height="64" rx="32"/>
|
||||
<rect class="pill" x="252" y="74" width="140" height="64" rx="32"/>
|
||||
|
||||
<!-- Row 2 -->
|
||||
<rect class="pill" x="0" y="149" width="140" height="64" rx="32"/>
|
||||
|
||||
<!-- Row 3 -->
|
||||
<rect class="pill" x="80" y="224" width="144" height="64" rx="32"/>
|
||||
<rect class="pill" x="240" y="224" width="192" height="64" rx="32"/>
|
||||
|
||||
<!-- Row 4 -->
|
||||
<rect class="pill" x="376" y="299" width="136" height="64" rx="32"/>
|
||||
|
||||
<!-- Row 5 -->
|
||||
<rect class="pill" x="120" y="374" width="136" height="64" rx="32"/>
|
||||
<rect class="pill" x="376" y="374" width="136" height="64" rx="32"/>
|
||||
|
||||
<!-- Row 6 -->
|
||||
<rect class="pill" x="136" y="449" width="140" height="63" rx="31.5"/>
|
||||
<rect class="pill" x="292" y="449" width="140" height="63" rx="31.5"/>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300" viewBox="0 0 160 145" fill="none">
|
||||
<path d="M116.51 119.37C120.062 119.37 122.809 118.751 124.752 117.513C126.696 116.274 127.701 114.58 127.768 112.429L158.828 122.303C157.621 126.409 155.042 130.156 151.088 133.545C147.201 136.869 142.276 139.509 136.312 141.464C130.348 143.419 123.68 144.397 116.309 144.397C110.01 144.397 104.113 143.712 98.6179 142.344C93.19 140.975 88.3986 138.922 84.2439 136.185C80.1562 133.382 76.9397 129.896 74.5943 125.725C72.2489 121.553 71.0762 116.698 71.0762 111.158C71.0762 105.618 72.2489 100.763 74.5943 96.5919C76.9397 92.4208 80.1562 88.9666 84.2439 86.2293C88.3986 83.4268 93.2234 81.3412 98.7184 79.9726C104.213 78.6039 110.077 77.9196 116.309 77.9196C122.675 77.9196 128.505 78.6039 133.799 79.9726C139.16 81.3412 143.75 83.4594 147.57 86.327C151.456 89.1295 154.438 92.714 156.516 97.0807C158.66 101.382 159.732 106.498 159.732 112.429H104.95C104.95 112.429 104.917 112.429 104.85 112.429C104.85 112.429 104.85 112.462 104.85 112.527C104.85 113.504 105.118 114.417 105.654 115.264C106.19 116.111 106.927 116.861 107.865 117.513C108.871 118.099 110.077 118.555 111.484 118.881C112.958 119.207 114.634 119.37 116.51 119.37ZM116.309 102.653C113.025 102.653 110.311 103.24 108.167 104.413C106.023 105.521 104.95 107.117 104.95 109.203C104.95 109.268 104.95 109.333 104.95 109.399C105.017 109.399 105.051 109.399 105.051 109.399H127.466C127.533 109.399 127.567 109.399 127.567 109.399C127.567 109.333 127.567 109.268 127.567 109.203C127.567 108.16 127.265 107.248 126.662 106.466C126.126 105.618 125.355 104.934 124.35 104.413C123.345 103.826 122.139 103.403 120.732 103.142C119.391 102.816 117.917 102.653 116.309 102.653Z" fill="#62a446"/>
|
||||
<path d="M37.5666 81.9011C37.5666 85.8115 37.5666 89.7546 37.5666 93.7301C37.5666 97.6406 37.5666 101.584 37.5666 105.559C37.5666 109.47 37.5666 113.413 37.5666 117.388C37.5666 121.559 37.5666 125.73 37.5666 129.902C37.5666 134.073 37.5666 138.276 37.5666 142.513H2.74774C2.74774 136.06 2.74774 129.608 2.74774 123.156C2.74774 116.704 2.74774 110.252 2.74774 103.799C2.74774 100.15 2.74774 96.5 2.74774 92.8503C2.74774 89.2006 2.74774 85.5508 2.74774 81.9011H37.5666ZM37.466 119.246L42.9001 92.9481C43.5039 90.1456 44.678 87.8319 46.4222 86.0071C48.2336 84.117 50.3469 82.6832 52.7621 81.7056C55.1773 80.728 57.6596 80.1414 60.2089 79.9459C62.7583 79.6852 65.1063 79.783 67.2532 80.2392C69.4 80.6302 71.1108 81.3146 72.3854 82.2922L64.7374 118.659C62.7918 117.095 60.4102 116.02 57.5925 115.433C54.8418 114.846 52.0577 114.651 49.24 114.846C46.4223 114.977 43.94 115.433 41.7932 116.215C39.6463 116.997 38.2039 118.007 37.466 119.246Z" fill="#61a446"/>
|
||||
<path d="M155.301 0.291725C155.301 4.65836 155.301 20.0576 155.301 24.4894C155.301 28.9212 155.301 33.353 155.301 37.7848C155.301 41.5649 155.301 45.3776 155.301 49.2228C155.301 53.0029 155.301 56.783 155.301 60.563C155.301 64.3431 155.301 68.1232 155.301 71.9033H121.476C121.476 69.166 121.476 66.3961 121.476 63.5936C121.476 60.7912 121.476 57.9887 121.476 55.1862C121.476 52.3186 121.476 49.5487 121.476 46.8766C121.476 40.8154 121.476 34.8846 121.476 29.0841C121.476 23.2185 121.476 6.28771 121.476 0.291725H155.301ZM111.113 5.29173C111.113 8.74593 111.113 18.2327 111.113 21.7521C111.113 25.2063 111.113 28.6605 111.113 32.1147C111.113 35.5689 111.113 39.0557 111.113 42.5751C111.113 44.0089 111.341 45.182 111.798 46.0945C112.319 46.9417 112.971 47.5609 113.753 47.9519C114.6 48.2778 115.48 48.4407 116.392 48.4407C117.305 48.4407 118.217 48.2778 119.13 47.9519C120.107 47.6261 120.889 47.235 121.476 46.7788L113.655 70.9257C111.83 71.8381 109.582 72.5876 106.909 73.1742C104.303 73.7607 101.565 74.054 98.6976 74.054C96.0906 74.054 93.5163 73.7281 90.9745 73.0764C88.4327 72.4898 86.1191 71.4796 84.0335 70.0458C82.0131 68.612 80.3838 66.722 79.1455 64.3757C77.9072 62.0295 77.288 59.0966 77.288 55.5773C77.288 50.8848 77.288 46.1922 77.288 41.4997C77.288 36.8072 77.288 32.1147 77.288 27.4222C77.288 24.7501 77.288 22.078 77.288 19.4058C77.288 16.6686 77.288 7.96384 77.288 5.29173H111.113Z" fill="black"/>
|
||||
<path d="M0.698853 30.6484C0.698853 26.9335 1.74163 23.7074 3.82719 20.9701C5.97792 18.2328 8.87815 15.9517 12.5279 14.1269C16.1776 12.2368 20.3161 10.8356 24.9435 9.92315C29.5708 9.01072 34.3937 8.5545 39.412 8.5545C45.6035 8.5545 51.3388 9.10848 56.6179 10.2164C61.9621 11.3244 66.785 12.7908 71.0864 14.6157V37.2961C69.2616 35.9275 66.8502 34.7543 63.8522 33.7767C60.9194 32.7991 57.791 32.0496 54.4672 31.5282C51.2085 31.0068 48.1127 30.7461 45.1799 30.7461C43.2247 30.7461 41.4324 30.8765 39.8031 31.1372C38.2389 31.3327 36.968 31.6586 35.9904 32.1148C35.078 32.571 34.6218 33.1576 34.6218 33.8745C34.6218 34.2655 34.7521 34.5588 35.0128 34.7543C35.3387 34.9499 35.7949 35.0802 36.3815 35.1454C36.968 35.2105 37.7175 35.2431 38.63 35.2431C40.1289 35.2431 41.465 35.2431 42.6381 35.2431C43.8113 35.2431 45.1147 35.2431 46.5486 35.2431C49.8072 35.2431 53.0659 35.4712 56.3246 35.9275C59.6485 36.3185 62.6465 37.1332 65.3186 38.3715C68.0559 39.6098 70.2392 41.402 71.8685 43.7483C73.4979 46.0294 74.3125 49.06 74.3125 52.84C74.3125 56.8156 73.2046 60.2047 70.9887 63.0071C68.838 65.7444 65.8726 67.9929 62.0925 69.7526C58.3776 71.4471 54.1739 72.6854 49.4814 73.4675C44.854 74.2496 40.0312 74.6406 35.0128 74.6406C29.082 74.6406 23.2164 74.0867 17.4159 72.9787C11.6806 71.8708 6.76001 70.2414 2.65406 68.0907V44.2371C4.28341 45.9968 6.59707 47.4632 9.59506 48.6363C12.6582 49.7443 15.9495 50.5915 19.4689 51.1781C23.0534 51.6995 26.4099 51.9602 29.5382 51.9602C31.5586 51.9602 33.3835 51.8624 35.0128 51.6669C36.6421 51.4062 37.913 51.0478 38.8255 50.5915C39.8031 50.0701 40.2919 49.4184 40.2919 48.6363C40.2919 48.3105 40.1941 48.0823 39.9986 47.952C39.8031 47.8217 39.4772 47.7239 39.021 47.6587C38.63 47.5936 38.076 47.561 37.3591 47.561C36.3815 47.561 35.3713 47.561 34.3285 47.561C33.2857 47.561 32.3407 47.561 31.4934 47.561C29.2123 47.561 26.6706 47.4958 23.8681 47.3654C21.1308 47.1699 18.3935 46.8115 15.6562 46.2901C12.9189 45.7035 10.4097 44.8237 8.12865 43.6505C5.91275 42.4122 4.12047 40.7503 2.75182 38.6648C1.38318 36.514 0.698853 33.8419 0.698853 30.6484Z" fill="black"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 6.1 KiB |
@@ -1,6 +1,14 @@
|
||||
module ApplicationHelper
|
||||
include Pagy::Frontend
|
||||
|
||||
def product_name
|
||||
Rails.configuration.x.product_name
|
||||
end
|
||||
|
||||
def brand_name
|
||||
Rails.configuration.x.brand_name
|
||||
end
|
||||
|
||||
def styled_form_with(**options, &block)
|
||||
options[:builder] = StyledFormBuilder
|
||||
form_with(**options, &block)
|
||||
|
||||
@@ -1,4 +1,25 @@
|
||||
class ApplicationMailer < ActionMailer::Base
|
||||
default from: email_address_with_name(ENV.fetch("EMAIL_SENDER", "sender@sure.local"), "Sure Finance")
|
||||
default from: email_address_with_name(
|
||||
ENV.fetch("EMAIL_SENDER", "sender@sure.local"),
|
||||
"#{Rails.configuration.x.brand_name} #{Rails.configuration.x.product_name}"
|
||||
)
|
||||
layout "mailer"
|
||||
|
||||
before_action :assign_branding
|
||||
|
||||
helper_method :product_name, :brand_name
|
||||
|
||||
private
|
||||
def assign_branding
|
||||
@product_name = product_name
|
||||
@brand_name = brand_name
|
||||
end
|
||||
|
||||
def product_name
|
||||
Rails.configuration.x.product_name
|
||||
end
|
||||
|
||||
def brand_name
|
||||
Rails.configuration.x.brand_name
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ class EmailConfirmationMailer < ApplicationMailer
|
||||
#
|
||||
def confirmation_email
|
||||
@user = params[:user]
|
||||
@subject = t(".subject")
|
||||
@subject = t(".subject", product_name: product_name)
|
||||
@cta = t(".cta")
|
||||
@confirmation_url = new_email_confirmation_url(token: @user.generate_token_for(:email_confirmation))
|
||||
|
||||
|
||||
@@ -5,7 +5,11 @@ class InvitationMailer < ApplicationMailer
|
||||
|
||||
mail(
|
||||
to: @invitation.email,
|
||||
subject: t(".subject", inviter: @invitation.inviter.display_name)
|
||||
subject: t(
|
||||
".subject",
|
||||
inviter: @invitation.inviter.display_name,
|
||||
product: product_name
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class PasswordMailer < ApplicationMailer
|
||||
def password_reset
|
||||
@user = params[:user]
|
||||
@subject = t(".subject")
|
||||
@subject = t(".subject", product_name: product_name)
|
||||
@cta = t(".cta")
|
||||
|
||||
mail to: @user.email, subject: @subject
|
||||
|
||||
@@ -146,10 +146,6 @@ class Demo::Generator
|
||||
raise ActiveRecord::RecordNotFound, "No admin user with email #{email} found in family ##{family.id}"
|
||||
end
|
||||
|
||||
def partner_email_for(email)
|
||||
"partner_#{email}"
|
||||
end
|
||||
|
||||
def create_family_and_users!(family_name, email, onboarded:, subscribed:)
|
||||
family = Family.create!(
|
||||
name: family_name,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Provider::Simplefin
|
||||
include HTTParty
|
||||
|
||||
headers "User-Agent" => "Sure Finance SimpleFin Client"
|
||||
headers "User-Agent" => "#{Rails.configuration.x.product_name} Finance SimpleFin Client"
|
||||
default_options.merge!(verify: true, ssl_verify_mode: :peer)
|
||||
|
||||
def initialize
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<%= icon("chevron-down", color: "warning", class: "group-open:transform group-open:rotate-180") %>
|
||||
</summary>
|
||||
<div class="text-xs py-2 space-y-2">
|
||||
<p>Sure uses third party providers to fetch historical exchange rates, security prices, and more. This data is required to calculate accurate historical account balances.</p>
|
||||
<p><%= product_name %> uses third party providers to fetch historical exchange rates, security prices, and more. This data is required to calculate accurate historical account balances.</p>
|
||||
|
||||
<p>
|
||||
<%= link_to "Configure your providers here.", settings_hosting_path, class: "text-yellow-600 underline" %>
|
||||
|
||||
@@ -71,6 +71,6 @@
|
||||
</div>
|
||||
|
||||
<p class="text-xs text-tertiary text-center">
|
||||
By authorizing, you allow this app to access your Sure data according to the permissions above.
|
||||
By authorizing, you allow this app to access your <%= product_name %> data according to the permissions above.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<div class="bg-container-inset rounded-xl p-1 space-y-1 w-[650px] min-w-0 mx-auto">
|
||||
<div class="grid grid-cols-3 gap-2 text-xs font-medium text-secondary uppercase px-5 py-3">
|
||||
<p><%= t(".csv_mapping_label", mapping: mapping_label(mapping_class)) %></p>
|
||||
<p><%= t(".maybe_mapping_label", mapping: mapping_label(mapping_class)) %></p>
|
||||
<p><%= t(".sure_mapping_label", mapping: mapping_label(mapping_class), product_name: product_name) %></p>
|
||||
<p class="justify-self-end"><%= t(".rows_label") %></p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<h1><%= t(".greeting") %></h1>
|
||||
<h1><%= t(".greeting", product: product_name) %></h1>
|
||||
|
||||
<p>
|
||||
<%= t(".body",
|
||||
<%= t(
|
||||
".body",
|
||||
inviter: @invitation.inviter.display_name,
|
||||
family: @invitation.family.name).html_safe %>
|
||||
family: @invitation.family.name,
|
||||
product: product_name
|
||||
).html_safe %>
|
||||
</p>
|
||||
|
||||
<%= link_to t(".accept_button"), @accept_url, class: "button" %>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<%= render DS::Dialog.new do |dialog| %>
|
||||
<% dialog.with_header(title: t(".title"), subtitle: t(".subtitle")) %>
|
||||
<% dialog.with_header(title: t(".title"), subtitle: t(".subtitle", product: product_name)) %>
|
||||
|
||||
<% dialog.with_body do %>
|
||||
<%= styled_form_with model: @invitation, class: "space-y-4", data: { turbo: false } do |form| %>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<% end %>
|
||||
<% if controller_name == "sessions" %>
|
||||
<p class="text-sm text-center hidden md:block">
|
||||
<%= tag.span t(".no_account"), class: "text-secondary" %> <%= link_to t(".sign_up"), new_registration_path, class: "font-medium text-primary hover:underline transition" %>
|
||||
<%= tag.span t(".no_account", product: product_name), class: "text-secondary" %> <%= link_to t(".sign_up"), new_registration_path, class: "font-medium text-primary hover:underline transition" %>
|
||||
</p>
|
||||
<% elsif controller_name == "registrations" %>
|
||||
<p class="text-sm text-center text-gray-600 hidden md:block">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<footer class="p-6">
|
||||
<div class="space-y-2 text-center text-xs text-secondary">
|
||||
<p>© <%= Date.current.year %>, Sure (community fork of Maybe Finance)</p>
|
||||
<p>© <%= Date.current.year %>, <%= brand_name %> <%= product_name %> (community fork of Maybe Finance)</p>
|
||||
<div class="flex justify-center items-center gap-2">
|
||||
<%= link_to "Privacy Policy", privacy_path, class: "text-secondary", target: "_blank" %>
|
||||
<span>•</span>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<head>
|
||||
<title><%= content_for(:title) || "Sure" %></title>
|
||||
<title><%= content_for(:title) || product_name %></title>
|
||||
|
||||
<%= csrf_meta_tags %>
|
||||
<%= csp_meta_tag %>
|
||||
@@ -18,7 +18,7 @@
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="apple-mobile-web-app-title" content="Sure">
|
||||
<meta name="apple-mobile-web-app-title" content="<%= product_name %>">
|
||||
|
||||
<meta name="msapplication-TileColor" content="#F9F9F9">
|
||||
<meta name="theme-color" content="#F9F9F9">
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
<div class="grow max-w-lg w-full mx-auto bg-surface flex flex-col justify-center md:py-0 py-6 px-4 md:px-0">
|
||||
<div>
|
||||
<div class="space-y-1 mb-6 text-center">
|
||||
<h1 class="text-2xl font-medium md:text-2xl">What brings you to Sure?</h1>
|
||||
<p class="text-secondary text-sm">Select one or more goals that you have with using Sure as your personal finance tool.</p>
|
||||
<h1 class="text-2xl font-medium md:text-2xl">What brings you here?</h1>
|
||||
<p class="text-secondary text-sm">Select one or more goals that you have with using <%= product_name %> as your personal finance tool.</p>
|
||||
</div>
|
||||
|
||||
<%= form_with model: @user do |form| %>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<%= link_to "https://discord.gg/36ZGBsxYEK", target: "_blank", rel: "noopener noreferrer", class: "w-full md:w-1/3 flex flex-col items-center p-4 border border-alpha-black-25 rounded-xl hover:bg-container-hover" do %>
|
||||
<%= image_tag "discord-icon.svg", class: "w-8 h-8 mb-2" %>
|
||||
<span class="text-sm font-medium text-primary text-center">Discuss Sure with others</span>
|
||||
<span class="text-sm font-medium text-primary text-center">Discuss <%= product_name %> with others</span>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<p><%= t(".request_made") %></p>
|
||||
<p><%= t(".request_made", product_name: product_name) %></p>
|
||||
|
||||
<p><%= link_to t(".cta"), edit_password_reset_url(token: params[:token]) %></p>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Sure",
|
||||
"short_name": "Sure",
|
||||
"name": "<%= j product_name %>",
|
||||
"short_name": "<%= j product_name %>",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/logo-pwa.png",
|
||||
@@ -18,7 +18,7 @@
|
||||
"display": "standalone",
|
||||
"display_override": ["fullscreen", "minimal-ui"],
|
||||
"scope": "/",
|
||||
"description": "Sure is your personal finance assistant.",
|
||||
"description": "<%= j product_name %> is your personal finance assistant.",
|
||||
"theme_color": "#F9F9F9",
|
||||
"background_color": "#F9F9F9"
|
||||
}
|
||||
|
||||
@@ -21,14 +21,14 @@
|
||||
</p>
|
||||
<% elsif @family.trialing? %>
|
||||
<p class="text-primary">
|
||||
You are currently trialing Sure
|
||||
You are currently trialing <%= product_name %>
|
||||
<span class="text-secondary">
|
||||
(<%= @family.days_left_in_trial %> days remaining)
|
||||
</span>
|
||||
</p>
|
||||
<% else %>
|
||||
<p class="text-primary">You are currently <span class="font-medium">not subscribed</span></p>
|
||||
<p class="text-secondary">Once you subscribe to Sure+, you'll see your billing settings here.</p>
|
||||
<p class="text-secondary">Once you subscribe to <%= product_name %>, you'll see your billing settings here.</p>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="space-y-1">
|
||||
<p class="text-sm"><%= t(".title") %></p>
|
||||
<p class="text-secondary text-sm"><%= t(".description") %></p>
|
||||
<p class="text-secondary text-sm"><%= t(".description", product: product_name) %></p>
|
||||
</div>
|
||||
|
||||
<%= styled_form_with model: Setting.new,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<%= content_for :page_title, t(".page_title") %>
|
||||
|
||||
<%= settings_section title: t(".profile_title"), subtitle: t(".profile_subtitle") do %>
|
||||
<%= settings_section title: t(".profile_title"), subtitle: t(".profile_subtitle", product: product_name) do %>
|
||||
<%= styled_form_with model: @user, url: user_path(@user), class: "space-y-4" do |form| %>
|
||||
<%= render "settings/user_avatar_field", form: form, user: @user %>
|
||||
|
||||
|
||||
4
config/initializers/brand.rb
Normal file
@@ -0,0 +1,4 @@
|
||||
Rails.application.configure do
|
||||
config.x.product_name = ENV.fetch("PRODUCT_NAME", "Sure")
|
||||
config.x.brand_name = ENV.fetch("BRAND_NAME", "FOSS")
|
||||
end
|
||||
@@ -1,5 +1,8 @@
|
||||
---
|
||||
en:
|
||||
defaults:
|
||||
brand_name: "%{brand_name}"
|
||||
product_name: "%{product_name}"
|
||||
activerecord:
|
||||
errors:
|
||||
messages:
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
---
|
||||
nb:
|
||||
defaults:
|
||||
brand_name: "%{brand_name}"
|
||||
product_name: "%{product_name}"
|
||||
activerecord:
|
||||
errors:
|
||||
messages:
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
---
|
||||
tr:
|
||||
defaults:
|
||||
brand_name: "%{brand_name}"
|
||||
product_name: "%{product_name}"
|
||||
activerecord:
|
||||
errors:
|
||||
messages:
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
en:
|
||||
invitation_mailer:
|
||||
invite_email:
|
||||
subject: "%{inviter} has invited you to join their household on Sure!"
|
||||
subject: "%{inviter} has invited you to join their household on %{product_name}!"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
nb:
|
||||
invitation_mailer:
|
||||
invite_email:
|
||||
subject: "%{inviter} har invitert deg til å bli med i husholdningen deres på Sure!"
|
||||
subject: "%{inviter} har invitert deg til å bli med i husholdningen deres på %{product_name}!"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
tr:
|
||||
invitation_mailer:
|
||||
invite_email:
|
||||
subject: "%{inviter} seni Sure'de kendi ailesine katılmaya davet etti!"
|
||||
subject: "%{inviter} seni %{product_name}'de kendi ailesine katılmaya davet etti!"
|
||||
|
||||
@@ -7,4 +7,4 @@ en:
|
||||
cta: Confirm email change
|
||||
expiry_notice: This link will expire in %{hours} hours.
|
||||
greeting: Hello!
|
||||
subject: 'Maybe: Confirm your email change'
|
||||
subject: '%{product_name}: Confirm your email change'
|
||||
|
||||
@@ -7,4 +7,4 @@ nb:
|
||||
cta: Bekreft endring av e-post
|
||||
expiry_notice: Denne lenken vil utløpe om %{hours} timer.
|
||||
greeting: Hei!
|
||||
subject: 'Sure: Bekreft endring av e-posten din'
|
||||
subject: '%{product_name}: Bekreft endring av e-posten din'
|
||||
@@ -6,4 +6,4 @@ tr:
|
||||
cta: E-posta değişikliğini onayla
|
||||
expiry_notice: Bu bağlantı %{hours} saat içinde geçerliliğini yitirecek.
|
||||
greeting: Merhaba!
|
||||
subject: 'Sure: E-posta değişikliğinizi onaylayın'
|
||||
subject: '%{product_name}: E-posta değişikliğinizi onaylayın'
|
||||
|
||||
@@ -23,7 +23,7 @@ en:
|
||||
mappings:
|
||||
create_account: Create account
|
||||
csv_mapping_label: "%{mapping} in CSV"
|
||||
maybe_mapping_label: "%{mapping} in Maybe"
|
||||
sure_mapping_label: "%{mapping} in %{product_name}"
|
||||
no_accounts: You don't have any accounts yet. Please create an account that
|
||||
we can use for (unassigned) rows in your CSV or go back to the Clean step
|
||||
and provide an account name we can use.
|
||||
|
||||
@@ -23,7 +23,7 @@ nb:
|
||||
mappings:
|
||||
create_account: Opprett konto
|
||||
csv_mapping_label: "%{mapping} i CSV"
|
||||
maybe_mapping_label: "%{mapping} i Sure"
|
||||
sure_mapping_label: "%{mapping} i %{product_name}"
|
||||
no_accounts: Du har ingen kontoer ennå. Vennligst opprett en konto som
|
||||
vi kan bruke for (utilordnede) rader i CSV-filen din eller gå tilbake til Rengjør-trinnet
|
||||
og oppgi et kontonavn vi kan bruke.
|
||||
|
||||
@@ -21,18 +21,18 @@ tr:
|
||||
mappings:
|
||||
create_account: Hesap oluştur
|
||||
csv_mapping_label: CSV'de %{mapping}
|
||||
maybe_mapping_label: Sure'de %{mapping}
|
||||
sure_mapping_label: "%{product_name}'de %{mapping}"
|
||||
no_accounts: Henüz hiç hesabınız yok. Lütfen CSV'nizdeki (atanmamış) satırlar için kullanabileceğimiz bir hesap oluşturun veya Temizle adımına geri dönüp kullanabileceğimiz bir hesap adı girin.
|
||||
rows_label: Satırlar
|
||||
unassigned_account: Atanmamış satırlar için yeni bir hesap oluşturmak ister misiniz?
|
||||
show:
|
||||
account_mapping_description: İçe aktardığınız dosyadaki tüm hesapları Sure'deki mevcut hesaplara eşleyin. Ayrıca yeni hesaplar ekleyebilir veya kategorize etmeden bırakabilirsiniz.
|
||||
account_mapping_description: "İçe aktardığınız dosyadaki tüm hesapları %{product_name}'deki mevcut hesaplara eşleyin. Ayrıca yeni hesaplar ekleyebilir veya kategorize etmeden bırakabilirsiniz."
|
||||
account_mapping_title: Hesaplarınızı eşleyin
|
||||
account_type_mapping_description: İçe aktardığınız dosyadaki tüm hesap türlerini Sure'deki hesap türlerine eşleyin.
|
||||
account_type_mapping_description: "İçe aktardığınız dosyadaki tüm hesap türlerini %{product_name}'deki hesap türlerine eşleyin."
|
||||
account_type_mapping_title: Hesap türlerinizi eşleyin
|
||||
category_mapping_description: İçe aktardığınız dosyadaki tüm kategorileri Sure'deki mevcut kategorilere eşleyin. Ayrıca yeni kategoriler ekleyebilir veya kategorize etmeden bırakabilirsiniz.
|
||||
category_mapping_description: "İçe aktardığınız dosyadaki tüm kategorileri %{product_name}'deki mevcut kategorilere eşleyin. Ayrıca yeni kategoriler ekleyebilir veya kategorize etmeden bırakabilirsiniz."
|
||||
category_mapping_title: Kategorilerinizi eşleyin
|
||||
tag_mapping_description: İçe aktardığınız dosyadaki tüm etiketleri Sure'deki mevcut etiketlere eşleyin. Ayrıca yeni etiketler ekleyebilir veya kategorize etmeden bırakabilirsiniz.
|
||||
tag_mapping_description: "İçe aktardığınız dosyadaki tüm etiketleri %{product_name}'deki mevcut etiketlere eşleyin. Ayrıca yeni etiketler ekleyebilir veya kategorize etmeden bırakabilirsiniz."
|
||||
tag_mapping_title: Etiketlerinizi eşleyin
|
||||
uploads:
|
||||
show:
|
||||
|
||||
@@ -3,6 +3,6 @@ en:
|
||||
invitation_mailer:
|
||||
invite_email:
|
||||
accept_button: Accept Invitation
|
||||
body: "%{inviter} has invited you to join the %{family} family on Sure!"
|
||||
body: "%{inviter} has invited you to join the %{family} family on %{product_name}!"
|
||||
expiry_notice: This invitation will expire in %{days} days
|
||||
greeting: Welcome to Sure!
|
||||
greeting: Welcome to %{product_name}!
|
||||
|
||||
@@ -3,6 +3,6 @@ nb:
|
||||
invitation_mailer:
|
||||
invite_email:
|
||||
accept_button: Godta invitasjon
|
||||
body: "%{inviter} har invitert deg til å bli med i %{family}-familien på Sure!"
|
||||
body: "%{inviter} har invitert deg til å bli med i %{family}-familien på %{product_name}!"
|
||||
expiry_notice: Denne invitasjonen vil utløpe om %{days} dager
|
||||
greeting: Velkommen til Sure!
|
||||
greeting: Velkommen til %{product_name}!
|
||||
@@ -15,5 +15,5 @@ nb:
|
||||
role_label: Rolle
|
||||
role_member: Medlem
|
||||
submit: Send invitasjon
|
||||
subtitle: Send en invitasjon for å bli med i din familiekonto på Sure
|
||||
subtitle: Send en invitasjon for å bli med i din familiekonto på %{product_name}
|
||||
title: Inviter noen
|
||||
@@ -3,7 +3,7 @@ en:
|
||||
layouts:
|
||||
auth:
|
||||
existing_account: Already have an account?
|
||||
no_account: New to Sure?
|
||||
no_account: New to %{product_name}?
|
||||
sign_in: Sign in
|
||||
sign_up: Create account
|
||||
your_account: Your account
|
||||
|
||||
@@ -3,7 +3,7 @@ nb:
|
||||
layouts:
|
||||
auth:
|
||||
existing_account: Har du allerede en konto?
|
||||
no_account: Ny hos Sure?
|
||||
no_account: Ny hos %{product_name}?
|
||||
sign_in: Logg inn
|
||||
sign_up: Opprett konto
|
||||
your_account: Din konto
|
||||
|
||||
@@ -25,4 +25,4 @@ en:
|
||||
message: We’re really excited you’re here. In the next step we’ll ask you a
|
||||
few questions to complete your profile and then get you all set up.
|
||||
setup: Set up account
|
||||
title: Meet Sure
|
||||
title: Meet %{product_name}
|
||||
|
||||
@@ -25,4 +25,4 @@ nb:
|
||||
message: Vi er veldig glade for at du er her. I neste trinn vil vi stille deg noen
|
||||
spørsmål for å fullføre profilen din og deretter få deg i gang.
|
||||
setup: Sett opp konto
|
||||
title: Møt Sure
|
||||
title: Møt %{product_name}
|
||||
@@ -5,6 +5,6 @@ en:
|
||||
cta: Reset your password
|
||||
ignore_if_not_requested: If you didn't make this request, you can ignore this
|
||||
email.
|
||||
request_made: A request was made to reset your Maybe password. Click the link
|
||||
request_made: A request was made to reset your %{product_name} password. Click the link
|
||||
to reset it.
|
||||
subject: 'Maybe: Reset your password'
|
||||
subject: '%{product_name}: Reset your password'
|
||||
|
||||
@@ -5,6 +5,6 @@ nb:
|
||||
cta: Tilbakestill passordet ditt
|
||||
ignore_if_not_requested: Hvis du ikke gjorde denne forespørselen, kan du ignorere denne
|
||||
e-posten.
|
||||
request_made: En forespørsel ble gjort for å tilbakestille ditt Sure-passord. Klikk på lenken
|
||||
request_made: En forespørsel ble gjort for å tilbakestille %{product_name}-passordet ditt. Klikk på lenken
|
||||
for å tilbakestille det.
|
||||
subject: 'Sure: Tilbakestill passordet ditt'
|
||||
subject: '%{product_name}: Tilbakestill passordet ditt'
|
||||
|
||||
@@ -4,5 +4,5 @@ tr:
|
||||
password_reset:
|
||||
cta: Şifrenizi sıfırlayın
|
||||
ignore_if_not_requested: Eğer bu isteği siz yapmadıysanız, bu e-postayı yok sayabilirsiniz.
|
||||
request_made: Maybe şifrenizi sıfırlamak için bir istek yapıldı. Sıfırlamak için bağlantıya tıklayın.
|
||||
subject: 'Maybe: Şifrenizi sıfırlayın'
|
||||
request_made: "%{product_name} şifrenizi sıfırlamak için bir istek yapıldı. Sıfırlamak için bağlantıya tıklayın."
|
||||
subject: '%{product_name}: Şifrenizi sıfırlayın'
|
||||
@@ -21,5 +21,5 @@ nb:
|
||||
title: Opprett kontoen din
|
||||
welcome_body: For å komme i gang må du registrere deg for en ny konto. Du vil
|
||||
da kunne konfigurere flere innstillinger i appen.
|
||||
welcome_title: Velkommen til Self Hosted Sure!
|
||||
welcome_title: Velkommen til Self Hosted %{product_name}!
|
||||
password_placeholder: Angi passordet ditt
|
||||
@@ -15,7 +15,7 @@ nb:
|
||||
title: "Administrasjon av API-nøkkel"
|
||||
no_api_key:
|
||||
title: "Opprett din API-nøkkel"
|
||||
description: "Få programmatisk tilgang til dine Sure-data med en sikker API-nøkkel."
|
||||
description: "Få programmatisk tilgang til dine %{product_name}-data med en sikker API-nøkkel."
|
||||
what_you_can_do: "Hva du kan gjøre med API-et:"
|
||||
feature_1: "Få tilgang til konto dataene dine programmatisk"
|
||||
feature_2: "Bygg tilpassede integrasjoner og applikasjoner"
|
||||
|
||||
@@ -80,7 +80,7 @@ en:
|
||||
last_name: Last Name
|
||||
page_title: Profile Info
|
||||
pending: Pending
|
||||
profile_subtitle: Customize how you appear on Sure
|
||||
profile_subtitle: Customize how you appear on %{product}
|
||||
profile_title: Personal
|
||||
remove_invitation: Remove Invitation
|
||||
remove_member: Remove Member
|
||||
|
||||
@@ -3,7 +3,7 @@ en:
|
||||
settings:
|
||||
hostings:
|
||||
invite_code_settings:
|
||||
description: Every new user that joins your instance of Maybe can only do
|
||||
description: Every new user that joins your instance of %{product} can only do
|
||||
so via an invite code
|
||||
email_confirmation_description: When enabled, users must confirm their email
|
||||
address when changing it.
|
||||
|
||||
@@ -3,7 +3,7 @@ nb:
|
||||
settings:
|
||||
hostings:
|
||||
invite_code_settings:
|
||||
description: Hver ny bruker som blir med i din instans av Sure kan bare bli med via en invitasjonskode
|
||||
description: Hver ny bruker som blir med i din instans av %{product_name} kan bare bli med via en invitasjonskode
|
||||
email_confirmation_description: Når aktivert, må brukere bekrefte e-postadressen
|
||||
sin når de endrer den.
|
||||
email_confirmation_title: Krev e-postbekreftelse
|
||||
|
||||
@@ -64,7 +64,7 @@ nb:
|
||||
last_name: Etternavn
|
||||
page_title: Konto
|
||||
pending: Venter
|
||||
profile_subtitle: Tilpass hvordan du vises på Sure
|
||||
profile_subtitle: Tilpass hvordan du vises på %{product_name}
|
||||
profile_title: Profil
|
||||
remove_invitation: Fjern invitasjon
|
||||
remove_member: Fjern medlem
|
||||
|
||||
@@ -62,7 +62,7 @@ tr:
|
||||
last_name: Soyad
|
||||
page_title: Hesap
|
||||
pending: Beklemede
|
||||
profile_subtitle: Maybe'de nasıl göründüğünüzü özelleştirin
|
||||
profile_subtitle: "%{product_name}'de nasıl göründüğünüzü özelleştirin"
|
||||
profile_title: Profil
|
||||
remove_invitation: Daveti Kaldır
|
||||
remove_member: Üyeyi Kaldır
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
en:
|
||||
subscriptions:
|
||||
self_hosted_alert: "Sure+ is not available in self-hosted mode."
|
||||
self_hosted_alert: "%{product_name} is not available in self-hosted mode."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---
|
||||
nb:
|
||||
subscriptions:
|
||||
self_hosted_alert: "Sure+ er ikke tilgjengelig i selvhostet modus."
|
||||
self_hosted_alert: "%{product_name} er ikke tilgjengelig i selvhostet modus."
|
||||
@@ -1,4 +1,4 @@
|
||||
---
|
||||
tr:
|
||||
subscriptions:
|
||||
self_hosted_alert: "Sure+ kendi sunucunda barındırılan modda kullanılamaz."
|
||||
self_hosted_alert: "%{product_name} kendi sunucunda barındırılan modda kullanılamaz."
|
||||
@@ -189,5 +189,5 @@ By running the commands below, you will delete your existing Sure database and "
|
||||
docker compose down
|
||||
docker volume rm sure_postgres-data # this is the name of the volume the DB is mounted to
|
||||
docker compose up
|
||||
docker exec -it sure-db-1 psql -U sure_user -d sure_production -c "SELECT 1;" # This will verify that the issue is fixed
|
||||
docker compose exec db psql -U sure_user -d sure_development -c "SELECT 1;" # This will verify that the issue is fixed
|
||||
```
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 267 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 474 B |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 220 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.5 KiB |
@@ -1,14 +1,6 @@
|
||||
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="240" y="224.782" width="192" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="80" y="224.782" width="144" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="376" y="299.71" width="136" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="376" y="374.633" width="136" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="80" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="236" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="252" y="74.9292" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect x="432" y="512" width="140" height="62.439" rx="31.2195" transform="rotate(180 432 512)" fill="black"/>
|
||||
<rect x="276" y="512" width="140" height="62.439" rx="31.2195" transform="rotate(180 276 512)" fill="black"/>
|
||||
<rect x="256" y="437.076" width="136" height="62.439" rx="31.2195" transform="rotate(180 256 437.076)" fill="black"/>
|
||||
<rect y="74.9292" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||
<rect y="149.857" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 160 145" fill="none">
|
||||
<path d="M116.51 119.37C120.062 119.37 122.809 118.751 124.752 117.513C126.696 116.274 127.701 114.58 127.768 112.429L158.828 122.303C157.621 126.409 155.042 130.156 151.088 133.545C147.201 136.869 142.276 139.509 136.312 141.464C130.348 143.419 123.68 144.397 116.309 144.397C110.01 144.397 104.113 143.712 98.6179 142.344C93.19 140.975 88.3986 138.922 84.2439 136.185C80.1562 133.382 76.9397 129.896 74.5943 125.725C72.2489 121.553 71.0762 116.698 71.0762 111.158C71.0762 105.618 72.2489 100.763 74.5943 96.5919C76.9397 92.4208 80.1562 88.9666 84.2439 86.2293C88.3986 83.4268 93.2234 81.3412 98.7184 79.9726C104.213 78.6039 110.077 77.9196 116.309 77.9196C122.675 77.9196 128.505 78.6039 133.799 79.9726C139.16 81.3412 143.75 83.4594 147.57 86.327C151.456 89.1295 154.438 92.714 156.516 97.0807C158.66 101.382 159.732 106.498 159.732 112.429H104.95C104.95 112.429 104.917 112.429 104.85 112.429C104.85 112.429 104.85 112.462 104.85 112.527C104.85 113.504 105.118 114.417 105.654 115.264C106.19 116.111 106.927 116.861 107.865 117.513C108.871 118.099 110.077 118.555 111.484 118.881C112.958 119.207 114.634 119.37 116.51 119.37ZM116.309 102.653C113.025 102.653 110.311 103.24 108.167 104.413C106.023 105.521 104.95 107.117 104.95 109.203C104.95 109.268 104.95 109.333 104.95 109.399C105.017 109.399 105.051 109.399 105.051 109.399H127.466C127.533 109.399 127.567 109.399 127.567 109.399C127.567 109.333 127.567 109.268 127.567 109.203C127.567 108.16 127.265 107.248 126.662 106.466C126.126 105.618 125.355 104.934 124.35 104.413C123.345 103.826 122.139 103.403 120.732 103.142C119.391 102.816 117.917 102.653 116.309 102.653Z" fill="#62a446"/>
|
||||
<path d="M37.5666 81.9011C37.5666 85.8115 37.5666 89.7546 37.5666 93.7301C37.5666 97.6406 37.5666 101.584 37.5666 105.559C37.5666 109.47 37.5666 113.413 37.5666 117.388C37.5666 121.559 37.5666 125.73 37.5666 129.902C37.5666 134.073 37.5666 138.276 37.5666 142.513H2.74774C2.74774 136.06 2.74774 129.608 2.74774 123.156C2.74774 116.704 2.74774 110.252 2.74774 103.799C2.74774 100.15 2.74774 96.5 2.74774 92.8503C2.74774 89.2006 2.74774 85.5508 2.74774 81.9011H37.5666ZM37.466 119.246L42.9001 92.9481C43.5039 90.1456 44.678 87.8319 46.4222 86.0071C48.2336 84.117 50.3469 82.6832 52.7621 81.7056C55.1773 80.728 57.6596 80.1414 60.2089 79.9459C62.7583 79.6852 65.1063 79.783 67.2532 80.2392C69.4 80.6302 71.1108 81.3146 72.3854 82.2922L64.7374 118.659C62.7918 117.095 60.4102 116.02 57.5925 115.433C54.8418 114.846 52.0577 114.651 49.24 114.846C46.4223 114.977 43.94 115.433 41.7932 116.215C39.6463 116.997 38.2039 118.007 37.466 119.246Z" fill="#61a446"/>
|
||||
<path d="M155.301 0.291725C155.301 4.65836 155.301 20.0576 155.301 24.4894C155.301 28.9212 155.301 33.353 155.301 37.7848C155.301 41.5649 155.301 45.3776 155.301 49.2228C155.301 53.0029 155.301 56.783 155.301 60.563C155.301 64.3431 155.301 68.1232 155.301 71.9033H121.476C121.476 69.166 121.476 66.3961 121.476 63.5936C121.476 60.7912 121.476 57.9887 121.476 55.1862C121.476 52.3186 121.476 49.5487 121.476 46.8766C121.476 40.8154 121.476 34.8846 121.476 29.0841C121.476 23.2185 121.476 6.28771 121.476 0.291725H155.301ZM111.113 5.29173C111.113 8.74593 111.113 18.2327 111.113 21.7521C111.113 25.2063 111.113 28.6605 111.113 32.1147C111.113 35.5689 111.113 39.0557 111.113 42.5751C111.113 44.0089 111.341 45.182 111.798 46.0945C112.319 46.9417 112.971 47.5609 113.753 47.9519C114.6 48.2778 115.48 48.4407 116.392 48.4407C117.305 48.4407 118.217 48.2778 119.13 47.9519C120.107 47.6261 120.889 47.235 121.476 46.7788L113.655 70.9257C111.83 71.8381 109.582 72.5876 106.909 73.1742C104.303 73.7607 101.565 74.054 98.6976 74.054C96.0906 74.054 93.5163 73.7281 90.9745 73.0764C88.4327 72.4898 86.1191 71.4796 84.0335 70.0458C82.0131 68.612 80.3838 66.722 79.1455 64.3757C77.9072 62.0295 77.288 59.0966 77.288 55.5773C77.288 50.8848 77.288 46.1922 77.288 41.4997C77.288 36.8072 77.288 32.1147 77.288 27.4222C77.288 24.7501 77.288 22.078 77.288 19.4058C77.288 16.6686 77.288 7.96384 77.288 5.29173H111.113Z" fill="black"/>
|
||||
<path d="M0.698853 30.6484C0.698853 26.9335 1.74163 23.7074 3.82719 20.9701C5.97792 18.2328 8.87815 15.9517 12.5279 14.1269C16.1776 12.2368 20.3161 10.8356 24.9435 9.92315C29.5708 9.01072 34.3937 8.5545 39.412 8.5545C45.6035 8.5545 51.3388 9.10848 56.6179 10.2164C61.9621 11.3244 66.785 12.7908 71.0864 14.6157V37.2961C69.2616 35.9275 66.8502 34.7543 63.8522 33.7767C60.9194 32.7991 57.791 32.0496 54.4672 31.5282C51.2085 31.0068 48.1127 30.7461 45.1799 30.7461C43.2247 30.7461 41.4324 30.8765 39.8031 31.1372C38.2389 31.3327 36.968 31.6586 35.9904 32.1148C35.078 32.571 34.6218 33.1576 34.6218 33.8745C34.6218 34.2655 34.7521 34.5588 35.0128 34.7543C35.3387 34.9499 35.7949 35.0802 36.3815 35.1454C36.968 35.2105 37.7175 35.2431 38.63 35.2431C40.1289 35.2431 41.465 35.2431 42.6381 35.2431C43.8113 35.2431 45.1147 35.2431 46.5486 35.2431C49.8072 35.2431 53.0659 35.4712 56.3246 35.9275C59.6485 36.3185 62.6465 37.1332 65.3186 38.3715C68.0559 39.6098 70.2392 41.402 71.8685 43.7483C73.4979 46.0294 74.3125 49.06 74.3125 52.84C74.3125 56.8156 73.2046 60.2047 70.9887 63.0071C68.838 65.7444 65.8726 67.9929 62.0925 69.7526C58.3776 71.4471 54.1739 72.6854 49.4814 73.4675C44.854 74.2496 40.0312 74.6406 35.0128 74.6406C29.082 74.6406 23.2164 74.0867 17.4159 72.9787C11.6806 71.8708 6.76001 70.2414 2.65406 68.0907V44.2371C4.28341 45.9968 6.59707 47.4632 9.59506 48.6363C12.6582 49.7443 15.9495 50.5915 19.4689 51.1781C23.0534 51.6995 26.4099 51.9602 29.5382 51.9602C31.5586 51.9602 33.3835 51.8624 35.0128 51.6669C36.6421 51.4062 37.913 51.0478 38.8255 50.5915C39.8031 50.0701 40.2919 49.4184 40.2919 48.6363C40.2919 48.3105 40.1941 48.0823 39.9986 47.952C39.8031 47.8217 39.4772 47.7239 39.021 47.6587C38.63 47.5936 38.076 47.561 37.3591 47.561C36.3815 47.561 35.3713 47.561 34.3285 47.561C33.2857 47.561 32.3407 47.561 31.4934 47.561C29.2123 47.561 26.6706 47.4958 23.8681 47.3654C21.1308 47.1699 18.3935 46.8115 15.6562 46.2901C12.9189 45.7035 10.4097 44.8237 8.12865 43.6505C5.91275 42.4122 4.12047 40.7503 2.75182 38.6648C1.38318 36.514 0.698853 33.8419 0.698853 30.6484Z" fill="black"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 6.1 KiB |
@@ -82,7 +82,7 @@ class OnboardingsControllerTest < ActionDispatch::IntegrationTest
|
||||
test "should get goals" do
|
||||
get goals_onboarding_url
|
||||
assert_response :success
|
||||
assert_select "h1", text: /What brings you to Sure/i
|
||||
assert_select "h1", text: /What brings you here/i
|
||||
end
|
||||
|
||||
test "should get trial" do
|
||||
|
||||
@@ -6,7 +6,7 @@ class EmailConfirmationMailerTest < ActionMailer::TestCase
|
||||
user.unconfirmed_email = "new@example.com"
|
||||
|
||||
mail = EmailConfirmationMailer.with(user: user).confirmation_email
|
||||
assert_equal I18n.t("email_confirmation_mailer.confirmation_email.subject"), mail.subject
|
||||
assert_equal I18n.t("email_confirmation_mailer.confirmation_email.subject", product_name: Rails.configuration.x.product_name), mail.subject
|
||||
assert_equal [ user.unconfirmed_email ], mail.to
|
||||
assert_equal [ "hello@example.com" ], mail.from
|
||||
assert_match "confirm", mail.body.encoded
|
||||
|
||||
@@ -38,7 +38,7 @@ class OnboardingsTest < ApplicationSystemTestCase
|
||||
|
||||
# Should redirect to goals page
|
||||
assert_current_path goals_onboarding_path
|
||||
assert_text "What brings you to Sure?"
|
||||
assert_text "What brings you here?"
|
||||
end
|
||||
|
||||
test "preferences page renders chart without errors" do
|
||||
@@ -137,7 +137,7 @@ class OnboardingsTest < ApplicationSystemTestCase
|
||||
|
||||
visit goals_onboarding_path
|
||||
|
||||
assert_text "What brings you to Sure?"
|
||||
assert_text "What brings you here?"
|
||||
assert_button "Next"
|
||||
end
|
||||
|
||||
|
||||