From 54ae9fb4c50c9819e335c527af5d3b9c31940d79 Mon Sep 17 00:00:00 2001 From: Avii Date: Thu, 6 Aug 2026 22:37:53 +0200 Subject: [PATCH] 1786048673 --- ui/components/component_card.slint | 42 ++ ui/components/group.slint | 31 + ui/components/text_icon_button.slint | 24 + ui/fonts/Roboto-VariableFont.ttf | Bin 0 -> 468308 bytes ui/fonts/Roboto-VariableFont.ttf.license | 3 + ui/icons.slint | 73 ++ ui/icons/filled/account_box.svg | 1 + ui/icons/filled/account_circle.svg | 1 + ui/icons/filled/add.svg | 1 + ui/icons/filled/archive.svg | 1 + ui/icons/filled/bookmark.svg | 1 + ui/icons/filled/calendar_month.svg | 1 + ui/icons/filled/chat_bubble.svg | 1 + ui/icons/filled/check.svg | 1 + ui/icons/filled/close.svg | 1 + ui/icons/filled/dark_mode.svg | 1 + ui/icons/filled/dashboard.svg | 1 + ui/icons/filled/delete.svg | 1 + ui/icons/filled/edit.svg | 1 + ui/icons/filled/explore.svg | 1 + ui/icons/filled/favorite.svg | 1 + ui/icons/filled/group.svg | 1 + ui/icons/filled/image.svg | 1 + ui/icons/filled/inbox.svg | 1 + ui/icons/filled/light_mode.svg | 1 + ui/icons/filled/mail.svg | 1 + ui/icons/filled/menu.svg | 1 + ui/icons/filled/more_vert.svg | 1 + ui/icons/filled/music_note.svg | 1 + ui/icons/filled/outbox.svg | 1 + ui/icons/filled/pause.svg | 1 + ui/icons/filled/pets.svg | 1 + ui/icons/filled/play_arrow.svg | 1 + ui/icons/filled/search.svg | 1 + ui/icons/filled/settings.svg | 1 + ui/icons/filled/share.svg | 1 + ui/icons/filled/today.svg | 1 + ui/icons/filled/video_call.svg | 1 + ui/icons/filled/view_week.svg | 1 + ui/icons/outlined/account_box.svg | 1 + ui/icons/outlined/add.svg | 1 + ui/icons/outlined/archive.svg | 1 + ui/icons/outlined/bookmark.svg | 1 + ui/icons/outlined/calendar_month.svg | 1 + ui/icons/outlined/chat_bubble.svg | 1 + ui/icons/outlined/check.svg | 1 + ui/icons/outlined/dark_mode.svg | 1 + ui/icons/outlined/dashboard.svg | 1 + ui/icons/outlined/delete.svg | 1 + ui/icons/outlined/edit.svg | 1 + ui/icons/outlined/explore.svg | 1 + ui/icons/outlined/favorite.svg | 1 + ui/icons/outlined/group.svg | 1 + ui/icons/outlined/image.svg | 1 + ui/icons/outlined/inbox.svg | 1 + ui/icons/outlined/light_mode.svg | 1 + ui/icons/outlined/mail.svg | 1 + ui/icons/outlined/more_vert.svg | 1 + ui/icons/outlined/music_note.svg | 1 + ui/icons/outlined/outbox.svg | 1 + ui/icons/outlined/palette.svg | 1 + ui/icons/outlined/pause.svg | 1 + ui/icons/outlined/pets.svg | 1 + ui/icons/outlined/play_arrow.svg | 1 + ui/icons/outlined/schedule.svg | 1 + ui/icons/outlined/search.svg | 1 + ui/icons/outlined/settings.svg | 1 + ui/icons/outlined/share.svg | 1 + ui/icons/outlined/today.svg | 1 + ui/icons/outlined/video_chat.svg | 1 + ui/icons/outlined/view_week.svg | 1 + ui/images/blue-hint.png | Bin 5696 -> 0 bytes ui/images/dial-frame.png | Bin 31985 -> 0 bytes ui/images/dial-trim.png | Bin 19091 -> 0 bytes ui/images/indicator.png | Bin 268 -> 0 bytes ui/images/light-hole.png | Bin 338 -> 0 bytes ui/images/light.png | Bin 2395 -> 0 bytes ui/images/metal-dial.png | Bin 35561 -> 0 bytes ui/images/metal-lights.png | Bin 58014 -> 0 bytes ui/images/slint-logo-square-dark.png | Bin 4232 -> 0 bytes ui/main.slint | 47 +- ui/material.slint | 66 ++ ui/themes/material_green_theme.json | 418 +++++++++++ ui/themes/material_purple_theme.json | 429 +++++++++++ ui/themes/material_red_theme.json | 418 +++++++++++ ui/themes/material_slint_theme.json | 418 +++++++++++ ui/ui/components/app_bar.slint | 256 +++++++ ui/ui/components/badge.slint | 36 + ui/ui/components/base_button.slint | 72 ++ ui/ui/components/base_navigation.slint | 51 ++ ui/ui/components/bottom_app_bar.slint | 64 ++ ui/ui/components/bottom_sheet.slint | 125 ++++ ui/ui/components/card.slint | 112 +++ ui/ui/components/check_box.slint | 143 ++++ ui/ui/components/chip.slint | 205 ++++++ ui/ui/components/date_picker.slint | 566 +++++++++++++++ ui/ui/components/dialog.slint | 233 ++++++ ui/ui/components/divider.slint | 28 + ui/ui/components/drawer.slint | 89 +++ ui/ui/components/drop_down_menu.slint | 125 ++++ ui/ui/components/elevated_button.slint | 45 ++ ui/ui/components/elevation.slint | 108 +++ ui/ui/components/extended_touch_area.slint | 57 ++ ui/ui/components/filled_button.slint | 43 ++ ui/ui/components/filled_icon_button.slint | 64 ++ ui/ui/components/floating_action_button.slint | 55 ++ ui/ui/components/grid.slint | 10 + ui/ui/components/horizontal.slint | 9 + ui/ui/components/icon.slint | 11 + ui/ui/components/icon_button.slint | 62 ++ ui/ui/components/list.slint | 107 +++ ui/ui/components/list_view.slint | 8 + ui/ui/components/material_text.slint | 14 + ui/ui/components/material_window.slint | 18 + ui/ui/components/menu.slint | 136 ++++ ui/ui/components/modal.slint | 28 + ui/ui/components/navigation_bar.slint | 150 ++++ ui/ui/components/navigation_drawer.slint | 227 ++++++ ui/ui/components/navigation_rail.slint | 84 +++ ui/ui/components/outline_button.slint | 42 ++ ui/ui/components/outline_icon_button.slint | 78 ++ ui/ui/components/progress_indicator.slint | 115 +++ ui/ui/components/radio_button.slint | 99 +++ ui/ui/components/scroll_view.slint | 166 +++++ ui/ui/components/search_bar.slint | 324 +++++++++ ui/ui/components/segmented_button.slint | 103 +++ ui/ui/components/slider.slint | 155 ++++ ui/ui/components/snack_bar.slint | 88 +++ ui/ui/components/state_layer.slint | 171 +++++ ui/ui/components/switch.slint | 151 ++++ ui/ui/components/tab_bar.slint | 210 ++++++ ui/ui/components/text_button.slint | 33 + ui/ui/components/text_field.slint | 211 ++++++ ui/ui/components/time_picker.slint | 674 ++++++++++++++++++ ui/ui/components/tonal_button.slint | 44 ++ ui/ui/components/tonal_icon_button.slint | 63 ++ ui/ui/components/tooltip.slint | 33 + ui/ui/components/vertical.slint | 9 + ui/ui/icons/arrow_back.svg | 1 + ui/ui/icons/arrow_drop_down.svg | 2 + ui/ui/icons/arrow_drop_up.svg | 1 + ui/ui/icons/arrow_right.svg | 1 + ui/ui/icons/calendar_today.svg | 1 + ui/ui/icons/check.svg | 1 + ui/ui/icons/chevron_backward.svg | 1 + ui/ui/icons/chevron_forward.svg | 1 + ui/ui/icons/close.svg | 1 + ui/ui/icons/edit.svg | 1 + ui/ui/icons/icons.slint | 19 + ui/ui/icons/keyboard.svg | 1 + ui/ui/icons/menu.svg | 1 + ui/ui/icons/remove.svg | 1 + ui/ui/icons/schedule.svg | 1 + ui/ui/items/list_item.slint | 12 + ui/ui/items/menu_item.slint | 9 + ui/ui/items/navigation_item.slint | 15 + ui/ui/styling/material_animations.slint | 17 + ui/ui/styling/material_palette.slint | 173 +++++ ui/ui/styling/material_schemes.slint | 59 ++ ui/ui/styling/material_style_metrics.slint | 75 ++ ui/ui/styling/material_typography.slint | 93 +++ 161 files changed, 8630 insertions(+), 1 deletion(-) create mode 100644 ui/components/component_card.slint create mode 100644 ui/components/group.slint create mode 100644 ui/components/text_icon_button.slint create mode 100644 ui/fonts/Roboto-VariableFont.ttf create mode 100644 ui/fonts/Roboto-VariableFont.ttf.license create mode 100644 ui/icons.slint create mode 100644 ui/icons/filled/account_box.svg create mode 100644 ui/icons/filled/account_circle.svg create mode 100644 ui/icons/filled/add.svg create mode 100644 ui/icons/filled/archive.svg create mode 100644 ui/icons/filled/bookmark.svg create mode 100644 ui/icons/filled/calendar_month.svg create mode 100644 ui/icons/filled/chat_bubble.svg create mode 100644 ui/icons/filled/check.svg create mode 100644 ui/icons/filled/close.svg create mode 100644 ui/icons/filled/dark_mode.svg create mode 100644 ui/icons/filled/dashboard.svg create mode 100644 ui/icons/filled/delete.svg create mode 100644 ui/icons/filled/edit.svg create mode 100644 ui/icons/filled/explore.svg create mode 100644 ui/icons/filled/favorite.svg create mode 100644 ui/icons/filled/group.svg create mode 100644 ui/icons/filled/image.svg create mode 100644 ui/icons/filled/inbox.svg create mode 100644 ui/icons/filled/light_mode.svg create mode 100644 ui/icons/filled/mail.svg create mode 100644 ui/icons/filled/menu.svg create mode 100644 ui/icons/filled/more_vert.svg create mode 100644 ui/icons/filled/music_note.svg create mode 100644 ui/icons/filled/outbox.svg create mode 100644 ui/icons/filled/pause.svg create mode 100644 ui/icons/filled/pets.svg create mode 100644 ui/icons/filled/play_arrow.svg create mode 100644 ui/icons/filled/search.svg create mode 100644 ui/icons/filled/settings.svg create mode 100644 ui/icons/filled/share.svg create mode 100644 ui/icons/filled/today.svg create mode 100644 ui/icons/filled/video_call.svg create mode 100644 ui/icons/filled/view_week.svg create mode 100644 ui/icons/outlined/account_box.svg create mode 100644 ui/icons/outlined/add.svg create mode 100644 ui/icons/outlined/archive.svg create mode 100644 ui/icons/outlined/bookmark.svg create mode 100644 ui/icons/outlined/calendar_month.svg create mode 100644 ui/icons/outlined/chat_bubble.svg create mode 100644 ui/icons/outlined/check.svg create mode 100644 ui/icons/outlined/dark_mode.svg create mode 100644 ui/icons/outlined/dashboard.svg create mode 100644 ui/icons/outlined/delete.svg create mode 100644 ui/icons/outlined/edit.svg create mode 100644 ui/icons/outlined/explore.svg create mode 100644 ui/icons/outlined/favorite.svg create mode 100644 ui/icons/outlined/group.svg create mode 100644 ui/icons/outlined/image.svg create mode 100644 ui/icons/outlined/inbox.svg create mode 100644 ui/icons/outlined/light_mode.svg create mode 100644 ui/icons/outlined/mail.svg create mode 100644 ui/icons/outlined/more_vert.svg create mode 100644 ui/icons/outlined/music_note.svg create mode 100644 ui/icons/outlined/outbox.svg create mode 100644 ui/icons/outlined/palette.svg create mode 100644 ui/icons/outlined/pause.svg create mode 100644 ui/icons/outlined/pets.svg create mode 100644 ui/icons/outlined/play_arrow.svg create mode 100644 ui/icons/outlined/schedule.svg create mode 100644 ui/icons/outlined/search.svg create mode 100644 ui/icons/outlined/settings.svg create mode 100644 ui/icons/outlined/share.svg create mode 100644 ui/icons/outlined/today.svg create mode 100644 ui/icons/outlined/video_chat.svg create mode 100644 ui/icons/outlined/view_week.svg delete mode 100644 ui/images/blue-hint.png delete mode 100644 ui/images/dial-frame.png delete mode 100644 ui/images/dial-trim.png delete mode 100644 ui/images/indicator.png delete mode 100644 ui/images/light-hole.png delete mode 100644 ui/images/light.png delete mode 100644 ui/images/metal-dial.png delete mode 100644 ui/images/metal-lights.png delete mode 100644 ui/images/slint-logo-square-dark.png create mode 100644 ui/material.slint create mode 100644 ui/themes/material_green_theme.json create mode 100644 ui/themes/material_purple_theme.json create mode 100644 ui/themes/material_red_theme.json create mode 100644 ui/themes/material_slint_theme.json create mode 100644 ui/ui/components/app_bar.slint create mode 100644 ui/ui/components/badge.slint create mode 100644 ui/ui/components/base_button.slint create mode 100644 ui/ui/components/base_navigation.slint create mode 100644 ui/ui/components/bottom_app_bar.slint create mode 100644 ui/ui/components/bottom_sheet.slint create mode 100644 ui/ui/components/card.slint create mode 100644 ui/ui/components/check_box.slint create mode 100644 ui/ui/components/chip.slint create mode 100644 ui/ui/components/date_picker.slint create mode 100644 ui/ui/components/dialog.slint create mode 100644 ui/ui/components/divider.slint create mode 100644 ui/ui/components/drawer.slint create mode 100644 ui/ui/components/drop_down_menu.slint create mode 100644 ui/ui/components/elevated_button.slint create mode 100644 ui/ui/components/elevation.slint create mode 100644 ui/ui/components/extended_touch_area.slint create mode 100644 ui/ui/components/filled_button.slint create mode 100644 ui/ui/components/filled_icon_button.slint create mode 100644 ui/ui/components/floating_action_button.slint create mode 100644 ui/ui/components/grid.slint create mode 100644 ui/ui/components/horizontal.slint create mode 100644 ui/ui/components/icon.slint create mode 100644 ui/ui/components/icon_button.slint create mode 100644 ui/ui/components/list.slint create mode 100644 ui/ui/components/list_view.slint create mode 100644 ui/ui/components/material_text.slint create mode 100644 ui/ui/components/material_window.slint create mode 100644 ui/ui/components/menu.slint create mode 100644 ui/ui/components/modal.slint create mode 100644 ui/ui/components/navigation_bar.slint create mode 100644 ui/ui/components/navigation_drawer.slint create mode 100644 ui/ui/components/navigation_rail.slint create mode 100644 ui/ui/components/outline_button.slint create mode 100644 ui/ui/components/outline_icon_button.slint create mode 100644 ui/ui/components/progress_indicator.slint create mode 100644 ui/ui/components/radio_button.slint create mode 100644 ui/ui/components/scroll_view.slint create mode 100644 ui/ui/components/search_bar.slint create mode 100644 ui/ui/components/segmented_button.slint create mode 100644 ui/ui/components/slider.slint create mode 100644 ui/ui/components/snack_bar.slint create mode 100644 ui/ui/components/state_layer.slint create mode 100644 ui/ui/components/switch.slint create mode 100644 ui/ui/components/tab_bar.slint create mode 100644 ui/ui/components/text_button.slint create mode 100644 ui/ui/components/text_field.slint create mode 100644 ui/ui/components/time_picker.slint create mode 100644 ui/ui/components/tonal_button.slint create mode 100644 ui/ui/components/tonal_icon_button.slint create mode 100644 ui/ui/components/tooltip.slint create mode 100644 ui/ui/components/vertical.slint create mode 100644 ui/ui/icons/arrow_back.svg create mode 100644 ui/ui/icons/arrow_drop_down.svg create mode 100644 ui/ui/icons/arrow_drop_up.svg create mode 100644 ui/ui/icons/arrow_right.svg create mode 100644 ui/ui/icons/calendar_today.svg create mode 100644 ui/ui/icons/check.svg create mode 100644 ui/ui/icons/chevron_backward.svg create mode 100644 ui/ui/icons/chevron_forward.svg create mode 100644 ui/ui/icons/close.svg create mode 100644 ui/ui/icons/edit.svg create mode 100644 ui/ui/icons/icons.slint create mode 100644 ui/ui/icons/keyboard.svg create mode 100644 ui/ui/icons/menu.svg create mode 100644 ui/ui/icons/remove.svg create mode 100644 ui/ui/icons/schedule.svg create mode 100644 ui/ui/items/list_item.slint create mode 100644 ui/ui/items/menu_item.slint create mode 100644 ui/ui/items/navigation_item.slint create mode 100644 ui/ui/styling/material_animations.slint create mode 100644 ui/ui/styling/material_palette.slint create mode 100644 ui/ui/styling/material_schemes.slint create mode 100644 ui/ui/styling/material_style_metrics.slint create mode 100644 ui/ui/styling/material_typography.slint diff --git a/ui/components/component_card.slint b/ui/components/component_card.slint new file mode 100644 index 0000000..c0f602b --- /dev/null +++ b/ui/components/component_card.slint @@ -0,0 +1,42 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { + MaterialText, + OutlinedCard, + MaterialTypography, + MaterialStyleMetrics +} from "../material.slint"; + +export component ComponentCard { + in property title; + + HorizontalLayout { + alignment: center; + + VerticalLayout { + spacing: 4px; + alignment: start; + + MaterialText { + horizontal_alignment: center; + text: root.title; + style: MaterialTypography.title_medium; + } + + OutlinedCard { + min-width: 360px; + + VerticalLayout { + padding_left: 2px; + padding_right: self.padding_left; + padding_top: MaterialStyleMetrics.padding_8; + padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_8; + + @children + } + } + } + } +} diff --git a/ui/components/group.slint b/ui/components/group.slint new file mode 100644 index 0000000..d07ed90 --- /dev/null +++ b/ui/components/group.slint @@ -0,0 +1,31 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { + MaterialText, + MaterialPalette, + MaterialTypography +} from "../material.slint"; + +export component Group { + in property title; + + Rectangle { + border_radius: 12px; + background: MaterialPalette.surface_bright; + + VerticalLayout { + alignment: start; + padding: 8px; + spacing: 16px; + + MaterialText { + horizontal_alignment: center; + text: root.title; + style: MaterialTypography.headline_small; + } + + @children + } + } +} diff --git a/ui/components/text_icon_button.slint b/ui/components/text_icon_button.slint new file mode 100644 index 0000000..f51d7b4 --- /dev/null +++ b/ui/components/text_icon_button.slint @@ -0,0 +1,24 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { + IconButton, + MaterialText +} from "../material.slint"; + +export component TextIconButton { + in property icon <=> button.icon; + in property text <=> label.text; + + VerticalLayout { + HorizontalLayout { + alignment: center; + + button := IconButton {} + } + + label := MaterialText { + horizontal_alignment: center; + } + } +} diff --git a/ui/fonts/Roboto-VariableFont.ttf b/ui/fonts/Roboto-VariableFont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bba55f616c811c4ee31535667dd2ed30229e5e71 GIT binary patch literal 468308 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

