a lightweight, interval-based utility to combat digital strain through "Ma" (intentional pauses) for the eyes and body.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(ui): profile tab refinements

+ font application across ui

+135 -62
assets/fonts/Nunito-Bold.ttf

This is a binary file and will not be displayed.

assets/fonts/Nunito-Medium.ttf

This is a binary file and will not be displayed.

assets/fonts/Nunito-Regular.ttf

This is a binary file and will not be displayed.

assets/fonts/Nunito-SemiBold.ttf

This is a binary file and will not be displayed.

assets/fonts/ShipporiMincho-Bold.ttf

This is a binary file and will not be displayed.

assets/fonts/ShipporiMincho-Medium.ttf

This is a binary file and will not be displayed.

assets/fonts/ShipporiMincho-Regular.ttf

This is a binary file and will not be displayed.

assets/fonts/ShipporiMincho-SemiBold.ttf

This is a binary file and will not be displayed.

+9
ui/overlay.slint
··· 1 1 import { Button, ProgressIndicator, LineEdit } from "std-widgets.slint"; 2 + import "../assets/fonts/Nunito-Regular.ttf"; 3 + import "../assets/fonts/Nunito-Medium.ttf"; 4 + import "../assets/fonts/Nunito-SemiBold.ttf"; 5 + import "../assets/fonts/Nunito-Bold.ttf"; 6 + import "../assets/fonts/ShipporiMincho-Regular.ttf"; 7 + import "../assets/fonts/ShipporiMincho-Bold.ttf"; 2 8 3 9 export component OverlayWindow inherits Window { 4 10 title: "ioma — break time"; ··· 22 28 if unlock-input-visible { pw-field.focus(); } 23 29 } 24 30 31 + default-font-family: "Nunito"; 25 32 background: is-dark ? #1a1a2e : #f5f5f0; 26 33 27 34 VerticalLayout { ··· 31 38 32 39 Text { 33 40 text: break-label; 41 + font-family: "Shippori Mincho"; 34 42 font-size: 28px; 35 43 font-weight: 400; 36 44 color: is-dark ? #a0c4ff : #333333; ··· 39 47 40 48 Text { 41 49 text: countdown-text; 50 + font-family: "Shippori Mincho"; 42 51 font-size: 96px; 43 52 font-weight: 700; 44 53 color: is-dark ? #ffffff : #1a1a2e;
+5
ui/password.slint
··· 1 1 import { Button, LineEdit } from "std-widgets.slint"; 2 + import "../assets/fonts/Nunito-Regular.ttf"; 3 + import "../assets/fonts/Nunito-Medium.ttf"; 4 + import "../assets/fonts/Nunito-SemiBold.ttf"; 5 + import "../assets/fonts/Nunito-Bold.ttf"; 2 6 3 7 export component PasswordSetupWindow inherits Window { 4 8 title: "ioma — Set Emergency Password"; 5 9 width: 420px; 6 10 height: 260px; 11 + default-font-family: "Nunito"; 7 12 8 13 in-out property <string> error-text: ""; 9 14
+121 -62
ui/settings.slint
··· 1 1 import { SpinBox, Slider, LineEdit } from "std-widgets.slint"; 2 + import "../assets/fonts/Nunito-Regular.ttf"; 3 + import "../assets/fonts/Nunito-Medium.ttf"; 4 + import "../assets/fonts/Nunito-SemiBold.ttf"; 5 + import "../assets/fonts/Nunito-Bold.ttf"; 6 + import "../assets/fonts/ShipporiMincho-Regular.ttf"; 7 + import "../assets/fonts/ShipporiMincho-Bold.ttf"; 2 8 3 9 // ── Design tokens ──────────────────────────────────────────────────────────── 4 10 // bg: #F3EFE7 warm cream ··· 247 253 LineEdit { 248 254 width: 120px; 249 255 height: 28px; 256 + placeholder-text: "label"; 250 257 text: root.label; 251 258 edited(v) => { 252 259 root.label-changed(v); ··· 329 336 width: 760px; 330 337 height: 540px; 331 338 background: #F3EFE7; 339 + default-font-family: "Nunito"; 332 340 333 341 // ── Properties (same contract as before) ───────────────────────────────── 334 342 in-out property <bool> enforced-mode: false; ··· 375 383 376 384 Text { 377 385 text: "ioma"; 386 + font-family: "Shippori Mincho"; 378 387 font-size: 22px; 379 388 color: #232028; 380 389 vertical-alignment: center; ··· 382 391 383 392 Text { 384 393 text: "間"; 394 + font-family: "Shippori Mincho"; 385 395 font-size: 11px; 386 396 color: #23202888; 387 397 vertical-alignment: bottom; ··· 879 889 Text { 880 890 text: "+ Add interval"; 881 891 font-size: 12px; 882 - color: #23202880; 892 + color: add-ta.has-hover ? #232028 : #23202880; 883 893 horizontal-alignment: center; 884 894 vertical-alignment: center; 885 895 animate color { duration: 120ms; } ··· 901 911 } 902 912 903 913 // Long rest section 904 - Text { 905 - text: "Long rest"; 906 - font-size: 13px; 907 - font-weight: 500; 908 - color: #232028; 914 + HorizontalLayout { 915 + spacing: 24px; 916 + 917 + VerticalLayout { 918 + alignment: center; 919 + spacing: 3px; 920 + 921 + Text { 922 + text: "Long rest"; 923 + font-size: 13px; 924 + font-weight: 500; 925 + color: #232028; 926 + } 927 + 928 + Text { 929 + text: "A longer pause after several cycles."; 930 + font-size: 11.5px; 931 + color: #23202880; 932 + } 933 + } 934 + 935 + Rectangle { 936 + horizontal-stretch: 1; 937 + } 938 + 939 + PaperToggle { 940 + checked <=> root.long-break-enabled; 941 + } 909 942 } 910 943 911 944 Rectangle { 912 - height: 10px; 945 + height: 12px; 913 946 } 914 947 915 - HorizontalLayout { 916 - spacing: 8px; 917 - alignment: start; 948 + VerticalLayout { 949 + spacing: 0px; 950 + opacity: root.long-break-enabled ? 1.0 : 0.38; 951 + animate opacity { duration: 200ms; } 918 952 919 - Text { 920 - text: "after"; 921 - font-size: 12.5px; 922 - color: #23202880; 923 - vertical-alignment: center; 924 - } 953 + HorizontalLayout { 954 + spacing: 8px; 955 + alignment: start; 956 + 957 + Text { 958 + text: "after"; 959 + font-size: 12.5px; 960 + color: #23202880; 961 + vertical-alignment: center; 962 + } 963 + 964 + SpinBox { 965 + width: 72px; 966 + height: 28px; 967 + value <=> root.long-break-after-cycles; 968 + minimum: 2; 969 + maximum: 20; 970 + } 971 + 972 + Text { 973 + text: "cycles, take"; 974 + font-size: 12.5px; 975 + color: #23202880; 976 + vertical-alignment: center; 977 + } 978 + 979 + SpinBox { 980 + width: 72px; 981 + height: 28px; 982 + value <=> root.long-break-duration-mins; 983 + minimum: 1; 984 + maximum: 120; 985 + } 925 986 926 - SpinBox { 927 - width: 72px; 928 - height: 28px; 929 - value <=> root.long-break-after-cycles; 930 - minimum: 2; 931 - maximum: 20; 932 - } 987 + Text { 988 + text: "min"; 989 + font-size: 12.5px; 990 + color: #23202880; 991 + vertical-alignment: center; 992 + } 933 993 934 - Text { 935 - text: "cycles, take"; 936 - font-size: 12.5px; 937 - color: #23202880; 938 - vertical-alignment: center; 939 - } 994 + Text { 995 + text: "—"; 996 + font-size: 12.5px; 997 + color: #23202860; 998 + vertical-alignment: center; 999 + } 940 1000 941 - SpinBox { 942 - width: 72px; 943 - height: 28px; 944 - value <=> root.long-break-duration-mins; 945 - minimum: 1; 946 - maximum: 120; 1001 + LineEdit { 1002 + width: 100px; 1003 + height: 28px; 1004 + placeholder-text: "Long rest"; 1005 + text <=> root.long-break-label; 1006 + } 947 1007 } 948 1008 949 - Text { 950 - text: "min"; 951 - font-size: 12.5px; 952 - color: #23202880; 953 - vertical-alignment: center; 1009 + Rectangle { 1010 + height: 10px; 954 1011 } 955 1012 956 - Text { 957 - text: "—"; 958 - font-size: 12.5px; 959 - color: #23202860; 960 - vertical-alignment: center; 961 - } 1013 + HorizontalLayout { 1014 + spacing: 8px; 1015 + alignment: start; 962 1016 963 - Text { 964 - text: root.long-break-label; 965 - font-size: 12.5px; 966 - color: #23202880; 967 - font-italic: true; 968 - vertical-alignment: center; 969 - } 970 - } 1017 + Text { 1018 + text: "Reset after"; 1019 + font-size: 11.5px; 1020 + color: #23202880; 1021 + vertical-alignment: center; 1022 + } 971 1023 972 - Rectangle { 973 - height: 10px; 974 - } 1024 + SpinBox { 1025 + width: 72px; 1026 + height: 28px; 1027 + value <=> root.long-break-gap-mins; 1028 + minimum: 5; 1029 + maximum: 120; 1030 + } 975 1031 976 - Text { 977 - text: "Reset the counter if you've been away longer than \{root.long-break-gap-mins} minutes."; 978 - font-size: 11.5px; 979 - color: #23202880; 980 - wrap: word-wrap; 1032 + Text { 1033 + text: "min away."; 1034 + font-size: 11.5px; 1035 + color: #23202880; 1036 + vertical-alignment: center; 1037 + } 1038 + } 981 1039 } 982 1040 983 1041 // Spacer ··· 1053 1111 1054 1112 Text { 1055 1113 text: "ioma"; 1114 + font-family: "Shippori Mincho"; 1056 1115 font-size: 34px; 1057 1116 color: #232028; 1058 1117 horizontal-alignment: center;