Q(u6ZZl>(a08KItzpa5=rSPnQ_ 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

_ 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

j{ zE9Fi5@vHj4Ky9RP091O@tW(2TFM96a3z0Ho9t3)S`lXQHHY-%6(6##l>B*TIVjJ+F z{IyK=CC6El0jX&zV}8%qkM+|B8C?v!)Zp0Z`XVe%#4`X_qFKe<7?C+9WF2VgBhauGG>?%rC? zrUmo1vJ}@_I0H^Qc}Q@tKM&J%O<96$3rEbhaIVCvR9{b9q6%TZAV$a8td8ZHy`dKI zLkLY;Fxvq=={pDS$why(h>Yew{71&?lZx&N*XxtrR`P{gt>)=o(d&iwLZ11U`Q(M( zPn${so+-wo^Ljb?OHJfi9iCG3xGOv@7Xzzs-dhrgO?v?m_GJ?COj3FJv0H?Zp)NKo z%aj}i#PbnKS@J?^E>!b@k26et8XrqoJ}EW4kFI>@YoT|2I~NrHb%vt*XNE zP(tDkI!9sxAuwX!3!$HD6D9J`S&UMYOE{fKbmHC)(wO*o9(hW9*j0nFs!|gLjw$9( z`1Db;T9RE0{Xo_TB_Mzkff;n4{u_8vb{x;^MNKl-5SwtIxtn)>D^ z6n6Ome<$F}v~2c;;a$6NR~S;-PaFC`w9?6})lrG2>?o;%0GvVU7T}(d8SJ@sAIR9| zVbgyj=7&W4K1n)eFJtDuj_gjHeE{CvAHPN@Azhb&Jvu(EL$k*n?HPyIYVK$$*(# z_*1SAatNBJ|0|_a^iW;l*7bdX58%r6f!hmNiSOIJxf}Y$KnHCbSB@VKZ-m~ zpYKZA(GW5Qp{Bg8a;NB+S(iWH_1+kQfz;z{^)6t!5Uyo2LZ~Jbtl1bBzpp%;^~7Gc z-GN-Yk@w*L!i$vC{mt2^Q6%@T_!iz_{|8TBv_OYK9P<9$81V<2=Nm=!BVt3th2-tycEANh6_P?v+ZZieUa zL(B8{Vcxe_=VUrMdPiT5QJ+_y6z_Qa7r(%C(_yvoN~iOqk3KpOj&)=X?%uI&+qTYN zRYf=yudcpz<^ydN$@RS*D}yU9z8F#n=*{3B80 zgUOtOd%JtJ6OL7ObabGP(LogowhW66st$$rzj)6*_dK!jV06Tov17-+p!Ex>svAO~ z>g~_mci(-B4jeJ@yUpr0b=xuf_H~Dbj5y=GN#nNY!aq>;ZJ1dU5{*7H1FR~hI}*sjA*^Nqi=10(Sd0+Nc4noC!b&Jw7 zYxz}<1w#QJs-gHojhB6(nmxHo2};r*IhqJc;_TM?{{qehAy!Bh;TVp7=YI4GCO=$^i=H1-Yp zQmoC5Vn160V*(Gf&v+Zmrvmf;0nE<^=2rsqt1bDpC+3}W`Ri*|ZrGcS z)q&gV>mvKNty{U~^~*0Er?$Pj_>Xtt_3y8IxL1$6?Ad20PDHjcuxr=mj+RK~;I_7r z!{dRL`oRrH9C7NGuDRx#%O{;UvTe=Nf4ukJd;k5l1)0o()Jb=pd`6?ww`;@etMPjC zy{+4wQJ+3#_MGS5+8!H!)i?3_$~nXP-h5)tm%jAuvxu7l4Gq;!%W+O@Xyc|GU0Ezm z=azTheg1bCGCXJD`b~`^KXb+O>C-PiCHC^mG04nK+3#k*7ixXrspTK+PlXPAu>9!< zW}KV-9)5dM_D41UGUw@+-`kC4@7n#|vZv=bz-n;;ed?nYm;; z6y(NZkSNRmrc^;__=)rEF}Na;BuWkY$Y(&RwO$t6j0-k=2L8{mTsM=d?85+H$N-VY zDBlLi38v-?W+gu6pc0nTnE~ zbW!o!Ucz*fz!@fiMQ4zjgk0VVbNVofr^OYJX476UEY4y6c}r!K(MwPgvd)?6B0QsJ z#`{}*Sa&{{?AQp^{C>T)DnhNJ-HzIGRipUzoO^LHo(;t8R%X;I^zWTK>(;8+`LBE#WzNSw<}I)o|M z^x-@B3E5xM8jbsAo*dZw3gKz_%$y)M*!1k{Gd=s(dQoki(HL$m-r?-P+(YtJFzs*p z@<Rgq<%vP V$BGt0hpG?xH@A)?7r;A-{{v>9Kezw@ literal 0 HcmV?d00001 diff --git a/ui/fonts/Roboto-VariableFont.ttf.license b/ui/fonts/Roboto-VariableFont.ttf.license new file mode 100644 index 0000000..7b98a7a --- /dev/null +++ b/ui/fonts/Roboto-VariableFont.ttf.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: Google Inc. + +SPDX-License-Identifier: Apache-2.0 diff --git a/ui/icons.slint b/ui/icons.slint new file mode 100644 index 0000000..b7819b2 --- /dev/null +++ b/ui/icons.slint @@ -0,0 +1,73 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +export global FilledIcons { + out property account_box: @image-url("./icons/filled/account_box.svg"); + out property calendar_month: @image-url("./icons/filled/calendar_month.svg"); + out property close: @image-url("./icons/filled/close.svg"); + out property delete: @image-url("./icons/filled/delete.svg"); + out property favorite: @image-url("./icons/filled/favorite.svg"); + out property inbox: @image-url("./icons/filled/inbox.svg"); + out property music_note: @image-url("./icons/filled/music_note.svg"); + out property play_arrow: @image-url("./icons/filled/play_arrow.svg"); + out property today: @image-url("./icons/filled/today.svg"); + out property add: @image-url("./icons/filled/add.svg"); + out property chat_bubble: @image-url("./icons/filled/chat_bubble.svg"); + out property edit: @image-url("./icons/filled/edit.svg"); + out property group: @image-url("./icons/filled/group.svg"); + out property mail: @image-url("./icons/filled/mail.svg"); + out property outbox: @image-url("./icons/filled/outbox.svg"); + out property search: @image-url("./icons/filled/search.svg"); + out property video_chat: @image-url("./icons/filled/video_call.svg"); + out property bookmark: @image-url("./icons/filled/bookmark.svg"); + out property check: @image-url("./icons/filled/check.svg"); + out property explore: @image-url("./icons/filled/explore.svg"); + out property image: @image-url("./icons/filled/image.svg"); + out property more_vert: @image-url("./icons/filled/more_vert.svg"); + out property pets: @image-url("./icons/filled/pets.svg"); + out property settings: @image-url("./icons/filled/settings.svg"); + out property view_week: @image-url("./icons/filled/view_week.svg"); + out property light_mode: @image-url("./icons/filled/light_mode.svg"); + out property dark_mode: @image-url("./icons/filled/dark_mode.svg"); + out property dashboard: @image-url("./icons/filled/dashboard.svg"); + out property pause: @image-url("./icons/filled/pause.svg"); + out property archive: @image-url("./icons/filled/archive.svg"); + out property share: @image-url("./icons/filled/share.svg"); + out property menu: @image-url("./icons/filled/menu.svg"); + out property account_circle: @image-url("./icons/filled/account_circle.svg"); +} + +export global OutlinedIcons { + out property account_box: @image-url("./icons/outlined/account_box.svg"); + out property calendar_month: @image-url("./icons/outlined/calendar_month.svg"); + out property delete: @image-url("./icons/outlined/delete.svg"); + out property favorite: @image-url("./icons/outlined/favorite.svg"); + out property inbox: @image-url("./icons/outlined/inbox.svg"); + out property music_note: @image-url("./icons/outlined/music_note.svg"); + out property play_arrow: @image-url("./icons/outlined/play_arrow.svg"); + out property today: @image-url("./icons/outlined/today.svg"); + out property add: @image-url("./icons/outlined/add.svg"); + out property chat_bubble: @image-url("./icons/outlined/chat_bubble.svg"); + out property edit: @image-url("./icons/outlined/edit.svg"); + out property group: @image-url("./icons/outlined/group.svg"); + out property mail: @image-url("./icons/outlined/mail.svg"); + out property outbox: @image-url("./icons/outlined/outbox.svg"); + out property search: @image-url("./icons/outlined/search.svg"); + out property video_chat: @image-url("./icons/outlined/video_chat.svg"); + out property bookmark: @image-url("./icons/outlined/bookmark.svg"); + out property check: @image-url("./icons/outlined/check.svg"); + out property explore: @image-url("./icons/outlined/explore.svg"); + out property image: @image-url("./icons/outlined/image.svg"); + out property more_vert: @image-url("./icons/outlined/more_vert.svg"); + out property pets: @image-url("./icons/outlined/pets.svg"); + out property settings: @image-url("./icons/outlined/settings.svg"); + out property view_week: @image-url("./icons/outlined/view_week.svg"); + out property light_mode: @image-url("./icons/outlined/light_mode.svg"); + out property dark_mode: @image-url("./icons/outlined/dark_mode.svg"); + out property dashboard: @image-url("./icons/outlined/dashboard.svg"); + out property pause: @image-url("./icons/outlined/pause.svg"); + out property archive: @image-url("./icons/outlined/archive.svg"); + out property share: @image-url("./icons/outlined/share.svg"); + out property schedule: @image-url("./icons/outlined/schedule.svg"); + out property palette: @image-url("./icons/outlined/palette.svg"); + } diff --git a/ui/icons/filled/account_box.svg b/ui/icons/filled/account_box.svg new file mode 100644 index 0000000..e74d64c --- /dev/null +++ b/ui/icons/filled/account_box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/account_circle.svg b/ui/icons/filled/account_circle.svg new file mode 100644 index 0000000..ce42e4f --- /dev/null +++ b/ui/icons/filled/account_circle.svg @@ -0,0 +1 @@ + diff --git a/ui/icons/filled/add.svg b/ui/icons/filled/add.svg new file mode 100644 index 0000000..58f73e9 --- /dev/null +++ b/ui/icons/filled/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/archive.svg b/ui/icons/filled/archive.svg new file mode 100644 index 0000000..024f790 --- /dev/null +++ b/ui/icons/filled/archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/bookmark.svg b/ui/icons/filled/bookmark.svg new file mode 100644 index 0000000..1d507a6 --- /dev/null +++ b/ui/icons/filled/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/calendar_month.svg b/ui/icons/filled/calendar_month.svg new file mode 100644 index 0000000..e8fa87b --- /dev/null +++ b/ui/icons/filled/calendar_month.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/chat_bubble.svg b/ui/icons/filled/chat_bubble.svg new file mode 100644 index 0000000..d447be3 --- /dev/null +++ b/ui/icons/filled/chat_bubble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/check.svg b/ui/icons/filled/check.svg new file mode 100644 index 0000000..8676ca3 --- /dev/null +++ b/ui/icons/filled/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/close.svg b/ui/icons/filled/close.svg new file mode 100644 index 0000000..373c01a --- /dev/null +++ b/ui/icons/filled/close.svg @@ -0,0 +1 @@ + diff --git a/ui/icons/filled/dark_mode.svg b/ui/icons/filled/dark_mode.svg new file mode 100644 index 0000000..3d141c4 --- /dev/null +++ b/ui/icons/filled/dark_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/dashboard.svg b/ui/icons/filled/dashboard.svg new file mode 100644 index 0000000..1682295 --- /dev/null +++ b/ui/icons/filled/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/delete.svg b/ui/icons/filled/delete.svg new file mode 100644 index 0000000..0969a4d --- /dev/null +++ b/ui/icons/filled/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/edit.svg b/ui/icons/filled/edit.svg new file mode 100644 index 0000000..a2841f9 --- /dev/null +++ b/ui/icons/filled/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/explore.svg b/ui/icons/filled/explore.svg new file mode 100644 index 0000000..4243343 --- /dev/null +++ b/ui/icons/filled/explore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/favorite.svg b/ui/icons/filled/favorite.svg new file mode 100644 index 0000000..80f9a05 --- /dev/null +++ b/ui/icons/filled/favorite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/group.svg b/ui/icons/filled/group.svg new file mode 100644 index 0000000..bd9a133 --- /dev/null +++ b/ui/icons/filled/group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/image.svg b/ui/icons/filled/image.svg new file mode 100644 index 0000000..6ccc16a --- /dev/null +++ b/ui/icons/filled/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/inbox.svg b/ui/icons/filled/inbox.svg new file mode 100644 index 0000000..92dbdab --- /dev/null +++ b/ui/icons/filled/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/light_mode.svg b/ui/icons/filled/light_mode.svg new file mode 100644 index 0000000..4a29693 --- /dev/null +++ b/ui/icons/filled/light_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/mail.svg b/ui/icons/filled/mail.svg new file mode 100644 index 0000000..876dbcd --- /dev/null +++ b/ui/icons/filled/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/menu.svg b/ui/icons/filled/menu.svg new file mode 100644 index 0000000..8c03678 --- /dev/null +++ b/ui/icons/filled/menu.svg @@ -0,0 +1 @@ + diff --git a/ui/icons/filled/more_vert.svg b/ui/icons/filled/more_vert.svg new file mode 100644 index 0000000..f2427f8 --- /dev/null +++ b/ui/icons/filled/more_vert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/music_note.svg b/ui/icons/filled/music_note.svg new file mode 100644 index 0000000..cdc42fc --- /dev/null +++ b/ui/icons/filled/music_note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/outbox.svg b/ui/icons/filled/outbox.svg new file mode 100644 index 0000000..351e92d --- /dev/null +++ b/ui/icons/filled/outbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/pause.svg b/ui/icons/filled/pause.svg new file mode 100644 index 0000000..c20e156 --- /dev/null +++ b/ui/icons/filled/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/pets.svg b/ui/icons/filled/pets.svg new file mode 100644 index 0000000..e4d7d48 --- /dev/null +++ b/ui/icons/filled/pets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/play_arrow.svg b/ui/icons/filled/play_arrow.svg new file mode 100644 index 0000000..c5e1a4c --- /dev/null +++ b/ui/icons/filled/play_arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/search.svg b/ui/icons/filled/search.svg new file mode 100644 index 0000000..cd9fd53 --- /dev/null +++ b/ui/icons/filled/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/settings.svg b/ui/icons/filled/settings.svg new file mode 100644 index 0000000..f255a58 --- /dev/null +++ b/ui/icons/filled/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/share.svg b/ui/icons/filled/share.svg new file mode 100644 index 0000000..ed3e530 --- /dev/null +++ b/ui/icons/filled/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/today.svg b/ui/icons/filled/today.svg new file mode 100644 index 0000000..43abd72 --- /dev/null +++ b/ui/icons/filled/today.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/video_call.svg b/ui/icons/filled/video_call.svg new file mode 100644 index 0000000..e1a21e1 --- /dev/null +++ b/ui/icons/filled/video_call.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/filled/view_week.svg b/ui/icons/filled/view_week.svg new file mode 100644 index 0000000..d26bb06 --- /dev/null +++ b/ui/icons/filled/view_week.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/account_box.svg b/ui/icons/outlined/account_box.svg new file mode 100644 index 0000000..3875711 --- /dev/null +++ b/ui/icons/outlined/account_box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/add.svg b/ui/icons/outlined/add.svg new file mode 100644 index 0000000..58f73e9 --- /dev/null +++ b/ui/icons/outlined/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/archive.svg b/ui/icons/outlined/archive.svg new file mode 100644 index 0000000..7318216 --- /dev/null +++ b/ui/icons/outlined/archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/bookmark.svg b/ui/icons/outlined/bookmark.svg new file mode 100644 index 0000000..812bffe --- /dev/null +++ b/ui/icons/outlined/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/calendar_month.svg b/ui/icons/outlined/calendar_month.svg new file mode 100644 index 0000000..c35f75e --- /dev/null +++ b/ui/icons/outlined/calendar_month.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/chat_bubble.svg b/ui/icons/outlined/chat_bubble.svg new file mode 100644 index 0000000..d447be3 --- /dev/null +++ b/ui/icons/outlined/chat_bubble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/check.svg b/ui/icons/outlined/check.svg new file mode 100644 index 0000000..5e3f01e --- /dev/null +++ b/ui/icons/outlined/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/dark_mode.svg b/ui/icons/outlined/dark_mode.svg new file mode 100644 index 0000000..c38c55e --- /dev/null +++ b/ui/icons/outlined/dark_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/dashboard.svg b/ui/icons/outlined/dashboard.svg new file mode 100644 index 0000000..01ef592 --- /dev/null +++ b/ui/icons/outlined/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/delete.svg b/ui/icons/outlined/delete.svg new file mode 100644 index 0000000..14508a2 --- /dev/null +++ b/ui/icons/outlined/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/edit.svg b/ui/icons/outlined/edit.svg new file mode 100644 index 0000000..01f34c7 --- /dev/null +++ b/ui/icons/outlined/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/explore.svg b/ui/icons/outlined/explore.svg new file mode 100644 index 0000000..b62e5ed --- /dev/null +++ b/ui/icons/outlined/explore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/favorite.svg b/ui/icons/outlined/favorite.svg new file mode 100644 index 0000000..80f9a05 --- /dev/null +++ b/ui/icons/outlined/favorite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/group.svg b/ui/icons/outlined/group.svg new file mode 100644 index 0000000..7fa6132 --- /dev/null +++ b/ui/icons/outlined/group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/image.svg b/ui/icons/outlined/image.svg new file mode 100644 index 0000000..5400d38 --- /dev/null +++ b/ui/icons/outlined/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/inbox.svg b/ui/icons/outlined/inbox.svg new file mode 100644 index 0000000..fc55d23 --- /dev/null +++ b/ui/icons/outlined/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/light_mode.svg b/ui/icons/outlined/light_mode.svg new file mode 100644 index 0000000..d66b3ab --- /dev/null +++ b/ui/icons/outlined/light_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/mail.svg b/ui/icons/outlined/mail.svg new file mode 100644 index 0000000..f3809a5 --- /dev/null +++ b/ui/icons/outlined/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/more_vert.svg b/ui/icons/outlined/more_vert.svg new file mode 100644 index 0000000..f2427f8 --- /dev/null +++ b/ui/icons/outlined/more_vert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/music_note.svg b/ui/icons/outlined/music_note.svg new file mode 100644 index 0000000..e7be7bf --- /dev/null +++ b/ui/icons/outlined/music_note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/outbox.svg b/ui/icons/outlined/outbox.svg new file mode 100644 index 0000000..ae8bda3 --- /dev/null +++ b/ui/icons/outlined/outbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/palette.svg b/ui/icons/outlined/palette.svg new file mode 100644 index 0000000..6475eb3 --- /dev/null +++ b/ui/icons/outlined/palette.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/pause.svg b/ui/icons/outlined/pause.svg new file mode 100644 index 0000000..c20e156 --- /dev/null +++ b/ui/icons/outlined/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/pets.svg b/ui/icons/outlined/pets.svg new file mode 100644 index 0000000..e4d7d48 --- /dev/null +++ b/ui/icons/outlined/pets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/play_arrow.svg b/ui/icons/outlined/play_arrow.svg new file mode 100644 index 0000000..842d32f --- /dev/null +++ b/ui/icons/outlined/play_arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/schedule.svg b/ui/icons/outlined/schedule.svg new file mode 100644 index 0000000..6ed61e0 --- /dev/null +++ b/ui/icons/outlined/schedule.svg @@ -0,0 +1 @@ + diff --git a/ui/icons/outlined/search.svg b/ui/icons/outlined/search.svg new file mode 100644 index 0000000..cd9fd53 --- /dev/null +++ b/ui/icons/outlined/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/settings.svg b/ui/icons/outlined/settings.svg new file mode 100644 index 0000000..b36758c --- /dev/null +++ b/ui/icons/outlined/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/share.svg b/ui/icons/outlined/share.svg new file mode 100644 index 0000000..b3295db --- /dev/null +++ b/ui/icons/outlined/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/today.svg b/ui/icons/outlined/today.svg new file mode 100644 index 0000000..b3faffc --- /dev/null +++ b/ui/icons/outlined/today.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/video_chat.svg b/ui/icons/outlined/video_chat.svg new file mode 100644 index 0000000..798cd1e --- /dev/null +++ b/ui/icons/outlined/video_chat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/icons/outlined/view_week.svg b/ui/icons/outlined/view_week.svg new file mode 100644 index 0000000..e7a9e7d --- /dev/null +++ b/ui/icons/outlined/view_week.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/images/blue-hint.png b/ui/images/blue-hint.png deleted file mode 100644 index 442e17ae1653e4cb492ece7cfee07bb5ed297f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5696 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 KHR{yuqyGo!G3p@z diff --git a/ui/images/dial-frame.png b/ui/images/dial-frame.png deleted file mode 100644 index a765a1cd3f77b5054ff2f70d50634336b19d3422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31985 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 ZwgKE17?Q<{S@i!xIoe&et+BrL_kT6h3ReIC diff --git a/ui/images/indicator.png b/ui/images/indicator.png deleted file mode 100644 index aea782ffdbf8e0a9454cf6a0378836a8f5dbe6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmV+n0rUQeP)A!4P$$usm<}$DvRqyzx5J^m|=%4->Y?^NKrvJDU8T1|c&%?(n#^AR28cs!4 z^RE6se)5zwL+hT~UvVj_-TUCr|NsBl7~XvRJT-CSJq!hrYw!Gj`u5`ru)~2Wd4K%= zb9~dy_x~&RKK@^}=h6R_SKt2s_VdqWpqvOim_SAXaUu|}0OB=3oCCz1FnIvxnYC86 Sx*^^G0000UtP)+X~;ub%4} zNh=l@VkjJay5on2yX8B3^JlkA_c9U>n66XLF5ZwT0SJ!W-?zSBUOnEkuJZ8TF|VWq kq7>z+EM+`UNvR|N!_gpGSZ=(=FaQ7m07*qoM6N<$g4bV+=>Px# diff --git a/ui/images/light.png b/ui/images/light.png deleted file mode 100644 index 71ba5b9b20a55065f07e4cdf5dfd9402d3159f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2395 zcmV-h38eOkP)1^@s6$I7^K000RhNkl9Ns@3y$fdXf_4lIyowtd$2^UvS@iL}okKiShm z#vADg-zj6Y;Q2msNna@=5ikv#MW*3H#eAd$SNK-gfj!{ytpGu>n3nKxVz71YyJM28 zcFP#1tM2nLmF0PDOOU{1CWbX z9&`hM9OOVe8is3gPTnDu@qQ7M;H4n9BH?;n3S%xK5`iK|A!0BZA=r!vA4x7GlHo;E zh5I!y<8dwf*Z1V>bs?0oE}|$Hx#@+l^NJBc!Qkp&=ZH`*#LHleL`)PvWIbzfwG4tn zuT%ttT!mdye^o<9-4$jWARvvD!BMF@0s@3Mj~^w7^7xncnO5( z6++n^kqoRk8j~UlHeBoZ>@Ei3Y?kzQMZNWBmt6#_CXMUiS*=34C) zncOdPby()|aJ@e8|Cef6DJfQ5=EY8d=(!Pu|Ouvo)|Q0Eo=Mj@UWJhLH^Oa37gI%{DibVAFCOH*}N3 zuJ+`Y6ezS-BF|D;%`$aR<@)S)-G1?4-b!N`h~9~rp)mwE=1uX++HcBS9T%zEO|>li z(Ln?~0T8G*LlCxqw8F*)aJ(%rM25JCj69VG&sy`@^MyfX03rgi1kSi#mViAN26(XQ z5)|O)y9z%0!7gO=Rhx5KmgG7yx(xVU6oG zz#!KHv5w(|v8Ra^l~yv7Vo0h}0NZbV`-@tVXoDGm(b=SmF2$ygCotKeh?4)WGWQe@vlFG4&Z1#-maDi#NcRnyiUJ&;Aj6Q zFd){&8X!1FY@Oq7H31MTMuPYXAFwBCjTxN zyr}}tHaTW%9k-pORb%k^=}h;TZ-C)Js6=`Bbq_-zD2ed@3>K|%b7NiOh&m4>P*n!{ zBZ2*F4I|LJ4ODa#kRt-yS=Th3oxiN@vmZ&504lq<76=M({)+d!_&Ejs;xi=o9 zwcIk$*a;si1SJk91Y`5Ra|quLruIHDb;eR%w{E^{?DM(7>%Z=b)p3;o;=2g(vsbDF zd~=ZScQf(u{@mSNwf5B-$kIA8%wq?93I*KeksH68jAt=|73-H^tZ9V(3jvsy2HMji zabM+>?4&Z$slp;tSfvu)D<%KDBkEHn9^G2N<;U~(;i`47I^!0WsAh&108Bt0hMg!J zMT0^x1`u0Un}J@+s3t&0U|{AxhrDQLk!W3?rlNgMQ}>~U=KTbgM-rZOtZv_!yBl|3 zHxE3Bwxfk{Todshf#`pV7y%$S`9>JY z4|Wt4W?Cf@0Wgvy1J*feTT83DwQruj!9JVzCAzZ=#yRSo6Sk&l3;vs8DESH`;9I&OY1-aJ%YiD4-C+W&uUiq{*Z ziZaLydfX+3!zw+V9Jyz|#fbPtN7ON4z$qy>1Zx`w3|Sp#%qvAZMt;eNr(!;|-QF7U z5-N(y7eHny0;#)RA7@nkGwAXcm{9eluMb^5*NiWSdEXTpDWuC*r-?V5gh2o-0aa}U zL8PuJRPsy!0we*ffJ{k`x=QLYkyCfb zO#zZ1m@Z5q#E^lQaPQBx8PyxG{U8X!AdnPp(*;b8ZRH9;VfqGTlh6uAXk!W?Wef^M zNCPn-)PpQJ+$OGoGlUxQ4j{xK5YuLu00Gzau}2*;c$$biybalDVHrs}1aU>Gc|y4E zP1GG|FKh;jFS`*4AQYesLfv~9h)$aLigTTddzCf-k*cijLR$p*1Q87oVKAZu(m&2T z5mObAxe}cxOMYDtzMg@Y_f;i6%2{k+DY3iD75^{aQ*ju5AW=-)_h$@6V+SmFrPxz6 zL97>dr2Mv6K2U56$;q4}|GoInNK|f+v=w N002ovPDHLkV1jnILO%ci diff --git a/ui/images/metal-dial.png b/ui/images/metal-dial.png deleted file mode 100644 index c0095ffa55b2df35f67c6fb50f65dac3200f7cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35561 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 diff --git a/ui/images/metal-lights.png b/ui/images/metal-lights.png deleted file mode 100644 index 22085006d764af12eb52565ee41244c74ca06fb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58014 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 Hu0mjf-(yFN diff --git a/ui/images/slint-logo-square-dark.png b/ui/images/slint-logo-square-dark.png deleted file mode 100644 index c3eb01800ab3609b352cabf67669739e10119e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4232 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 diff --git a/ui/main.slint b/ui/main.slint index 41e687d..6ab3b05 100644 --- a/ui/main.slint +++ b/ui/main.slint @@ -2,6 +2,12 @@ // SPDX-License-Identifier: MIT import { LineEdit } from "std-widgets.slint"; +import { ComponentCard } from "./components/component_card.slint"; + +import { Horizontal, Vertical, Switch } from "./material.slint"; + +import "./fonts/Roboto-VariableFont.ttf"; +import { FilledIcons, OutlinedIcons } from "./icons.slint"; // The window the user interacts with. Edits to the inputs propagate to // the SystemTrayIcon instance via the host language's callbacks. @@ -9,11 +15,12 @@ export component MainWindow inherits Window { title: "Dashboard"; preferred-width: 1024px; preferred-height: 600px; + default-font-family: "Roboto"; in-out property current-page: 0; in property text: "Hello World"; in property next-event-label: "NEXT EVENT"; - in property next-event-title: "LOADING CALENDAR LORUM IPSUM DOLOR SIT AMET"; + in property next-event-title: "LOADING CALENDAR"; in property next-event-time: "6:00 pm"; callback user-activity(); @@ -75,4 +82,42 @@ export component MainWindow inherits Window { horizontal-alignment: right; vertical-alignment: center; } + + Rectangle { + x: 38px; + y: 32px + 36px + 5px; + width: (root.width / 2) - 38px; + height: root.height - 32px + 36px + 5px; + + ComponentCard { + title: "Switches"; + + Vertical { + Horizontal { + alignment: space_around; + + Switch {} + + Switch { + off_icon: FilledIcons.close; + on_icon: FilledIcons.check; + } + } + + Horizontal { + alignment: space_around; + + Switch { + enabled: false; + } + + Switch { + enabled: false; + on_icon: FilledIcons.check; + off_icon: FilledIcons.close; + } + } + } + } + } } diff --git a/ui/material.slint b/ui/material.slint new file mode 100644 index 0000000..4b5316f --- /dev/null +++ b/ui/material.slint @@ -0,0 +1,66 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +// components +export { AppBar, SmallAppBar, MediumAppBar, LargeAppBar } from "./ui/components/app_bar.slint"; +export { Badge } from "./ui/components/badge.slint"; +export { BottomAppBar } from "./ui/components/bottom_app_bar.slint"; +export { CheckState, CheckBox, CheckBoxTile } from "./ui/components/check_box.slint"; +export { ActionChip, FilterChip, InputChip } from "./ui/components/chip.slint"; +export { DatePickerPopup, DatePickerAdapter } from "./ui/components/date_picker.slint"; +export { Dialog, FullscreenDialog } from "./ui/components/dialog.slint"; +export { Drawer, ModalDrawer } from "./ui/components/drawer.slint"; +export { DropDownMenu } from "./ui/components/drop_down_menu.slint"; +export { VerticalDivider, HorizontalDivider } from "./ui/components/divider.slint"; +export { ModalBottomSheet } from "./ui/components/bottom_sheet.slint"; +export { ElevatedCard, FilledCard, OutlinedCard } from "./ui/components/card.slint"; +export { ElevatedButton } from "./ui/components/elevated_button.slint"; +export { Elevation } from "./ui/components/elevation.slint"; +export { ExtendedTouchArea } from "./ui/components/extended_touch_area.slint"; +export { FilledButton } from "./ui/components/filled_button.slint"; +export { FilledIconButton } from "./ui/components/filled_icon_button.slint"; +export { FloatingActionButton, FABStyle } from "./ui/components/floating_action_button.slint"; +export { Grid } from "./ui/components/grid.slint"; +export { Horizontal } from "./ui/components/horizontal.slint"; +export { Icon } from "./ui/components/icon.slint"; +export { IconButton } from "./ui/components/icon_button.slint"; +export { OutlineButton } from "./ui/components/outline_button.slint"; +export { OutlineIconButton } from "./ui/components/outline_icon_button.slint"; +export { Avatar, ListTile } from "./ui/components/list.slint"; +export { ListView } from "./ui/components/list_view.slint"; +export { MaterialText } from "./ui/components/material_text.slint"; +export { MaterialWindow, MaterialWindowAdapter } from "./ui/components/material_window.slint"; +export { PopupMenu } from "./ui/components/menu.slint"; +export { NavigationBar } from "./ui/components/navigation_bar.slint"; +export { NavigationDrawer, ModalNavigationDrawer } from "./ui/components/navigation_drawer.slint"; +export { NavigationRail } from "./ui/components/navigation_rail.slint"; +export { CircularProgressIndicator, LinearProgressIndicator } from "./ui/components/progress_indicator.slint"; +export { RadioButton, RadioButtonTile } from "./ui/components/radio_button.slint"; +export { SearchBar } from "./ui/components/search_bar.slint"; +export { ScrollView } from "./ui/components/scroll_view.slint"; +export { Slider } from "./ui/components/slider.slint"; +export { SnackBar } from "./ui/components/snack_bar.slint"; +export { StateLayerArea, StateLayer, Ripple } from "./ui/components/state_layer.slint"; +export { SegmentedButton } from "./ui/components/segmented_button.slint"; +export { Switch } from "./ui/components/switch.slint"; +export { TabBar, SecondaryTabBar } from "./ui/components/tab_bar.slint"; +export { TextButton } from "./ui/components/text_button.slint"; +export { TextField } from "./ui/components/text_field.slint"; +export { TimePickerPopup, Time } from "./ui/components/time_picker.slint"; +export { TonalButton } from "./ui/components/tonal_button.slint"; +export { TonalIconButton } from "./ui/components/tonal_icon_button.slint"; +export { ToolTip } from "./ui/components/tooltip.slint"; +export { Vertical } from "./ui/components/vertical.slint"; +export { Modal } from "./ui/components/modal.slint"; + +// items +export { ListItem } from "./ui/items/list_item.slint"; +export { NavigationItem, NavigationGroup } from "./ui/items/navigation_item.slint"; +export { MenuItem } from "./ui/items/menu_item.slint"; + +// styles +export { MaterialAnimations } from "./ui/styling/material_animations.slint"; +export { MaterialScheme, MaterialSchemes } from "./ui/styling/material_schemes.slint"; +export { MaterialStyleMetrics } from "./ui/styling/material_style_metrics.slint"; +export { MaterialPalette } from "./ui/styling/material_palette.slint"; +export { MaterialTypography } from "./ui/styling/material_typography.slint"; diff --git a/ui/themes/material_green_theme.json b/ui/themes/material_green_theme.json new file mode 100644 index 0000000..7cd677f --- /dev/null +++ b/ui/themes/material_green_theme.json @@ -0,0 +1,418 @@ +{ + "description": "TYPE: CUSTOM\nMaterial Theme Builder export 2025-08-29 10:20:31", + "seed": "#63A002", + "coreColors": { + "primary": "#63A002" + }, + "extendedColors": [], + "schemes": { + "light": { + "primary": "#4C662B", + "surfaceTint": "#4C662B", + "onPrimary": "#FFFFFF", + "primaryContainer": "#CDEDA3", + "onPrimaryContainer": "#354E16", + "secondary": "#586249", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#DCE7C8", + "onSecondaryContainer": "#404A33", + "tertiary": "#386663", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#BCECE7", + "onTertiaryContainer": "#1F4E4B", + "error": "#BA1A1A", + "onError": "#FFFFFF", + "errorContainer": "#FFDAD6", + "onErrorContainer": "#93000A", + "background": "#F9FAEF", + "onBackground": "#1A1C16", + "surface": "#F9FAEF", + "onSurface": "#1A1C16", + "surfaceVariant": "#E1E4D5", + "onSurfaceVariant": "#44483D", + "outline": "#75796C", + "outlineVariant": "#C5C8BA", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#2F312A", + "inverseOnSurface": "#F1F2E6", + "inversePrimary": "#B1D18A", + "primaryFixed": "#CDEDA3", + "onPrimaryFixed": "#102000", + "primaryFixedDim": "#B1D18A", + "onPrimaryFixedVariant": "#354E16", + "secondaryFixed": "#DCE7C8", + "onSecondaryFixed": "#151E0B", + "secondaryFixedDim": "#BFCBAD", + "onSecondaryFixedVariant": "#404A33", + "tertiaryFixed": "#BCECE7", + "onTertiaryFixed": "#00201E", + "tertiaryFixedDim": "#A0D0CB", + "onTertiaryFixedVariant": "#1F4E4B", + "surfaceDim": "#DADBD0", + "surfaceBright": "#F9FAEF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F3F4E9", + "surfaceContainer": "#EEEFE3", + "surfaceContainerHigh": "#E8E9DE", + "surfaceContainerHighest": "#E2E3D8" + }, + "light-medium-contrast": { + "primary": "#253D05", + "surfaceTint": "#4C662B", + "onPrimary": "#FFFFFF", + "primaryContainer": "#5A7539", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#303924", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#667157", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#083D3A", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#477572", + "onTertiaryContainer": "#FFFFFF", + "error": "#740006", + "onError": "#FFFFFF", + "errorContainer": "#CF2C27", + "onErrorContainer": "#FFFFFF", + "background": "#F9FAEF", + "onBackground": "#1A1C16", + "surface": "#F9FAEF", + "onSurface": "#0F120C", + "surfaceVariant": "#E1E4D5", + "onSurfaceVariant": "#34382D", + "outline": "#505449", + "outlineVariant": "#6B6F62", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#2F312A", + "inverseOnSurface": "#F1F2E6", + "inversePrimary": "#B1D18A", + "primaryFixed": "#5A7539", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#425C23", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#667157", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#4E5840", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#477572", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#2E5C59", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#C6C7BD", + "surfaceBright": "#F9FAEF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F3F4E9", + "surfaceContainer": "#E8E9DE", + "surfaceContainerHigh": "#DCDED3", + "surfaceContainerHighest": "#D1D3C8" + }, + "light-high-contrast": { + "primary": "#1C3200", + "surfaceTint": "#4C662B", + "onPrimary": "#FFFFFF", + "primaryContainer": "#375018", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#262F1A", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#434C35", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#003230", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#21504E", + "onTertiaryContainer": "#FFFFFF", + "error": "#600004", + "onError": "#FFFFFF", + "errorContainer": "#98000A", + "onErrorContainer": "#FFFFFF", + "background": "#F9FAEF", + "onBackground": "#1A1C16", + "surface": "#F9FAEF", + "onSurface": "#000000", + "surfaceVariant": "#E1E4D5", + "onSurfaceVariant": "#000000", + "outline": "#2A2D24", + "outlineVariant": "#474B40", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#2F312A", + "inverseOnSurface": "#FFFFFF", + "inversePrimary": "#B1D18A", + "primaryFixed": "#375018", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#213903", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#434C35", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#2C3620", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#21504E", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#033937", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#B8BAAF", + "surfaceBright": "#F9FAEF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F1F2E6", + "surfaceContainer": "#E2E3D8", + "surfaceContainerHigh": "#D4D5CA", + "surfaceContainerHighest": "#C6C7BD" + }, + "dark": { + "primary": "#B1D18A", + "surfaceTint": "#B1D18A", + "onPrimary": "#1F3701", + "primaryContainer": "#354E16", + "onPrimaryContainer": "#CDEDA3", + "secondary": "#BFCBAD", + "onSecondary": "#2A331E", + "secondaryContainer": "#404A33", + "onSecondaryContainer": "#DCE7C8", + "tertiary": "#A0D0CB", + "onTertiary": "#003735", + "tertiaryContainer": "#1F4E4B", + "onTertiaryContainer": "#BCECE7", + "error": "#FFB4AB", + "onError": "#690005", + "errorContainer": "#93000A", + "onErrorContainer": "#FFDAD6", + "background": "#12140E", + "onBackground": "#E2E3D8", + "surface": "#12140E", + "onSurface": "#E2E3D8", + "surfaceVariant": "#44483D", + "onSurfaceVariant": "#C5C8BA", + "outline": "#8F9285", + "outlineVariant": "#44483D", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E2E3D8", + "inverseOnSurface": "#2F312A", + "inversePrimary": "#4C662B", + "primaryFixed": "#CDEDA3", + "onPrimaryFixed": "#102000", + "primaryFixedDim": "#B1D18A", + "onPrimaryFixedVariant": "#354E16", + "secondaryFixed": "#DCE7C8", + "onSecondaryFixed": "#151E0B", + "secondaryFixedDim": "#BFCBAD", + "onSecondaryFixedVariant": "#404A33", + "tertiaryFixed": "#BCECE7", + "onTertiaryFixed": "#00201E", + "tertiaryFixedDim": "#A0D0CB", + "onTertiaryFixedVariant": "#1F4E4B", + "surfaceDim": "#12140E", + "surfaceBright": "#383A32", + "surfaceContainerLowest": "#0C0F09", + "surfaceContainerLow": "#1A1C16", + "surfaceContainer": "#1E201A", + "surfaceContainerHigh": "#282B24", + "surfaceContainerHighest": "#33362E" + }, + "dark-medium-contrast": { + "primary": "#C7E79E", + "surfaceTint": "#B1D18A", + "onPrimary": "#172B00", + "primaryContainer": "#7D9A59", + "onPrimaryContainer": "#000000", + "secondary": "#D5E1C2", + "onSecondary": "#1F2814", + "secondaryContainer": "#8A9579", + "onSecondaryContainer": "#000000", + "tertiary": "#B5E6E1", + "onTertiary": "#002B29", + "tertiaryContainer": "#6B9995", + "onTertiaryContainer": "#000000", + "error": "#FFD2CC", + "onError": "#540003", + "errorContainer": "#FF5449", + "onErrorContainer": "#000000", + "background": "#12140E", + "onBackground": "#E2E3D8", + "surface": "#12140E", + "onSurface": "#FFFFFF", + "surfaceVariant": "#44483D", + "onSurfaceVariant": "#DBDECF", + "outline": "#B0B3A6", + "outlineVariant": "#8E9285", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E2E3D8", + "inverseOnSurface": "#282B24", + "inversePrimary": "#364F17", + "primaryFixed": "#CDEDA3", + "onPrimaryFixed": "#081400", + "primaryFixedDim": "#B1D18A", + "onPrimaryFixedVariant": "#253D05", + "secondaryFixed": "#DCE7C8", + "onSecondaryFixed": "#0B1403", + "secondaryFixedDim": "#BFCBAD", + "onSecondaryFixedVariant": "#303924", + "tertiaryFixed": "#BCECE7", + "onTertiaryFixed": "#001413", + "tertiaryFixedDim": "#A0D0CB", + "onTertiaryFixedVariant": "#083D3A", + "surfaceDim": "#12140E", + "surfaceBright": "#43453D", + "surfaceContainerLowest": "#060804", + "surfaceContainerLow": "#1C1E18", + "surfaceContainer": "#262922", + "surfaceContainerHigh": "#31342C", + "surfaceContainerHighest": "#3C3F37" + }, + "dark-high-contrast": { + "primary": "#DAFBB0", + "surfaceTint": "#B1D18A", + "onPrimary": "#000000", + "primaryContainer": "#ADCD86", + "onPrimaryContainer": "#050E00", + "secondary": "#E9F4D5", + "onSecondary": "#000000", + "secondaryContainer": "#BCC7A9", + "onSecondaryContainer": "#060D01", + "tertiary": "#C9F9F5", + "onTertiary": "#000000", + "tertiaryContainer": "#9CCCC7", + "onTertiaryContainer": "#000E0D", + "error": "#FFECE9", + "onError": "#000000", + "errorContainer": "#FFAEA4", + "onErrorContainer": "#220001", + "background": "#12140E", + "onBackground": "#E2E3D8", + "surface": "#12140E", + "onSurface": "#FFFFFF", + "surfaceVariant": "#44483D", + "onSurfaceVariant": "#FFFFFF", + "outline": "#EEF2E2", + "outlineVariant": "#C1C4B6", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E2E3D8", + "inverseOnSurface": "#000000", + "inversePrimary": "#364F17", + "primaryFixed": "#CDEDA3", + "onPrimaryFixed": "#000000", + "primaryFixedDim": "#B1D18A", + "onPrimaryFixedVariant": "#081400", + "secondaryFixed": "#DCE7C8", + "onSecondaryFixed": "#000000", + "secondaryFixedDim": "#BFCBAD", + "onSecondaryFixedVariant": "#0B1403", + "tertiaryFixed": "#BCECE7", + "onTertiaryFixed": "#000000", + "tertiaryFixedDim": "#A0D0CB", + "onTertiaryFixedVariant": "#001413", + "surfaceDim": "#12140E", + "surfaceBright": "#4F5149", + "surfaceContainerLowest": "#000000", + "surfaceContainerLow": "#1E201A", + "surfaceContainer": "#2F312A", + "surfaceContainerHigh": "#3A3C35", + "surfaceContainerHighest": "#454840" + } + }, + "palettes": { + "primary": { + "0": "#000000", + "5": "#081400", + "10": "#102000", + "15": "#172B00", + "20": "#1F3700", + "25": "#264300", + "30": "#2F4F00", + "35": "#375C00", + "40": "#3F6900", + "50": "#518500", + "60": "#64A104", + "70": "#7DBD2A", + "80": "#97D945", + "90": "#B2F65F", + "95": "#D2FF9B", + "98": "#F0FFD7", + "99": "#F9FFE9", + "100": "#FFFFFF" + }, + "secondary": { + "0": "#000000", + "5": "#081400", + "10": "#121F04", + "15": "#1C2A0B", + "20": "#263515", + "25": "#31401F", + "30": "#3C4C2A", + "35": "#485734", + "40": "#54643F", + "50": "#6C7D56", + "60": "#85976E", + "70": "#A0B187", + "80": "#BBCDA1", + "90": "#D7E9BB", + "95": "#E5F7C9", + "98": "#F0FFD7", + "99": "#F9FFE9", + "100": "#FFFFFF" + }, + "tertiary": { + "0": "#000000", + "5": "#001413", + "10": "#00201E", + "15": "#002B29", + "20": "#003735", + "25": "#004340", + "30": "#00504C", + "35": "#005D59", + "40": "#046A66", + "50": "#30837F", + "60": "#4D9D98", + "70": "#69B8B3", + "80": "#85D4CF", + "90": "#A1F1EB", + "95": "#B0FFF9", + "98": "#E3FFFC", + "99": "#F2FFFD", + "100": "#FFFFFF" + }, + "neutral": { + "0": "#000000", + "5": "#10110D", + "10": "#1B1C18", + "15": "#252622", + "20": "#30312C", + "25": "#3B3C37", + "30": "#464742", + "35": "#52534D", + "40": "#5E5F59", + "50": "#777771", + "60": "#91918B", + "70": "#ABACA5", + "80": "#C7C7C0", + "90": "#E3E3DB", + "95": "#F2F1E9", + "98": "#FAFAF2", + "99": "#FDFCF5", + "100": "#FFFFFF" + }, + "neutral-variant": { + "0": "#000000", + "5": "#0E120A", + "10": "#191D14", + "15": "#23271D", + "20": "#2E3228", + "25": "#393D32", + "30": "#44483D", + "35": "#505449", + "40": "#5C6054", + "50": "#75796C", + "60": "#8F9285", + "70": "#A9AD9F", + "80": "#C5C8BA", + "90": "#E1E4D5", + "95": "#EFF2E3", + "98": "#F8FBEB", + "99": "#FBFEEE", + "100": "#FFFFFF" + } + } +} \ No newline at end of file diff --git a/ui/themes/material_purple_theme.json b/ui/themes/material_purple_theme.json new file mode 100644 index 0000000..4fa176b --- /dev/null +++ b/ui/themes/material_purple_theme.json @@ -0,0 +1,429 @@ +{ + "description": "TYPE: CUSTOM\nMaterial Theme Builder export 2025-08-28 04:01:30", + "seed": "#6750A4", + "coreColors": { + "primary": "#6750A4", + "secondary": "#958DA4", + "tertiary": "#B58392", + "neutral": "#938F94", + "neutralVariant": "#948F99" + }, + "extendedColors": [ + { + "name": "Custom Color 1", + "color": "#166EA6", + "description": "", + "harmonized": false + } + ], + "schemes": { + "light": { + "primary": "#65558F", + "surfaceTint": "#65558F", + "onPrimary": "#FFFFFF", + "primaryContainer": "#E9DDFF", + "onPrimaryContainer": "#4D3D75", + "secondary": "#65558F", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#E9DDFF", + "onSecondaryContainer": "#4D3D75", + "tertiary": "#8B4A61", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#FFD9E3", + "onTertiaryContainer": "#6F3349", + "error": "#BA1A1A", + "onError": "#FFFFFF", + "errorContainer": "#FFDAD6", + "onErrorContainer": "#93000A", + "background": "#FDF7FF", + "onBackground": "#1D1B20", + "surface": "#FEF7FF", + "onSurface": "#1D1B20", + "surfaceVariant": "#E7E0EB", + "onSurfaceVariant": "#49454E", + "outline": "#7A757F", + "outlineVariant": "#CAC4CF", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#322F35", + "inverseOnSurface": "#F5EFF7", + "inversePrimary": "#CFBDFE", + "primaryFixed": "#E9DDFF", + "onPrimaryFixed": "#201047", + "primaryFixedDim": "#CFBDFE", + "onPrimaryFixedVariant": "#4D3D75", + "secondaryFixed": "#E9DDFF", + "onSecondaryFixed": "#210F47", + "secondaryFixedDim": "#D0BCFE", + "onSecondaryFixedVariant": "#4D3D75", + "tertiaryFixed": "#FFD9E3", + "onTertiaryFixed": "#3A071E", + "tertiaryFixedDim": "#FFB0C9", + "onTertiaryFixedVariant": "#6F3349", + "surfaceDim": "#DED8E0", + "surfaceBright": "#FEF7FF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F8F1FA", + "surfaceContainer": "#F2ECF4", + "surfaceContainerHigh": "#ECE6EE", + "surfaceContainerHighest": "#E7E0E8" + }, + "light-medium-contrast": { + "primary": "#3C2D63", + "surfaceTint": "#65558F", + "onPrimary": "#FFFFFF", + "primaryContainer": "#74649F", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#3C2C63", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#74649E", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#5B2238", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#9C5870", + "onTertiaryContainer": "#FFFFFF", + "error": "#740006", + "onError": "#FFFFFF", + "errorContainer": "#CF2C27", + "onErrorContainer": "#FFFFFF", + "background": "#FDF7FF", + "onBackground": "#1D1B20", + "surface": "#FEF7FF", + "onSurface": "#121016", + "surfaceVariant": "#E7E0EB", + "onSurfaceVariant": "#38353D", + "outline": "#55515A", + "outlineVariant": "#706B75", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#322F35", + "inverseOnSurface": "#F5EFF7", + "inversePrimary": "#CFBDFE", + "primaryFixed": "#74649F", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#5B4C84", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#74649E", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#5B4B84", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#9C5870", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#804057", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#CAC5CC", + "surfaceBright": "#FEF7FF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F8F1FA", + "surfaceContainer": "#ECE6EE", + "surfaceContainerHigh": "#E1DBE3", + "surfaceContainerHighest": "#D5D0D8" + }, + "light-high-contrast": { + "primary": "#312259", + "surfaceTint": "#65558F", + "onPrimary": "#FFFFFF", + "primaryContainer": "#4F4078", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#322258", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#504078", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#4F182E", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#72354C", + "onTertiaryContainer": "#FFFFFF", + "error": "#600004", + "onError": "#FFFFFF", + "errorContainer": "#98000A", + "onErrorContainer": "#FFFFFF", + "background": "#FDF7FF", + "onBackground": "#1D1B20", + "surface": "#FEF7FF", + "onSurface": "#000000", + "surfaceVariant": "#E7E0EB", + "onSurfaceVariant": "#000000", + "outline": "#2E2B33", + "outlineVariant": "#4B4851", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#322F35", + "inverseOnSurface": "#FFFFFF", + "inversePrimary": "#CFBDFE", + "primaryFixed": "#4F4078", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#382960", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#504078", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#38295F", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#72354C", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#571F35", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#BCB7BF", + "surfaceBright": "#FEF7FF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F5EFF7", + "surfaceContainer": "#E7E0E8", + "surfaceContainerHigh": "#D8D2DA", + "surfaceContainerHighest": "#CAC5CC" + }, + "dark": { + "primary": "#CFBDFE", + "surfaceTint": "#CFBDFE", + "onPrimary": "#36275D", + "primaryContainer": "#4D3D75", + "onPrimaryContainer": "#E9DDFF", + "secondary": "#D0BCFE", + "onSecondary": "#36265D", + "secondaryContainer": "#4D3D75", + "onSecondaryContainer": "#E9DDFF", + "tertiary": "#FFB0C9", + "onTertiary": "#541D33", + "tertiaryContainer": "#6F3349", + "onTertiaryContainer": "#FFD9E3", + "error": "#FFB4AB", + "onError": "#690005", + "errorContainer": "#93000A", + "onErrorContainer": "#FFDAD6", + "background": "#141218", + "onBackground": "#E6E0E9", + "surface": "#141218", + "onSurface": "#E7E0E8", + "surfaceVariant": "#49454E", + "onSurfaceVariant": "#CAC4CF", + "outline": "#948F99", + "outlineVariant": "#49454E", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E7E0E8", + "inverseOnSurface": "#322F35", + "inversePrimary": "#65558F", + "primaryFixed": "#E9DDFF", + "onPrimaryFixed": "#201047", + "primaryFixedDim": "#CFBDFE", + "onPrimaryFixedVariant": "#4D3D75", + "secondaryFixed": "#E9DDFF", + "onSecondaryFixed": "#210F47", + "secondaryFixedDim": "#D0BCFE", + "onSecondaryFixedVariant": "#4D3D75", + "tertiaryFixed": "#FFD9E3", + "onTertiaryFixed": "#3A071E", + "tertiaryFixedDim": "#FFB0C9", + "onTertiaryFixedVariant": "#6F3349", + "surfaceDim": "#141218", + "surfaceBright": "#3B383E", + "surfaceContainerLowest": "#0F0D13", + "surfaceContainerLow": "#1D1B20", + "surfaceContainer": "#211F24", + "surfaceContainerHigh": "#2B292F", + "surfaceContainerHighest": "#36343A" + }, + "dark-medium-contrast": { + "primary": "#E3D6FF", + "surfaceTint": "#CFBDFE", + "onPrimary": "#2B1B52", + "primaryContainer": "#9887C5", + "onPrimaryContainer": "#000000", + "secondary": "#E3D6FF", + "onSecondary": "#2B1B51", + "secondaryContainer": "#9987C5", + "onSecondaryContainer": "#000000", + "tertiary": "#FFD0DD", + "onTertiary": "#471228", + "tertiaryContainer": "#C57B93", + "onTertiaryContainer": "#000000", + "error": "#FFD2CC", + "onError": "#540003", + "errorContainer": "#FF5449", + "onErrorContainer": "#000000", + "background": "#141218", + "onBackground": "#E6E0E9", + "surface": "#141218", + "onSurface": "#FFFFFF", + "surfaceVariant": "#49454E", + "onSurfaceVariant": "#E0DAE5", + "outline": "#B5B0BB", + "outlineVariant": "#938E99", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E7E0E8", + "inverseOnSurface": "#2B292F", + "inversePrimary": "#4E3F77", + "primaryFixed": "#E9DDFF", + "onPrimaryFixed": "#16033D", + "primaryFixedDim": "#CFBDFE", + "onPrimaryFixedVariant": "#3C2D63", + "secondaryFixed": "#E9DDFF", + "onSecondaryFixed": "#16033D", + "secondaryFixedDim": "#D0BCFE", + "onSecondaryFixedVariant": "#3C2C63", + "tertiaryFixed": "#FFD9E3", + "onTertiaryFixed": "#2B0013", + "tertiaryFixedDim": "#FFB0C9", + "onTertiaryFixedVariant": "#5B2238", + "surfaceDim": "#141218", + "surfaceBright": "#46434A", + "surfaceContainerLowest": "#08070B", + "surfaceContainerLow": "#1F1D22", + "surfaceContainer": "#29272D", + "surfaceContainerHigh": "#343138", + "surfaceContainerHighest": "#3F3C43" + }, + "dark-high-contrast": { + "primary": "#F5EDFF", + "surfaceTint": "#CFBDFE", + "onPrimary": "#000000", + "primaryContainer": "#CBB9FA", + "onPrimaryContainer": "#0F0033", + "secondary": "#F5EDFF", + "onSecondary": "#000000", + "secondaryContainer": "#CCB9FA", + "onSecondaryContainer": "#100032", + "tertiary": "#FFEBEF", + "onTertiary": "#000000", + "tertiaryContainer": "#FEABC5", + "onTertiaryContainer": "#20000D", + "error": "#FFECE9", + "onError": "#000000", + "errorContainer": "#FFAEA4", + "onErrorContainer": "#220001", + "background": "#141218", + "onBackground": "#E6E0E9", + "surface": "#141218", + "onSurface": "#FFFFFF", + "surfaceVariant": "#49454E", + "onSurfaceVariant": "#FFFFFF", + "outline": "#F4EDF9", + "outlineVariant": "#C6C0CB", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E7E0E8", + "inverseOnSurface": "#000000", + "inversePrimary": "#4E3F77", + "primaryFixed": "#E9DDFF", + "onPrimaryFixed": "#000000", + "primaryFixedDim": "#CFBDFE", + "onPrimaryFixedVariant": "#16033D", + "secondaryFixed": "#E9DDFF", + "onSecondaryFixed": "#000000", + "secondaryFixedDim": "#D0BCFE", + "onSecondaryFixedVariant": "#16033D", + "tertiaryFixed": "#FFD9E3", + "onTertiaryFixed": "#000000", + "tertiaryFixedDim": "#FFB0C9", + "onTertiaryFixedVariant": "#2B0013", + "surfaceDim": "#141218", + "surfaceBright": "#524F55", + "surfaceContainerLowest": "#000000", + "surfaceContainerLow": "#211F24", + "surfaceContainer": "#322F35", + "surfaceContainerHigh": "#3D3A40", + "surfaceContainerHighest": "#49454C" + } + }, + "palettes": { + "primary": { + "0": "#000000", + "5": "#160041", + "10": "#22005D", + "15": "#2D1067", + "20": "#381E72", + "25": "#432B7E", + "30": "#4F378A", + "35": "#5B4397", + "40": "#6750A4", + "50": "#8069BF", + "60": "#9A83DB", + "70": "#B69DF7", + "80": "#CFBCFF", + "90": "#E9DDFF", + "95": "#F6EEFF", + "98": "#FDF7FF", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "secondary": { + "0": "#000000", + "5": "#130E1F", + "10": "#1E192B", + "15": "#282335", + "20": "#332D40", + "25": "#3E384C", + "30": "#4A4458", + "35": "#564F64", + "40": "#625B70", + "50": "#7B748A", + "60": "#958DA4", + "70": "#B0A7BF", + "80": "#CCC2DB", + "90": "#E8DEF8", + "95": "#F6EDFF", + "98": "#FEF7FF", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "tertiary": { + "0": "#000000", + "5": "#240612", + "10": "#31101D", + "15": "#3D1B27", + "20": "#4A2532", + "25": "#56303D", + "30": "#633B48", + "35": "#704654", + "40": "#7E5260", + "50": "#996A78", + "60": "#B58392", + "70": "#D29DAC", + "80": "#EFB8C8", + "90": "#FFD9E3", + "95": "#FFECF0", + "98": "#FFF8F8", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "neutral": { + "0": "#000000", + "5": "#111111", + "10": "#1C1B1B", + "15": "#262526", + "20": "#313030", + "25": "#3C3B3B", + "30": "#484646", + "35": "#545252", + "40": "#605E5E", + "50": "#797676", + "60": "#939090", + "70": "#AEAAAA", + "80": "#C9C6C5", + "90": "#E6E1E1", + "95": "#F4F0EF", + "98": "#FDF8F8", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "neutral-variant": { + "0": "#000000", + "5": "#111112", + "10": "#1C1B1C", + "15": "#262526", + "20": "#313031", + "25": "#3C3B3C", + "30": "#484647", + "35": "#545253", + "40": "#605E5F", + "50": "#797677", + "60": "#939091", + "70": "#AEAAAB", + "80": "#C9C5C6", + "90": "#E6E1E2", + "95": "#F4F0F0", + "98": "#FDF8F9", + "99": "#FFFBFF", + "100": "#FFFFFF" + } + } +} \ No newline at end of file diff --git a/ui/themes/material_red_theme.json b/ui/themes/material_red_theme.json new file mode 100644 index 0000000..7b21f1d --- /dev/null +++ b/ui/themes/material_red_theme.json @@ -0,0 +1,418 @@ +{ + "description": "TYPE: CUSTOM\nMaterial Theme Builder export 2025-08-29 10:19:37", + "seed": "#B33B15", + "coreColors": { + "primary": "#B33B15" + }, + "extendedColors": [], + "schemes": { + "light": { + "primary": "#8F4C38", + "surfaceTint": "#8F4C38", + "onPrimary": "#FFFFFF", + "primaryContainer": "#FFDBD1", + "onPrimaryContainer": "#723523", + "secondary": "#77574E", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#FFDBD1", + "onSecondaryContainer": "#5D4037", + "tertiary": "#6C5D2F", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#F5E1A7", + "onTertiaryContainer": "#534619", + "error": "#BA1A1A", + "onError": "#FFFFFF", + "errorContainer": "#FFDAD6", + "onErrorContainer": "#93000A", + "background": "#FFF8F6", + "onBackground": "#231917", + "surface": "#FFF8F6", + "onSurface": "#231917", + "surfaceVariant": "#F5DED8", + "onSurfaceVariant": "#53433F", + "outline": "#85736E", + "outlineVariant": "#D8C2BC", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#392E2B", + "inverseOnSurface": "#FFEDE8", + "inversePrimary": "#FFB5A0", + "primaryFixed": "#FFDBD1", + "onPrimaryFixed": "#3A0B01", + "primaryFixedDim": "#FFB5A0", + "onPrimaryFixedVariant": "#723523", + "secondaryFixed": "#FFDBD1", + "onSecondaryFixed": "#2C150F", + "secondaryFixedDim": "#E7BDB2", + "onSecondaryFixedVariant": "#5D4037", + "tertiaryFixed": "#F5E1A7", + "onTertiaryFixed": "#231B00", + "tertiaryFixedDim": "#D8C58D", + "onTertiaryFixedVariant": "#534619", + "surfaceDim": "#E8D6D2", + "surfaceBright": "#FFF8F6", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#FFF1ED", + "surfaceContainer": "#FCEAE5", + "surfaceContainerHigh": "#F7E4E0", + "surfaceContainerHighest": "#F1DFDA" + }, + "light-medium-contrast": { + "primary": "#5D2514", + "surfaceTint": "#8F4C38", + "onPrimary": "#FFFFFF", + "primaryContainer": "#A15A45", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#4B2F28", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#87655C", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#41350A", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#7B6C3C", + "onTertiaryContainer": "#FFFFFF", + "error": "#740006", + "onError": "#FFFFFF", + "errorContainer": "#CF2C27", + "onErrorContainer": "#FFFFFF", + "background": "#FFF8F6", + "onBackground": "#231917", + "surface": "#FFF8F6", + "onSurface": "#180F0D", + "surfaceVariant": "#F5DED8", + "onSurfaceVariant": "#41332F", + "outline": "#5F4F4A", + "outlineVariant": "#7B6964", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#392E2B", + "inverseOnSurface": "#FFEDE8", + "inversePrimary": "#FFB5A0", + "primaryFixed": "#A15A45", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#84422F", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#87655C", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#6D4D45", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#7B6C3C", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#615426", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#D4C3BE", + "surfaceBright": "#FFF8F6", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#FFF1ED", + "surfaceContainer": "#F7E4E0", + "surfaceContainerHigh": "#EBD9D4", + "surfaceContainerHighest": "#DFCEC9" + }, + "light-high-contrast": { + "primary": "#501B0B", + "surfaceTint": "#8F4C38", + "onPrimary": "#FFFFFF", + "primaryContainer": "#753725", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#3F261E", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#60423A", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#362B02", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#55481C", + "onTertiaryContainer": "#FFFFFF", + "error": "#600004", + "onError": "#FFFFFF", + "errorContainer": "#98000A", + "onErrorContainer": "#FFFFFF", + "background": "#FFF8F6", + "onBackground": "#231917", + "surface": "#FFF8F6", + "onSurface": "#000000", + "surfaceVariant": "#F5DED8", + "onSurfaceVariant": "#000000", + "outline": "#372925", + "outlineVariant": "#554641", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#392E2B", + "inverseOnSurface": "#FFFFFF", + "inversePrimary": "#FFB5A0", + "primaryFixed": "#753725", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#592111", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#60423A", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#472C24", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#55481C", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#3D3206", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#C6B5B1", + "surfaceBright": "#FFF8F6", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#FFEDE8", + "surfaceContainer": "#F1DFDA", + "surfaceContainerHigh": "#E2D1CC", + "surfaceContainerHighest": "#D4C3BE" + }, + "dark": { + "primary": "#FFB5A0", + "surfaceTint": "#FFB5A0", + "onPrimary": "#561F0F", + "primaryContainer": "#723523", + "onPrimaryContainer": "#FFDBD1", + "secondary": "#E7BDB2", + "onSecondary": "#442A22", + "secondaryContainer": "#5D4037", + "onSecondaryContainer": "#FFDBD1", + "tertiary": "#D8C58D", + "onTertiary": "#3B2F05", + "tertiaryContainer": "#534619", + "onTertiaryContainer": "#F5E1A7", + "error": "#FFB4AB", + "onError": "#690005", + "errorContainer": "#93000A", + "onErrorContainer": "#FFDAD6", + "background": "#1A110F", + "onBackground": "#F1DFDA", + "surface": "#1A110F", + "onSurface": "#F1DFDA", + "surfaceVariant": "#53433F", + "onSurfaceVariant": "#D8C2BC", + "outline": "#A08C87", + "outlineVariant": "#53433F", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#F1DFDA", + "inverseOnSurface": "#392E2B", + "inversePrimary": "#8F4C38", + "primaryFixed": "#FFDBD1", + "onPrimaryFixed": "#3A0B01", + "primaryFixedDim": "#FFB5A0", + "onPrimaryFixedVariant": "#723523", + "secondaryFixed": "#FFDBD1", + "onSecondaryFixed": "#2C150F", + "secondaryFixedDim": "#E7BDB2", + "onSecondaryFixedVariant": "#5D4037", + "tertiaryFixed": "#F5E1A7", + "onTertiaryFixed": "#231B00", + "tertiaryFixedDim": "#D8C58D", + "onTertiaryFixedVariant": "#534619", + "surfaceDim": "#1A110F", + "surfaceBright": "#423734", + "surfaceContainerLowest": "#140C0A", + "surfaceContainerLow": "#231917", + "surfaceContainer": "#271D1B", + "surfaceContainerHigh": "#322825", + "surfaceContainerHighest": "#3D322F" + }, + "dark-medium-contrast": { + "primary": "#FFD2C6", + "surfaceTint": "#FFB5A0", + "onPrimary": "#481506", + "primaryContainer": "#CB7C65", + "onPrimaryContainer": "#000000", + "secondary": "#FED3C7", + "onSecondary": "#381F18", + "secondaryContainer": "#AE887E", + "onSecondaryContainer": "#000000", + "tertiary": "#EFDBA1", + "onTertiary": "#2F2500", + "tertiaryContainer": "#A0905C", + "onTertiaryContainer": "#000000", + "error": "#FFD2CC", + "onError": "#540003", + "errorContainer": "#FF5449", + "onErrorContainer": "#000000", + "background": "#1A110F", + "onBackground": "#F1DFDA", + "surface": "#1A110F", + "onSurface": "#FFFFFF", + "surfaceVariant": "#53433F", + "onSurfaceVariant": "#EED7D1", + "outline": "#C2ADA8", + "outlineVariant": "#A08C87", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#F1DFDA", + "inverseOnSurface": "#322825", + "inversePrimary": "#743624", + "primaryFixed": "#FFDBD1", + "onPrimaryFixed": "#280500", + "primaryFixedDim": "#FFB5A0", + "onPrimaryFixedVariant": "#5D2514", + "secondaryFixed": "#FFDBD1", + "onSecondaryFixed": "#200B06", + "secondaryFixedDim": "#E7BDB2", + "onSecondaryFixedVariant": "#4B2F28", + "tertiaryFixed": "#F5E1A7", + "onTertiaryFixed": "#171100", + "tertiaryFixedDim": "#D8C58D", + "onTertiaryFixedVariant": "#41350A", + "surfaceDim": "#1A110F", + "surfaceBright": "#4E423F", + "surfaceContainerLowest": "#0D0604", + "surfaceContainerLow": "#251B19", + "surfaceContainer": "#302623", + "surfaceContainerHigh": "#3B302D", + "surfaceContainerHighest": "#463B38" + }, + "dark-high-contrast": { + "primary": "#FFECE7", + "surfaceTint": "#FFB5A0", + "onPrimary": "#000000", + "primaryContainer": "#FFAF98", + "onPrimaryContainer": "#1E0300", + "secondary": "#FFECE7", + "onSecondary": "#000000", + "secondaryContainer": "#E3B9AE", + "onSecondaryContainer": "#190603", + "tertiary": "#FFEFC4", + "onTertiary": "#000000", + "tertiaryContainer": "#D4C289", + "onTertiaryContainer": "#100B00", + "error": "#FFECE9", + "onError": "#000000", + "errorContainer": "#FFAEA4", + "onErrorContainer": "#220001", + "background": "#1A110F", + "onBackground": "#F1DFDA", + "surface": "#1A110F", + "onSurface": "#FFFFFF", + "surfaceVariant": "#53433F", + "onSurfaceVariant": "#FFFFFF", + "outline": "#FFECE7", + "outlineVariant": "#D4BEB8", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#F1DFDA", + "inverseOnSurface": "#000000", + "inversePrimary": "#743624", + "primaryFixed": "#FFDBD1", + "onPrimaryFixed": "#000000", + "primaryFixedDim": "#FFB5A0", + "onPrimaryFixedVariant": "#280500", + "secondaryFixed": "#FFDBD1", + "onSecondaryFixed": "#000000", + "secondaryFixedDim": "#E7BDB2", + "onSecondaryFixedVariant": "#200B06", + "tertiaryFixed": "#F5E1A7", + "onTertiaryFixed": "#000000", + "tertiaryFixedDim": "#D8C58D", + "onTertiaryFixedVariant": "#171100", + "surfaceDim": "#1A110F", + "surfaceBright": "#5A4D4A", + "surfaceContainerLowest": "#000000", + "surfaceContainerLow": "#271D1B", + "surfaceContainer": "#392E2B", + "surfaceContainerHigh": "#443936", + "surfaceContainerHighest": "#504441" + } + }, + "palettes": { + "primary": { + "0": "#000000", + "5": "#280500", + "10": "#3B0900", + "15": "#4D0F00", + "20": "#5F1500", + "25": "#731B00", + "30": "#862200", + "35": "#9A2902", + "40": "#AB350F", + "50": "#CD4D26", + "60": "#EF663D", + "70": "#FF8B69", + "80": "#FFB5A0", + "90": "#FFDBD1", + "95": "#FFEDE8", + "98": "#FFF8F6", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "secondary": { + "0": "#000000", + "5": "#240803", + "10": "#311309", + "15": "#3E1C13", + "20": "#4A271C", + "25": "#573126", + "30": "#643C31", + "35": "#72483C", + "40": "#7F5347", + "50": "#9B6C5E", + "60": "#B88576", + "70": "#D59F8F", + "80": "#F2B9A9", + "90": "#FFDBD1", + "95": "#FFEDE8", + "98": "#FFF8F6", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "tertiary": { + "0": "#000000", + "5": "#161000", + "10": "#231B00", + "15": "#2F2500", + "20": "#3B2F00", + "25": "#483A00", + "30": "#564500", + "35": "#635109", + "40": "#705D16", + "50": "#8A752D", + "60": "#A58F44", + "70": "#C1AA5C", + "80": "#DEC574", + "90": "#FCE18D", + "95": "#FFF0C8", + "98": "#FFF8F0", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "neutral": { + "0": "#000000", + "5": "#15100E", + "10": "#201A18", + "15": "#2B2422", + "20": "#362F2D", + "25": "#413A38", + "30": "#4D4543", + "35": "#59514E", + "40": "#655C5A", + "50": "#7F7572", + "60": "#998E8C", + "70": "#B4A9A6", + "80": "#D0C4C1", + "90": "#EDE0DC", + "95": "#FBEEEB", + "98": "#FFF8F6", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "neutral-variant": { + "0": "#000000", + "5": "#190E0B", + "10": "#251915", + "15": "#30231F", + "20": "#3B2D29", + "25": "#473834", + "30": "#53433F", + "35": "#5F4F4A", + "40": "#6C5B56", + "50": "#85736E", + "60": "#A08C87", + "70": "#BCA7A1", + "80": "#D8C2BC", + "90": "#F5DED8", + "95": "#FFEDE8", + "98": "#FFF8F6", + "99": "#FFFBFF", + "100": "#FFFFFF" + } + } +} \ No newline at end of file diff --git a/ui/themes/material_slint_theme.json b/ui/themes/material_slint_theme.json new file mode 100644 index 0000000..8204324 --- /dev/null +++ b/ui/themes/material_slint_theme.json @@ -0,0 +1,418 @@ +{ + "description": "TYPE: CUSTOM\nMaterial Theme Builder export 2025-08-29 10:22:12", + "seed": "#2379F4", + "coreColors": { + "primary": "#2379F4" + }, + "extendedColors": [], + "schemes": { + "light": { + "primary": "#445E91", + "surfaceTint": "#445E91", + "onPrimary": "#FFFFFF", + "primaryContainer": "#D8E2FF", + "onPrimaryContainer": "#2B4678", + "secondary": "#575E71", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#DBE2F9", + "onSecondaryContainer": "#3F4759", + "tertiary": "#715573", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#FCD7FB", + "onTertiaryContainer": "#583E5B", + "error": "#BA1A1A", + "onError": "#FFFFFF", + "errorContainer": "#FFDAD6", + "onErrorContainer": "#93000A", + "background": "#F9F9FF", + "onBackground": "#1A1B20", + "surface": "#F9F9FF", + "onSurface": "#1A1B20", + "surfaceVariant": "#E1E2EC", + "onSurfaceVariant": "#44474F", + "outline": "#75777F", + "outlineVariant": "#C4C6D0", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#2F3036", + "inverseOnSurface": "#F0F0F7", + "inversePrimary": "#ADC6FF", + "primaryFixed": "#D8E2FF", + "onPrimaryFixed": "#001A42", + "primaryFixedDim": "#ADC6FF", + "onPrimaryFixedVariant": "#2B4678", + "secondaryFixed": "#DBE2F9", + "onSecondaryFixed": "#141B2C", + "secondaryFixedDim": "#BFC6DC", + "onSecondaryFixedVariant": "#3F4759", + "tertiaryFixed": "#FCD7FB", + "onTertiaryFixed": "#29132D", + "tertiaryFixedDim": "#DEBCDF", + "onTertiaryFixedVariant": "#583E5B", + "surfaceDim": "#D9D9E0", + "surfaceBright": "#F9F9FF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F3F3FA", + "surfaceContainer": "#EEEDF4", + "surfaceContainerHigh": "#E8E7EF", + "surfaceContainerHighest": "#E2E2E9" + }, + "light-medium-contrast": { + "primary": "#183566", + "surfaceTint": "#445E91", + "onPrimary": "#FFFFFF", + "primaryContainer": "#536DA1", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#2E3647", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#656D80", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#462D49", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#816383", + "onTertiaryContainer": "#FFFFFF", + "error": "#740006", + "onError": "#FFFFFF", + "errorContainer": "#CF2C27", + "onErrorContainer": "#FFFFFF", + "background": "#F9F9FF", + "onBackground": "#1A1B20", + "surface": "#F9F9FF", + "onSurface": "#0F1116", + "surfaceVariant": "#E1E2EC", + "onSurfaceVariant": "#33363E", + "outline": "#50525A", + "outlineVariant": "#6A6D75", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#2F3036", + "inverseOnSurface": "#F0F0F7", + "inversePrimary": "#ADC6FF", + "primaryFixed": "#536DA1", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#3A5487", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#656D80", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#4D5567", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#816383", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#674C69", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#C6C6CD", + "surfaceBright": "#F9F9FF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F3F3FA", + "surfaceContainer": "#E8E7EF", + "surfaceContainerHigh": "#DCDCE3", + "surfaceContainerHighest": "#D1D1D8" + }, + "light-high-contrast": { + "primary": "#0A2B5B", + "surfaceTint": "#445E91", + "onPrimary": "#FFFFFF", + "primaryContainer": "#2E487A", + "onPrimaryContainer": "#FFFFFF", + "secondary": "#242C3D", + "onSecondary": "#FFFFFF", + "secondaryContainer": "#41495B", + "onSecondaryContainer": "#FFFFFF", + "tertiary": "#3B233F", + "onTertiary": "#FFFFFF", + "tertiaryContainer": "#5A405D", + "onTertiaryContainer": "#FFFFFF", + "error": "#600004", + "onError": "#FFFFFF", + "errorContainer": "#98000A", + "onErrorContainer": "#FFFFFF", + "background": "#F9F9FF", + "onBackground": "#1A1B20", + "surface": "#F9F9FF", + "onSurface": "#000000", + "surfaceVariant": "#E1E2EC", + "onSurfaceVariant": "#000000", + "outline": "#292C33", + "outlineVariant": "#464951", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#2F3036", + "inverseOnSurface": "#FFFFFF", + "inversePrimary": "#ADC6FF", + "primaryFixed": "#2E487A", + "onPrimaryFixed": "#FFFFFF", + "primaryFixedDim": "#143162", + "onPrimaryFixedVariant": "#FFFFFF", + "secondaryFixed": "#41495B", + "onSecondaryFixed": "#FFFFFF", + "secondaryFixedDim": "#2B3344", + "onSecondaryFixedVariant": "#FFFFFF", + "tertiaryFixed": "#5A405D", + "onTertiaryFixed": "#FFFFFF", + "tertiaryFixedDim": "#422A46", + "onTertiaryFixedVariant": "#FFFFFF", + "surfaceDim": "#B8B8BF", + "surfaceBright": "#F9F9FF", + "surfaceContainerLowest": "#FFFFFF", + "surfaceContainerLow": "#F0F0F7", + "surfaceContainer": "#E2E2E9", + "surfaceContainerHigh": "#D4D4DB", + "surfaceContainerHighest": "#C6C6CD" + }, + "dark": { + "primary": "#ADC6FF", + "surfaceTint": "#ADC6FF", + "onPrimary": "#112F60", + "primaryContainer": "#2B4678", + "onPrimaryContainer": "#D8E2FF", + "secondary": "#BFC6DC", + "onSecondary": "#293041", + "secondaryContainer": "#3F4759", + "onSecondaryContainer": "#DBE2F9", + "tertiary": "#DEBCDF", + "onTertiary": "#402843", + "tertiaryContainer": "#583E5B", + "onTertiaryContainer": "#FCD7FB", + "error": "#FFB4AB", + "onError": "#690005", + "errorContainer": "#93000A", + "onErrorContainer": "#FFDAD6", + "background": "#111318", + "onBackground": "#E2E2E9", + "surface": "#111318", + "onSurface": "#E2E2E9", + "surfaceVariant": "#44474F", + "onSurfaceVariant": "#C4C6D0", + "outline": "#8E9099", + "outlineVariant": "#44474F", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E2E2E9", + "inverseOnSurface": "#2F3036", + "inversePrimary": "#445E91", + "primaryFixed": "#D8E2FF", + "onPrimaryFixed": "#001A42", + "primaryFixedDim": "#ADC6FF", + "onPrimaryFixedVariant": "#2B4678", + "secondaryFixed": "#DBE2F9", + "onSecondaryFixed": "#141B2C", + "secondaryFixedDim": "#BFC6DC", + "onSecondaryFixedVariant": "#3F4759", + "tertiaryFixed": "#FCD7FB", + "onTertiaryFixed": "#29132D", + "tertiaryFixedDim": "#DEBCDF", + "onTertiaryFixedVariant": "#583E5B", + "surfaceDim": "#111318", + "surfaceBright": "#37393E", + "surfaceContainerLowest": "#0C0E13", + "surfaceContainerLow": "#1A1B20", + "surfaceContainer": "#1E1F25", + "surfaceContainerHigh": "#282A2F", + "surfaceContainerHighest": "#33353A" + }, + "dark-medium-contrast": { + "primary": "#CFDCFF", + "surfaceTint": "#ADC6FF", + "onPrimary": "#012454", + "primaryContainer": "#7790C7", + "onPrimaryContainer": "#000000", + "secondary": "#D5DCF3", + "onSecondary": "#1E2636", + "secondaryContainer": "#8990A5", + "onSecondaryContainer": "#000000", + "tertiary": "#F5D1F5", + "onTertiary": "#341D38", + "tertiaryContainer": "#A687A7", + "onTertiaryContainer": "#000000", + "error": "#FFD2CC", + "onError": "#540003", + "errorContainer": "#FF5449", + "onErrorContainer": "#000000", + "background": "#111318", + "onBackground": "#E2E2E9", + "surface": "#111318", + "onSurface": "#FFFFFF", + "surfaceVariant": "#44474F", + "onSurfaceVariant": "#DADCE6", + "outline": "#B0B1BB", + "outlineVariant": "#8E9099", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E2E2E9", + "inverseOnSurface": "#282A2F", + "inversePrimary": "#2D4779", + "primaryFixed": "#D8E2FF", + "onPrimaryFixed": "#00102E", + "primaryFixedDim": "#ADC6FF", + "onPrimaryFixedVariant": "#183566", + "secondaryFixed": "#DBE2F9", + "onSecondaryFixed": "#091121", + "secondaryFixedDim": "#BFC6DC", + "onSecondaryFixedVariant": "#2E3647", + "tertiaryFixed": "#FCD7FB", + "onTertiaryFixed": "#1E0822", + "tertiaryFixedDim": "#DEBCDF", + "onTertiaryFixedVariant": "#462D49", + "surfaceDim": "#111318", + "surfaceBright": "#43444A", + "surfaceContainerLowest": "#06070C", + "surfaceContainerLow": "#1C1D22", + "surfaceContainer": "#26282D", + "surfaceContainerHigh": "#313238", + "surfaceContainerHighest": "#3C3D43" + }, + "dark-high-contrast": { + "primary": "#ECEFFF", + "surfaceTint": "#ADC6FF", + "onPrimary": "#000000", + "primaryContainer": "#A9C2FC", + "onPrimaryContainer": "#000A22", + "secondary": "#ECEFFF", + "onSecondary": "#000000", + "secondaryContainer": "#BBC2D8", + "onSecondaryContainer": "#040B1B", + "tertiary": "#FFEAFC", + "onTertiary": "#000000", + "tertiaryContainer": "#DAB8DB", + "onTertiaryContainer": "#17031C", + "error": "#FFECE9", + "onError": "#000000", + "errorContainer": "#FFAEA4", + "onErrorContainer": "#220001", + "background": "#111318", + "onBackground": "#E2E2E9", + "surface": "#111318", + "onSurface": "#FFFFFF", + "surfaceVariant": "#44474F", + "onSurfaceVariant": "#FFFFFF", + "outline": "#EEEFF9", + "outlineVariant": "#C1C2CC", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#E2E2E9", + "inverseOnSurface": "#000000", + "inversePrimary": "#2D4779", + "primaryFixed": "#D8E2FF", + "onPrimaryFixed": "#000000", + "primaryFixedDim": "#ADC6FF", + "onPrimaryFixedVariant": "#00102E", + "secondaryFixed": "#DBE2F9", + "onSecondaryFixed": "#000000", + "secondaryFixedDim": "#BFC6DC", + "onSecondaryFixedVariant": "#091121", + "tertiaryFixed": "#FCD7FB", + "onTertiaryFixed": "#000000", + "tertiaryFixedDim": "#DEBCDF", + "onTertiaryFixedVariant": "#1E0822", + "surfaceDim": "#111318", + "surfaceBright": "#4E5056", + "surfaceContainerLowest": "#000000", + "surfaceContainerLow": "#1E1F25", + "surfaceContainer": "#2F3036", + "surfaceContainerHigh": "#3A3B41", + "surfaceContainerHighest": "#45474C" + } + }, + "palettes": { + "primary": { + "0": "#000000", + "5": "#00102D", + "10": "#001A42", + "15": "#002455", + "20": "#002E6A", + "25": "#00397F", + "30": "#004495", + "35": "#004FAB", + "40": "#005AC2", + "50": "#1572ED", + "60": "#4D8EFF", + "70": "#81AAFF", + "80": "#ADC6FF", + "90": "#D8E2FF", + "95": "#EDF0FF", + "98": "#F9F9FF", + "99": "#FEFBFF", + "100": "#FFFFFF" + }, + "secondary": { + "0": "#000000", + "5": "#031029", + "10": "#0E1B34", + "15": "#19253F", + "20": "#24304A", + "25": "#2F3B56", + "30": "#3A4762", + "35": "#46526E", + "40": "#525E7B", + "50": "#6A7794", + "60": "#8491AF", + "70": "#9EABCB", + "80": "#BAC6E7", + "90": "#D8E2FF", + "95": "#EDF0FF", + "98": "#F9F9FF", + "99": "#FEFBFF", + "100": "#FFFFFF" + }, + "tertiary": { + "0": "#000000", + "5": "#23012A", + "10": "#2F0C36", + "15": "#3A1741", + "20": "#46224C", + "25": "#522D58", + "30": "#5F3964", + "35": "#6B4471", + "40": "#78507D", + "50": "#936897", + "60": "#AE82B2", + "70": "#CB9CCE", + "80": "#E7B6EB", + "90": "#FED6FF", + "95": "#FFEBFC", + "98": "#FFF7FA", + "99": "#FFFBFF", + "100": "#FFFFFF" + }, + "neutral": { + "0": "#000000", + "5": "#101114", + "10": "#1B1B1F", + "15": "#252629", + "20": "#303034", + "25": "#3B3B3F", + "30": "#46464A", + "35": "#525256", + "40": "#5E5E62", + "50": "#77777A", + "60": "#919094", + "70": "#ABABAF", + "80": "#C7C6CA", + "90": "#E3E2E6", + "95": "#F2F0F4", + "98": "#FAF8FD", + "99": "#FEFBFF", + "100": "#FFFFFF" + }, + "neutral-variant": { + "0": "#000000", + "5": "#0E1118", + "10": "#191B22", + "15": "#23262D", + "20": "#2E3038", + "25": "#393B43", + "30": "#44474F", + "35": "#50525A", + "40": "#5C5E66", + "50": "#75777F", + "60": "#8E9099", + "70": "#A9ABB4", + "80": "#C4C6D0", + "90": "#E1E2EC", + "95": "#EFF0FA", + "98": "#F9F9FF", + "99": "#FEFBFF", + "100": "#FFFFFF" + } + } +} \ No newline at end of file diff --git a/ui/ui/components/app_bar.slint b/ui/ui/components/app_bar.slint new file mode 100644 index 0000000..774e15e --- /dev/null +++ b/ui/ui/components/app_bar.slint @@ -0,0 +1,256 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { IconButton } from "./icon_button.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialTypography, TextStyle } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { IconButtonItem } from "./bottom_app_bar.slint"; + +component BaseAppBar { + in property title; + in property leading_button; + in property show_background; + in property <[IconButtonItem]> trailing_buttons; + in property horizontal_alignment; + in property spacing; + in property vertical_spacing; + in property two_rows; + in property text_style; + in property text_padding; + in property appbar_padding_right: 0; + in property appbar_padding_top: 0; + in property appbar_padding_bottom: 0; + + callback leading_button_clicked(); + callback trailing_button_clicked(index: int); + + min_width: layout.min_width; + min_height: layout.min_height; + + Rectangle { + background: root.show_background ? MaterialPalette.surface_container : MaterialPalette.surface; + + layout := VerticalLayout { + padding_top: root.appbar_padding_top; + padding_bottom: root.appbar_padding_bottom; + min_width: top_layout.min_width; + spacing: root.vertical_spacing; + + top_layout := HorizontalLayout { + padding_left: root.spacing; + padding_right: root.appbar_padding_right; + spacing: MaterialStyleMetrics.spacing_6; + + if root.leading_button.icon.width > 0 && root.leading_button.icon.height > 0 : VerticalLayout { + alignment: center; + + IconButton { + icon: root.leading_button.icon; + enabled: root.leading_button.enabled; + tooltip: root.leading_button.tooltip; + + clicked => { + root.leading_button_clicked(); + } + } + } + + if !root.two_rows : MaterialText { + horizontal_stretch: 1; + text: root.title; + vertical_alignment: center; + horizontal_alignment: root.horizontal_alignment; + color: MaterialPalette.on_surface; + overflow: elide; + style: root.text_style; + } + + // spacer + if root.two_rows : Rectangle { + horizontal_stretch: 1; + } + + if root.trailing_buttons.length > 0 : VerticalLayout { + alignment: center; + + HorizontalLayout { + spacing: top_layout.spacing; + + for item[index] in root.trailing_buttons : IconButton { + icon: item.icon; + enabled: item.enabled; + tooltip: item.tooltip; + + clicked => { + root.trailing_button_clicked(index); + } + } + } + } + } + + if root.two_rows && root.title != "" : HorizontalLayout { + padding_left: root.text_padding; + padding_right: self.padding_left; + + MaterialText { + text: root.title; + horizontal_alignment: root.horizontal_alignment; + color: MaterialPalette.on_surface; + overflow: elide; + style: root.text_style; + } + } + } + } +} + +export component AppBar { + in property title; + in property leading_button; + in property trailing_button; + in property show_background; + + callback leading_button_clicked(); + callback trailing_button_clicked(); + + min_height: max(MaterialStyleMetrics.size_64, base.min_height); + + HorizontalLayout { + base := BaseAppBar { + title: root.title; + horizontal_alignment: center; + + leading_button: root.leading_button; + trailing_buttons: [root.trailing_button]; + show_background: root.show_background; + + appbar_padding_right: self.padding_left; + appbar_padding_top: MaterialStyleMetrics.padding_8; + appbar_padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_6; + text_style: MaterialTypography.title_large; + + leading_button_clicked => { + root.leading_button_clicked(); + } + + trailing_button_clicked(index) => { + root.trailing_button_clicked(); + } + } + } +} + +export component SmallAppBar { + in property title; + in property leading_button; + in property <[IconButtonItem]> trailing_buttons; + in property show_background; + + callback leading_button_clicked(); + callback trailing_button_clicked(index: int); + + min_height: max(MaterialStyleMetrics.size_64, base.min_height); + + HorizontalLayout { + base := BaseAppBar { + title: root.title; + horizontal_alignment: left; + leading_button: root.leading_button; + trailing_buttons: root.trailing_buttons; + show_background: root.show_background; + appbar_padding_right: self.padding_left; + appbar_padding_top: MaterialStyleMetrics.padding_8; + appbar_padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_4; + text_style: MaterialTypography.title_large; + + leading_button_clicked => { + root.leading_button_clicked(); + } + + trailing_button_clicked(index) => { + root.trailing_button_clicked(index); + } + } + } +} + +export component MediumAppBar { + in property title; + in property leading_button; + in property <[IconButtonItem]> trailing_buttons; + in property show_background; + + callback leading_button_clicked(); + callback trailing_button_clicked(index: int); + + min_height: max(MaterialStyleMetrics.size_64, base.min_height); + + HorizontalLayout { + base := BaseAppBar { + title: root.title; + horizontal_alignment: left; + leading_button: root.leading_button; + trailing_buttons: root.trailing_buttons; + show_background: root.show_background; + appbar_padding_right: self.padding_left; + appbar_padding_top: MaterialStyleMetrics.padding_8; + appbar_padding_bottom: MaterialStyleMetrics.padding_24; + vertical_spacing: MaterialStyleMetrics.spacing_4; + spacing: MaterialStyleMetrics.spacing_4; + two_rows: true; + text_style: MaterialTypography.headline_small; + text_padding: MaterialStyleMetrics.padding_16; + + leading_button_clicked => { + root.leading_button_clicked(); + } + + trailing_button_clicked(index) => { + root.trailing_button_clicked(index); + } + } + } +} + +export component LargeAppBar { + in property title; + in property leading_button; + in property <[IconButtonItem]> trailing_buttons; + in property show_background; + + callback leading_button_clicked(); + callback trailing_button_clicked(index: int); + + min_height: max(MaterialStyleMetrics.size_64, base.min_height); + + HorizontalLayout { + base := BaseAppBar { + title: root.title; + horizontal_alignment: left; + leading_button: root.leading_button; + trailing_buttons: root.trailing_buttons; + show_background: root.show_background; + appbar_padding_right: self.padding_left; + appbar_padding_top: MaterialStyleMetrics.padding_8; + appbar_padding_bottom: MaterialStyleMetrics.padding_28; + vertical_spacing: MaterialStyleMetrics.spacing_40; + spacing: MaterialStyleMetrics.spacing_4; + two_rows: true; + text_style: MaterialTypography.headline_medium; + text_padding: MaterialStyleMetrics.padding_16; + + leading_button_clicked => { + root.leading_button_clicked(); + } + + trailing_button_clicked(index) => { + root.trailing_button_clicked(index); + } + } + } +} diff --git a/ui/ui/components/badge.slint b/ui/ui/components/badge.slint new file mode 100644 index 0000000..eacae3e --- /dev/null +++ b/ui/ui/components/badge.slint @@ -0,0 +1,36 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialText } from "material_text.slint"; + +export component Badge { + in property text; + + width: max(MaterialStyleMetrics.size_16, label.width + 2 * MaterialStyleMetrics.padding_4); + height: max(MaterialStyleMetrics.size_16, label.height); + + background_layer := Rectangle { + width: parent.width; + height: parent.height; + border_radius: self.height / 2; + background: MaterialPalette.error; + } + + label := MaterialText { + text: root.text; + color: MaterialPalette.on_error; + vertical_alignment: center; + horizontal_alignment: center; + style: MaterialTypography.label_small; + } + + states [ + small when root.text == "" : { + background_layer.width: MaterialStyleMetrics.size_6; + background_layer.height: MaterialStyleMetrics.size_6; + } + ] +} diff --git a/ui/ui/components/base_button.slint b/ui/ui/components/base_button.slint new file mode 100644 index 0000000..950e734 --- /dev/null +++ b/ui/ui/components/base_button.slint @@ -0,0 +1,72 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { StateLayerArea } from "./state_layer.slint"; +import { MaterialText } from "./material_text.slint"; +import { Icon } from "./icon.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { Avatar } from "./list.slint"; + +export component BaseButton inherits StateLayerArea { + in property icon; + in property icon_color: self.color; + in property text; + in property button_horizontal_padding: MaterialStyleMetrics.padding_24; + in property button_vertical_padding: MaterialStyleMetrics.padding_10; + in property button_padding_left: self.button_horizontal_padding; + in property button_padding_right: self.button_horizontal_padding; + in property button_padding_top: self.button_vertical_padding; + in property button_padding_bottom: self.button_vertical_padding; + in property spacing: MaterialStyleMetrics.spacing_8; + in property min_layout_width: MaterialStyleMetrics.size_40; + in property min_layout_height: MaterialStyleMetrics.size_40; + in property icon_size: MaterialStyleMetrics.icon_size_18; + in property avatar_icon; + in property avatar_size; + in property avatar_background: #00000000; + out property has_icon: root.icon.width > 0 && root.icon.height > 0; + out property has_avatar: root.avatar_icon.width > 0 && root.avatar_icon.height > 0; + + min_width: max(root.min_layout_width, layout.min_width); + min_height: max(root.min_layout_height, layout.min_height); + tooltip_offset: root.height / 2 + root.icon_size / 2 + MaterialStyleMetrics.padding_14; + + layout := HorizontalLayout { + padding_left: root.button_padding_left; + padding_right: root.button_padding_right; + padding_top: root.button_padding_top; + padding_bottom: root.button_padding_bottom; + spacing: root.spacing; + alignment: center; + + if root.has_icon || root.has_avatar : VerticalLayout { + alignment: center; + + if root.has_avatar && root.avatar_size > 0 : Avatar { + width: root.avatar_size; + height: self.width; + image: root.avatar_icon; + background: root.avatar_background; + } + + if root.has_icon : Icon { + source: root.icon; + colorize: root.icon_color; + opacity: root.enabled ? 100% : 38%; + width: root.icon_size; + } + } + + if root.text != "" : MaterialText { + text: root.text; + style: MaterialTypography.label_large; + color: root.color; + opacity: root.enabled ? 100% : 38%; + overflow: clip; + vertical_alignment: center; + } + + @children + } +} diff --git a/ui/ui/components/base_navigation.slint b/ui/ui/components/base_navigation.slint new file mode 100644 index 0000000..a8a4100 --- /dev/null +++ b/ui/ui/components/base_navigation.slint @@ -0,0 +1,51 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { NavigationItem } from "../items/navigation_item.slint"; + +export component BaseNavigationItemTemplate { + in property icon; + in property selected_icon; + in property text; + in property index; + in property selected; + in property show_badge; + in property badge; + + callback clicked; + callback pointer_event(event: PointerEvent, position: Point); + + accessible-role: tab; + accessible-label: root.text; + accessible-item-index: root.index; + accessible-item-selectable: true; + accessible-item-selected: root.selected; + accessible-action-default => { self.clicked(); } + + @children + +} + +export component BaseNavigation { + in property <[NavigationItem]> items; + in_out property current_index; + + callback index_changed(index: int); + + accessible-role: tab-list; + // accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-index; + // accessible-label: root.title; + accessible-item-count: root.items.length; + + @children + + protected function select(index: int) { + if index < 0 || index >= root.items.length { + return; + } + + root.current_index = index; + root.index_changed(index); + } + +} diff --git a/ui/ui/components/bottom_app_bar.slint b/ui/ui/components/bottom_app_bar.slint new file mode 100644 index 0000000..daea6ac --- /dev/null +++ b/ui/ui/components/bottom_app_bar.slint @@ -0,0 +1,64 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { IconButton } from "./icon_button.slint"; +import { FloatingActionButton, FABStyle } from "./floating_action_button.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export struct IconButtonItem { + icon: image, + tooltip: string, + enabled: bool +} + +export component BottomAppBar { + in property <[IconButtonItem]> icon_buttons; + in property fab_icon; + + callback fab_clicked(); + callback icon_button_clicked(index: int); + + min_height: max(MaterialStyleMetrics.size_80, layout.min_height); + + Rectangle { + background: MaterialPalette.surface_container; + + layout := HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_4; + padding_right: MaterialStyleMetrics.padding_16; + + VerticalLayout { + alignment: center; + + HorizontalLayout { + for button[index] in root.icon_buttons : IconButton { + icon: button.icon; + enabled: button.enabled; + tooltip: button.tooltip; + + clicked => { + root.icon_button_clicked(index); + } + } + } + } + + // spacer + Rectangle {} + + if root.fab_icon.width > 0 && root.fab_icon.height > 0 : VerticalLayout { + alignment: center; + + FloatingActionButton { + icon: root.fab_icon; + style: FABStyle.standard; + + clicked => { + root.fab_clicked(); + } + } + } + } + } +} diff --git a/ui/ui/components/bottom_sheet.slint b/ui/ui/components/bottom_sheet.slint new file mode 100644 index 0000000..0883352 --- /dev/null +++ b/ui/ui/components/bottom_sheet.slint @@ -0,0 +1,125 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { Horizontal } from "./horizontal.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { Modal } from "./modal.slint"; + +component BottomSheet { + callback drag_moved(offset_y: length); + callback pressed(); + callback released(); + + elevation := Elevation { + width: 100%; + height: 100%; + level: 3; + border_radius: MaterialStyleMetrics.border_radius_16; + } + + TouchArea { + Rectangle { + background: MaterialPalette.surface_container_low; + border_top_left_radius: MaterialStyleMetrics.border_radius_16; + border_top_right_radius: self.border_top_left_radius; + + VerticalLayout { + alignment: start; + + drag_handle := TouchArea { + height: MaterialStyleMetrics.size_36; + + Rectangle { + width: MaterialStyleMetrics.size_32; + height: MaterialStyleMetrics.size_4; + background: MaterialPalette.outline; + border_radius: self.height / 2; + } + + moved => { + root.drag_moved(self.pressed_y - self.mouse_y); + } + + changed pressed => { + if self.pressed { + root.pressed(); + return; + } + + root.released(); + } + } + + Horizontal { + @children + } + } + } + } +} + +export component ModalBottomSheet inherits PopupWindow { + close_policy: no_auto_close; + + property drag_margin: MaterialStyleMetrics.padding_56; + + modal := Modal { + width: 100%; + height: 100%; + + sheet := BottomSheet { + property y_duration: MaterialAnimations.standard_accelerate_duration; + property y_drag_start; + property height_drag_start; + + x: (parent.width - self.width) / 2; + y: parent.height; + width: min(MaterialStyleMetrics.size_640, parent.width - 2 * MaterialStyleMetrics.padding_56); + + @children + + drag_moved(offset_y) => { + self.y_duration = 0; + self.y = max(self.y - offset_y, self.y_drag_start); + self.height += offset_y; + } + + pressed => { + self.y_drag_start = self.y; + self.height_drag_start = self.height; + } + + released => { + if self.y >= root.height - root.drag_margin { + root.close(); + return; + } + + self.y_duration = MaterialAnimations.standard_accelerate_duration; + self.height = self.height_drag_start; + self.y = self.y_drag_start; + } + + animate y, height { + duration: self.y_duration; + easing: MaterialAnimations.standard_easing; + } + } + + clicked => { + root.close(); + } + } + + Timer { + interval: 50ms; + + triggered => { + sheet.y = modal.height - sheet.height; + self.running = false; + } + } +} diff --git a/ui/ui/components/card.slint b/ui/ui/components/card.slint new file mode 100644 index 0000000..6afebef --- /dev/null +++ b/ui/ui/components/card.slint @@ -0,0 +1,112 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { Elevation } from "./elevation.slint"; +import { StateLayerArea } from "./state_layer.slint"; + +component BaseCard { + in property clickable; + in property has_elevation; + in property background; + in property border_color; + in property border_width; + + callback clicked(); + + forward_focus: state_layer; + + if root.has_elevation : Elevation { + width: 100%; + height: 100%; + border_radius: background_layer.border_radius; + level: 1; + } + + background_layer := Rectangle { + background: root.background; + border_radius: MaterialStyleMetrics.border_radius_12; + border_width: root.border_width; + border_color: root.border_color; + } + + state_layer := StateLayerArea { + width: 100%; + height: 100%; + border_radius: background_layer.border_radius; + visible: root.clickable; + enabled: root.visible; + + clicked => { + root.clicked(); + } + } + + Rectangle { + clip: true; + border_radius: MaterialStyleMetrics.border_radius_12; + + @children + } +} + +export component ElevatedCard { + in property clickable <=> base.clickable; + + callback clicked <=> base.clicked; + + forward_focus: base; + accessible-role: button; + accessible-enabled: root.clickable; + accessible-action-default => { base.clicked(); } + + base := BaseCard { + width: 100%; + height: 100%; + has_elevation: true; + background: MaterialPalette.surface; + + @children + } +} + +export component FilledCard { + in property clickable <=> base.clickable; + + callback clicked <=> base.clicked; + + forward_focus: base; + accessible-role: button; + accessible-enabled: root.clickable; + accessible-action-default => { base.clicked(); } + + base := BaseCard { + width: 100%; + height: 100%; + background: MaterialPalette.surface_container_highest; + + @children + } +} + +export component OutlinedCard { + in property clickable <=> base.clickable; + + callback clicked <=> base.clicked; + + forward_focus: base; + accessible-role: button; + accessible-enabled: root.clickable; + accessible-action-default => { base.clicked(); } + + base := BaseCard { + width: 100%; + height: 100%; + background: MaterialPalette.surface_container_low; + border_width: 1px; + border_color: MaterialPalette.outline; + + @children + } +} diff --git a/ui/ui/components/check_box.slint b/ui/ui/components/check_box.slint new file mode 100644 index 0000000..9d5311b --- /dev/null +++ b/ui/ui/components/check_box.slint @@ -0,0 +1,143 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { Icons } from "../icons/icons.slint"; +import { ListTile } from "./list.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { Icon } from "./icon.slint"; + +export enum CheckState { + unchecked, + partially_checked, + checked, +} + +export component CheckBox { + + in_out property check_state; + in_out property tristate; + in property has_error; + in property enabled <=> state_area.enabled; + + property checked: root.check_state == CheckState.checked || root.check_state == CheckState.partially_checked; + + callback checked_state_changed(check_state: CheckState); + + min_width: MaterialStyleMetrics.size_48; + min_height: self.min_width; + accessible-enabled: root.enabled; + accessible-checkable: true; + accessible-checked <=> root.checked; + accessible-role: checkbox; + accessible-action-default => { state_area.clicked(); } + forward_focus: state_area; + + init() => { + // Initialize tristate as well + if self.check_state == CheckState.partially-checked { + root.tristate = true; + } + } + + state_area := StateLayerArea { + width: 100%; + height: 100%; + border_radius: max(self.width, self.height) / 2; + color: MaterialPalette.on_surface; + + background_layer := Rectangle { + width: MaterialStyleMetrics.size_18; + height: self.width; + border_radius: MaterialStyleMetrics.border_radius_2; + border_width: root.checked ? 0 : 2px; + border_color: root.has_error ? MaterialPalette.error : MaterialPalette.on_surface_variant; + + if root.checked : Icon { + colorize: MaterialPalette.on_primary; + source: Icons.check; + + states [ + partial_checked when root.check_state == CheckState.partially-checked : { + source: Icons.remove; + } + ] + } + + animate background, border_width { + duration: MaterialAnimations.opacity_duration; + easing: MaterialAnimations.opacity_easing; + } + } + + clicked => { + root.toggle(); + } + } + + changed check_state => { + if self.check_state == CheckState.partially-checked { + root.tristate = true; + } + root.checked_state_changed(root.check_state); + } + + public function toggle() { + if !root.tristate { + root.check_state = root.check_state != CheckState.checked ? CheckState.checked : CheckState.unchecked; + return; + } + + root.check_state = root.check_state == CheckState.checked ? CheckState.partially_checked : + root.check_state == CheckState.partially_checked ? CheckState.unchecked : CheckState.checked; + } + + // Keep for backward compatibility + public function set_check_state(check_state: CheckState) { + root.check_state = check_state; + } + + states [ + disabled when !root.enabled : { + state_area.display_background: false; + background_layer.border_color: root.checked ? transparent : MaterialPalette.on_surface.with_alpha(38%); + background_layer.background: root.checked ? MaterialPalette.on_surface.with_alpha(38%) : transparent; + } + checked when root.checked : { + background_layer.border_width: 0; + background_layer.background: root.has_error ? MaterialPalette.error : MaterialPalette.primary; + state_area.color: background_layer.background; + } + ] +} + +export component CheckBoxTile inherits ListTile { + in_out property check_state <=> check_box.check_state; + in_out property tristate <=> check_box.tristate; + in property has_error <=> check_box.has_error; + + callback checked_state_changed <=> check_box.checked_state_changed; + + Rectangle { + horizontal-stretch: 0; + + check_box := CheckBox { + enabled: root.enabled; + } + } + + // When clicked on this, but not on the checkbox + // apply the click on the checkbox manually + // So the user can click anywhere in the tile to toggle + // the checkbox + clicked => { + check_box.toggle(); + } + + // Keep function for backward compatibility + public function set_check_state(check-state: CheckState) { + check_box.set_check_state(check_state); + } +} diff --git a/ui/ui/components/chip.slint b/ui/ui/components/chip.slint new file mode 100644 index 0000000..4182279 --- /dev/null +++ b/ui/ui/components/chip.slint @@ -0,0 +1,205 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { Icons } from "../icons/icons.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { IconButton } from "icon_button.slint"; + +export component ActionChip { + in property icon <=> base.icon; + in property text <=> base.text; + in property enabled <=> base.enabled; + in property tooltip <=> base.tooltip; + in property avatar_icon <=> base.avatar-icon; + in property avatar_background <=> base.avatar_background; + + callback clicked <=> base.clicked; + + forward-focus: base; + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-action-default => { base.clicked(); } + + + border := Rectangle { + border_radius: base.border_radius; + border_width: 1px; + border_color: MaterialPalette.outline; + + base := BaseButton { + min_layout_height: MaterialStyleMetrics.size_32; + border_radius: MaterialStyleMetrics.border_radius_8; + color: MaterialPalette.on_surface; + icon_color: MaterialPalette.primary; + spacing: MaterialStyleMetrics.spacing_8; + button_padding_left: self.has_icon ? MaterialStyleMetrics.padding_8 : MaterialStyleMetrics.padding_16; + button_padding_right:MaterialStyleMetrics.padding_16; + button_vertical_padding: MaterialStyleMetrics.padding_6; + avatar_size: MaterialStyleMetrics.size_18; + } + } + + states [ + disabled when !root.enabled : { + base.display_background: false; + base.icon_color: MaterialPalette.on_surface; + } + ] +} + +export component FilterChip { + in property icon <=> base.icon; + in property text <=> base.text; + in property enabled <=> base.enabled; + in property tooltip <=> base.tooltip; + in_out property checked; + + forward-focus: base; + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-checkable: true; + accessible-checked: root.checked; + accessible-action-default => { base.clicked(); } + + border := Rectangle { + border_radius: base.border_radius; + border_width: 1px; + border_color: MaterialPalette.outline; + + + base := BaseButton { + min_layout_height: MaterialStyleMetrics.size_32; + border_radius: MaterialStyleMetrics.border_radius_8; + color: MaterialPalette.on_surface; + icon_color: MaterialPalette.primary; + spacing: MaterialStyleMetrics.spacing_8; + button_padding_left: self.has_icon ? MaterialStyleMetrics.padding_8 : MaterialStyleMetrics.padding_16; + button_padding_right:MaterialStyleMetrics.padding_16; + button_vertical_padding: MaterialStyleMetrics.padding_6; + avatar_size: MaterialStyleMetrics.size_18; + + clicked => { + root.toggle(); + } + } + + states [ + checked when root.checked : { + base.icon: Icons.check; + base.icon_color: MaterialPalette.on_secondary_container; + base.color: MaterialPalette.on_secondary_container; + border.border_width: 0; + border.background: MaterialPalette.secondary_container; + } + ] + + animate width { duration: MaterialAnimations.standard_accelerate_duration; easing: MaterialAnimations.standard_easing; } + } + + function toggle() { + root.checked = !root.checked; + } + + states [ + disabled when !root.enabled : { + base.display_background: false; + base.icon_color: MaterialPalette.on_surface; + } + ] +} + +export component InputChip { + in property leading_icon <=> base.icon; + in property trailing_icon; + in property avatar <=> base.avatar-icon; + in property avatar_background <=> base.avatar_background; + in property text <=> base.text; + in property enabled <=> base.enabled; + in property tooltip <=> base.tooltip; + in property checkable; + in_out property checked; + + property has_avatar: root.avatar.width > 0 && root.avatar.height > 0; + + callback clicked(); + callback trailing_icon_clicked(); + + forward-focus: base; + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-checkable: root.checkable; + accessible-checked: root.checked; + accessible-action-default => { base.clicked(); } + + border := Rectangle { + border_radius: base.border_radius; + border_width: 1px; + border_color: MaterialPalette.outline; + clip: true; + + base := BaseButton { + min_layout_height: MaterialStyleMetrics.size_32; + border_radius: root.has_avatar ? self.height / 2 : MaterialStyleMetrics.border_radius_8; + color: MaterialPalette.on_surface; + icon_color: MaterialPalette.primary; + spacing: MaterialStyleMetrics.spacing_8; + button_padding_left: root.has_avatar ? MaterialStyleMetrics.padding_4 : self.has_icon ? MaterialStyleMetrics.padding_8 : MaterialStyleMetrics.padding_12; + button_padding_right: root.trailing_icon.width > 0 && root.trailing_icon.height > 0 ? MaterialStyleMetrics.padding_8 : MaterialStyleMetrics.padding_12; + button_vertical_padding: MaterialStyleMetrics.padding_6; + avatar_size: MaterialStyleMetrics.size_18; + + if root.trailing_icon.width > 0 && root.trailing_icon.height > 0 : VerticalLayout { + alignment: center; + + IconButton { + icon: root.trailing_icon; + inline: true; + enabled: root.enabled; + + clicked => { + root.trailing_icon_clicked(); + } + } + } + + clicked => { + root.clicked(); + root.toggle(); + } + } + + states [ + checked when root.checked : { + base.icon_color: MaterialPalette.on_secondary_container; + base.color: MaterialPalette.on_secondary_container; + border.border_width: 0; + border.background: MaterialPalette.secondary_container; + } + ] + + animate width { duration: MaterialAnimations.standard_accelerate_duration; easing: MaterialAnimations.standard_easing; } + } + + function toggle() { + if !root.checkable { + return; + } + + root.checked = !root.checked; + } + + states [ + disabled when !root.enabled : { + base.display_background: false; + base.icon_color: MaterialPalette.on_surface; + } + ] +} + diff --git a/ui/ui/components/date_picker.slint b/ui/ui/components/date_picker.slint new file mode 100644 index 0000000..4b9538b --- /dev/null +++ b/ui/ui/components/date_picker.slint @@ -0,0 +1,566 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { BaseDialog } from "./dialog.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { Icons } from "../icons/icons.slint"; +import { MaterialText } from "./material_text.slint"; +import { StateLayer } from "./state_layer.slint"; +import { ScrollView } from "./scroll_view.slint"; +import { IconButton } from "./icon_button.slint"; +import { TextField } from "./text_field.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { ExtendedTouchArea } from "./extended_touch_area.slint"; + +// defines the interface to get the data for the DatePicker from native code. +export global DatePickerAdapter { + // returns the number of days for the given month in the given year. + pure callback month_day_count(month: int, year: int) -> int; + + // return the numbers of day to the first monday of the month. + pure callback month_offset(month: int, year: int) -> int; + + // used to format a date that is defined by day month and year. + pure callback format_date(format: string, day: int, month: int, year: int) -> string; + + // parses the given date string and returns a list of day, month and year. + pure callback parse_date(date: string, format: string) -> [int]; + + // returns true if the given date is valid. + pure callback valid_date(date: string, format: string) -> bool; + + // returns the current date as list of day, month and year. + pure callback date_now() -> [int]; +} + +export struct Date { + year: int, + month: int, + day: int, +} + +component CalendarHeaderDelegate { + in property text <=> text_label.text; + + min_width: max(MaterialStyleMetrics.size_40, content_layer.min_width); + min_height: max(MaterialStyleMetrics.size_40, content_layer.min_height); + + content_layer := VerticalLayout { + text_label := MaterialText { + vertical_alignment: center; + horizontal_alignment: center; + style: MaterialTypography.body_large; + color: MaterialPalette.on_surface; + } + } +} + +component CalendarDelegate { + in property selected; + in property today; + in property text <=> text_label.text; + in property enabled: true; + + callback clicked <=> touch_area.clicked; + + min_width: max(MaterialStyleMetrics.size_40, content_layer.min_width); + min_height: max(MaterialStyleMetrics.size_40, content_layer.min_height); + forward_focus: focus_scope; + + accessible_role: button; + accessible_checkable: true; + accessible_checked: root.selected; + accessible_label: root.text; + accessible_action_default => { touch_area.clicked(); } + + touch_area := TouchArea { + enabled: root.enabled; + } + + focus_scope := FocusScope { + width: 0px; + enabled: root.enabled; + + key_pressed(event) => { + if (event.text == " " || event.text == "\n") { + touch_area.clicked(); + return accept; + } + + return reject; + } + } + + background_layer := Rectangle { + border_radius: self.height / 2; + } + + content_layer := HorizontalLayout { + text_label := MaterialText { + vertical_alignment: center; + horizontal_alignment: center; + style: MaterialTypography.body_large; + color: MaterialPalette.on_surface; + } + } + + state_layer := StateLayer { + enabled: root.enabled; + border_radius: background_layer.border_radius; + pressed: touch_area.pressed; + has_hover: touch_area.has_hover; + has_focus: focus_scope.has_focus; + } + + states [ + // FIXME: states + disabled when !root.enabled : { + root.opacity: 0.38; + } + selected when root.selected : { + background_layer.background: MaterialPalette.primary; + text_label.color: MaterialPalette.on_primary; + } + today when root.today : { + background_layer.border_width: 1px; + background_layer.border_color: MaterialPalette.primary; + } + ] +} + +export component Calendar { + in property column_count; + in property row_count; + in property delegate_size; + in property start_column; + in property <[string]> header_model; + in property month_count; + in property today; + in property selected_date; + in property display_month; + in property display_year; + + callback select_date(date: Date); + + // header + for day[index] in root.header_model : CalendarHeaderDelegate { + x: root.delegate_x(index); + y: root.delegate_y(index); + text: day; + } + + // items + for index in root.month_count : CalendarDelegate { + property d: { day: index + 1, month: root.display_month, year: root.display_year }; + + x: root.delegate_x(root.index_on_calendar(index)); + y: root.delegate_y(root.index_on_calendar(index)); + width: root.delegate_size; + height: root.delegate_size; + text: index + 1; + selected: root.selected_date == self.d; + today: root.today == self.d; + + clicked => { + root.select_date(self.d); + } + } + + function index_on_calendar(index: int) -> int { + // add column count because items starts after header row + root.column_count + root.start_column + index + } + + function row_for_index(index: int) -> int { + floor(index / root.column_count) + } + + function column_for_index(index: int) -> int { + mod(index, root.column_count) + } + + function delegate_x(index: int) -> length { + root.column_for_index(index) * root.delegate_size + root.column_for_index(index) * 1px /* * root.style.spacing */ + } + + function delegate_y(index: int) -> length { + root.row_for_index(index) * root.delegate_size + root.row_for_index(index) * 1px /* * root.style.spacing */ + } +} + +component YearSelection { + in property <[int]> model; + in property spacing; + in property visible_row_count; + in property column_count; + in property delegate_width; + in property delegate_height; + in property selected_year; + in property today_year; + + callback select_year(year: int); + + property row_height: root.height / root.visible_row_count; + property row_count: root.model.length / root.column_count; + property viewport_height: root.row_count * root.row_height; + property start_x: root.width / (root.column_count + 1); + property start_y: root.height / (root.visible_row_count + 1); + + ScrollView { + width: 100%; + height: 100%; + viewport_width: root.width; + viewport_height: root.viewport_height; + + for year[index] in root.model: CalendarDelegate { + x: root.delegate_center_x(index) - self.width / 2; + y: root.delegate_center_y(index) - self.height / 2; + width: root.delegate_width; + height: root.delegate_height; + text: year; + selected: year == root.selected_year; + today: year == root.today_year; + + clicked => { + root.select_year(year); + } + } + } + + function delegate_center_x(index: int) -> length { + root.start_x * (root.column_for_index(index) + 1) + } + + function delegate_center_y(index: int) -> length { + root.start_y * (root.row_for_index(index) + 1) + } + + function row_for_index(index: int) -> int { + floor(index / root.column_count) + } + + function column_for_index(index: int) -> int { + mod(index, root.column_count) + } +} + +export component SelectionButton { + in property text <=> text-label.text; + in property icon <=> icon-image.source; + in property enabled: true; + in-out property checked; + + callback clicked(); + + min-width: content-layer.min-width; + min-height: max(40px, content-layer.min-height); + accessible-label: root.text; + accessible-role: button; + accessible-checkable: true; + accessible-checked: root.checked; + accessible-action-default => { touch-area.clicked(); } + forward-focus: touch-area; + + touch-area := ExtendedTouchArea { + width: 100%; + height: 100%; + enabled: root.enabled; + + clicked => { + root.checked = !root.checked; + root.clicked(); + } + } + + state-layer := StateLayer { + enabled: root.enabled; + pressed: touch-area.pressed; + has-hover: touch-area.has-hover; + has-focus: touch-area.has-focus; + background: text_label.color; + } + + content-layer := HorizontalLayout { + alignment: center; + padding-left: 8px; + padding-right: 8px; + spacing: 8px; + + text-label := MaterialText { + vertical-alignment: center; + color: MaterialPalette.on_surface_variant; + style: MaterialTypography.label_large; + } + + icon-image := Image { + y: (parent.height - self.height) / 2; + width: MaterialStyleMetrics.size_18; + colorize: MaterialPalette.on_surface_variant; + transform-rotation: root.checked ? 180deg : 0; + + animate transform-rotation { duration: 250ms; } + } + } + + states [ + disabled when !root.enabled : { + root.opacity: 0.38; + } + ] +} + + +export component DatePickerPopup inherits PopupWindow { + in property title; + in property date : { day: today[0], month: today[1], year: today[2] }; + + callback canceled(); + callback accepted(date: Date); + + // this is used for the navigation between months + property input_title: @tr("Enter date"); + property input_placeholder_text: "mm/dd/yyyy"; + property input_format: "%m/%d/%Y"; + property cancel_text: @tr("Cancel"); + property ok_text: @tr("Ok"); + property display_date: root.date; + property current_date: root.date; + property delegate_size: 40px; + property year_delegate_width: 72px; + property calendar_column_count: 7; + property calendar_row_count: 6; + property calendar_min_width: root.delegate_size * root.calendar_column_count + (root.calendar_column_count - 1) * 1px; + property calendar_min_height: root.delegate_size *(root.calendar_row_count + 1) + (root.calendar_row_count - 1) * 1px; + property year_selection_column_count: 3; + property year_selection_row_count: 5; + property year_selection; + property selection_mode: true; + property current_input; + + property calendar_month_count: DatePickerAdapter.month_day_count(root.display_date.month, root.display_date.year); + property <[string]> calendar_header_model: [ + @tr("One-letter abbrev for Sunday" => "S"), + @tr("One-letter abbrev for Monday" => "M"), + @tr("One-letter abbrev for Tuesday" => "T"), + @tr("One-letter abbrev for Wednesday" => "W"), + @tr("One-letter abbrev for Thursday" => "T"), + @tr("One-letter abbrev for Friday" => "F"), + @tr("One-letter abbrev for Saturday" => "S"), + ]; + property <[int]> today: DatePickerAdapter.date_now(); + property start_column: DatePickerAdapter.month_offset(root.display_date.month, root.display_date.year); + property current_month: DatePickerAdapter.format_date("%B %Y", root.display_date.day, root.display_date.month, root.display_date.year); + property <[int]> year_model: [2024, 2025, 2026, 2027, 2028, 2029, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043]; + property selected_year: root.display_date.year; + property today_year: root.today[2]; + property current_day: DatePickerAdapter.format_date("%a, %b %d", root.current_date.day, root.current_date.month, root.current_date.year); + property <[int]> input_formatted: DatePickerAdapter.parse_date(root.current_input, root.input_format); + + close_policy: no_auto_close; + forward_focus: base; + + base := BaseDialog { + width: 100%; + height: 100%; + title: root.title; + actions: [ + root.cancel_text, + root.ok_text + ]; + + content_layer := VerticalLayout { + spacing: MaterialStyleMetrics.spacing_12; + + header := HorizontalLayout { + MaterialText { + text: root.selection_mode ? root.current_day : root.input_title; + horizontal_alignment: left; + vertical_alignment: center; + style: MaterialTypography.headline_large; + } + + if root.selection_mode : IconButton { + icon: Icons.edit; + accessible_label: "Toggle selection mode"; + + clicked => { + root.toggle_selection_mode(); + } + } + } + + Rectangle { + height: 1px; + background: MaterialPalette.outline; + } + + if root.selection_mode : HorizontalLayout { + // FIXME: spacing + + VerticalLayout { + horizontal_stretch: 0; + alignment: center; + + SelectionButton { + text: root.current_month; + icon: Icons.arrow_drop_down; + checked <=> root.year_selection; + } + } + + Rectangle {} + + IconButton { + icon: Icons.chevron_backward; + accessible_label: "Previous month"; + + clicked => { + root.show_previous(); + } + } + + IconButton { + icon: Icons.chevron_forward; + accessible_label: "Next month"; + + clicked => { + root.show_next(); + } + } + } + + if root.selection_mode : VerticalLayout { + if !root.year_selection : Calendar { + min_width: root.calendar_min_width; + min_height: root.calendar_min_height; + column_count: root.calendar_column_count; + row_count: root.calendar_row_count; + delegate_size: root.delegate_size; + header_model: root.calendar_header_model; + month_count: root.calendar_month_count; + today: { day: root.today[0], month: root.today[1], year: root.today[2] }; + selected_date <=> root.current_date; + start_column: root.start_column; + display_month: root.display_date.month; + display_year: root.display_date.year; + + select_date(date) => { + root.select_date(date); + } + } + + if root.year_selection : YearSelection { + min_width: root.calendar_min_width; + min_height: root.calendar_min_height; + column_count: root.year_selection_column_count; + visible_row_count: root.year_selection_row_count; + delegate_width: root.year_delegate_width; + delegate_height: root.delegate_size; + model: root.year_model; + selected_year: root.selected_year; + today_year: root.today_year; + + select_year(year) => { + root.select_year(year); + } + } + } + + Rectangle { + height: 1px; + visible: root.year_selection; + background: MaterialPalette.outline; + } + + if !root.selection_mode : TextField { + text <=> root.current_input; + placeholder_text: root.input_placeholder_text; + trailing_icon: Icons.calendar_today; + + trailing_icon_clicked => { + root.toggle_selection_mode(); + } + } + } + + action_clicked(index) => { + // cancel + if index == 0 { + root.close(); + root.canceled(); + } else if index == 1 { + root.accepted(root.date); + } + } + + close => { + root.close(); + } + } + + changed date => { + root.display_date = root.date; + root.current_date = root.date; + } + + changed selection_mode => { + // check switch from input mode if input is valid + if root.selection_mode && root.current_input_valid() { + root.current_date = root.input_as_date(); + root.display_date = root.current_date; + } + } + + pure public function ok_enabled() -> bool { + root.selection_mode || root.current_input_valid() + } + + public function get_current_date() -> Date { + if root.selection_mode { + return root.current_date; + } + + root.input_as_date() + } + + pure function current_input_valid() -> bool { + DatePickerAdapter.valid_date(root.current_input, root.input_format) + } + + pure function input_as_date() -> Date { + { day: root.input_formatted[0], month: root.input_formatted[1], year: root.input_formatted[2] } + } + + function select_date(date: Date) { + root.current_date = date; + } + + function select_year(year: int) { + root.current_date = { day: 1, month: 1, year: year }; + root.display_date = root.current_date; + root.year_selection = false; + } + + function show_next() { + if root.display_date.month >= 12 { + root.display_date = { day: 1, month: 1, year: root.display_date.year + 1 }; + return; + } + + root.display_date = { day: 1, month: root.display_date.month + 1, year: root.display_date.year }; + } + + function show_previous() { + if root.display_date.month <= 1 { + root.display_date = { day: 1, month: 12, year: root.display_date.year - 1 }; + return; + } + + root.display_date = { day: 1, month: root.display_date.month - 1, year: root.display_date.year }; + } + + function toggle_selection_mode() { + root.selection_mode = !root.selection_mode; + } +} diff --git a/ui/ui/components/dialog.slint b/ui/ui/components/dialog.slint new file mode 100644 index 0000000..fcdd916 --- /dev/null +++ b/ui/ui/components/dialog.slint @@ -0,0 +1,233 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { TextButton } from "./text_button.slint"; +import { FilledButton } from "./filled_button.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { Modal } from "./modal.slint"; +import { Icon } from "./icon.slint"; +import { IconButton } from "./icon_button.slint"; +import { Icons } from "../icons/icons.slint"; + +export component FullscreenDialog inherits PopupWindow { + in property title; + in property <[string]> actions; + + callback action_clicked(index: int); + + close_policy: no_auto_close; + forward_focus: focus_scope; + + focus_scope := FocusScope { + x: 0; + width: 0; + + key_pressed(event) => { + if event.text == Key.Escape { + root.close(); + return accept; + } + + reject + } + } + + background_layer := Rectangle { + width: 100%; + height: 100%; + opacity: 0; + background: MaterialPalette.surface; + + VerticalLayout { + spacing: MaterialStyleMetrics.spacing_16; + + HorizontalLayout { + padding: MaterialStyleMetrics.padding_24; + spacing: MaterialStyleMetrics.spacing_16; + vertical_stretch: 0; + + IconButton { + icon: Icons.close; + + clicked => { + root.close(); + } + } + + MaterialText { + text: root.title; + style: MaterialTypography.headline_small; + color: MaterialPalette.on_surface; + vertical_alignment: center; + } + + for action[index] in root.actions : TextButton { + text: action; + + clicked => { + root.action_clicked(index); + } + } + } + + @children + + } + } + + Timer { + interval: 50ms; + + triggered => { + background_layer.opacity = 1; + self.running = false; + } + } +} + +export component BaseDialog { + in property title; + in property icon; + in property <[image]> action_button_icons; + in property default_action_text; + in property <[string]> actions; + + property has_icon: root.icon.width > 0 && root.icon.height > 0; + + callback default_action_clicked(); + callback action_button_clicked(index: int); + callback action_clicked(index: int); + callback close(); + + forward_focus: focus_scope; + + focus_scope := FocusScope { + x: 0; + width: 0; + + key_pressed(event) => { + if event.text == Key.Return && root.default_action_text != "" { + root.default_action_clicked(); + return accept; + } + + if event.text == Key.Escape { + root.close(); + return accept; + } + + reject + } + } + + modal := Modal { + width: 100%; + height: 100%; + + background_layer := Rectangle { + x: (parent.width - self.width) / 2; + y: (parent.height - self.height) / 2; + width: layout.min_width; + height: layout.min_height; + opacity: 0; + border_radius: MaterialStyleMetrics.border_radius_28; + background: MaterialPalette.surface_container_high; + + TouchArea { + layout := VerticalLayout { + padding: MaterialStyleMetrics.padding_24; + spacing: MaterialStyleMetrics.spacing_16; + + if root.has_icon : Icon { + x: (parent.width - self.width) / 2; + colorize: MaterialPalette.on_surface; + source: root.icon; + } + + if root.title != "" : MaterialText { + horizontal_alignment: root.has_icon ? center : left; + text: root.title; + style: MaterialTypography.headline_small; + color: MaterialPalette.on_surface; + } + + @children + + HorizontalLayout { + spacing: MaterialStyleMetrics.spacing_8; + + for action_button[index] in root.action_button_icons : IconButton { + icon: action_button; + + clicked => { + root.action_button_clicked(index); + } + } + + // Spacer + Rectangle {} + + for action[index] in root.actions : TextButton { + text: action; + + clicked => { + root.action_clicked(index); + } + } + + if root.default_action_text != "" : FilledButton { + text: root.default_action_text; + + clicked => { + root.default_action_clicked(); + } + } + } + } + } + + animate opacity { duration: MaterialAnimations.opacity_duration; easing: MaterialAnimations.opacity_easing; } + } + + clicked => { + root.close(); + } + } + + Timer { + interval: 50ms; + + triggered => { + background_layer.opacity = 1; + self.running = false; + } + } +} + +export component Dialog inherits PopupWindow { + in property title <=> base.title; + in property icon <=> base.icon; + in property default_action_text <=> base.default_action_text; + in property <[string]> actions <=> base.actions; + + callback default_action_clicked <=> base.default_action_clicked; + callback action_clicked <=> base.action_clicked; + + close_policy: no_auto_close; + forward_focus: base; + + base := BaseDialog { + width: 100%; + height: 100%; + + @children + + close => { + root.close(); + } + } +} diff --git a/ui/ui/components/divider.slint b/ui/ui/components/divider.slint new file mode 100644 index 0000000..c7b9498 --- /dev/null +++ b/ui/ui/components/divider.slint @@ -0,0 +1,28 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; + +component BaseDivider { + Rectangle { + background: MaterialPalette.outline_variant; + } +} + +export component VerticalDivider { + width: 1px; + + BaseDivider { + width: 100%; + height: 100%; + } +} + +export component HorizontalDivider { + height: 1px; + + BaseDivider { + width: 100%; + height: 100%; + } +} diff --git a/ui/ui/components/drawer.slint b/ui/ui/components/drawer.slint new file mode 100644 index 0000000..5938d44 --- /dev/null +++ b/ui/ui/components/drawer.slint @@ -0,0 +1,89 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { Modal } from "./modal.slint"; + +export component DrawerHeader { + in property title; + + min_height: max(MaterialStyleMetrics.size_56, title_label.min_width); + + title_label := MaterialText { + x: MaterialStyleMetrics.padding_16; + width: root.width - MaterialStyleMetrics.padding_16; + text: root.title; + color: MaterialPalette.on_surface_variant; + vertical_alignment: center; + style: MaterialTypography.title_small; + } +} + +export component Drawer { + in property title; + + min_width: max(MaterialStyleMetrics.size_360, layout.min_width); + + TouchArea { + + Rectangle { + background: MaterialPalette.surface_container_low; + border_radius: MaterialStyleMetrics.border_radius_16; + + layout := VerticalLayout { + alignment: start; + padding: MaterialStyleMetrics.padding_12; + + if root.title != "" : DrawerHeader { + width: 100%; + title: root.title; + } + + @children + } + } + } +} + +export component ModalDrawer inherits PopupWindow { + in property position_right; + in property title; + + close_policy: no_auto_close; + + modal := Modal { + width: 100%; + height: 100%; + + drawer := Drawer { + x: root.position_right ? parent.width : -self.width; + y: 0; + height: 100%; + title: root.title; + + @children + + animate x { + duration: MaterialAnimations.standard_accelerate_duration; + easing: MaterialAnimations.standard_easing; + } + } + + clicked => { + root.close(); + } + } + + Timer { + interval: 50ms; + + triggered => { + drawer.x = root.position_right ? root.width - drawer.width : 0; + self.running = false; + } + } +} diff --git a/ui/ui/components/drop_down_menu.slint b/ui/ui/components/drop_down_menu.slint new file mode 100644 index 0000000..7f96101 --- /dev/null +++ b/ui/ui/components/drop_down_menu.slint @@ -0,0 +1,125 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { TextField } from "./text_field.slint"; +import { MenuItem } from "../items/menu_item.slint"; +import { Icons } from "../icons/icons.slint"; +import { MenuInner } from "./menu.slint"; +import { StateLayer } from "./state_layer.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { ScrollView } from "./scroll_view.slint"; + +export component DropDownMenu { + in property label <=> text_field.label; + in property enabled <=> text_field.enabled; + in property leading_icon <=> text_field.leading_icon; + in property <[MenuItem]> items; + in_out property current_index: -1; + + callback selected(index: int); + + property item_height: MaterialStyleMetrics.size_56; + property max_displayed_items: 6; + property text <=> text_field.text; + + min_width: text_field.min_width; + min_height: text_field.min_height; + forward_focus: text_field; accessible-role: combobox; + accessible_enabled: root.enabled; + accessible_expandable: true; + accessible_value <=> text_field.text; + accessible_action_expand => { menu.show(); } + + text_field := TextField { + width: 100%; + height: 100%; + trailing_icon: Icons.arrow_drop_down; + read_only: true; + } + + state_layer := StateLayer { + width: 100%; + height: 100%; + background: MaterialPalette.on_surface; + has_hover: touch_area.has_hover; + enabled: root.enabled; + } + + touch_area := TouchArea { + width: 100%; + height: 100%; + enabled: root.enabled; + + clicked => { + menu.show(); + } + } + + menu := PopupWindow { + x: 0; + width: root.width; + close_policy: close_on_click_outside; + forward_focus: inner_text_field; + + VerticalLayout { + alignment: start; + + inner_text_field := TextField { + width: root.width; + leading_icon: root.leading_icon; + trailing_icon: Icons.arrow_drop_up; + text: root.text; + label: root.label; + read_only: true; + + leading_icon_clicked => { + menu.close(); + } + + trailing_icon_clicked => { + menu.close(); + } + } + + Rectangle { + width: 100%; + height: min(max(root.item_height, items.length * root.item_height), root.max_displayed_items * root.item_height); + background: MaterialPalette.surface_container; + + ScrollView { + VerticalLayout { + menu_inner := MenuInner { + current_index: root.current_index; + items: root.items; + + activated(index) => { + root.update_selection(index); + } + } + } + } + } + } + } + + function update_selection(index: int) { + root.update_text(index); + root.current_index = index; + menu.close(); + root.selected(index); + } + + function update_text(index: int) { + if index < 0 || root.current_index >= root.items.length { + text_field.text = ""; + return; + } + + text_field.text = root.items[index].text; + } + + changed current_index => { + root.update_text(root.current_index); + } +} diff --git a/ui/ui/components/elevated_button.slint b/ui/ui/components/elevated_button.slint new file mode 100644 index 0000000..fbfb809 --- /dev/null +++ b/ui/ui/components/elevated_button.slint @@ -0,0 +1,45 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component ElevatedButton { + in property icon <=> base.icon; + in property text <=> base.text; + in property tooltip <=> base.tooltip; + in property enabled <=> base.enabled; + + callback clicked <=> base.clicked; + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-action-default => { base.clicked(); } + + elevation := Elevation { + border_radius: root.height / 2; + background: MaterialPalette.surface_container_low; + level: 1; + width: 100%; + height: 100%; + } + + base := BaseButton { + border_radius: elevation.border_radius; + color: MaterialPalette.primary; + } + + states [ + disabled when !root.enabled : { + elevation.background: transparent; + elevation.level: 0; + base.color: MaterialPalette.on_surface; + } + hover when base.has_hover && !base.pressed && !base.enter_pressed : { + elevation.level: 3; + } + ] +} diff --git a/ui/ui/components/elevation.slint b/ui/ui/components/elevation.slint new file mode 100644 index 0000000..9fc8596 --- /dev/null +++ b/ui/ui/components/elevation.slint @@ -0,0 +1,108 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Palette } from "std-widgets.slint"; +import { MaterialWindow } from "material_window.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component Elevation { + in property background; + in property border_radius; + in property level; + + property dark: Palette.color_scheme == ColorScheme.dark; + + outer_shadow := Rectangle { + border_radius: root.border_radius; + + inner_shadow := Rectangle { + border_radius: root.border_radius; + background: root.background; + + @children + } + } + + states [ + level_1_light when root.level == 1 && !root.dark: { + outer_shadow.drop_shadow_offset_y: 1px; + outer_shadow.drop_shadow_blur: 2px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_30; + inner_shadow.drop_shadow_offset_y: 1px; + inner_shadow.drop_shadow_blur: 2px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_15; + } + level_2_light when root.level == 2 && !root.dark: { + outer_shadow.drop_shadow_offset_y: 1px; + outer_shadow.drop_shadow_blur: 2px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_30; + inner_shadow.drop_shadow_offset_y: 2px; + inner_shadow.drop_shadow_blur: 6px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_15; + } + level_3_light when root.level == 3 && !root.dark: { + outer_shadow.drop_shadow_offset_y: 4px; + outer_shadow.drop_shadow_blur: 8px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 1px; + inner_shadow.drop_shadow_blur: 3px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_4_light when root.level == 4 && !root.dark: { + outer_shadow.drop_shadow_offset_y: 6px; + outer_shadow.drop_shadow_blur: 10px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 2px; + inner_shadow.drop_shadow_blur: 3px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_5_light when root.level == 5 && !root.dark: { + outer_shadow.drop_shadow_offset_y: 8px; + outer_shadow.drop_shadow_blur: 12px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 4px; + inner_shadow.drop_shadow_blur: 4px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_1_dark when root.level == 1 && root.dark: { + outer_shadow.drop_shadow_offset_y: 1px; + outer_shadow.drop_shadow_blur: 3px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 1px; + inner_shadow.drop_shadow_blur: 2px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_2_dark when root.level == 2 && root.dark: { + outer_shadow.drop_shadow_offset_y: 2px; + outer_shadow.drop_shadow_blur: 6px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 1px; + inner_shadow.drop_shadow_blur: 2px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_3_dark when root.level == 3 && root.dark: { + outer_shadow.drop_shadow_offset_y: 4px; + outer_shadow.drop_shadow_blur: 8px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 1px; + inner_shadow.drop_shadow_blur: 3px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_4_dark when root.level == 4 && root.dark: { + outer_shadow.drop_shadow_offset_y: 6px; + outer_shadow.drop_shadow_blur: 10px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 2px; + inner_shadow.drop_shadow_blur: 3px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + level_5_dark when root.level == 5 && root.dark: { + outer_shadow.drop_shadow_offset_y: 8px; + outer_shadow.drop_shadow_blur: 12px; + outer_shadow.drop_shadow_color: MaterialPalette.shadow_15; + inner_shadow.drop_shadow_offset_y: 4px; + inner_shadow.drop_shadow_blur: 4px; + inner_shadow.drop_shadow_color: MaterialPalette.shadow_30; + } + ] +} diff --git a/ui/ui/components/extended_touch_area.slint b/ui/ui/components/extended_touch_area.slint new file mode 100644 index 0000000..5108c7c --- /dev/null +++ b/ui/ui/components/extended_touch_area.slint @@ -0,0 +1,57 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { ToolTip } from "tooltip.slint"; + +export component ExtendedTouchArea inherits TouchArea { + in property tooltip; + in property tooltip_offset; + out property has_focus <=> focus_scope.has_focus; + out property enter_pressed; + + callback key_pressed(KeyEvent) -> EventResult; + + forward-focus: focus-scope; + + focus_scope := FocusScope { + x: 0; + width: 0px; + enabled: root.enabled; + + key_pressed(event) => { + if !root.enabled { + return reject; + } + + if (event.text == " " || event.text == "\n") && !root.enter_pressed { + root.enter_pressed = true; + root.clicked(); + return accept; + } + + root.key_pressed(event) + } + + key_released(event) => { + if !root.enabled { + return reject; + } + + if (event.text == " " || event.text == "\n") && root.enter_pressed { + root.enter_pressed = false; + return accept; + } + + reject + } + } + + @children + + if root.tooltip != "" && root.has-hover && !root.pressed : ToolTip { + y: root.tooltip_offset; + text: root.tooltip; + } +} diff --git a/ui/ui/components/filled_button.slint b/ui/ui/components/filled_button.slint new file mode 100644 index 0000000..e2b503f --- /dev/null +++ b/ui/ui/components/filled_button.slint @@ -0,0 +1,43 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component FilledButton { + in property icon <=> base.icon; + in property text <=> base.text; + in property tooltip <=> base.tooltip; + in property enabled <=> base.enabled; + + callback clicked <=> base.clicked; + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-action-default => { base.clicked(); } + + elevation := Elevation { + border_radius: root.height / 2; + background: MaterialPalette.primary; + width: 100%; + height: 100%; + } + + base := BaseButton { + border_radius: elevation.border_radius; + color: MaterialPalette.on_primary; + } + + states [ + disabled when !root.enabled : { + elevation.background: transparent; + base.color: MaterialPalette.on_surface; + } + hover when base.has_hover && !base.pressed && !base.enter_pressed : { + elevation.level: 1; + } + ] +} diff --git a/ui/ui/components/filled_icon_button.slint b/ui/ui/components/filled_icon_button.slint new file mode 100644 index 0000000..644202e --- /dev/null +++ b/ui/ui/components/filled_icon_button.slint @@ -0,0 +1,64 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export component FilledIconButton { + in property icon; + in property checked_icon: root.icon; + in property checkable; + in_out property checked; + in property tooltip <=> base.tooltip; + in property enabled <=> base.enabled; + + callback clicked(); + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.tooltip; + accessible-checkable: root.checkable; + accessible-checked: root.checked; + accessible-action-default => { base.clicked(); } + + background_layer := Rectangle { + width: 100%; + height: 100%; + border_radius: base.border_radius; + background: root.checkable ? MaterialPalette.surface_container_highest : MaterialPalette.primary; + visible: root.enabled; + } + + base := BaseButton { + icon: root.checked ? root.checked_icon : root.icon; + border_radius: self.height / 2; + color: !root.enabled ? MaterialPalette.on_surface_variant : root.checkable ? MaterialPalette.primary : MaterialPalette.on_primary; + button_horizontal_padding: 0; + button_vertical_padding: 0; + width: self.height; + icon_size: MaterialStyleMetrics.icon_size_24; + + clicked => { + root.toggle(); + root.clicked(); + } + } + + function toggle() { + if !root.checkable { + return; + } + + root.checked = !root.checked; + } + + states [ + checked when root.enabled && root.checked : { + base.color: MaterialPalette.on_primary; + background_layer.background: MaterialPalette.primary; + } + ] +} diff --git a/ui/ui/components/floating_action_button.slint b/ui/ui/components/floating_action_button.slint new file mode 100644 index 0000000..32077f7 --- /dev/null +++ b/ui/ui/components/floating_action_button.slint @@ -0,0 +1,55 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export enum FABStyle { + small, + standard, + large +} + +export component FloatingActionButton { + in property icon <=> base.icon; + in property text <=> base.text; + in property tooltip <=> base.tooltip; + in property style; + + callback clicked <=> base.clicked; + + accessible-role: button; + accessible-enabled: true; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-action-default => { base.clicked(); } + + elevation := Elevation { + border_radius: root.style == FABStyle.small ? MaterialStyleMetrics.border_radius_12 : + root.style == FABStyle.standard ? MaterialStyleMetrics.border_radius_16 : MaterialStyleMetrics.border_radius_28; + background: MaterialPalette.primary; + level: 3; + width: 100%; + height: 100%; + } + + base := BaseButton { + border_radius: elevation.border_radius; + color: MaterialPalette.on_primary; + button_vertical_padding: root.style == FABStyle.small ? MaterialStyleMetrics.padding_10 : + root.style == FABStyle.standard ? MaterialStyleMetrics.padding_14 : MaterialStyleMetrics.padding_30; + button_horizontal_padding: self.button_vertical_padding; + min_layout_width: self.min_layout_height; + min_layout_height: root.style == FABStyle.small ? MaterialStyleMetrics.size_40 : + root.style == FABStyle.standard ? MaterialStyleMetrics.size_56 : MaterialStyleMetrics.size_90; + icon_size: root.style != FABStyle.large ? MaterialStyleMetrics.icon_size_24 : MaterialStyleMetrics.icon_size_36; + } + + states [ + hover when base.has_hover : { + elevation.level: 4; + } + ] +} diff --git a/ui/ui/components/grid.slint b/ui/ui/components/grid.slint new file mode 100644 index 0000000..9c82f56 --- /dev/null +++ b/ui/ui/components/grid.slint @@ -0,0 +1,10 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export component Grid inherits GridLayout { + padding: MaterialStyleMetrics.padding_8; + spacing_vertical: MaterialStyleMetrics.spacing_8; + spacing_horizontal: MaterialStyleMetrics.spacing_8; +} diff --git a/ui/ui/components/horizontal.slint b/ui/ui/components/horizontal.slint new file mode 100644 index 0000000..bddf801 --- /dev/null +++ b/ui/ui/components/horizontal.slint @@ -0,0 +1,9 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export component Horizontal inherits HorizontalLayout { + padding: MaterialStyleMetrics.padding_8; + spacing: MaterialStyleMetrics.spacing_8; +} diff --git a/ui/ui/components/icon.slint b/ui/ui/components/icon.slint new file mode 100644 index 0000000..4d23105 --- /dev/null +++ b/ui/ui/components/icon.slint @@ -0,0 +1,11 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export component Icon inherits Image { + width: MaterialStyleMetrics.icon_size_18; + height: self.width; + colorize: MaterialPalette.on_background; +} diff --git a/ui/ui/components/icon_button.slint b/ui/ui/components/icon_button.slint new file mode 100644 index 0000000..2acae9d --- /dev/null +++ b/ui/ui/components/icon_button.slint @@ -0,0 +1,62 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export component IconButton { + in property icon; + in property checked_icon: root.icon; + in property checkable; + in_out property checked; + in property tooltip <=> base.tooltip; + in property enabled <=> base.enabled; + in property inverse; + in property inline: false; + in property has_error; + + callback clicked(); + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.tooltip; + accessible-checkable: root.checkable; + accessible-checked: root.checked; + accessible-action-default => { base.clicked(); } + + base := BaseButton { + icon: root.checked ? root.checked_icon : root.icon; + border_radius: self.height / 2; + color: root.has_error ? MaterialPalette.error : root.inverse ? MaterialPalette.inverse_on_surface : MaterialPalette.on_surface_variant; + button_horizontal_padding: 0; + button_vertical_padding: 0; + width: self.height; + display_background: false; + icon_size: root.inline ? MaterialStyleMetrics.icon_size_18 : MaterialStyleMetrics.icon_size_24; + min_layout_width: root.inline ? MaterialStyleMetrics.icon_size_18 : MaterialStyleMetrics.size_40; + min_layout_height: self.min_layout_width; + clip_ripple: !root.inline; + + clicked => { + root.toggle(); + root.clicked(); + } + } + + function toggle() { + if !root.checkable { + return; + } + + root.checked = !root.checked; + } + + states [ + checked when root.enabled && root.checked : { + base.color: MaterialPalette.primary; + } + ] +} diff --git a/ui/ui/components/list.slint b/ui/ui/components/list.slint new file mode 100644 index 0000000..8e7bd68 --- /dev/null +++ b/ui/ui/components/list.slint @@ -0,0 +1,107 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { MaterialText } from "./material_text.slint"; +import { Icon } from "./icon.slint"; + +export component Avatar { + in property image; + in property background: MaterialPalette.primary; + + width: MaterialStyleMetrics.size_32; + height: self.width; + + Rectangle { + width: 100%; + height: 100%; + border_radius: self.width / 2; + background: root.background; + clip: true; + + Image { + source: root.image; + } + } +} + +export component ListTile { + in property text; + in property supporting_text; + in property avatar_icon; + in property avatar_text; + in property avatar_background; + in property avatar_foreground; + in property enabled <=> state_layer.enabled; + + property color: MaterialPalette.on_surface; + + callback clicked <=> state_layer.clicked; + + min_height: max(MaterialStyleMetrics.size_72, layout.min_height); + + state_layer := StateLayerArea { + color: root.color; + + layout := HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_16; + padding_right: MaterialStyleMetrics.padding_24; + padding_top: MaterialStyleMetrics.padding_8; + padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_16; + + if root.avatar_background != #00000000 || root.avatar_text != "" || (root.avatar_icon.width > 0 && root.avatar_icon.height > 0) : Rectangle { + width: self.height; + border_radius: self.height / 2; + background: root.avatar_background; + clip: true; + + if root.avatar_text != "" : MaterialText { + text: root.avatar_text; + vertical_alignment: center; + horizontal_alignment: center; + color: root.avatar_foreground; + style: MaterialTypography.title_medium; + } + + if root.avatar_icon.width > 0 && root.avatar_icon.height > 0 : Icon { + width: parent.width; + source: root.avatar_icon; + colorize: root.avatar_foreground; + } + } + + title_layout := VerticalLayout { + alignment: center; + horizontal_stretch: 1; + + MaterialText { + text: root.text; + color: root.color; + overflow: elide; + style: MaterialTypography.body_large; + } + + if root.supporting_text != "" : MaterialText { + text: root.supporting_text; + color: root.color; + overflow: elide; + style: MaterialTypography.body_medium; + } + } + + @children + } + } + + states [ + disabled when !root.enabled : { + state_layer.display_background: false; + title_layout.opacity: 38%; + } + ] +} + diff --git a/ui/ui/components/list_view.slint b/ui/ui/components/list_view.slint new file mode 100644 index 0000000..aeb847f --- /dev/null +++ b/ui/ui/components/list_view.slint @@ -0,0 +1,8 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { ScrollView } from "./scroll_view.slint"; + +export component ListView inherits ScrollView { + +} diff --git a/ui/ui/components/material_text.slint b/ui/ui/components/material_text.slint new file mode 100644 index 0000000..4aa5c20 --- /dev/null +++ b/ui/ui/components/material_text.slint @@ -0,0 +1,14 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialTypography, TextStyle } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component MaterialText inherits Text { + in property style: MaterialTypography.body_medium; + + font_size: root.style.font_size; + font_weight: root.style.font_weight; + color: MaterialPalette.on_background; + overflow: elide; +} diff --git a/ui/ui/components/material_window.slint b/ui/ui/components/material_window.slint new file mode 100644 index 0000000..a861ac0 --- /dev/null +++ b/ui/ui/components/material_window.slint @@ -0,0 +1,18 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; + +export global MaterialWindowAdapter { + in property disable_hover; +} + +export component MaterialWindow inherits Window { + in property disable_hover; + + background: MaterialPalette.background; + + changed disable_hover => { + MaterialWindowAdapter.disable_hover = root.disable_hover; + } +} diff --git a/ui/ui/components/menu.slint b/ui/ui/components/menu.slint new file mode 100644 index 0000000..f04da7a --- /dev/null +++ b/ui/ui/components/menu.slint @@ -0,0 +1,136 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { Elevation } from "elevation.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { Icon } from "./icon.slint"; +import { MenuItem } from "../items/menu_item.slint"; +import { MaterialText } from "./material_text.slint"; +import { Icons } from "../icons/icons.slint"; + +component MenuItemTemplate { + in property icon; + in property text; + in property trailing_text; + in property enabled <=> state_area.enabled; + in property selected; + + callback clicked(); + + property has_icon: root.icon.width > 0 && root.icon.height > 0; + property color: MaterialPalette.on_surface; + property color_variant: MaterialPalette.on_surface_variant; + + min_height: max(MaterialStyleMetrics.size_56, layout.min_height); + + background_layer := Rectangle { + state_area := StateLayerArea { + color: root.color; + + layout := HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_12; + padding_right: self.padding_left; + padding_top: MaterialStyleMetrics.padding_8; + padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_12; + + if root.has_icon : VerticalLayout { + alignment: center; + + Icon { + source: root.icon; + colorize: root.color; + } + } + + MaterialText { + horizontal_stretch: 1; + text: root.text; + style: MaterialTypography.body_large; + color: root.color; + vertical_alignment: center; + } + + if root.trailing_text != "" : MaterialText { + text: root.trailing_text; + style: MaterialTypography.body_large; + color: root.color_variant; + vertical_alignment: center; + } + } + + clicked => { + root.clicked(); + } + } + } + + states [ + disabled when !root.enabled : { + state_area.opacity: MaterialPalette.disable_opacity; + } + selected when root.selected : { + background_layer.background: MaterialPalette.surface_container_highest; + } + ] +} + +export component MenuInner { + in property <[MenuItem]> items; + in_out property current_index: -1; + + callback activated(index: int); + + // used to fix clipping of shadows + out property elevation: 2; + + menu := Elevation { + width: 100%; + level: root.elevation; + height: layout.min_height + root.elevation * 1px; + border_radius: MaterialStyleMetrics.border_radius_4; + background: MaterialPalette.surface_container; + + layout := VerticalLayout { + width: root.width; + padding_top: MaterialStyleMetrics.padding_8; + padding_bottom: self.padding_top; + + for item[index] in root.items : MenuItemTemplate { + icon: item.icon; + text: item.text; + trailing_text: item.trailing_text; + enabled: item.enabled; + selected: index == root.current_index; + + clicked => { + root.activated(index); + } + } + } + } +} + +export component PopupMenu inherits PopupWindow { + in property <[MenuItem]> items; + + callback activated(index: int); + + width: MaterialStyleMetrics.size_200; + close_policy: close_on_click_outside; + + VerticalLayout { + padding: inner.elevation * 1px; + + inner := MenuInner { + items: root.items; + + activated(index) => { + root.activated(index); + } + } + } +} diff --git a/ui/ui/components/modal.slint b/ui/ui/components/modal.slint new file mode 100644 index 0000000..b14a4a6 --- /dev/null +++ b/ui/ui/components/modal.slint @@ -0,0 +1,28 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; + +export component Modal { + callback clicked <=> touch_area.clicked; + + background_layer := Rectangle { + clip: true; + + touch_area := TouchArea { + @children + } + + animate background { duration: MaterialAnimations.opacity_duration; easing: MaterialAnimations.opacity_easing; } + } + + Timer { + interval: 50ms; + + triggered => { + background_layer.background = MaterialPalette.background_modal; + self.running = false; + } + } +} diff --git a/ui/ui/components/navigation_bar.slint b/ui/ui/components/navigation_bar.slint new file mode 100644 index 0000000..2705ef3 --- /dev/null +++ b/ui/ui/components/navigation_bar.slint @@ -0,0 +1,150 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Badge } from "./badge.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { ExtendedTouchArea } from "./extended_touch_area.slint"; +import { StateLayer, Ripple } from "./state_layer.slint"; +import { Icon } from "./icon.slint"; +import { NavigationItem } from "../items/navigation_item.slint"; +import { BaseNavigationItemTemplate, BaseNavigation } from "./base_navigation.slint"; + +export component NavigationItemTemplate inherits BaseNavigationItemTemplate { + property has_icon: root.icon.width > 0 && root.icon.height > 0; + property has_selected_icon: root.selected_icon.width > 0 || root.selected_icon.height > 0; + property color: MaterialPalette.on_surface; + + in property navitem_padding_top: MaterialStyleMetrics.padding_12; + in property navitem_padding_bottom: MaterialStyleMetrics.padding_16; + + Rectangle { + width: 100%; + height: 100%; + } + + touch_area := ExtendedTouchArea { + HorizontalLayout { + alignment: center; + + VerticalLayout { + alignment: start; + spacing: MaterialStyleMetrics.spacing_4; + padding_top: root.navitem_padding_top; + padding_bottom: root.navitem_padding_bottom; + + HorizontalLayout { + alignment: center; + + background_layer := Rectangle { + min_width: state_layout.min_width; + min_height: max(MaterialStyleMetrics.size_32, state_layout.min_height); + border_radius: self.height / 2; + + state_layer := StateLayer { + background: root.color; + border_radius: parent.border_radius; + enabled: true; + has_focus: touch_area.has_focus; + has_hover: touch_area.has_hover; + pressed: touch_area.pressed || touch_area.enter_pressed; + width: 100%; + height: 100%; + + if touch_area.pressed && !root.selected : Ripple { + width: root.width; + height: root.height; + pressed_x: touch_area.pressed_x; + pressed_y: touch_area.pressed_y; + color: root.color; + } + + state_layout := HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_20; + padding_right: self.padding_left; + alignment: center; + + VerticalLayout { + alignment: center; + + if !root.has_icon && !root.has_selected_icon : Rectangle { + width: 12px; + height: self.width; + border_radius: self.width / 2; + background: root.color; + } + + if root.has_icon || root.has_selected_icon : Icon { + source: root.icon; + colorize: root.color; + + states [ + selected when root.selected && root.has_selected_icon : { + source: root.selected_icon; + } + ] + } + } + } + } + + if root.show_badge || root.badge != "" : Badge { + x: parent.width / 2; + y: 0; + text: root.badge; + } + } + } + + label := MaterialText { + text: root.text; + style: MaterialTypography.label_medium; + color: root.color; + horizontal_alignment: center; + } + } + } + + clicked => { + root.clicked(); + } + } + + states [ + selected when root.selected : { + background_layer.background: MaterialPalette.secondary_container; + state_layer.background: transparent; + label.style: MaterialTypography.label_medium_prominent; + } + ] +} + +export component NavigationBar inherits BaseNavigation { + min_height: max(MaterialStyleMetrics.size_80, layout.min_height); + + Rectangle { + background: MaterialPalette.surface_container; + + layout := HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_8; + padding_right: self.padding_left; + spacing: MaterialStyleMetrics.spacing_8; + + for item[index] in root.items : NavigationItemTemplate { + icon: item.icon; + selected_icon: item.selected_icon; + text: item.text; + index: index; + selected: index == root.current_index; + show_badge: item.show_badge; + badge: item.badge; + + clicked => { + root.select(index); + } + } + } + } +} diff --git a/ui/ui/components/navigation_drawer.slint b/ui/ui/components/navigation_drawer.slint new file mode 100644 index 0000000..51c92b7 --- /dev/null +++ b/ui/ui/components/navigation_drawer.slint @@ -0,0 +1,227 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Drawer, ModalDrawer, DrawerHeader } from "./drawer.slint"; +import { NavigationItem, NavigationGroup } from "../items/navigation_item.slint"; +import { HorizontalDivider } from "./divider.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { Icon } from "./icon.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { BaseNavigationItemTemplate } from "./base_navigation.slint"; + +component NavigationItemTemplate inherits BaseNavigationItemTemplate { + property has_icon: root.icon.width > 0 && root.icon.height > 0; + property has_selected_icon: root.selected_icon.width > 0 || root.selected_icon.height > 0; + property color: MaterialPalette.on_surface_variant; + + min_height: max(MaterialStyleMetrics.size_56, layout.min_height); + + background_layer := Rectangle { + border_radius: self.height / 2; + + state_layer := StateLayerArea { + border_radius: parent.border_radius; + color: root.selected ? transparent : root.color; + + layout := HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_16; + padding_right: MaterialStyleMetrics.padding_24; + padding_top: MaterialStyleMetrics.padding_16; + padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_12; + + VerticalLayout { + alignment: center; + + if !root.has_icon && !root.has_selected_icon : Rectangle { + width: MaterialStyleMetrics.icon_size_24; + height: self.width; + + Rectangle { + width: 12px; + height: self.width; + border_radius: self.width / 2; + background: root.color; + } + } + + if root.has_icon || root.has_selected_icon : Icon { + source: root.icon; + colorize: root.color; + + states [ + selected when root.selected && root.has_selected_icon : { + source: root.selected_icon; + } + ] + } + } + + MaterialText { + horizontal_stretch: 1; + text: root.text; + style: MaterialTypography.label_large; + color: root.color; + vertical_alignment: center; + } + + if root.badge != "" : MaterialText { + text: root.badge; + style: MaterialTypography.label_large; + color: root.color; + vertical_alignment: center; + } + } + + clicked => { + root.clicked(); + } + + pointer_event(event) => { + root.pointer_event(event, { + x: self.mouse_x, + y: self.mouse_y, + }); + } + } + + animate background { duration: MaterialAnimations.opacity_duration; easing: MaterialAnimations.opacity_easing; } + } + + states [ + selected when root.selected : { + background_layer.background: MaterialPalette.secondary_container; + root.color: MaterialPalette.on_secondary_container; + } + ] + + animate color { duration: MaterialAnimations.opacity_duration; easing: MaterialAnimations.opacity_easing; } +} + +component NavigationGroupTemplate { + in property title; + in property <[NavigationItem]> items; + in property current_index: -1; + in property has_divider; + + callback select(index: int); + callback item_pointer_event(index: int, event: PointerEvent, position: Point); + + VerticalLayout { + alignment: start; + + if root.title != 0 : DrawerHeader { + title: root.title; + } + + for item[index] in root.items : NavigationItemTemplate { + icon: item.icon; + selected_icon: item.selected_icon; + text: item.text; + badge: item.badge; + selected: index == root.current_index; + index: index; + + clicked => { + root.select(index); + } + pointer_event(event, position) => { + root.item_pointer_event(index, event, { + x: self.x + position.x, + y: self.y + position.y, + }); + } + } + + if root.has_divider : HorizontalDivider {} + } +} + +export component NavigationDrawer inherits Drawer { + callback selected(group-index: int, item-index: int); + callback item_pointer_event(group_index: int, item_index: int, event: PointerEvent, position: Point); + in property <[NavigationGroup]> groups; + in_out property current_group; + in_out property current_index; + + accessible-role: tab-list; + // accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-index; + // accessible-label: root.title; + accessible-item-count: root.groups.length; + + for group[group_index] in root.groups : NavigationGroupTemplate { + title: group.title; + items: group.items; + current_index: group_index == root.current_group ? root.current_index : -1; + has_divider: root.groups.length > 1 && group_index < root.groups.length - 1; + + select(index) => { + root.select(group_index, index); + } + item_pointer_event(index, event, position) => { + root.item_pointer_event(group_index, index, event, { x: self.x + position.x, y: self.y + position.y }); + } + } + + public function select(group_index: int, item_index: int) { + if group_index < 0 || group_index >= root.groups.length || item_index < 0 || item_index >= root.groups[group_index].items.length { + return; + } + + root.current_group = group_index; + root.current_index = item_index; + root.selected(group_index, item_index); + } +} + +export component ModalNavigationDrawer inherits ModalDrawer { + callback selected(group-index: int, item-index: int); + callback item_pointer_event(group_index: int, item_index: int, event: PointerEvent, position: Point); + in property <[NavigationGroup]> groups; + in_out property current_group; + in_out property current_index; + + accessible-role: tab-list; + // accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-index; + // accessible-label: root.title; + accessible-item-count: root.groups.length; + + // Workaround for issue #9766 + close_timer := Timer { + interval: 0ms; + running: false; + triggered => { + root.close(); + self.stop(); + } + } + + for group[group_index] in root.groups : NavigationGroupTemplate { + title: group.title; + items: group.items; + current_index: group_index == root.current_group ? root.current_index : -1; + has_divider: root.groups.length > 1 && group_index < root.groups.length - 1; + + select(index) => { + root.select(group_index, index); + } + item_pointer_event(index, event, position) => { + root.item_pointer_event(group_index, index, event, { x: self.x + position.x, y: self.y + position.y }); + } + } + + public function select(group_index: int, item_index: int) { + if group_index < 0 || group_index >= root.groups.length || item_index < 0 || item_index >= root.groups[group_index].items.length { + return; + } + + root.current_group = group_index; + root.current_index = item_index; + root.selected(group_index, item_index); + close_timer.start(); + } +} diff --git a/ui/ui/components/navigation_rail.slint b/ui/ui/components/navigation_rail.slint new file mode 100644 index 0000000..4ab1a1f --- /dev/null +++ b/ui/ui/components/navigation_rail.slint @@ -0,0 +1,84 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { NavigationItem } from "../items/navigation_item.slint"; +import { FloatingActionButton, FABStyle } from "./floating_action_button.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { IconButton } from "icon_button.slint"; +import { Icons } from "../icons/icons.slint"; +import { NavigationItemTemplate } from "navigation_bar.slint"; +import { BaseNavigation } from "./base_navigation.slint"; + +export component NavigationRail inherits BaseNavigation { + in property has_menu; + in property fab_icon; + in property alignment; + + callback menu_clicked(); + callback fab_clicked(); + + min_width: max(MaterialStyleMetrics.size_80, layout.min_width); + + Rectangle { + background: MaterialPalette.surface; + + layout := VerticalLayout { + padding_top: MaterialStyleMetrics.padding_44; + padding_bottom: MaterialStyleMetrics.padding_56; + spacing: MaterialStyleMetrics.spacing_4; + + if root.has_menu : IconButton { + icon: Icons.menu; + + clicked => { + root.menu_clicked(); + } + } + + + if root.fab_icon.width > 0 && root.fab_icon.height > 0 : HorizontalLayout { + alignment: center; + + FloatingActionButton { + icon: root.fab_icon; + style: FABStyle.standard; + + clicked => { + root.fab_clicked(); + } + } + } + + // helper to place fab at the top if no items are present + if root.items.length == 0 : Rectangle { + horizontal_stretch: 1; + } + + HorizontalLayout { + vertical_stretch: 1; + alignment: center; + + VerticalLayout { + alignment: root.alignment; + + for item[index] in root.items : NavigationItemTemplate { + icon: item.icon; + selected_icon: item.selected_icon; + text: item.text; + index: index; + selected: index == root.current_index; + show_badge: item.show_badge; + badge: item.badge; + navitem_padding_top: 0; + navitem_padding_bottom: MaterialStyleMetrics.padding_4; + + clicked => { + root.select(index); + } + } + } + } + } + } +} diff --git a/ui/ui/components/outline_button.slint b/ui/ui/components/outline_button.slint new file mode 100644 index 0000000..e40db92 --- /dev/null +++ b/ui/ui/components/outline_button.slint @@ -0,0 +1,42 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component OutlineButton { + in property icon <=> base.icon; + in property text <=> base.text; + in property enabled <=> base.enabled; + in property tooltip <=> base.tooltip; + + callback clicked <=> base.clicked; + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-action-default => { base.clicked(); } + + base := BaseButton { + border_radius: border.border_radius; + color: MaterialPalette.primary; + } + + border := Rectangle { + border_radius: root.height / 2; + border_width: 1px; + border_color: MaterialPalette.outline; + width: 100%; + height: 100%; + } + + states [ + disabled when !root.enabled : { + base.color: MaterialPalette.on_surface; + base.transparent_background: true; + border.border_color: MaterialPalette.on_surface; + border.opacity: MaterialPalette.state_layer_opacity_hover; + } + ] +} diff --git a/ui/ui/components/outline_icon_button.slint b/ui/ui/components/outline_icon_button.slint new file mode 100644 index 0000000..263df34 --- /dev/null +++ b/ui/ui/components/outline_icon_button.slint @@ -0,0 +1,78 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Elevation } from "./elevation.slint"; +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; + +export component OutlineIconButton { + in property icon; + in property checked_icon: root.icon; + in property checkable; + in_out property checked; + in property tooltip <=> base.tooltip; + in property enabled <=> base.enabled; + + callback clicked(); + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.tooltip; + accessible-checkable: root.checkable; + accessible-checked: root.checked; + accessible-action-default => { base.clicked(); } + + background_layer := Rectangle { + width: 100%; + height: 100%; + border_radius: base.border_radius; + border_width: 1px; + border_color: MaterialPalette.outline; + } + + base := BaseButton { + icon: root.checked ? root.checked_icon : root.icon; + border_radius: self.height / 2; + color: !root.enabled ? MaterialPalette.on_surface_variant : MaterialPalette.on_surface_variant; + button_horizontal_padding: 0; + button_vertical_padding: 0; + width: self.height; + icon_size: MaterialStyleMetrics.icon_size_24; + display_background: false; + + clicked => { + root.toggle(); + root.clicked(); + } + } + + function toggle() { + if !root.checkable { + return; + } + + root.checked = !root.checked; + } + + states [ + disabled when !root.enabled : { + base.color: MaterialPalette.on_surface; + base.transparent_background: true; + background_layer.border_color: root.checked ? transparent : MaterialPalette.on_surface; + background_layer.background: root.checked ? MaterialPalette.on_surface : transparent; + background_layer.opacity: MaterialPalette.state_layer_opacity_hover; + } + checked when root.enabled && root.checked : { + base.color: MaterialPalette.inverse_on_surface; + background_layer.background: MaterialPalette.inverse_surface; + background_layer.border_width: 0; + } + checked_disabled when root.enabled && root.checked : { + base.color: MaterialPalette.inverse_on_surface; + background_layer.background: MaterialPalette.inverse_on_surface; + background_layer.border_width: 0; + } + ] +} diff --git a/ui/ui/components/progress_indicator.slint b/ui/ui/components/progress_indicator.slint new file mode 100644 index 0000000..92ded2c --- /dev/null +++ b/ui/ui/components/progress_indicator.slint @@ -0,0 +1,115 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component LinearProgressIndicator { + in property progress; + in property indeterminate; + + accessible-role: progress-indicator; + accessible-value: !root.indeterminate ? root.progress : ""; + accessible-value-minimum: 0.0; + accessible-value-maximum: 1.0; + height: MaterialStyleMetrics.size_4; + + Rectangle { + width: 100%; + height: 100%; + clip: true; + background: MaterialPalette.primary_container; + border_radius: MaterialStyleMetrics.border_radius_2; + + track := Rectangle { + x: 0; + y: 0; + width: parent.width * root.progress; + height: 100%; + border_radius: parent.border_radius; + background: MaterialPalette.primary; + } + } +} + +export component CircularProgressIndicator { + in property progress; + in property indeterminate; + + property bar_height: MaterialStyleMetrics.size_4; + + accessible-role: progress-indicator; + accessible-value: !root.indeterminate ? root.progress : ""; + accessible-value-minimum: 0.0; + accessible-value-maximum: 1.0; + width: self.height; + min_height: MaterialStyleMetrics.size_40; + + background_layer := Rectangle { + width: root.width; + height: root.height; + border_width: root.bar_height; + border_color: root.progress == 1 ? MaterialPalette.primary : MaterialPalette.primary_container; + border_radius: max(self.width, self.height) / 2; + } + + track := Path { + property radius: min(self.viewbox_width, self.viewbox_height) / 2; + property start_x: self.viewbox_width / 2; + property start_y: self.viewbox_height / 2; + property inner_radius: self.radius - (root.bar_height * (self.viewbox_height / self.height)); + property start: !root.indeterminate ? 0 : 1 * mod(animation-tick(), 1.5s) / 1.5s; + property progress: !root.indeterminate ? root.progress : 0.5; + + x: background_layer.x; + y: background_layer.y; + viewbox_width: 100; + viewbox_height: 100; + width: background_layer.width; + height: background_layer.height; + fill: MaterialPalette.primary; + visible: self.progress > 0 && self.progress < 1; + + MoveTo { + x: !root.indeterminate ? track.start_x : track.start_x - track.radius * sin(-track.start * 360deg); + y: !root.indeterminate ? 0 : track.start_y - track.radius * cos(-track.start * 360deg); + } + + ArcTo { + radius_x: 1; + radius_y: 1; + x: !root.indeterminate ? track.start_x : track.start_x - track.inner-radius * sin(-track.start * 360deg); + y: !root.indeterminate ? root.bar_height * (track.viewbox_height / track.height) : track.start_y - track.inner_radius * cos(-track.start * 360deg); + } + + ArcTo { + radius_x: track.inner_radius; + radius_y: track.inner_radius; + x: start_x - track.inner_radius * sin(-(track.start + track.progress) * 360deg); + y: start_y - track.inner_radius * cos(-(track.start + track.progress) * 360deg); + sweep: track.progress > 0; + large-arc: track.progress > 0.5; + } + + ArcTo { + radius_x: 1; + radius_y: 1; + x: start_x - radius * sin(-(track.start + track.progress) * 360deg); + y: start_y - radius * cos(-(track.start + track.progress) * 360deg); + } + + ArcTo { + radius_x: radius; + radius_y: radius; + x: start_x - radius * sin(-track.start * 360deg); + y: start_y - radius * cos(-track.start * 360deg); + sweep: track.progress < 0; + large-arc: track.progress > 0.5; + } + + LineTo { + x: start_x - radius * sin(-track.start * 360deg); + y: start_y - radius * cos(-track.start * 360deg); + } + } +} diff --git a/ui/ui/components/radio_button.slint b/ui/ui/components/radio_button.slint new file mode 100644 index 0000000..2d6a1b1 --- /dev/null +++ b/ui/ui/components/radio_button.slint @@ -0,0 +1,99 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { ListTile } from "./list.slint"; +import { ListView } from "./list_view.slint"; + +export component RadioButton { + in property checked; + in property enabled; + + callback clicked(); + + min_width: MaterialStyleMetrics.size_40; + min_height: self.min_width; + accessible-enabled: root.enabled; + accessible-checkable: true; + accessible-checked <=> root.checked; + accessible-role: radio-button; + accessible-action-default => { state_area.clicked(); } + forward_focus: state_area; + + state_area := StateLayerArea { + width: 100%; + height: 100%; + border_radius: max(self.width, self.height) / 2; + color: MaterialPalette.on_surface; + + border := Rectangle { + width: MaterialStyleMetrics.size_20; + height: self.width; + border_radius: max(self.width, self.height) / 2; + border_color: MaterialPalette.on_surface_variant; + border_width: MaterialStyleMetrics.size_2; + + indicator := Rectangle { + width: parent.width / 2; + height: self.width; + border_radius: max(self.width, self.height) / 2; + background: MaterialPalette.primary; + opacity: !root.checked ? 0 : 1; + + animate opacity { + duration: MaterialAnimations.opacity_duration; + easing: MaterialAnimations.opacity_easing; + } + } + + animate border_color { + duration: MaterialAnimations.opacity_duration; + easing: MaterialAnimations.opacity_easing; + } + } + + clicked => { + root.clicked(); + } + } + + states [ + disabled when !root.enabled : { + border.border_color: MaterialPalette.on_surface; + border.opacity: MaterialPalette.disable_opacity; + indicator.background: MaterialPalette.on_surface; + indicator.opacity: root.checked ? MaterialPalette.disable_opacity : 0; + } + highlighted when !root.checked && (state_area.pressed || state_area.has_focus || state_area.has_hover) : { + border.border_color: MaterialPalette.on_surface; + } + checked when root.checked : { + border.border_color: MaterialPalette.primary; + } + ] +} + +export component RadioButtonTile inherits ListTile { + in_out property checked <=> radio_button.checked; + + callback radio_button_clicked(); + + Rectangle { + horizontal_stretch: 0; + + radio_button := RadioButton { + enabled: root.enabled; + + clicked => { + root.radio_button_clicked(); + } + } + } + + clicked => { + radio_button.clicked(); + } +} diff --git a/ui/ui/components/scroll_view.slint b/ui/ui/components/scroll_view.slint new file mode 100644 index 0000000..dd783c3 --- /dev/null +++ b/ui/ui/components/scroll_view.slint @@ -0,0 +1,166 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component ScrollBar { + in property enabled; + out property has_hover: touch_area.has_hover; + in_out property horizontal; + in_out property maximum; + in_out property page_size; + in_out property value; + in property policy: ScrollBarPolicy.as_needed; + + property track_size: root.horizontal ? root.width - 2 * root.offset : root.height - 2 * offset; + property step_size: 10px; + property offset: 2px; + property state_opacity: 40%; + + visible: (self.policy == ScrollBarPolicy.always_on) || (self.policy == ScrollBarPolicy.as_needed && self.maximum > 0); + + Rectangle { + clip: true; + + thumb := Rectangle { + width: !root.horizontal ? parent.width : root.maximum <= 0phx ? 0phx : max(min(32px, root.width), root.track-size * root.page-size / (root.maximum + root.page-size)); + height: root.horizontal ? parent.height : root.maximum <= 0phx ? 0phx : max(min(32px, root.height), root.track-size * (root.page-size / (root.maximum + root.page-size))); + x: !root.horizontal ? (parent.width - self.width) / 2 : root.offset + (root.track-size - thumb.width) * (-root.value / root.maximum); + y: root.horizontal ? (parent.height - self.height) / 2 : root.offset + (root.track-size - thumb.height) * (-root.value / root.maximum); + border-radius: (root.horizontal ? self.height : self.width) / 2; + background: MaterialPalette.on_background; + opacity: hide_timer.running || touch_area.has_hover || touch_area.pressed ? root.state_opacity : 0; + + animate opacity { duration: 150ms; } + } + } + + touch_area := TouchArea { + property pressed_value; + + width: parent.width; + height: parent.height; + + pointer-event(event) => { + if (event.button == PointerEventButton.left && event.kind == PointerEventKind.down) { + self.pressed-value = -root.value; + } + } + + moved => { + if (self.enabled && self.pressed) { + root.value = -max(0px, min(root.maximum, self.pressed-value + ( + root.horizontal ? (touch-area.mouse-x - touch-area.pressed-x) * (root.maximum / (root.track-size - thumb.width)) + : (touch-area.mouse-y - touch-area.pressed-y) * (root.maximum / (root.track-size - thumb.height)) + ))); + } + } + + scroll-event(event) => { + if (root.horizontal && event.delta-x != 0) { + root.value = max(-root.maximum, min(0px, root.value + event.delta-x)); + return accept; + } else if (!root.horizontal && event.delta-y != 0) { + root.value = max(-root.maximum, min(0px, root.value + event.delta-y)); + return accept; + } + + reject + } + + changed has_hover => { + if !self.has_hover && !hide_timer.running { + hide_timer.running = true; + } + } + + changed pressed => { + if self.pressed && hide_timer.running { + hide_timer.running = false; + } + } + } + + changed value => { + if !self.has_hover && !hide_timer.running { + hide_timer.running = true; + } + } + + hide_timer := Timer { + interval: 1.5s; + running: false; + + triggered => { + self.running = false; + } + } + + states [ + pressed when touch_area.pressed : { + root.state_opacity: 80%; + } + hover when root.has_hover : { + root.state_opacity: 70%; + } + ] +} + +export component ScrollView { + in property enabled: true; + out property visible_width <=> flickable.width; + out property visible_height <=> flickable.height; + in_out property viewport_width <=> flickable.viewport_width; + in_out property viewport_height <=> flickable.viewport_height; + in_out property viewport_x <=> flickable.viewport_x; + in_out property viewport_y <=> flickable.viewport_y; + in property vertical_scrollbar_policy <=> vertical_bar.policy; + in property horizontal_scrollbar_policy <=> horizontal_bar.policy; + // FIXME: remove. This property is currently set by the ListView and is used by the native style to draw the scrollbar differently when it has focus + in_out property has_focus; + + callback scrolled <=> flickable.flicked; + + property scroll_bar_size: 8px; + property scroll_bar_padding: 1px; + + min_height: 50px; + min_width: 50px; + horizontal_stretch: 1; + vertical_stretch: 1; + preferred_height: 100%; + preferred_width: 100%; + + flickable := Flickable { + x: 0; + y: 0; + viewport_y <=> vertical_bar.value; + viewport_x <=> horizontal_bar.value; + width: root.width - (root.vertical_scrollbar_policy != ScrollBarPolicy.always_off ? root.scroll_bar_size - 2 * root.scroll_bar_padding : 0); + height: root.height - (root.horizontal_scrollbar_policy != ScrollBarPolicy.always_off ? root.scroll_bar_size : 0); + + @children + } + + vertical_bar := ScrollBar { + enabled: root.enabled; + x: flickable.width + root.scroll_bar_padding; + y: 0; + width: root.visible ? root.scroll_bar_size : 0; + height: root.vertical_scrollbar_policy != ScrollBarPolicy.always_off ? parent.height - horizontal_bar.height : parent.height; + horizontal: false; + maximum: flickable.viewport_height - flickable.height; + page-size: flickable.height; + } + + horizontal_bar := ScrollBar { + enabled: root.enabled; + width: vertical_bar.visible ? parent.width - vertical_bar.width : parent.width; + height: root.horizontal_scrollbar_policy != ScrollBarPolicy.always_off ? root.scroll_bar_size : 0; + x: 0; + y: flickable.height + root.scroll_bar_padding; + horizontal: true; + maximum: flickable.viewport_width - flickable.width; + page_size: flickable.width; + } +} diff --git a/ui/ui/components/search_bar.slint b/ui/ui/components/search_bar.slint new file mode 100644 index 0000000..211a436 --- /dev/null +++ b/ui/ui/components/search_bar.slint @@ -0,0 +1,324 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { ListItem } from "../items/list_item.slint"; +import { Avatar, ListTile } from "./list.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { MaterialText } from "./material_text.slint"; +import { Icon } from "./icon.slint"; +import { IconButton } from "./icon_button.slint"; +import { Icons } from "../icons/icons.slint"; +import { HorizontalDivider } from "./divider.slint"; +import { ListView } from "./list_view.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; + +component SearchTile inherits ListTile { + in property action_button_icon; + + callback action_button_clicked(); + + if root.action_button_icon.width > 0 && root.action_button_icon.height > 0 : IconButton { + icon: root.action_button_icon; + + clicked => { + root.action_button_clicked(); + } + } +} + +component SearchIcon { + in property icon; + in property color; + + VerticalLayout { + alignment: center; + padding_left: MaterialStyleMetrics.padding_8; + padding_right: self.padding_left; + + Icon { + source: root.icon; + colorize: root.color; + } + } +} + +component SearchTextInput { + in_out property text <=> text_input.text; + in property placeholder_text; + property computed_x; + + callback accepted(text: string); + callback edited(text: string); + callback key_pressed(event: KeyEvent) -> EventResult; + callback key_released(event: KeyEvent) -> EventResult; + + forward_focus: text_input; + horizontal_stretch: 1; + + Rectangle { + clip: true; + + text_input := TextInput { + x: min(0px, max(parent.width - self.width - self.text_cursor_width, root.computed_x)); + width: max(parent.width - self.text-cursor-width, self.preferred-width); + height: 100%; + font_size: MaterialTypography.body_large.font_size; + font_weight: MaterialTypography.body_large.font_weight; + vertical_alignment: center; + single_line: true; + color: MaterialPalette.on_surface; + selection_background_color: MaterialPalette.secondary_container; + selection_foreground_color: self.color; + // Disable TextInput's built-in accessibility support as the component takes care of that. + accessible-role: none; + + cursor_position_changed(cursor_position) => { + if cursor_position.x + root.computed_x < 0 { + root.computed_x = - cursor_position.x; + } else if cursor-position.x + root.computed_x > parent.width - self.text-cursor-width { + root.computed_x = parent.width - cursor_position.x - self.text-cursor-width; + } + } + + accepted => { + root.accepted(self.text); + } + + edited => { + root.edited(self.text); + } + + key_pressed(event) => { + root.key_pressed(event) + } + + key_released(event) => { + root.key_released(event) + } + + init => { + if root.text.character_count > 0 { + self.set_selection_offsets(root.text.character_count, root.text.character_count); + } + } + } + if root.text == "" && root.placeholder_text != "" : MaterialText { + width: 100%; + height: 100%; + text: root.placeholder_text; + color: MaterialPalette.on_surface_variant; + vertical_alignment: center; + style: MaterialTypography.body_large; + } + } +} + +export component SearchBar { + in property leading_icon: Icons.menu; + in property trailing_icon; + in property avatar_icon; + in property avatar_background: #00000000; + in property placeholder_text; + in property empty_text; + in_out property text; + in_out property current_index; + in property <[ListItem]> items; + + callback accepted(text: string); + callback edited(text: string); + callback action_button_clicked(index: int); + callback key_pressed(event: KeyEvent) -> EventResult; + callback key_released(event: KeyEvent) -> EventResult; + callback item-activated(index: int) -> bool; + + property color: MaterialPalette.on_surface_variant; + property item_height: MaterialStyleMetrics.size_72; + + public function close-popup() { + popup.close(); + } + + min_height: max(MaterialStyleMetrics.size_56, layout.min_height); + forward_focus: state_layer; + + Rectangle { + background: MaterialPalette.surface_container_high; + border_radius: MaterialStyleMetrics.border_radius_28; + + state_layer := StateLayerArea { + border_radius: parent.border_radius; + color: root.color; + + layout := HorizontalLayout { + padding: MaterialStyleMetrics.padding_4; + spacing: MaterialStyleMetrics.spacing_4; + + SearchIcon { + icon: root.leading_icon; + color: root.color; + } + + MaterialText { + text: root.text; + font_size: MaterialTypography.body_large.font_size; + font_weight: MaterialTypography.body_large.font_weight; + vertical_alignment: center; + color: MaterialPalette.on_surface; + + states [ + placeholder when root.text == "" : { + text: root.placeholder_text; + color: MaterialPalette.on_surface; + } + ] + } + + SearchIcon { + icon: root.trailing_icon; + color: root.color; + } + + if (root.avatar_icon.width > 0 && root.avatar_icon.height > 0) || root.avatar_background != #00000000 : VerticalLayout { + alignment: center; + + Avatar { + image: root.avatar_icon; + background: root.avatar_background; + } + } + } + + changed has_focus => { + if self.has_focus { + popup.show(); + } + } + + clicked => { + popup.show(); + } + } + } + + popup := PopupWindow { + x: 0; + y: 0; + width: root.width; + height: root.height + clamp(root.item_height * root.items.length, 3 * root.item_height, 6 * root.item_height); + close_policy: close_on_click_outside; + forward-focus: popup_input; + + background_layer := Rectangle { + x: 0; + y: 0; + width: 100%; + height: root.height; + background: MaterialPalette.surface_container_high; + border_radius: MaterialStyleMetrics.border_radius_28; + clip: true; + + VerticalLayout { + HorizontalLayout { + padding: MaterialStyleMetrics.padding_4; + spacing: MaterialStyleMetrics.spacing_4; + + IconButton { + icon: Icons.arrow_back; + + clicked => { + popup.close(); + } + } + + popup_input := SearchTextInput { + placeholder_text: root.placeholder_text; + text: root.text; + + accepted => { + root.accepted(self.text); + } + + edited => { + root.text = self.text; + root.edited(self.text); + } + + key_pressed(event) => { + root.key_pressed(event) + } + + key_released(event) => { + root.key_released(event) + } + + changed text => { + root.text = text; + } + } + + IconButton { + icon: Icons.close; + + clicked => { + root.text = ""; + popup.close(); + } + } + } + + HorizontalDivider {} + + if root.items.length == 0 : MaterialText { + text: root.empty_text; + color: root.color; + horizontal_alignment: center; + style: MaterialTypography.label_small; + } + + if root.items.length == 0 : Rectangle {} + + if root.items.length > 0 : ListView { + horizontal_stretch: 1; + + for item[index] in root.items : SearchTile { + text: item.text; + supporting_text: item.supporting_text; + avatar_icon: item.avatar_icon; + avatar_text: item.avatar_text; + avatar_background: item.avatar_background; + avatar_foreground: item.avatar_foreground; + action_button_icon: item.action_button_icon; + + clicked => { + if (!root.item-activated(index)) { + root.text = self.text; + } + popup.close(); + } + + action_button_clicked => { + root.action_button_clicked(index); + } + } + } + } + + animate height { + duration: MaterialAnimations.standard_accelerate_duration; + easing: MaterialAnimations.standard_easing; + } + } + + Timer { + interval: 50ms; + + triggered => { + background_layer.height = popup.height; + self.running = false; + } + } + } +} diff --git a/ui/ui/components/segmented_button.slint b/ui/ui/components/segmented_button.slint new file mode 100644 index 0000000..21acf94 --- /dev/null +++ b/ui/ui/components/segmented_button.slint @@ -0,0 +1,103 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { BaseButton } from "base_button.slint"; +import { Icons } from "../icons/icons.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; + +export struct SegmentedItem { + icon: image, + text: string +} + +component SegmentedItemTemplate { + in property icon; + in property text; + in property index; + in property selected; + in property last; + + callback clicked <=> base.clicked; + + accessible-role: list-item; + accessible-label: root.text; + accessible-item-selectable: true; + accessible-item-selected: root.selected; + accessible-item-index: root.index; + + if root.selected : Rectangle { + background: MaterialPalette.secondary_container; + } + + base := BaseButton { + min_layout_width: 0; + min_layout_height: 0; + color: MaterialPalette.on_surface; + button_vertical_padding: MaterialStyleMetrics.padding_10; + button_horizontal_padding: MaterialStyleMetrics.padding_24; + spacing: MaterialStyleMetrics.spacing_8; + icon: root.icon; + text: root.text; + + + animate width { duration: MaterialAnimations.standard_accelerate_duration; easing: MaterialAnimations.standard_easing; } + } + + if !root.last : Rectangle { + x: parent.width - self.width; + width: 1px; + height: 100%; + background: MaterialPalette.outline; + } + + states [ + selected when root.selected : { + base.icon: Icons.check; + } + ] +} + +export component SegmentedButton { + in property <[SegmentedItem]> items; + in_out property current_index; + + callback index_changed(index: int); + + min_width: max(2 * MaterialStyleMetrics.size_40, layout.min_width); + min_height: max(MaterialStyleMetrics.size_40, layout.min_height); + + accessible-role: list; + accessible-item-count: root.items.length; + + Rectangle { + clip: true; + border_width: 1px; + border_radius: self.height / 2; + border_color: MaterialPalette.outline; + + layout := HorizontalLayout { + for item[index] in root.items : SegmentedItemTemplate { + icon: item.icon; + text: item.text; + index: index; + last: index == root.items.length - 1; + selected: index == root.current_index; + + clicked => { + root.select(index); + } + } + } + } + + function select(index: int) { + if index < 0 || index >= root.items.length { + return; + } + + root.current_index = index; + root.index_changed(index); + } +} diff --git a/ui/ui/components/slider.slint b/ui/ui/components/slider.slint new file mode 100644 index 0000000..6e93f50 --- /dev/null +++ b/ui/ui/components/slider.slint @@ -0,0 +1,155 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT +// +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { StateLayer } from "./state_layer.slint"; + +export component Slider { + in property enabled; + in_out property value; + in property minimum; + in property stop_count: 0; + in property maximum: 100; + + callback released(value: float); + callback value_changed(value: float); + + property steps: root.stop_count > 0 ? (root.maximum - root.minimum) / root.stop_count : 1; + + min_height: 20px; + accessible-role: slider; + accessible-enabled: root.enabled; + accessible-value: root.value; + accessible-value-minimum: root.minimum; + accessible-value-maximum: root.maximum; + accessible-value-step: min(steps, (root.maximum - root.minimum) / 100); + accessible-action-set-value(v) => { + if v.is-float() { + root.set_value(v.to-float()); + } + } + accessible-action-increment => { root.increment_value(); } + accessible-action-decrement => { root.decrement_value(); } + forward-focus: focus_scope; + + focus_scope := FocusScope { + touch_area := TouchArea { + track := Rectangle { + x: 0; + height: MaterialStyleMetrics.size_16; + background: MaterialPalette.surface_container_highest; + border_radius: self.height / 2; + + Rectangle { + x: 0; + width: state_layer.x - MaterialStyleMetrics.size_6; + border-top-left-radius: track.border_radius; + border-bottom-left-radius: track.border_radius; + border-top-right-radius: MaterialStyleMetrics.size_1; + border-bottom-right-radius: MaterialStyleMetrics.size_1; + background: thumb.background; + } + + if root.stop_count > 1: Rectangle { + width: 100%; + height: 100%; + + for i in (root.maximum - root.minimum) / root.steps - 1: Rectangle { + x: root.value_to_length(track.width, (i + 1) * root.steps) - self.width / 2; + height: MaterialStyleMetrics.size_4; + width: self.height; + border_radius: self.height / 2; + background: MaterialPalette.outline; + } + } + } + + state_layer := Rectangle { + x: root.value_to_length(track.width, root.value); + width: 0; + height: track.height + (MaterialStyleMetrics.size_14 * 2); + StateLayer { + height: track.height + (MaterialStyleMetrics.size_16 * 2); + width: thumb.width + (MaterialStyleMetrics.size_2 * 2); + border_radius: self.width / 2; + pressed: touch_area.pressed; + has_hover: touch_area.has_hover; + has_focus: focus_scope.has_focus; + enabled: root.enabled; + background: thumb.background; + display_background: thumb_area.pressed || thumb_area.has_hover || focus_scope.has_focus; + + thumb_area := TouchArea { + height: track.height + (MaterialStyleMetrics.size_14 * 2); + width: self.height; + thumb := Rectangle { + width: MaterialStyleMetrics.size_4; + border_radius: self.width / 2; + background: MaterialPalette.primary; + } + + moved => { + root.set_value(root.length_to_value(state_layer.x + (self.mouse_x - self.pressed_x), track.width)); + } + + pointer_event(event) => { + if event.kind == PointerEventKind.up { + root.released(root.value); + } + } + } + } + } + + pointer_event(event) => { + if event.kind == PointerEventKind.down && event.button == PointerEventButton.left { + root.set_value(root.length_to_value(self.mouse_x, track.width)); + } + if event.kind == PointerEventKind.up { + root.released(root.value); + } + } + } + + key_pressed(event) => { + if event.text == Key.LeftArrow { + root.decrement_value(); + return accept; + } + if event.text == Key.RightArrow { + root.increment_value(); + return accept; + } + reject + } + } + + changed value => { + root.value_changed(root.value); + } + + pure function value_to_length(width: length, value: float) -> length { + clamp(width * (value - root.minimum) / (root.maximum - root.minimum), 0, width) + } + + pure function length_to_value(x: length, width: length) -> float { + x * (root.maximum - root.minimum) / width + } + + function set_value(value: float) { + if root.steps > 1 { + root.value = clamp(round(value / root.steps) * root.steps, root.minimum, root.maximum) + } else { + root.value = clamp(value, root.minimum, root.maximum) + } + } + + function increment_value() { + root.set_value(root.value + root.steps); + } + + function decrement_value() { + root.set_value(root.value - root.steps); + } +} diff --git a/ui/ui/components/snack_bar.slint b/ui/ui/components/snack_bar.slint new file mode 100644 index 0000000..962c742 --- /dev/null +++ b/ui/ui/components/snack_bar.slint @@ -0,0 +1,88 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { Elevation } from "elevation.slint"; +import { MaterialText } from "./material_text.slint"; +import { TextButton } from "./text_button.slint"; +import { IconButton } from "./icon_button.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { Icons } from "../icons/icons.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; + +export component SnackBar inherits PopupWindow { + in property text; + in property action_text; + in property has_close_button; + + close_policy: no_auto_close; + + callback action_clicked(); + + snack_bar := Elevation { + x: (parent.width - self.width) / 2; + y: parent.height - self.height; + width: MaterialStyleMetrics.size_344; + level: 3; + + background_layer := Rectangle { + background: MaterialPalette.inverse_surface; + border_radius: MaterialStyleMetrics.border_radius_4; + + HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_16; + padding_right: self.padding_left; + padding_top: MaterialStyleMetrics.padding_10; + padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_4; + + MaterialText { + text: root.text; + vertical_alignment: center; + horizontal_alignment: left; + wrap: word_wrap; + style: MaterialTypography.body_medium; + color: MaterialPalette.inverse_on_surface; + } + + if root.action_text != "" : TextButton { + text: root.action_text; + inverse: true; + + clicked => { + root.raise_action(); + } + } + + if root.has_close_button : IconButton { + icon: Icons.close; + inverse: true; + + clicked => { + root.close(); + } + } + } + } + + animate y, height { + duration: MaterialAnimations.standard_accelerate_duration; + easing: MaterialAnimations.standard_easing; + } + } + + Timer { + interval: 50ms; + + triggered => { + snack_bar.y = root.height - snack_bar.height - MaterialStyleMetrics.padding_30; + self.running = false; + } + } + + function raise_action() { + root.action_clicked(); + root.close(); + } +} diff --git a/ui/ui/components/state_layer.slint b/ui/ui/components/state_layer.slint new file mode 100644 index 0000000..ee50f74 --- /dev/null +++ b/ui/ui/components/state_layer.slint @@ -0,0 +1,171 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { ToolTip } from "./tooltip.slint"; +import { MaterialWindowAdapter } from "./material_window.slint"; + +export component Ripple { + in property border_radius; + in property pressed_x; + in property pressed_y; + in property color; + in property clip_ripple: true; + + Rectangle { + width: 100%; + height: 100%; + border_radius: root.border_radius; + clip: root.clip_ripple; + + ripple := Rectangle { + x: root.pressed_x - self.width / 2; + y: root.pressed_y - self.height / 2; + height: self.width; + border_radius: self.width / 2; + opacity: MaterialPalette.state_layer_opacity_press; + background: root.color; + + init => { + self.width = root.width * 2 * 1.4142; + } + + animate width { duration: MaterialAnimations.ripple_duration; easing: MaterialAnimations.ripple_easing; } + } + } +} + +export component StateLayer { + in property background; + in property border_radius; + in property display_background: true; + in property enabled; + in property pressed; + in property has_focus; + in property has_hover; + + property state_layer_opacity; + + Rectangle { + width: 100%; + height: 100%; + opacity: root.state_layer_opacity; + background: root.background; + border_radius: root.border_radius; + } + + Rectangle { + width: 100%; + height: 100%; + clip: true; + border_radius: root.border_radius; + + @children + } + + states [ + disabled when !root.enabled && root.display_background : { + root.state_layer_opacity: MaterialPalette.state_layer_opacity_focus; + } + focus when root.enabled && root.has_focus : { + root.state_layer_opacity: MaterialPalette.state_layer_opacity_focus; + } + pressed when root.enabled && root.pressed : { + root.state_layer_opacity: MaterialPalette.state_layer_opacity_press; + } + hover when root.enabled && root.has_hover && !MaterialWindowAdapter.disable_hover : { + root.state_layer_opacity: MaterialPalette.state_layer_opacity_hover; + } + ] + + animate state_layer_opacity { duration: MaterialAnimations.opacity_duration; easing: MaterialAnimations.opacity_easing; } +} + +export component FocusTouchArea inherits TouchArea { + out property has_focus <=> focus_scope.has_focus; + out property enter_pressed; + in property tooltip; + in property tooltip_offset; + + callback key_pressed(KeyEvent) -> EventResult; + + forward_focus: focus_scope; + + focus_scope := FocusScope { + x: 0; + width: 0px; + enabled: root.enabled; + + key_pressed(event) => { + if !root.enabled { + return reject; + } + + if (event.text == " " || event.text == "\n") && !root.enter_pressed { + root.enter_pressed = true; + root.clicked(); + return accept; + } + + root.key_pressed(event) + } + + key_released(event) => { + if !root.enabled { + return reject; + } + + if (event.text == " " || event.text == "\n") && root.enter_pressed { + root.enter_pressed = false; + return accept; + } + + reject + } + } + + @children + + + if root.tooltip != "" && root.has_hover && !MaterialWindowAdapter.disable_hover && !root.pressed : ToolTip { + y: root.tooltip_offset; + text: root.tooltip; + } +} + +export component StateLayerArea inherits FocusTouchArea { + in property color; + in property border_radius; + in property transparent_background; + in property display_background: true; + in property clip_ripple: true; + + property popup_open; + property has_h: root.mouse-x > 0 && root.mouse-x < root.width && root.mouse-y > 0 && root.mouse-y < root.height; + + if !root.enabled || (root.enabled && (root.has_focus || root.pressed || root.enter_pressed || root.has_hover)) : StateLayer { + width: 100%; + height: 100%; + background: root.transparent_background ? transparent : root.color; + border_radius: root.border_radius; + enabled: root.enabled; + pressed: root.pressed || root.enter_pressed; + has_focus: root.has_focus; + has_hover: root.has_hover; + display_background: root.display_background; + } + + // ripple + if root.enabled && (root.pressed || root.enter_pressed) : Ripple { + pressed_x: root.pressed_x; + pressed_y: root.pressed_y; + width: 100%; + height: 100%; + border_radius: root.border_radius; + color: root.color; + clip_ripple: root.clip_ripple; + } + + @children +} diff --git a/ui/ui/components/switch.slint b/ui/ui/components/switch.slint new file mode 100644 index 0000000..d92078a --- /dev/null +++ b/ui/ui/components/switch.slint @@ -0,0 +1,151 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { FocusTouchArea, StateLayer, Ripple } from "./state_layer.slint"; +import { Icon } from "./icon.slint"; + +export component Switch { + in_out property checked; + in property enabled: true; + in property tooltip <=> touch_area.tooltip; + in property on_icon; + in property off_icon; + + property has_icon: (root.checked && root.on_icon.width > 0 && root.on_icon.height > 0) || (root.off_icon.width > 0 && root.off_icon.height > 0); + property foreground: root.checked ? MaterialPalette.on_primary_container : MaterialPalette.surface_container_highest; + + callback checked_state_changed(checked: bool); + + min_width: MaterialStyleMetrics.size_52; + min_height: MaterialStyleMetrics.size_32; + + accessible-enabled: root.enabled; + accessible-checkable: true; + accessible-checked <=> root.checked; + accessible-role: switch; + accessible-action-default => { if(root.enabled) {touch_area.clicked();} } + forward_focus: touch_area; + + touch_area := FocusTouchArea { + enabled: root.enabled; + + background_layer := Rectangle { + background: root.checked ? MaterialPalette.primary : MaterialPalette.surface_container_highest; + border_radius: self.height / 2; + border_width: root.checked ? 0 : 2px; + border_color: MaterialPalette.outline; + + state_layer := StateLayer { + x: indicator.x + (indicator.width - self.width) / 2; + width: self.height; + height: root.height + MaterialStyleMetrics.size_8; + border_radius: self.height / 2; + has_hover: touch_area.has_hover; + has_focus: touch_area.has_focus; + pressed: touch_area.pressed; + enabled: root.enabled; + + // ripple + if root.enabled && (touch_area.pressed || touch_area.enter_pressed) : Ripple { + pressed_x: touch_area.pressed_x; + pressed_y: touch_area.pressed_y; + width: 100%; + height: 100%; + border_radius: state_layer.border_radius; + color: state_layer.background; + clip_ripple: true; + } + } + + indicator := Rectangle { + property indicator-padding: root.checked || root.has_icon ? MaterialStyleMetrics.padding_4 : MaterialStyleMetrics.padding_8; + + property default_height: background_layer.height - 2 * self.indicator-padding; + + x: self.indicator-padding - (self.height - self.default_height) / 2; + width: self.height; + height: self.default_height; + border_radius: self.height / 2; + background: root.checked ? MaterialPalette.primary_container : MaterialPalette.outline; + + if root.has_icon : Icon { + source: root.checked ? root.on_icon : root.off_icon; + colorize: root.foreground; + + animate colorize { + duration: MaterialAnimations.opacity_duration; + easing: MaterialAnimations.opacity_easing; + } + } + + animate height { + duration: MaterialAnimations.emphasized_accelerate_duration; + easing: MaterialAnimations.emphasized_easing; + } + + animate background { + duration: MaterialAnimations.opacity_duration; + easing: MaterialAnimations.opacity_easing; + } + + states [ + checked when root.checked : { + x: background_layer.width - self.indicator-padding - self.width; + + in { + animate x { + duration: MaterialAnimations.emphasized_accelerate_duration; + easing: MaterialAnimations.emphasized_easing; + } + } + + out { + animate x { + duration: MaterialAnimations.emphasized_accelerate_duration; + easing: MaterialAnimations.emphasized_easing; + } + } + } + ] + } + + animate background, border_color { + duration: MaterialAnimations.opacity_duration; + easing: MaterialAnimations.opacity_easing; + } + } + + clicked => { + root.toggle(); + } + } + + function toggle() { + root.checked = !root.checked; + } + + changed checked => { + root.checked_state_changed(root.checked); + } + + states [ + disabled when !root.enabled : { + state_layer.display_background: false; + indicator.background: root.checked ? MaterialPalette.surface : MaterialPalette.outline.with_alpha(MaterialPalette.disable_opacity); + background_layer.background: (root.checked ? MaterialPalette.on_surface : MaterialPalette.surface_variant).with_alpha(MaterialPalette.state_layer_opacity_disabled); + background_layer.border_color: MaterialPalette.on_surface.with_alpha(MaterialPalette.state_layer_opacity_disabled); + foreground: root.checked ? MaterialPalette.on_surface.with_alpha(MaterialPalette.disable_opacity) : MaterialPalette.surface_container_highest; + } + pressed when touch_area.pressed: { + state_layer.background: indicator.background; + indicator.height: background_layer.height - 2px; + indicator.background: root.checked ? MaterialPalette.primary_container : MaterialPalette.on_surface_variant; + } + hover when touch_area.has_hover: { + state_layer.background: indicator.background; + } + ] +} diff --git a/ui/ui/components/tab_bar.slint b/ui/ui/components/tab_bar.slint new file mode 100644 index 0000000..0be204b --- /dev/null +++ b/ui/ui/components/tab_bar.slint @@ -0,0 +1,210 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { NavigationItem } from "../items/navigation_item.slint"; +import { BaseNavigationItemTemplate, BaseNavigation } from "./base_navigation.slint"; +import { StateLayerArea } from "./state_layer.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { Icon } from "./icon.slint"; + +component TabItemTemplate inherits BaseNavigationItemTemplate { + out property label_width: label.width; + + property has_selected_icon: root.selected_icon.width > 0 || root.selected_icon.height > 0; + + StateLayerArea { + color: MaterialPalette.primary; + + VerticalLayout { + padding_top: MaterialStyleMetrics.padding_10; + padding_bottom: MaterialStyleMetrics.padding_8; + spacing: MaterialStyleMetrics.spacing_2; + + if root.icon.width > 0 && root.icon.height > 0 : HorizontalLayout { + alignment: center; + + Icon { + source: root.icon; + colorize: label.color; + + states [ + selected when root.selected && root.has_selected_icon : { + source: root.selected_icon; + } + ] + } + } + + HorizontalLayout { + alignment: center; + + label := MaterialText { + text: root.text; + style: MaterialTypography.title_small; + color: MaterialPalette.on_surface_variant; + } + } + } + + clicked => { + root.clicked(); + } + } + + states [ + selected when root.selected : { + label.color: MaterialPalette.primary; + } + ] +} + +component SecondaryTabItemTemplate inherits BaseNavigationItemTemplate { + property has_selected_icon: root.selected_icon.width > 0 || root.selected_icon.height > 0; + + StateLayerArea { + color: label.color; + + HorizontalLayout { + alignment: center; + spacing: MaterialStyleMetrics.spacing_8; + + if root.icon.width > 0 && root.icon.height > 0 : VerticalLayout { + alignment: center; + + Icon { + source: root.icon; + colorize: label.color; + + states [ + selected when root.selected && root.has_selected_icon : { + source: root.selected_icon; + } + ] + } + } + + + label := MaterialText { + text: root.text; + style: MaterialTypography.title_small; + color: MaterialPalette.on_surface_variant; + vertical_alignment: center; + } + } + + clicked => { + root.clicked(); + } + } + + states [ + selected when root.selected : { + label.color: MaterialPalette.on_surface; + } + ] +} + +export component TabBar inherits BaseNavigation { + property indicator_width; + property item_width: root.width / root.items.length; + property current_x: root.item_width * self.current_index; + + min_height: max(MaterialStyleMetrics.size_49, layout.min_height); + + Rectangle { + background: MaterialPalette.surface; + + layout := HorizontalLayout { + for item[index] in root.items : tab_item := TabItemTemplate { + icon: item.icon; + selected_icon: item.selected_icon; + text: item.text; + index: index; + selected: index == root.current_index; + show_badge: item.show_badge; + badge: item.badge; + + clicked => { + root.select(index); + root.set_indicator_width(index, self.label_width); + } + + Timer { + interval: 50ms; + + triggered => { + root.set_indicator_width(index, tab_item.label_width); + self.running = false; + } + } + } + } + + indicator := Rectangle { + x: root.current_x + (root.item_width - self.width) / 2; + y: parent.height - self.height; + width: root.indicator_width; + height: MaterialStyleMetrics.size_3; + border_top_left_radius: self.height / 2; + border_top_right_radius: self.border_top_left_radius; + background: MaterialPalette.primary; + + animate x, width { + duration: MaterialAnimations.standard_accelerate_duration; + easing: MaterialAnimations.standard_easing; + } + } + } + + function set_indicator_width(index: int, width: length) { + if index != root.current_index { + return; + } + + root.indicator_width = width; + } +} + +export component SecondaryTabBar inherits BaseNavigation { + property item_width: root.width / root.items.length; + property current_x: root.item_width * self.current_index; + + min_height: max(MaterialStyleMetrics.size_49, layout.min_height); + + Rectangle { + background: MaterialPalette.surface; + + layout := HorizontalLayout { + for item[index] in root.items : SecondaryTabItemTemplate { + icon: item.icon; + selected_icon: item.selected_icon; + text: item.text; + index: index; + selected: index == root.current_index; + show_badge: item.show_badge; + badge: item.badge; + + clicked => { + root.select(index); + } + } + } + + indicator := Rectangle { + x: root.current_x; + y: parent.height - self.height; + width: root.item_width; + height: MaterialStyleMetrics.size_2; + background: MaterialPalette.primary; + + animate x { + duration: MaterialAnimations.standard_accelerate_duration; + easing: MaterialAnimations.standard_easing; + } + } + } +} diff --git a/ui/ui/components/text_button.slint b/ui/ui/components/text_button.slint new file mode 100644 index 0000000..e04e513 --- /dev/null +++ b/ui/ui/components/text_button.slint @@ -0,0 +1,33 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { BaseButton } from "./base_button.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; + +export component TextButton { + in property icon <=> base.icon; + in property text <=> base.text; + in property enabled <=> base.enabled; + in property tooltip <=> base.tooltip; + in property inverse; + + callback clicked <=> base.clicked; + + accessible-role: button; + accessible-enabled: root.enabled; + accessible-label: root.text == "" ? root.tooltip : root.text; + accessible-action-default => { base.clicked(); } + + base := BaseButton { + border_radius: root.height / 2; + color: root.inverse ? MaterialPalette.inverse_primary : MaterialPalette.primary; + } + + states [ + disabled when !root.enabled : { + base.color: MaterialPalette.on_surface; + base.transparent_background: true; + } + ] +} diff --git a/ui/ui/components/text_field.slint b/ui/ui/components/text_field.slint new file mode 100644 index 0000000..231820d --- /dev/null +++ b/ui/ui/components/text_field.slint @@ -0,0 +1,211 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialAnimations } from "../styling/material_animations.slint"; +import { MaterialText } from "./material_text.slint"; +import { IconButton } from "./icon_button.slint"; +import { Icon } from "./icon.slint"; + +export component TextField { + in property label: placeholder_text; + // Deprecated: this property was unintentionally made public. Use `label` instead. + in property placeholder_text; + in property supporting_text; + in property has_error; + in property leading_icon; + in property trailing_icon; + in property enabled: true; + in property read_only <=> input.read_only; + out property has_focus: input.has_focus; + in_out property text <=> input.text; + in property input-type <=> input.input-type; + + callback leading_icon_clicked(); + callback trailing_icon_clicked(); + callback accepted(text: string); + callback edited(text: string); + callback key_pressed(event: KeyEvent) -> EventResult; + callback key_released(event: KeyEvent) -> EventResult; + + property has_leading: root.leading_icon.width > 0 && root.leading_icon.height > 0; + property has_trailing: root.trailing_icon.width > 0 && root.trailing_icon.height > 0; + property computed_x; + property highlight: root.enabled && root.has_error ? MaterialPalette.error : root.has_focus ? MaterialPalette.primary : MaterialPalette.on_surface_variant; + + forward_focus: input; + accessible-role: text-input; + accessible-enabled: root.enabled; + accessible-value <=> text; + accessible-placeholder-text: placeholder_text; + accessible-action-set-value(v) => { text = v; edited(v); } + + layout := VerticalLayout { + spacing: MaterialStyleMetrics.spacing_4; + + background_layer := Rectangle { + border_top_left_radius: MaterialStyleMetrics.border_radius_4; + border_top_right_radius: MaterialStyleMetrics.border_radius_4; + background: MaterialPalette.surface_container_highest; + min_height: max(MaterialStyleMetrics.size_56, inner_layout.min_height); + + inner_layout := HorizontalLayout { + padding_left: root.has_leading ? MaterialStyleMetrics.padding_4 : MaterialStyleMetrics.padding_16; + padding_right: root.has_trailing ? MaterialStyleMetrics.padding_4 : MaterialStyleMetrics.padding_16; + padding_top: MaterialStyleMetrics.padding_4; + padding_bottom: self.padding_top; + spacing: MaterialStyleMetrics.spacing_2; + + if root.has_leading : IconButton { + icon: root.leading_icon; + enabled: root.enabled; + + clicked => { + root.leading_icon_clicked(); + } + } + + HorizontalLayout { + padding_top: MaterialStyleMetrics.padding_4; + padding_bottom: self.padding_top; + + Rectangle { + horizontal_stretch: 1; + clip: true; + min_height: input.min_height; + + input := TextInput { + x: min(0px, max(parent.width - self.width - self.text_cursor_width, root.computed_x)); + width: max(parent.width - self.text-cursor-width, self.preferred-width); + font_size: MaterialTypography.body_large.font_size; + font_weight: MaterialTypography.body_large.font_weight; + text_cursor_width: MaterialStyleMetrics.size_3; + vertical_alignment: bottom; + single_line: true; + color: MaterialPalette.on_surface; + selection_background_color: MaterialPalette.primary.with_alpha(0.5); + selection_foreground_color: self.color; + enabled: root.enabled; + // Disable TextInput's built-in accessibility support as the component takes care of that. + accessible-role: none; + + cursor_position_changed(cursor_position) => { + if cursor_position.x + root.computed_x < 0 { + root.computed_x = - cursor_position.x; + } else if cursor-position.x + root.computed_x > parent.width - self.text-cursor-width { + root.computed_x = parent.width - cursor_position.x - self.text-cursor-width; + } + } + + accepted => { + root.accepted(self.text); + } + + edited => { + root.edited(self.text); + } + + key_pressed(event) => { + root.key_pressed(event) + } + + key_released(event) => { + root.key_released(event) + } + } + + text_label := MaterialText { + y: (parent.height - self.height) / 2; + width: 100%; + text: root.label; + color: root.highlight; + style: MaterialTypography.body_large; + + states [ + on_top when root.text != "" || input.has_focus : { + y: 0; + style: MaterialTypography.body_small; + } + ] + + animate font_size, y { + duration: MaterialAnimations.standard_fast_duration; + easing: MaterialAnimations.standard_easing; + } + } + } + } + + if root.trailing_icon.width > 0 && root.trailing_icon.height > 0 : IconButton { + icon: root.trailing_icon; + enabled: root.enabled; + has_error: root.has_error; + + clicked => { + root.trailing_icon_clicked(); + } + } + } + + active_indicator := Rectangle { + y: parent.height - self.height; + height: MaterialStyleMetrics.size_1; + background: root.highlight; + + animate height { + duration: MaterialAnimations.standard_fast_duration; + easing: MaterialAnimations.standard_easing; + } + } + } + + if root.supporting_text != "" : HorizontalLayout { + padding_left: MaterialStyleMetrics.padding_16; + padding_right: self.padding_left; + + supporting_text := MaterialText { + text: root.supporting_text; + style: MaterialTypography.body_small; + color: root.highlight; + opacity: root.enabled ? 1 : MaterialPalette.disable_opacity; + } + } + } + + public function set_selection_offsets(start: int, end: int) { + input.set_selection_offsets(start, end); + } + + public function select_all() { + input.select_all(); + } + + public function clear_selection() { + input.clear_selection(); + } + + public function cut() { + input.cut(); + } + + public function copy() { + input.copy(); + } + + public function paste() { + input.paste(); + } + + states [ + disabled when !root.enabled : { + background_layer.background: MaterialPalette.surface_container_highest.with_alpha(MaterialPalette.disable_opacity); + text_label.opacity: MaterialPalette.disable_opacity; + input.opacity: MaterialPalette.disable_opacity; + } + focused when input.has_focus : { + active_indicator.height: MaterialStyleMetrics.size_3; + } + ] +} diff --git a/ui/ui/components/time_picker.slint b/ui/ui/components/time_picker.slint new file mode 100644 index 0000000..5109e62 --- /dev/null +++ b/ui/ui/components/time_picker.slint @@ -0,0 +1,674 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { BaseDialog } from "./dialog.slint"; +import { Icons } from "../icons/icons.slint"; +import { MaterialText } from "./material_text.slint"; +import { MaterialStyleMetrics } from "../styling/material_style_metrics.slint"; +import { MaterialTypography } from "../styling/material_typography.slint"; +import { MaterialPalette } from "../styling/material_palette.slint"; +import { StateLayerArea } from "state_layer.slint"; + +component TimeSelector inherits Rectangle { + in property selected; + in property value; + + callback clicked <=> touch_area.clicked; + + width: max(MaterialStyleMetrics.size_48, text_label.min_width); + height: max(MaterialStyleMetrics.size_48, text_label.min_height); + border_radius: max(root.width, root.height) / 2; + vertical_stretch: 0; + horizontal_stretch: 0; + + touch_area := TouchArea { + text_label := MaterialText { + text: root.value; + vertical_alignment: center; + horizontal_alignment: center; + style: MaterialTypography.body_large; + color: MaterialPalette.on_surface; + } + } + + states [ + selected when root.selected: { + text_label.color: MaterialPalette.on_primary; + } + ] +} + +component Clock { + in property <[int]> model; + in property two_columns; + in property total; + in_out property current_index; + in property current_value; + + callback current_index_changed(index: int); + + property radius: max(root.width, root.height) / 2; + property picker_ditameter: MaterialStyleMetrics.size_48; + property center: root.radius - root.picker_ditameter / 2; + property outer_padding: 2px; + property inner_padding: 32px; + property radius_outer: root.center - root.outer_padding; + property radius_inner: root.center - root.inner_padding; + property half_total: root.total / 2; + property rotation: 0.25turn; + property current_x: get_index_x(root.current_value); + property current_y: get_index_y(root.current_value); + + min_width: MaterialStyleMetrics.size_256; + min_height: self.min_width; + vertical_stretch: 0; + horizontal_stretch: 0; + + background_layer := Rectangle { + border_radius: max(self.width, self.height) / 2; + background: MaterialPalette.surface_container_highest; + + if root.current_index >= 0 || root.current_index < root.model.length: Path { + stroke: MaterialPalette.primary; + stroke_width: 2px; + viewbox_width: self.width / 1px; + viewbox_height: self.height / 1px; + + MoveTo { + x: root.width / 2px; + y: root.height / 2px; + } + + LineTo { + x: (root.current_x + root.picker_ditameter / 2) / 1px; + y: (root.current_y + root.picker_ditameter / 2) / 1px; + } + } + + Rectangle { + width: MaterialStyleMetrics.size_8; + height: self.width; + background: MaterialPalette.primary; + border_radius: self.width / 2; + } + + if root.current_index < root.model.length: Rectangle { + x: root.current_x; + y: root.current_y; + width: root.picker_ditameter; + height: root.picker_ditameter; + border_radius: root.picker_ditameter / 2; + background: MaterialPalette.primary; + + if root.current_index < 0: Rectangle { + width: MaterialStyleMetrics.size_4; + height: self.width; + border_radius: self.width / 2; + background: MaterialPalette.on_primary; + } + } + + for val[index] in root.model: TimeSelector { + x: get_index_x(val); + y: get_index_y(val); + width: root.picker_ditameter; + height: root.picker_ditameter; + value: val; + selected: index == root.current_index; + accessible_role: button; + accessible_label: @tr("{} Hours or minutes of {}", val, root.total); + accessible_action_default => { + self.clicked(); + } + + clicked => { + root.set_current_index(index); + } + } + } + + + pure function value_to_angle(value: int) -> angle { + if root.two_columns { + if value >= root.half_total { + return clamp((value - root.half_total) / root.half_total * 1turn, 0, 0.999999turn) - root.rotation; + } + return clamp(value / root.half_total * 1turn, 0, 0.99999turn) - root.rotation; + } + + clamp(value / root.total * 1turn, 0, 0.99999turn) - root.rotation + } + + pure function get_index_x(value: int) -> length { + if root.two_columns && value >= root.half_total { + return root.center + (root.radius_inner / 1px * cos(root.value_to_angle(value))) * 1px; + } + + root.center + (root.radius_outer / 1px * cos(root.value_to_angle(value))) * 1px + } + + pure function get_index_y(value: int) -> length { + // this is only for 24 mode + if root.total == 24 && value == 0 { + return root.center + (root.radius_inner / 1px * sin(root.value_to_angle(value))) * 1px; + } + if root.total == 24 && value == 12 { + return root.center + (root.radius_outer / 1px * sin(root.value_to_angle(value))) * 1px; + } + if root.two_columns && value >= root.half_total { + return root.center + (root.radius_inner / 1px * sin(root.value_to_angle(value))) * 1px; + } + + root.center + (root.radius_outer / 1px * sin(root.value_to_angle(value))) * 1px + } + + function set_current_index(index: int) { + root.current_index_changed(index); + } +} + +component TimePickerInput { + in property read_only <=> text_input.read_only; + in property checked; + in_out property text <=> text_input.text; + + callback clicked; + callback edited(value: int); + + width: MaterialStyleMetrics.size_90; + min_height: max(MaterialStyleMetrics.size_80, layout.min_height); + vertical_stretch: 0; + horizontal_stretch: 0; + + forward_focus: text_input; + + background_layer := Rectangle { + border_radius: MaterialStyleMetrics.border_radius_8; + background: MaterialPalette.surface_container_highest; + clip: true; + + layout := HorizontalLayout { + padding: MaterialStyleMetrics.padding_8; + + text_input := TextInput { + vertical_alignment: center; + horizontal_alignment: center; + color: MaterialPalette.on_surface; + font_size: MaterialTypography.display_large.font_size; + font_weight: MaterialTypography.display_large.font_weight; + input_type: number; + visible: !root.read_only; + + edited => { + root.edited(self.text.to_float()); + } + } + } + + if root.read_only : StateLayerArea { + border_radius: background_layer.border_radius; + color: MaterialPalette.on_surface; + + HorizontalLayout { + padding: MaterialStyleMetrics.padding_8; + + MaterialText { + text: root.text.to_float() >= 10 ? root.text : "0" + root.text; + style: MaterialTypography.display_large; + color: MaterialPalette.on_surface; + horizontal_alignment: center; + vertical_alignment: center; + } + } + + clicked => { + root.clicked(); + } + } + } + + states [ + has_focus when text_input.has_focus && !root.read_only: { + background_layer.background: MaterialPalette.primary_container; + background_layer.border_width: 2px; + background_layer.border_color: MaterialPalette.primary; + text_input.color: MaterialPalette.on_primary_container; + } + checked when root.checked: { + background_layer.background: MaterialPalette.primary_container; + text_input.color: MaterialPalette.on_primary_container; + } + ] +} + +component PeriodSelectorItem { + in property text <=> label.text; + in property checked; + + callback clicked <=> state_layer.clicked; + + background_layer := Rectangle { + state_layer := StateLayerArea { + color: label.color; + + label := MaterialText { + color: MaterialPalette.on_surface_variant; + horizontal_alignment: center; + } + } + } + + states [ + checked when root.checked: { + background_layer.background: MaterialPalette.tertiary_container; + label.color: MaterialPalette.on_tertiary_container; + } + ] +} + + +component PeriodSelector { + in property am_selected; + in property horizontal; + + callback update_period(am_selected: bool); + + min_width: max(MaterialStyleMetrics.size_52, layout.min_width); + min_height: max(root.horizontal ? MaterialStyleMetrics.size_38 : MaterialStyleMetrics.size_80, layout.min_height); + accessible_label: "AM or PM"; + accessible_role: checkbox; + accessible_checked: root.am_selected; + + Rectangle { + border_radius: border.border_radius; + clip: true; + + layout := VerticalLayout { + if root.horizontal : HorizontalLayout { + PeriodSelectorItem { + text: "AM"; + checked: root.am_selected; + + clicked => { + if root.am_selected { + return; + } + root.update_period(true); + } + } + + Rectangle { + width: 1px; + background: border.border_color; + vertical_stretch: 0; + } + + PeriodSelectorItem { + text: "PM"; + checked: !root.am_selected; + + clicked => { + if !root.am_selected { + return; + } + root.update_period(false); + } + } + } + + if !root.horizontal : VerticalLayout { + PeriodSelectorItem { + text: "AM"; + checked: root.am_selected; + + clicked => { + if root.am_selected { + return; + } + root.update_period(true); + } + } + + Rectangle { + height: 1px; + background: border.border_color; + vertical_stretch: 0; + } + + PeriodSelectorItem { + text: "PM"; + checked: !root.am_selected; + + clicked => { + if !root.am_selected { + return; + } + root.update_period(false); + } + } + } + } + } + + border := Rectangle { + border_radius: MaterialStyleMetrics.border_radius_8; + border_width: 1px; + border_color: MaterialPalette.outline; + } +} + +export struct Time { + hour: int, + minute: int, + second: int +} + +export component TimePickerPopup inherits PopupWindow { + in property use_24_hour_format: true; + in property title: @tr("Select time"); + in property cancel_text: @tr("Cancel"); + in property ok_text: @tr("Ok"); + in property

kKH~W?c845P6D*_Z(<;I1!I;NNxzbmK`8`k! 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