From 4fd32a4cd421c1eec466a99a293026f0d661b8a9 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Wed, 9 Sep 2026 21:29:58 +0300 Subject: [PATCH 01/29] Give ToggleButton a style: neither native theme defined it Button.setToggle(true) rewrites the UIID to ToggleButton, and createToggle on CheckBox and RadioButton goes through the same path. No theme in the tree defined that UIID -- not iOS Modern, not Android Material -- so every toggle button fell through to the default style and rendered as bare text with no shape. The chapter that documents the feature illustrated it with a 2015 screenshot from a theme that did define it, so the guide promised an appearance the shipped themes could not produce. Both themes now draw the control their platform draws. Material 3 uses the segmented button: an outlined pill that fills with the secondary container when selected. iOS uses the segmented control: a glass capsule that fills with the accent when selected. Selection changes the fill in both, not only the label colour, so it does not rest on hue alone. cn1-pill-border carries this without any rasterized fallback. createRoundBorder reads border-top-color and border-top-width and calls RoundBorder.stroke, and usesRoundBorder short-circuits requiresBackgroundImageGeneration, so an outlined pill is a native primitive -- FlatButton already relies on exactly that. Both themes compile clean under strictNoCef. Geometry is repeated in full on every state rather than inherited, per the note at the top of each file: the per-state Style merge otherwise drifts the label by a pixel as the selection moves. The dark blocks re-declare cn1-background-type and the border for the reason the neighbouring dark button entries already record -- the compiler does not carry either into the $Dark entries. The Components chapter's toggle figure is regenerated from the sample that draws it, on both themes side by side, replacing the screenshot that had been showing a theme nobody ships. COVERAGE.md's two "segmented control -- not started" rows now say the UIID is themed, and say plainly that it is not in the fidelity suite, because no measurement backs a score for it. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 149707 -> 152669 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 178705 -> 181345 bytes Themes/AndroidMaterialTheme.res | Bin 149707 -> 152669 bytes Themes/iOSModernTheme.res | Bin 178705 -> 181345 bytes .../screenshots/GuideFigures.java | 4 + .../ToggleButtonFigure.java} | 94 +++++------------- .../The-Components-Of-Codename-One.asciidoc | 10 +- .../img/components-toggle-buttons.png | Bin 19199 -> 0 bytes .../components-toggle-buttons-android.png | Bin 0 -> 20986 bytes .../components-toggle-buttons-ios.png | Bin 0 -> 15675 bytes native-themes/COVERAGE.md | 4 +- native-themes/android-material/theme.css | 67 +++++++++++++ native-themes/ios-modern/theme.css | 56 +++++++++++ 13 files changed, 161 insertions(+), 74 deletions(-) rename docs/demos/common/src/main/java/com/codenameone/developerguide/{snippets/generated/TheComponentsOfCodenameOneJava156Snippet.java => screenshots/ToggleButtonFigure.java} (51%) delete mode 100644 docs/developer-guide/img/components-toggle-buttons.png create mode 100644 docs/developer-guide/img/generated/components-toggle-buttons-android.png create mode 100644 docs/developer-guide/img/generated/components-toggle-buttons-ios.png diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 2b8897c3e9244de77c050b5504a13f56fa7a9e1d..2ab1a5eedffc650d920cdf114a9bd2838ebeeace 100644 GIT binary patch delta 1869 zcmZuxeN0R6}>n%hG5<=n#5FH`cNNnBXZC!1;Lw<`^gV~xr{G_7&8#R8SnGlErm$gPb zsy)fgW?az5hz*GyMszxp=^J)X<9y~;ei_Bf&JodB`O?t49*9xpG4kd&;-7Vi^v(Qw@}yW9Q`q9e~k3eFX6 ziVFqcz^xX1wID7#D*mzd9%rjN#E}+3j}wKN_^V!X%my z8T}{P(Dho_Bt;)Ok`if>q7M$*M9a`hDwdC%@oJ0)^G0i=e-THM1uPs(!--fm+Gk_L z>9Os=kyP={@#;kEn{@MI`e^Drh!>_g(l@EchvPM3>DSg6+&S}-xHz*ch!-wi1A$mE zpf!l|bK-rp-wr$36+0XNH8EDUw{&{k6dJ%t`!ZpP^*Z6IjRv-W4SmIG>e~W47{5&k zY^VYzK|(CJZ&1VfE1|ZSF7AaR%=0w7DKPCm_yX9>e)!Hn{YT+2bsPgT{x)M~9RqMt zU=@RK6Il6icsGk)8HGpLwohRSsDBJhEdMje0oE`M3wP7at31E{Rh}Qy{SF#nX@7tj zXz>krgy9Vkc{M4hby->KP0$1D{R?KZXth&lV(&YJY=M21E$jkzSB}sDbYz3zV!;i9 zS76?a!ZBd6dBR@(gUL}^Y3Xctcas=mjIu@w)bKAPq^l^aB+D{~Im%HIp+cS#LL{|1 zEdTLRq$(qlO6liz2+35X#Bz-$yfb`~m}IWNsj6%lledcWVpof|zPr6w;2%-=3QlLn zg*>r*DMk5hSxVFS2r1`>q=z`yByW%Igd+HKo1N&_+;DoS!V&Eh`KsI)x?>hH6g?Du zU{J{sw0{;X8-nc?sdAxwvm{&&TqjmJNxoFfGBK6b$vO_w{uiK7r9^P? zCOC*I+yMQ;)-dM(*s7A5(4T9-!WDfOTgS%q#d=6dxr8=M#~q$TE6mV>F`@nrEt@wO1?4WaB6=WGQ&t> dGe;DTJijeb>1t@4(wYmG%6A-lwoIsv{~MH7q2vGn delta 700 zcmX|7TS!z<6utX6qgS1|^U}G_n31U|%9L4zeUwqYGD^*&%$W+ql0=7!N>EX;2&Ams z+0gqZkxL44T z3YS1KOVSTXzpJ{cw#u~mp=vbX6+=93H0%-ia~Md8*k^R&d`QMiTXcBC*duTi&C@y@ zknMQe7%gfm?$AfEi;61-eakCxNs#Ay89wqS)(^s&sNs2k3~;YG){FGaJIpK4ZR9G-Vuyp5d%M+g0FSNj%I(w|4PTs z`W3=Dhfl&H=46Q@+Z7xS*s(3JlZ^+yYIy0Gir+hBHaX@3F|%S{vktu|vy=&k4mSkb z#ZF5wmW6^LB1&&aW$#0iAiOycrftmsiRIH{DX^EnPJtHS1*u>JUX}*m;sI!19>mi* z7s&KLE|mNO@O+odKjgw4K}d@WApw;vncpmcK_N&xQE5q$__JkaWL~osO4m?dBXsb> zCg>%6rWsxVzuO8^HhQiLE^ymb(1nS+cij-jSM|UQaNBhlOcn~`a5m3DC;U*j*qHMj zJbMTpY2uwYoNwa`!;q?VaTs0Tpkij_Wh20{seVova?fdoCg(LnU;cm!bbbL2igi0? zy45GA$Ti?5LR=by9Upj9zB`Qglc_C@xOrU~SwT3alOw=?XOJ48hg@X87A!pAB9(+^ SWfBDbay6;9aHWV8NBsqGiu~~a diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index a09e3b6e1db48c9ee8b517dcee5498064ae62123..92d758142cbf5644005e25ab5cffa3de13299f59 100644 GIT binary patch delta 1874 zcmZuxeQZ-z6u;-%t)=U>uI=l4?YgnTATiE;011eEY|cMKqR`TT2_(>cbTl0+G$VvX z9N)n>z-kG)sgX_M1;?>+Z- z?(d#+&#&j6`O2<5kFOY#0bf z6cce|yGgzjMo=bpwkfGZUa&e({wT6<0?u0BDa-3kR6e%B2Xev2MKkbJzXN0aKIMA~ zCmwd*{3i4!tSkX$bTe4P$wt-+&_Yu;K zcPc8>2nIC*^F0p^Yg1E*Ov;FWqhV3#CjUbe>%MguRN~loQLr{AQlvB!=X+Jaf}Od! zW0YB435c{g!3HMN8mv7!b|iYePPHzU@(d*N?Sf*ozMw;K%b>l`ygik9F*Z;Gj;wnj zj0)JjWqL+Jx*{T0hSFjBA}&iNLpHn>>~KbY^SEfk$e>kYsvI{}#b( zbr<2~VGDnd548q1%LZSw0lNapy#Y=x+2MOiNin7*fxRzKiRU@tB=Da^sGP_CX@F(C zVJUP0Kfeqtz^}dm8)vW;yJ084wi`x(pV$jafIE61$HUzH(8+uI;i7>@lW^6;{AVG_ zbB16a<%fQT)4)T&z>uBIybeb`y?q^?;dlOkzk!e5ggxbKlZ}36B1MbCO_7!ugBwuH z7ue~GlFbAWq2w6Th9Ur3knk%hDiC~@F- z@4DEA*XSJ{ew{jjZC*rI^2>`9Ctu~G1;C?zI<204+)J19$Gvn4<>epH5b$?Cq}>X> z3`^rv*!=x;1tkI|;%FZlRd25! zPM;z6ah|}&wJl`)YBbi|5=+^DCO*{+I)FxNKtdDeP`4sPg+j( zYAu&LhEf|&G71`^>^{`#;aFWUh-vtW!{D;c8yx&mHKLu!hVFx?1;XG&2ku#5Dx4Y$ z)hb3xG*(LQPVOF;fRLsy9#1JL()QKfox3VKO>2U&hW2m=Res|VqIg=v?ejMiqFS0( zHhgWcISto5EWZoHG(-IsHC>7txwRBP2{_Ho!^EZ0QY6HvjaB`SX!9^8s;YCx_Uq!I z=Lx;{>Ys*s2(H{QEUxnkto9)opXN|Ma9tI3>jKqNMN883CTfgSDbfp$12>=6TTuiv z=}c+$ej-OY4^~r6J?zphsL;!aiV~&kT>G}t^n0g4g6B`(q-eVG zO7wj7m4Tfd*b4uxwIXlnWGTufm#p$F8{{k5X Bobdnv delta 774 zcmYLGTS!z<6uo;lO}=u*(Ybd2+bTPu@pj0(5y5;l!UY(ia>1K z>cPxZ`lzTGXFS!Wr0l~4p~BLl1kuQkuuQDzr_k=$>*t)c)?Vwd&))AYgnPb)X$meX ziegkiF)PX!Wx2bw)U7{yG@d74FXW+0h@g8E(Ic2baSpjX5=nf^rV9- z%2b*iUO`98GX8L@d{)*0OC+(}D(lO=p_E)*7Xpfww7amXTzpnhlY`YWAiXs%kPEf@ zQ>o8ur6O;(em~KZakSAFLybP7_}*zkKgkxq26`K50qy?>2AoD33-nTp-?G%a?Cu*1 zlVguni*$~ji;xqOx8nd>&7jhTC<9HIL+I9ztlx?>|Fob?T&UJx)g7_YznB>*iX%Z4 zmPl~1jy~umF=YacB3>;`j8B+h9Ry7lz7Yi(2JzJjcXd;t3RZro!dndX-e%XC*AC;s zd|I4NuEc?Tm$-8f@;LkuGyq@Bhn2u>1#l`=m^^TvTRkuVe3HNoJlFz8hZy!l9j6Ci z+`x`|@ZKR7UV>!*D0Cq2eGNmvrZ?~+T15Mia0h7dNMit?gLAo_2HwXQI++pT;8{ zm6$vV=79&@6YjPJ>B46&oX5i#&s6~aD+!YnaiVCYzibPsJ+Su8T HJ3@Z}N_h#H diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 2b8897c3e9244de77c050b5504a13f56fa7a9e1d..2ab1a5eedffc650d920cdf114a9bd2838ebeeace 100644 GIT binary patch delta 1869 zcmZuxeN0R6}>n%hG5<=n#5FH`cNNnBXZC!1;Lw<`^gV~xr{G_7&8#R8SnGlErm$gPb zsy)fgW?az5hz*GyMszxp=^J)X<9y~;ei_Bf&JodB`O?t49*9xpG4kd&;-7Vi^v(Qw@}yW9Q`q9e~k3eFX6 ziVFqcz^xX1wID7#D*mzd9%rjN#E}+3j}wKN_^V!X%my z8T}{P(Dho_Bt;)Ok`if>q7M$*M9a`hDwdC%@oJ0)^G0i=e-THM1uPs(!--fm+Gk_L z>9Os=kyP={@#;kEn{@MI`e^Drh!>_g(l@EchvPM3>DSg6+&S}-xHz*ch!-wi1A$mE zpf!l|bK-rp-wr$36+0XNH8EDUw{&{k6dJ%t`!ZpP^*Z6IjRv-W4SmIG>e~W47{5&k zY^VYzK|(CJZ&1VfE1|ZSF7AaR%=0w7DKPCm_yX9>e)!Hn{YT+2bsPgT{x)M~9RqMt zU=@RK6Il6icsGk)8HGpLwohRSsDBJhEdMje0oE`M3wP7at31E{Rh}Qy{SF#nX@7tj zXz>krgy9Vkc{M4hby->KP0$1D{R?KZXth&lV(&YJY=M21E$jkzSB}sDbYz3zV!;i9 zS76?a!ZBd6dBR@(gUL}^Y3Xctcas=mjIu@w)bKAPq^l^aB+D{~Im%HIp+cS#LL{|1 zEdTLRq$(qlO6liz2+35X#Bz-$yfb`~m}IWNsj6%lledcWVpof|zPr6w;2%-=3QlLn zg*>r*DMk5hSxVFS2r1`>q=z`yByW%Igd+HKo1N&_+;DoS!V&Eh`KsI)x?>hH6g?Du zU{J{sw0{;X8-nc?sdAxwvm{&&TqjmJNxoFfGBK6b$vO_w{uiK7r9^P? zCOC*I+yMQ;)-dM(*s7A5(4T9-!WDfOTgS%q#d=6dxr8=M#~q$TE6mV>F`@nrEt@wO1?4WaB6=WGQ&t> dGe;DTJijeb>1t@4(wYmG%6A-lwoIsv{~MH7q2vGn delta 700 zcmX|7TS!z<6utX6qgS1|^U}G_n31U|%9L4zeUwqYGD^*&%$W+ql0=7!N>EX;2&Ams z+0gqZkxL44T z3YS1KOVSTXzpJ{cw#u~mp=vbX6+=93H0%-ia~Md8*k^R&d`QMiTXcBC*duTi&C@y@ zknMQe7%gfm?$AfEi;61-eakCxNs#Ay89wqS)(^s&sNs2k3~;YG){FGaJIpK4ZR9G-Vuyp5d%M+g0FSNj%I(w|4PTs z`W3=Dhfl&H=46Q@+Z7xS*s(3JlZ^+yYIy0Gir+hBHaX@3F|%S{vktu|vy=&k4mSkb z#ZF5wmW6^LB1&&aW$#0iAiOycrftmsiRIH{DX^EnPJtHS1*u>JUX}*m;sI!19>mi* z7s&KLE|mNO@O+odKjgw4K}d@WApw;vncpmcK_N&xQE5q$__JkaWL~osO4m?dBXsb> zCg>%6rWsxVzuO8^HhQiLE^ymb(1nS+cij-jSM|UQaNBhlOcn~`a5m3DC;U*j*qHMj zJbMTpY2uwYoNwa`!;q?VaTs0Tpkij_Wh20{seVova?fdoCg(LnU;cm!bbbL2igi0? zy45GA$Ti?5LR=by9Upj9zB`Qglc_C@xOrU~SwT3alOw=?XOJ48hg@X87A!pAB9(+^ SWfBDbay6;9aHWV8NBsqGiu~~a diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index a09e3b6e1db48c9ee8b517dcee5498064ae62123..92d758142cbf5644005e25ab5cffa3de13299f59 100644 GIT binary patch delta 1874 zcmZuxeQZ-z6u;-%t)=U>uI=l4?YgnTATiE;011eEY|cMKqR`TT2_(>cbTl0+G$VvX z9N)n>z-kG)sgX_M1;?>+Z- z?(d#+&#&j6`O2<5kFOY#0bf z6cce|yGgzjMo=bpwkfGZUa&e({wT6<0?u0BDa-3kR6e%B2Xev2MKkbJzXN0aKIMA~ zCmwd*{3i4!tSkX$bTe4P$wt-+&_Yu;K zcPc8>2nIC*^F0p^Yg1E*Ov;FWqhV3#CjUbe>%MguRN~loQLr{AQlvB!=X+Jaf}Od! zW0YB435c{g!3HMN8mv7!b|iYePPHzU@(d*N?Sf*ozMw;K%b>l`ygik9F*Z;Gj;wnj zj0)JjWqL+Jx*{T0hSFjBA}&iNLpHn>>~KbY^SEfk$e>kYsvI{}#b( zbr<2~VGDnd548q1%LZSw0lNapy#Y=x+2MOiNin7*fxRzKiRU@tB=Da^sGP_CX@F(C zVJUP0Kfeqtz^}dm8)vW;yJ084wi`x(pV$jafIE61$HUzH(8+uI;i7>@lW^6;{AVG_ zbB16a<%fQT)4)T&z>uBIybeb`y?q^?;dlOkzk!e5ggxbKlZ}36B1MbCO_7!ugBwuH z7ue~GlFbAWq2w6Th9Ur3knk%hDiC~@F- z@4DEA*XSJ{ew{jjZC*rI^2>`9Ctu~G1;C?zI<204+)J19$Gvn4<>epH5b$?Cq}>X> z3`^rv*!=x;1tkI|;%FZlRd25! zPM;z6ah|}&wJl`)YBbi|5=+^DCO*{+I)FxNKtdDeP`4sPg+j( zYAu&LhEf|&G71`^>^{`#;aFWUh-vtW!{D;c8yx&mHKLu!hVFx?1;XG&2ku#5Dx4Y$ z)hb3xG*(LQPVOF;fRLsy9#1JL()QKfox3VKO>2U&hW2m=Res|VqIg=v?ejMiqFS0( zHhgWcISto5EWZoHG(-IsHC>7txwRBP2{_Ho!^EZ0QY6HvjaB`SX!9^8s;YCx_Uq!I z=Lx;{>Ys*s2(H{QEUxnkto9)opXN|Ma9tI3>jKqNMN883CTfgSDbfp$12>=6TTuiv z=}c+$ej-OY4^~r6J?zphsL;!aiV~&kT>G}t^n0g4g6B`(q-eVG zO7wj7m4Tfd*b4uxwIXlnWGTufm#p$F8{{k5X Bobdnv delta 774 zcmYLGTS!z<6uo;lO}=u*(Ybd2+bTPu@pj0(5y5;l!UY(ia>1K z>cPxZ`lzTGXFS!Wr0l~4p~BLl1kuQkuuQDzr_k=$>*t)c)?Vwd&))AYgnPb)X$meX ziegkiF)PX!Wx2bw)U7{yG@d74FXW+0h@g8E(Ic2baSpjX5=nf^rV9- z%2b*iUO`98GX8L@d{)*0OC+(}D(lO=p_E)*7Xpfww7amXTzpnhlY`YWAiXs%kPEf@ zQ>o8ur6O;(em~KZakSAFLybP7_}*zkKgkxq26`K50qy?>2AoD33-nTp-?G%a?Cu*1 zlVguni*$~ji;xqOx8nd>&7jhTC<9HIL+I9ztlx?>|Fob?T&UJx)g7_YznB>*iX%Z4 zmPl~1jy~umF=YacB3>;`j8B+h9Ry7lz7Yi(2JzJjcXd;t3RZro!dndX-e%XC*AC;s zd|I4NuEc?Tm$-8f@;LkuGyq@Bhn2u>1#l`=m^^TvTRkuVe3HNoJlFz8hZy!l9j6Ci z+`x`|@ZKR7UV>!*D0Cq2eGNmvrZ?~+T15Mia0h7dNMit?gLAo_2HwXQI++pT;8{ zm6$vV=79&@6YjPJ>B46&oX5i#&s6~aD+!YnaiVCYzibPsJ+Su8T HJ3@Z}N_h#H diff --git a/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/GuideFigures.java b/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/GuideFigures.java index 51b29e7749c..1a2542b7e7c 100644 --- a/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/GuideFigures.java +++ b/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/GuideFigures.java @@ -77,6 +77,10 @@ public static FigureVariant[] variants() { new FigureVariant(new GraphicsFontimageStyleFigure(), FigureDevice.ANDROID, false, "graphics-fontimage-style.png"), new FigureVariant(new GraphicsFontimageMaterialFigure(), FigureDevice.ANDROID, false, "graphics-fontimage-material.png"), new FigureVariant(new CsvParsingFigure(), FigureDevice.ANDROID, false, "csv-parsing.png"), + new FigureVariant(new ToggleButtonFigure(), FigureDevice.ANDROID, false, + "components-toggle-buttons-android.png"), + new FigureVariant(new ToggleButtonFigure(), FigureDevice.IOS, false, + "components-toggle-buttons-ios.png"), }; } } diff --git a/docs/demos/common/src/main/java/com/codenameone/developerguide/snippets/generated/TheComponentsOfCodenameOneJava156Snippet.java b/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java similarity index 51% rename from docs/demos/common/src/main/java/com/codenameone/developerguide/snippets/generated/TheComponentsOfCodenameOneJava156Snippet.java rename to docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java index 64f187bff1a..fb8200f89b8 100644 --- a/docs/demos/common/src/main/java/com/codenameone/developerguide/snippets/generated/TheComponentsOfCodenameOneJava156Snippet.java +++ b/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Codename One and/or its affiliates. All rights reserved. + * Copyright (c) 2026, Codename One and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as @@ -20,76 +20,33 @@ * Please contact Codename One through http://www.codenameone.com/ if you * need additional information or have any questions. */ -package com.codenameone.developerguide.snippets.generated; -import com.codename1.gpu.*; -import com.codename1.ui.*; -import com.codename1.ui.animations.*; -import com.codename1.ui.events.*; -import com.codename1.ui.geom.*; -import com.codename1.ui.layouts.*; -import com.codename1.ui.list.*; -import com.codename1.ui.plaf.*; -import com.codename1.ui.util.*; -import com.codename1.components.*; -import com.codename1.charts.models.*; -import com.codename1.charts.renderers.*; -import com.codename1.charts.views.*; -import com.codename1.capture.*; -import com.codename1.io.*; -import com.codename1.l10n.*; -import com.codename1.location.*; -import com.codename1.maps.*; -import com.codename1.media.*; -import com.codename1.messaging.*; -import com.codename1.payment.*; -import com.codename1.processing.*; -import com.codename1.properties.*; -import com.codename1.push.*; -import com.codename1.security.*; -import com.codename1.social.*; -import com.codename1.ui.spinner.*; -import java.io.*; -import com.codename1.components.ToastBar.Status; -import com.codename1.maps.layers.*; -import com.codename1.charts.*; -import com.codename1.ui.validation.*; -import com.codename1.xml.*; -import com.codename1.charts.util.*; -import com.codename1.javascript.*; -import com.codename1.ui.tree.*; -import com.codename1.ui.table.*; -import com.codename1.contacts.*; -import java.util.*; +package com.codenameone.developerguide.screenshots; +import com.codename1.ui.ButtonGroup; +import com.codename1.ui.CheckBox; +import com.codename1.ui.FontImage; +import com.codename1.ui.Form; +import com.codename1.ui.Image; +import com.codename1.ui.RadioButton; +import com.codename1.ui.layouts.BoxLayout; -class TheComponentsOfCodenameOneJava156Snippet { - +/// The toggle buttons the Components chapter shows beside its `createToggle` +/// sample. +/// +/// Two of the seven are selected on purpose. `setToggle(true)` rewrites the +/// UIID to `ToggleButton`, and the whole point of the figure is the difference +/// between a selected and an unselected one, which the theme draws as a change +/// of fill rather than of label colour alone. A figure with nothing selected +/// would show the shape and hide the state. +class ToggleButtonFigure implements GuideFigure { + @Override + public String id() { + return "components-toggle-buttons"; + } - Object context; - Object url; - Object value; - Object body; - Object event; - String apiKey = "test-key"; - String myHttpsURL = "https://example.com"; - java.util.List validKeysList = new java.util.ArrayList<>(); - Image myImage; - Graphics graphics; - Graphics g; - GraphicsDevice device; - Form form; - Form hi; - Container cnt; - Container myForm; - Component component; - Button button; - MultiButton myMultiButton; - Label label; - BrowserComponent browserComponent; - Resources theme; - - void snippet() throws Exception { + @Override + public Form build() { // tag::the-components-of-codename-one-java-156[] Form hi = new Form("RadioButton", new BoxLayout(BoxLayout.Y_AXIS)); Image icon = FontImage.createMaterial(FontImage.MATERIAL_INFO, "Label", 3.0f); @@ -108,7 +65,6 @@ void snippet() throws Exception { hi.add(cb1).add(cb2).add(cb3).add(cb4).add(rb1).add(rb2).add(rb3); hi.show(); // end::the-components-of-codename-one-java-156[] + return hi; } - - } diff --git a/docs/developer-guide/The-Components-Of-Codename-One.asciidoc b/docs/developer-guide/The-Components-Of-Codename-One.asciidoc index 70e6526bf8f..069f315cc12 100644 --- a/docs/developer-guide/The-Components-Of-Codename-One.asciidoc +++ b/docs/developer-guide/The-Components-Of-Codename-One.asciidoc @@ -728,11 +728,15 @@ You can convert the sample above to use toggle buttons as such: [source,java] ---- -include::../demos/common/src/main/java/com/codenameone/developerguide/snippets/generated/TheComponentsOfCodenameOneJava156Snippet.java[tag=the-components-of-codename-one-java-156,indent=0] +include::../demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java[tag=the-components-of-codename-one-java-156,indent=0] ---- -.Toggle button converted sample -image::img/components-toggle-buttons.png[Toggle button converted sample,scaledwidth=20%] +.Toggle button converted sample, on Android Material and iOS +image:img/generated/components-toggle-buttons-android.png[Toggle buttons under Android Material,scaledwidth=35%] +image:img/generated/components-toggle-buttons-ios.png[Toggle buttons under the iOS theme,scaledwidth=35%] + +Both themes draw the selection as a change of fill rather than of label color alone, so a +selected toggle stays readable for someone who can't separate the two hues. That's half the story though: to get the full effect of some cool toggle button UI's you can use a https://www.codenameone.com/javadoc/com/codename1/ui/ComponentGroup.html[ComponentGroup]. This allows you to create a button bar effect with the toggle buttons. diff --git a/docs/developer-guide/img/components-toggle-buttons.png b/docs/developer-guide/img/components-toggle-buttons.png deleted file mode 100644 index 8b2bdc2c46dd8225549ab1f9944b261052798949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19199 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 literal 0 HcmV?d00001 diff --git a/native-themes/COVERAGE.md b/native-themes/COVERAGE.md index 5a138d5e0d7..7f9257df5b4 100644 --- a/native-themes/COVERAGE.md +++ b/native-themes/COVERAGE.md @@ -70,7 +70,7 @@ SwitchMorph (droplet stretch/squash). | Native control | Suggested CN1 building block | Status | |---|---|---| -| UISegmentedControl | ButtonGroup / Tabs pill variant | not started | +| UISegmentedControl | ButtonGroup / Tabs pill variant | `ToggleButton` themed (capsule track); not in the fidelity suite | | UIStepper | Stepper composite (2 glass buttons) | not started | | UISearchBar / searchable nav | Toolbar search mode | not started | | UIActivityIndicatorView | InfiniteProgress | not started (UIID exists, untested) | @@ -134,7 +134,7 @@ SwitchMorph (droplet stretch/squash). | Native control | Suggested CN1 building block | Status | |---|---|---| -| SegmentedButton (single/multi) | ButtonGroup | not started | +| SegmentedButton (single/multi) | ButtonGroup | `ToggleButton` themed (outlined pill); not in the fidelity suite | | Chips (assist/filter/input) | Button chip UIIDs | not started | | NavigationBar (bottom) | Tabs bottom mode | not started (suite tests TabLayout only) | | NavigationDrawer | Toolbar side menu | not started | diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 3ca88b7c967..b3272d5a159 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -301,6 +301,65 @@ FlatButton { } FlatButton.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +/* Material 3 segmented button. Button.setToggle(true) rewrites the UIID to + ToggleButton, and until this entry existed no theme in the tree defined it, + so every toggle fell through to the default style and rendered as bare text + with no shape at all. + + M3 draws the unselected segment as an outlined pill and fills the selected + one with the secondary container, which is the pairing that makes the + selection readable without relying on colour alone -- the fill changes, not + just the label. The outline stays on in every state so the row keeps its + shape while the selection moves. + + Geometry is repeated in full on each state rather than inherited, for the + reason given at the top of this file: the per-state Style merge otherwise + drifts the text by a pixel as the selection changes. */ +ToggleButton { + color: #1d1b20; + background-color: transparent; + cn1-background-type: cn1-pill-border; + border: 0.25mm solid #79747e; + padding: 1.55mm 4mm 1.55mm 4mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + text-align: center; +} +ToggleButton.selected { + color: var(--accent-on-container-color, #21005d); + background-color: var(--accent-container-color, #eaddff); + cn1-background-type: cn1-pill-border; + border: 0.25mm solid #79747e; + padding: 1.55mm 4mm 1.55mm 4mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + text-align: center; +} +ToggleButton.pressed { + color: var(--accent-on-container-color, #21005d); + background-color: #ded1f5; + cn1-background-type: cn1-pill-border; + border: 0.25mm solid #79747e; + padding: 1.55mm 4mm 1.55mm 4mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + text-align: center; +} +ToggleButton.disabled { + color: #a5a0ab; + background-color: transparent; + cn1-background-type: cn1-pill-border; + border: 0.25mm solid #cac4d0; + padding: 1.55mm 4mm 1.55mm 4mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + text-align: center; +} + /* Material 3 OUTLINED text field: no fill, a thin outline, taller (more vertical padding), tight margins. A line border is CEF-free. */ TextField { @@ -794,6 +853,14 @@ PhoneVerificationLink { RaisedButton.disabled { background-color: #2d2b31; color: #737077; cn1-background-type: cn1-pill-border; } FlatButton { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + + /* Dark segmented button: the same outline/fill pairing against the dark + surface. cn1-background-type and the border are re-declared because the + compiler does not carry them into the $Dark entries. */ + ToggleButton { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: #5c4499; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButton.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } FlatButton.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } TextField { color: #e6e0e9; background-color: transparent; border: 0.2mm solid #938f99; border-radius: 0.55mm; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index fef24f10a8a..b6f63ffaeb6 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -400,6 +400,55 @@ RaisedButton.disabled { color: #ffffff; background-color: #b3a8a0; cn1-backgroun FlatButton { cn1-derive: Button; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } FlatButton.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +/* iOS segmented control. Button.setToggle(true) rewrites the UIID to + ToggleButton, and no theme in the tree defined it, so a toggle rendered as + bare unshaped text. + + The control reads as a track of capsules: an unselected segment is the plain + glass fill with a black label, and the selected one is the accent capsule + with a white label. Selection therefore changes the fill, not only the label + colour, which is what keeps it legible against the glass. */ +ToggleButton { + color: #1c1c1e; + background-color: rgba(199,197,198,0.80); + cn1-background-type: cn1-pill-border; + padding: 1.1mm 2.6mm 1.1mm 2.6mm; + margin: 1mm 0.4mm 1mm 0.4mm; + font-family: "native:MainLight"; + font-size: 2.7mm; + text-align: center; +} +ToggleButton.selected { + color: #ffffff; + background-color: var(--accent-color, #007aff); + cn1-background-type: cn1-pill-border; + padding: 1.1mm 2.6mm 1.1mm 2.6mm; + margin: 1mm 0.4mm 1mm 0.4mm; + font-family: "native:MainLight"; + font-size: 2.7mm; + text-align: center; +} +ToggleButton.pressed { + color: #ffffff; + background-color: #0064d1; + cn1-background-type: cn1-pill-border; + padding: 1.1mm 2.6mm 1.1mm 2.6mm; + margin: 1mm 0.4mm 1mm 0.4mm; + font-family: "native:MainLight"; + font-size: 2.7mm; + text-align: center; +} +ToggleButton.disabled { + color: #b0b0b5; + background-color: rgba(199,197,198,0.55); + cn1-background-type: cn1-pill-border; + padding: 1.1mm 2.6mm 1.1mm 2.6mm; + margin: 1mm 0.4mm 1mm 0.4mm; + font-family: "native:MainLight"; + font-size: 2.7mm; + text-align: center; +} + TextField { color: #000000; /* Grouped-list cell (secondarySystemGroupedBackground): a WHITE rounded cell @@ -1111,6 +1160,13 @@ PhoneVerificationLink { Button.disabled { color: #636366; background-color: rgba(30,30,32,0.74); cn1-background-type: cn1-pill-border; } /* Gray button (.gray): white label on a slightly lighter dark glass pill. */ FlatButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + + /* Dark segmented control. The pill background type is re-declared for the + same reason as the buttons above: it is not carried into $Dark. */ + ToggleButton { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } + ToggleButton.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButton.pressed { color: #ffffff; background-color: #64b1ff; cn1-background-type: cn1-pill-border; } + ToggleButton.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } FlatButton.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } /* Prominent filled button: white label on the OPAQUE dark accent pill. */ From 343700d562621acfab2901d5b39b3fb88f5a266e Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 04:51:22 +0300 Subject: [PATCH 02/29] Style the rest of the UIIDs no theme defined, and prove which ones to leave ToggleButton was one instance, so the surface was enumerated rather than sampled: every setUIID("...") literal in CodenameOne/src checked against both themes. 128 names, 73 in neither. Both themes now define the live ones -- TextComponent, FloatingHint and ErrorLabel behind the modern form API, the ComboBox and popup dialog families, the Calendar grid, TreeNode, the search field, the media transport, TableCell and TableHeader for the pattern the guide tells readers to apply, and more. Nineteen names are left undefined, for two different reasons. Retired components are the easy half: RSSReader, HTMLComponent, HTMLTable, the feature-phone soft keys and VKBButton. The other half is the half worth recording, because defining a UIID is a visual change and for these it made things worse. The first pass styled all of them, and rendering the guide's figures before and after showed what that cost: icon crowded SpanLabel's and SpanButton's text against the glyph, Emblem did the same to MultiButton's badge, StatusBar collapsed the strip a Form reserves so iOS content ran into the system bar, TouchCommand derived from Button and gave title-bar commands a filled pill, and the four scrollbar UIIDs changed the content width of every scrollable form -- that one alone moved a SpanLabel figure by 21 pixels and re-wrapped its text. Those are layout decisions that deserve their own change with their own before-and-after, not a line in a sweep, so they stay undefined and COVERAGE.md says why. Two review findings on the ToggleButton entries are fixed in the same pass, and both were real. Button.isPressedStyle() returns true for a selected toggle that does not have focus, so press# is the style a selected toggle actually renders with on a touch device: the accent-bound fill had to move into .pressed, which was carrying a hard-coded shade, or the persistent selected appearance would have been the wrong colour and would have changed when focus appeared. And ComponentGroup.updateUIIDs() renames edge controls to ToggleButtonFirst, ToggleButtonLast and ToggleButtonOnly with no fallback to ToggleButton, so a two-control group got none of the new styling and a three-control group styled only its middle; all three names are now defined in both themes and both appearances. Verified by rendering the full figure set: six figures differ from their baselines, and the six are the two toggle figures this change is meant to alter plus the four table-shaped figures that already differed from CI by a few pixels of height before any of this. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 152669 -> 251207 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 181345 -> 274568 bytes Themes/AndroidMaterialTheme.res | Bin 152669 -> 251207 bytes Themes/iOSModernTheme.res | Bin 181345 -> 274568 bytes .../components-toggle-buttons-android.png | Bin 20986 -> 20977 bytes .../components-toggle-buttons-ios.png | Bin 15675 -> 15577 bytes native-themes/COVERAGE.md | 39 ++++ native-themes/android-material/theme.css | 189 +++++++++++++++++- native-themes/ios-modern/theme.css | 159 ++++++++++++++- 9 files changed, 383 insertions(+), 4 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 2ab1a5eedffc650d920cdf114a9bd2838ebeeace..beb6448b256544deaf33b61f96dd385f708d39b5 100644 GIT binary patch literal 251207 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®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 ROmiA~oVx5Y8tCSP{||ktT?POE delta 492 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'Yo@$ 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 delta 531 zcmXw#Pe_wt9Dx13@3;4xef#sZkIfBB!D6r&L!u5ciU>QnzzTy3Vxt;C^WY+~G|cKC z9ulJ;^+HsG9lBIxywDFLS{8ch;0Pi+d~=rwESuG|gSfV!+r#tRp7F9-9yf0JnXgYB z;d~ReSS{+8In|2UM?y}`^MLa1Oth%65NI1d`L#;>d<>ZsAxVJP;=8sP=l{NIk1otDm%Lvbfllxn%Z#1 z4$9mOaNFPv#K;Wuv$=+x^>>JTk#SVi?FJ%BHFAJ4eKEYI}vcYh2Rp8;O zkP#i+So>+oy&TN{7Dv0ARpz$@ELBYW{>P88lTOvSR@K#7?Eu^b*etyq3@nr!((BZm z_`YJvK@M-_h!+fLI>3wTD^9wpL5k5<9Ug#8Szu7E89YKRiaMS);X3?7nX$knV?Jo5 zcNXl@X|@A442tiEWDmuk!izYK{(v!^y4GRLLvfQG^-)ilJu&FcZWhzXf0fsKRYqqzG#{ruJG6u1FNzw^9RL6T diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 2ab1a5eedffc650d920cdf114a9bd2838ebeeace..beb6448b256544deaf33b61f96dd385f708d39b5 100644 GIT binary patch literal 251207 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®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 ROmiA~oVx5Y8tCSP{||ktT?POE delta 492 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'Yo@$ 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 delta 531 zcmXw#Pe_wt9Dx13@3;4xef#sZkIfBB!D6r&L!u5ciU>QnzzTy3Vxt;C^WY+~G|cKC z9ulJ;^+HsG9lBIxywDFLS{8ch;0Pi+d~=rwESuG|gSfV!+r#tRp7F9-9yf0JnXgYB z;d~ReSS{+8In|2UM?y}`^MLa1Oth%65NI1d`L#;>d<>ZsAxVJP;=8sP=l{NIk1otDm%Lvbfllxn%Z#1 z4$9mOaNFPv#K;Wuv$=+x^>>JTk#SVi?FJ%BHFAJ4eKEYI}vcYh2Rp8;O zkP#i+So>+oy&TN{7Dv0ARpz$@ELBYW{>P88lTOvSR@K#7?Eu^b*etyq3@nr!((BZm z_`YJvK@M-_h!+fLI>3wTD^9wpL5k5<9Ug#8Szu7E89YKRiaMS);X3?7nX$knV?Jo5 zcNXl@X|@A442tiEWDmuk!izYK{(v!^y4GRLLvfQG^-)ilJu&FcZWhzXf0fsKRYqqzG#{ruJG6u1FNzw^9RL6T diff --git a/docs/developer-guide/img/generated/components-toggle-buttons-android.png b/docs/developer-guide/img/generated/components-toggle-buttons-android.png index 6aedd5723542ae6820c5d831e7819977f2bb75d1..a38b5a53c0f151f4dacd2a4713bbfca449800be1 100644 GIT binary patch literal 20977 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 literal 20986 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 Wr4h&ggxcFzmKC0Zp=^9%A literal 15675 zcmds;WmuH$`tAYg?hqJcKvJZnOUeOh=>}0jx?_f+8!16TX;48LX(?#|2?d7k99m*% z_Ji-c)_ULnUV9(wzxT1f><@gP=DDA`uJihx=N+l34k5z7jgN+gMx?By@B|GFJrekG z#l;4Gf)>GMjfN(Lp{yXQ<88J*gOf_B+aT@iX}SA>-V*^s?YvIJe{CIsd?R{CixxXR zI_Rm%VrxLqa=~lLBo5rDWxnNfH@(*K$9%TZdfx~@kcZ_CA_h=_<>&TJ7f6~r$#rpNX^Q!`e zaNtOHrT^{mo+^=&C6LJnMMS*%pO?mA4!b;(Q3=GrNmHB^Z~+`Yfq|76bv@oQKC79(?gI{02S zt@1~SG0EwCu!hMd>0N>_%oR>+^sDbqek?85m%A&7mMi@)Ja_NvHlHkVBcQSy%q~|K z=J^Vdub+Iz`)+*F>Pr39K#`Fp`@AVN}p!Ou}rMyROnCmr2` z`)Af_Ni?+NNgs2mEHFDLGzcpQ=INapd3Kvn2^Yt;ExHaOb0+GyAK0*B5m4)(tOqlT z#@c7$E4^=Y=|Shf6GN)yn-_{XR%qT5*rZ?$12xrCGKiw&1k0RH432F7c;8niZI|2F3f%t{-2imh zfWgjmJ;`z>jd^mt+uD>HC29tt%M%QaKDQgQ*F^dMO3WIE{a6n*n2Mq%w?jDU)N19I zuw?QzKBwB=p7Me;c1i3M6lIqA93=nRy}n}lRHFS6HVXA)wmdS)CF0p|kTpvYWUc&+ zD0r?{YT{6fmEp#G#{c_bsNoyK`e|)l?ni?obMmjRcCTxq?>?|k{Q%11vwYnUXGv$r z*rc?H3MXND@2LMtM{Kd4OQ)bPG z<~ZsXKDoQ-VM%YpB<89*g21KWHLI91hrX084O56mbjD|U-&{4S60|I-^JaL&M!6-6 z?mH^9yDG_*2sI6-qRHa;*0Z{}%${a=xGsHE>1P|HqWkEl>SJ-(F@xr&{ZvigPN4-Z z_oN-B>RaP&+AE)f?}Eqh&4}XXeR_{1nI=g+>tw74Bw@x-<9{9RIae#KtsH&VrHl7Q zGLOX8iZeO=fLr;FRVLb|MI{a7IGc!~PBEHV`+#B~w~$7w*lo(8w&*+*pXv#O+_2r$ zV{=S9PQrYNNMt%Y_C+PzaL%Kcx3*%fXEyS~amN?l8KU@jD6){$^w=@#We2(e7GwlHRFJ zDIgx!a^lzzZ8gsBr1%0?+rxP&CUwr=j&AeNg4(7bdV1FppWD24XL(195SnHCUGz>- z>kbBk;d$xh_swX`iVDB){(1Pn*VO-Qjr)K0ryLOG{n=2b=g8*W_e*U|`Mt~jJw$m| zoLHHpU~m*gL0`dO!OsFj!4#B-1pFah)O*MHrNlMP=>#c?01VDO32lfuixDqHc=86y zEw-)A^{{aJ#Rmn?Xs9YEoZ=uwkz&XOv(3DHqDcL@YrS5LMQ3s{EwHR91dgz49uQHWmNE1S^RgjfWualV#oVy$Vb$Xi@ zahp7KWJp9#K_QaB!+bEPfH|-|&zq8hOv_bvCeG8ln449=%#s)QNV=S>%`{Rna#5Bz z_FgT`K69Fv54vYE-x0&_JlUc1k|0}=9`V2I--?KDEu1=goRr?HPHE`=WchQMLi6R9 zp2#=_@q1AwY#_O(tuG=^>JLQ{nsy@}z`ixvJ4(Qm^XDFUNlZ5xJUiC%g57hqqF1Pp zBc_$dK%5NeXDQ_A;b0BHSgNaK6N6M4wacr&P_*-4^t)1D2R2-+pQ0@FdsMmQ6MSCaeV{jX4 ziJ$e}r9AA!%Clk0jY4j*c?DbszxRuGlF#9<|9-+)w)*zaPfT^WXm?t1uyWra!8ns> z?vYYHFKL>G!ty~&q{)TRvjP4DbHb(u$(rD&G0ycDF+HnZ3cV6h(ooKy#E~Yr+X?=s zB|Wij;6m*(>C$jaC?4br{41Qj9i_&+KmMU7{zRE$99l-Y4KQsD%Uvxm~#>-0y1-t?Cd>nAv@FESH=?omQ@&zo)(M ze3FNdrox|z%+GhqFo7mE4AHsdAfIzEO9S@5xMrRwjJ!4lS6;&}*qa;RQmo}f{g6f~ zuATSnCJszrRF<7NOl(yNa4dTd796DNH<1EyrR0WtMkmK*@>61$FTKS!T{5W1Im!)= zV-5A0eiHb`uOT+3_RfogBys$#y=Tl?1Rp#0pod}7S;n1>hwmKQXgUiZ6ld7pHb!D!%Xq}#HiQ{{Et-Rbup+#LK*A8xRuk4^xrFy4xih7 z)g#C%I<1ge)m0un3sS2Ri=6zaICd%Kd;awe^tAa*&=unCMBUDQ=9xiCE=U}GA*FMo z65}OPiekklqAuLCKM}I%!E>k`q?~|`HQl$UH?}ruipz~M>j|rE3J+?fBj4+wPVnh& zug$=cPG0kJb!^}LjDN=9*CGfWTwqf-`B@g`GpL-MYS1p@hqacV3m)9@a%v9(i;m{) zq03<**h+c82C?u$uFPKT`tz_F>NSe?6&&8W76 z2Ll*PeFqX^zaJ1damyTC!dizAN#NawUx&h3(GIBm>wP^)rpo3m>=~NKwJSPv^4Miu zb}K~E=rbR5Ijp633^{M{vkzOAuI?) zE^1Zvi!y=78Vuu4m6RdH4?t?SC;q_Yvp+AK(NFn`$(!8n@aob^js~J_7`K@lifNI$ z9qj~W&j^-mQO~M7zIpT@@pE){MFtZ$ybXyfvs10eX{`B{UfD5tMp;s>3CQ9P42Flr zHJr}7o|LOHJc$C^O2y*oGXzDhov!XKv~4luA>=WdUT3VeV^N}xBJCt`!lJ|MW469# zuUo}pz)t7Flf~S$Snb+JrQ8}x(sg%Ca5`!G3vKip-GeA3rTg;k;WX-ql4T)MBOs2m1sYSPGq8feY{xu5h(!OWiYl|^S2`b24|>E2 zP)Z%=N39|w7V(h+NI~QSWVIigho%@lFwi_E{yo4^w4`1d1VxZ&{20T!MYyIDP> zk{w^?duk`TJ@>D!O{codkcfz1ydxeXUQMf;lJXcc zueI65<{l~}MQF}lhGo5CcG+K~y6K}q1URAf5Hg|vsg0)Rvw&?WIDkUv_(e)@QZnh%*63>z>3P4Q9*YggzRj+*rBl_`d z`>jXm@dcr5lQjyY|K(@(i9KgM(6p^zKteFpXU6n%FYpvUDkXqRAM(j+o*Z!q7th^c zl<<5F99_Ba$@6^28K}VX-lT}FZ zlo<%RXQ_WKn3(wn>aqD{^7H4<+sDoD&(B(yZkhIpt}K7f5b%kb_V?Gk4niSka(!5HyiRyF5G6KJ;uIN^E8%z{q{_o=d=X*=C~2u6AqA>mgO~WVMrSXphl- z_RxEJvU0h=%(ZoXe!P=tC}vqW8F#PDm6Z$cPt`a^ z+c5F_<{$37*)Rg_r6B_o69lJg`ItDc6xB z+A7;oqp@PMJjc9vwG44JkoUYSr~VGL(1_bL+;pX9f#vwuIB}Fv+scP`y~=&bUZGJ} zM&~YvPe9OhvOolbxYI0>rNG&-Hq0(Tcz8#@Xtf`DYnmX z(Hs36XN4VpYryypQ&CHKsfV(@AT(T9x=t2dg~!b_kr22Ag+h7Y~$`mESN< zc@=bLFz;^(Cf?;Kap}k}1Cftoud-fz;i7QhGZj+m3IXoBuT8MqHADfsDW0Jpj7-sl8@?eB> zqPda+y<=Ox&~e+*u}yBwJ6^M@4v?+SS)ofQhU2$hB;UO*{bB?m{E|8!@!rD@QTVW< zF?dwkX;#IS7gS4@G;UlA`nSs>7I9e==eKaGvG^KPind39_p?JNOsR2|Rg@3wVBgU`mp6$6h^v)^ZB+{-SPNZe_9?}jLVc5 z`~Hd5t^B2#3~;hYC}tZ)V&|9xCN}Y!$Nk_OYE`6>JU7P{ZDKdad+NVyHc&ZWFtL)LiRCTjS@P384RdWwzG)+xYCi|-q|qq^5@YF z3dHZXgO$B3_!r4<{S@0#>Dt-*P&QETvzEfqkq5`>_^mGHIMJos;TenZsyAv1H!R$l zk|@l?IrT1^7r(wGAf|K}p1hPIi7Ii6eMo|L`1q}`!wV*^PZ}mmVtghc3ryA|*osVU zl%h{@59m3z+QW!zQC0iW&U*E3jFkHKtg+tWv5nvm-QKe8o)u>scJYh+Y)XRX`-pat z)3l)&pnpcySf}x)wV7ZIA+*De0rRct;uU zUGQUu`m>|=C%N{%mNi$bfSmNtDa~u%6f$31YMa&OqSey~qPX@)2_<2^L->3oc`HroUh3{kYw9=L)*l}-uWMaO5 z%N4$3o|<`V1jonR?;3S-i~SPTrrbY{KHII`|JKtJFBgih44`Uoc8Td1Pg^>;6gb!5 zuau%Q?mv}Hp1opQ99t7j-J|N11b@XC?(q4z=Kn-9Ei$uWOYs{-QS&%*n>PnNQ2(NB zmMSz=ZEq$D2!O-wcXvm%?LG~13RQ<4Zv4~-`pvSDu-W_(vA1t_k<>>(Q7uHw$v!Y^ zk?(E!O)G??52@DAdTib;;A5;K%Cd56Z-r$ZZX1x2zTwhM&|-n~?U;Ufe%*YFi_jL) ztouQ=`8MS~Ir-(e%!|3XTCc4Bx2Himr6#)6yk=WQ(jtr!P}SQaj$o9>2G=H{Bqa|L z`)RNgXtepV!H>b${eP&C%r;dH z%si{xxyu@Jp>$)HKwB>w{N!^${iMO&Q0Nt+NZ(1qIr#n(O4?#6Ear!>l)PheePhsE zni~i|3$eGrGP2F3`$>_Iz)(uDW$qnKS$yktLYm-<$AGHTaiVhYo{Og8i8LVIT)Iy2 zxbAKQ^-A=hTPZpJ5SLC3OT6>h>qBm>v9ot^vlL~jQ8lt|GVd!Bf7d+wtE>Y2ja4<{ zeC5OsWKHqJj62C7DQNGp!_=t2pqh^vm1xmk?wzOJ*qgZy$b+A(fXm`(KbHgY3hVeh zsG3|=)kT(A3RSY8PmO!{b*|1OZzk3UgAkp^v{DCap;D97@(&#~B)C4Z0rEJX4-9sl za=6Y*{tQCs79~GzQD+R>CgRV&_mklwb;z?-y{gIX$osBd4hfLx8CedlZhF|EeKahz(}^IJmS9%s_Ql7*~mMp zk8^t-zfI>e50o<7l$H)ZCvDZk|ALtf+sKd|1lENcgF+gc8C-a!D8WFeK4@lXT-7M1Q!0gE`I&2a(J0*4q z^LqrpKUV1nhz!`zEaNpQ@`3q(EjRp~s0$+#-{F&T3t4@%lhBZti?_oaq2HCW(Qcp< zGr#9nB4FKlA%yR7sFTQC6co(>3UQ52#IdoVWVe13paFcC$E7axu(jc11$0HP;kF`( ztix=TAyMr@y=qns`}_l%^YNpLPGIMBPllH;f#mcu z3U-h<#k_B2PO`!{7-pqKga^QS2@npt@3V!u6Hg8Cw1vt23R6n{&~xU-9wmCrF& z%1FE7`@lf*lv7K4b+@$j0E5uWS5pIGk=;!6cNlkfC@UH{SxGagxbs1su)|mt4;yw==SJ_ZipdytAAI1C_$rNXM zujO67-9M|(?#q7~z2ZzCN+pHGp!Qs10Fy@;pVGiJ*+{rCqM&m;S zuPK(HEo~XRSdP%*=K*RKDY+;HF2$FVCd;(7taqQW@7J2Qx!3PBPpZlw^z7*I-XDSwlP39qOM#<}V~E4n+wo%Rvo$Y5 zO9U5qnSI7bvgQtY; zh|QPpo2b>hWAUxlu@+4$$x%o+i+2{SCWO0>yBF zTRIw?-DvgJDZ+y;*LwjLC^P@QZHc0*)MbQ%IIc4t)A1n45uqQChFeLf)rjl<2eCUP zAV-r;W{$!MY;nguIeM?4@Qr1)j2Fw7U%2^>@fC85@i|-j?W@rdg|>bklCfep%`HU0h#cg~5~Z zcx!gaHVy}|cuo0t2h4r@Ka`H8olI5cN`%m-<&-=|(|XOmSTEB(KQ{8&)!0omI-d+# zZcK@&eEK-1lcjBIOSJLxV;O_EcTcr_W9ug4-pND#^SI#>V^qXk@XrABuUVT$7g@QD zfed_Mn5FwUWe*YRkERIqNguZOT~anN@*UI zFC>mZH_H@JN}?2u9Ww%lXLyIqZOD^IZ`sCS$vxdlWjEcfXrR9S$l-Jc=M^(Bylij} zRR>xI+qjVqiBv%dpb{30Kc9I{)oec-FJCD2q?DtaTk4K2I!7#$h>yjW6VgfQZ1Zn! z*W)Sf1Hj?SBy*FRF&zN;iljh*@ho!lsV>N6P6WQYgK8?@S1L5wg#vasj8>Y{_?T_U z%(+Ofo(2Aqc{-+vSvx*0ax*I(9w$k*?Vl+9^+?u-}iypwynH_uGQ?6P=* zr(0z=R?Gv~`pL*qyWSz@b{z?j`I{!L5$#VDP^t56kK}u1xlj$9Vr8ceU|A)Z&w6qgfMlDv;itt_6ioFJhlmvq9&2@O_2qVj%rM z^Q1A1gz0zgfaj@A50dlja@Ji|ZV}LCKbnk53iX6^iM}r!fJ7X9I|P7%w<*QIoPCAy zM#+o5gkSy_IeDQq_DQ#U6hw5D&5tc(d7+@IB;qs)R(ty(W-MRK~eOSB3X{t2Y z$FcX|Q>$Sp4Hj9upaG48c2*V}Cud=$)j9D|ogix_{6%H{d!g7=_fdI_sa9W1{GqNG z`fbmC3JYADjo0tFa8p8qaHo3vx2$-B!HB}2Qb=L^Nr&3YIHLimiGGPu)TOuw?T7aG z3=bxB%`!*05N6n#d4=!$1{wSH(Lt^r0ohr|%#gT-jF38i!k=Jp&8gyzr1YSmcq%lUZ3}KGsD|J-y_j6XO@ESvl+5 zX3T*yCKr}SKv|MZ{#{vyYW!Pene%_FEZ4=vU~1~AWv!Vd9!y#77b$Cyd%>tTub)Wm z3CPaj9FNfO8j)8JLM8Qfhj>{p{G6Z?scfZFRm!y~!~TN-X2TS>a3)Yk@q18SF`tY- zr6wZopKPy#`#0M=l(A`Ls?wz`$0?v8Qqj|s8NKyYGqKr}Jp>cqAd>w3v!7jRrQJuF zm{EdZEPJ>4mP3TM3TteJe^dhoWhepl1WL^M3K&Pf4eZUaUuFRLmA;za)VZQ?`z$}oT6 zB%H%K#w#>FE#?4*=i=dBdtAdL;IevyUYRb{G_T!Qp6x{AU%DK&G9Xh+n3OY$1Z5zs zYM-Akg#L6r2}^P!Hny`@S%2(Q?Y_fkouJ=0W=lq)Z;q8}hf=z+c+F1S+jCBw+vRzC zhdCi(*o+E#h{mTAR-={o2o@G{cM|sP+h%^_l9v(QpaL$s|Ctd)1Cv$7Q9veq=cWJ zb^^m0Cid}8MxVtvHf&>zkLXyFzc~)|z(jgAK>E%GGhgVPIaBY{2WBnXp1< zKnpnF4!RG_Qx-~(nKHlfk+9X3WTu)c0b^7y9y$5=sq?W7+L|4}h<5+H!oNYHsX6U0 z4wJfaZd_I87d41)?i{@w<+KQh)2#!vajUM2uT?L9Zm(R(VK_g--?75Qg~f^fT29d1 zMW=}IW(beUedsXJs4FFHeas+)9rv(p>16=?gqO{~g26G5Hs@o&4M_ChP{)09-*iVm9A~MX-!PWB3VL)~fsz*! zZ56uLxK3r^bi3~r13%Y?=NGd$_}sCFUor3dIT@^;u6_9AT#H`?BF9|`Bcd;yO{sqM z$D6)qw%6#bhAZAL$Sj%;$=LwL8?&eIo7dvE94&2m!>xynkDs0v1O8N2*3LxF=E6S` z*iPj#&PhDzexHJsRddT(ftc-%OAlLD9>2YXRIFS;`-_q_Sxe6ywN2*0wyCO@g6EoQ zK!#v2Z~?rPBOd)AN_v&U`2qE+i0w$hT~XT}Yr4*wb(+~O9YmS* z*T-8EeID*a7-))B%1a-R@LWj1VgVDzX6>uFb2LmGIr8vVi{*=}-;ER)^oqkV{UEfZ zZI-pPR~3_ueohT{m;>*04%?^3wZi1u*}@= zS{B3@)-Pa3cQ|%aSLvUchH-#S&E`qG3-?X}E9@AKLfWnP*#oEcp|Z8l$XL;W?#WZe zVVH6;oB+~n7z;1pP9JIKyZ^vSCL@mOBg6;iVp0*~q9hgO;{#MuN}bmuBRIZh|4IJn z$pb35)L&4L-Nhbp`^gY;UsK6oh(`>z%Airl0`9fetkr6{3`=q64-LVxUS1e+Fj=}q z6D$soI-pii*vIssJEHTrePkq)C|IkE?#;&sv zWd(wIwQm5)@*63pALQCiqz}pGI?dgq1H>P~wL-M~I-uXrGWKw5LIpWm!fVz2%7aIq z(&?WRF=7#2?&(?8#_{D1S*;qn1ZdPZ0Ir$zbw4JFoF2-9Xw8l&h^iC8GRLS7QKq}{rc~RZX#VglV2!Iztyk44{Lx_6(O0vVs^|ru|EHSQm z{P^)F`1N1p$m2I$EY)_11ec{QNU<9L3O8oBwSi0~>wA@yH_1G^ukn`H6+#rQuj0M| zq-^V)JvJ+ztQ~S=?f#9=Ast{g%emd@`e^)sZ6GW; z%mR6?d(0)o6p$HI-JdNR{2rj2uQM`u!bupD^;cWK9?0ocI&%2gq3-5AfOD06wx4iS zRs@sX zTO8pX0;v|lp&iXl=Q?FpYq6$en-*r6+vlilFR72Q%(ADU)=JKGk&AEq+$nT4N;uuj z(`hQEbArQ{_q(x`wkK;JrwNEm_T{cG?O&b~D*>*n$rNIZHJv%I+o;NB!w9E*pbab9 zWLx}ZS()u>>2)8x-=kRhXcFEU$=5i{P*<2ddIYNndT^zyqBjSg1IK`#(tNqjA?x8b zEVKjA87f7|C8nEbZC1l=ou!_PK;>`onSc#PG89)<7;qu0dpz&-N(u|Ky`eN)Zj7eAO22U1c%rkHPIP( zJ1N(nEVS}60&ng8|KBI^4p^2ik9Mse7o&9}w{F;_q2u~x1Eu#KD;ZfQ-pKP2>yeiu z0Ap`T#v#*IV(>k$tjd6z`5pIgBK}Ph^?lh&f)A6@*Kj&wV5X=0TM%{7JmFXH^%fKi z2KTo7!`32T~ zIZ*JIcP_)-ys0d4?oD;Girs7dERkhwP@SwY_K~@apahuJ8Clazt|e*UyG-D6<$HBR zQiW_U=6`XCMOTUJzLs+L*}rvqz&_VI*L)q`cr`5IdTla*((;x6M+g-t zgSe4n+GSVQ7Y=2J_uofQ%k8|)DTgn2>yzW&fXM3?7E-Rk=YxJcx{n%pT9BSb$XE&P zUGpu^9)~MA22xy@OPRu#kF-ZxWx$1XI>v*aNqi7K;J)%Ckyvz@zJ=Pf&aMwt_5`nuUIr&n3O#@Oc` zBYgZL4R9bXl1=-9r(1n3MV8s$%lr$YY6V%t%1(6zX#AheL56pm)>(Yk+G>Bz%w2O@ z%bcs9@thk}Z`oVbG zFIPcEAG_8CZ8MS*b_;Uy*+op8o7i}9^Np+q>Lw!>v926}eE%-MIYIKDzpbszX!7PR zbhvrKs@!~sZqe5LqBy^TnEUdINRx?GO&(4hbj6>jl_7M?mQe872m_o0u+4Q`=GWMu z+v%5)s^eQbrlg$|gYomu6rJ3c>ueY4=UWmlmvM1hG53c?vwGh#`E#55qex(elyJ!_ zCn@#5P)$ojZP}o*s60lTgU6v>dig+!#u~d8$r<~xI zK+!(IUfR=#Bdrgiv^2nVkfQdp3CCQ;A4(jm-K8QI<$C#Z)4X8}Jp{s-72oRHJvme} zq5biq6)1Y)txp;O*t(N(5NPkSbPZ;UYdJe+dZI+{+IC8;r-a5s*rsyBPFyj=LX)Bp=STX znU=!ESTO=h56Q6k)^9Fj0){Fw$+xUqlJVu|lFctRl8|`w3L@G{XshJq>PN%71rAmi z=R>DuD}^zuV%X{3fuM-dJmy}KKcqE>8IbXp4XDSn1K+-0v|;auSnM*bu^t*7Cfvg> zaViN05+guqZUH<<-Tm(Pq?_X0o$Oy6R@Z#Jkmb7C=EY^N8s3VL%zwG=#;LI1imGI2 zCAa{T68jv%1^Nv=O!CDr|3jiGe7n1sLX7^K9{O}#9K8?V?dqa=wn@(d&g}^Nqk=do zwKmt@7vumc0wq!c*=TltD;%>CdW9dJ3H*oZNWuHktBWsMLijP$B%H)-miB&SYK2-mK4i6Jo|M25|#*WLj~vHv5z zf0i~PyTSqN;o=bE`!74W{?8(hu9W1!rjol%@WaA%DVW);?-Gv~99h)}UDW+|y9VmK z_bY*bfVvs%Na)`b>t8EnD;M=B6OG5fIg$Kp#{eMNd+5tr7NF#RE7W-ID(V^kDAOo< zKY_50&S-sFQUE~TXP{gK0S-M75e-khi54K6UdDoLm7HI{1)>nyJDY~2KnPO$eVM8| z&-Tn`eKxgp*30uFeP?=yGgpPAFMo0D$xR8qc<#J@^@@;Fry!n^L-P*Ct*Op`e=iG6a%%4J$nZP`EU3ef#b3i`wpUFmWuN_CF zVictdRuEngU_%Y>@2EeivT-r4cdb=gs*+gg6yt43{*EWbdUpK%HF_M0I}c4X5as)} z6h{=Fl!OHKn$Z<%uL=7gzkM|ABU=&rZGFd(z_D^0lZS=dsW6Ai%w-gva0r1wU&S5P z4;t?r=em8n{*9J~@xBE1?-Uz0JtAfjzXxEG#G8282i3Giqht@wx4b<7MgyEeMK)K{WJr>sw%r?X-{(G?%w2L0P{RW zl~#rse8YNG0jg*@C*yJv@`_ga39!xXZ!Gi6)!W8?xJ&5`5-iI2<1D@^+ck`-wkyX^ zNN5jF@rX+5&4E(oo<1sIA8zy^IQLr{Fx5f3N%qBp#JGU)p>k8hk*>y9qZdQjUw>rF zvV0pD&})BK*6*+QoyI#&L%RB zV&(2KntagWqrZ~8iZDzlA#eZN61LE_@9=Mq5MEhx8mWMrWZbSk5P$$MHB&|Z7R@TH z{L{Hv_$Ne#8)UgdJgjS|l!SBRwy=_R;`ZIgNw4>pSYSd5h@jt^y;P`dfvqKe@3x~W zXa@5py3ype<{C~6dIF&wErk~)ak}L--HVb2&9&?X0G#++H5{(qMn~>l{M)!i+q?%D zx1*)l* zqjs8VKNp*jfga1zM^#dh1JGDg3J-p6#>{`ca{A-bb3251KyHi8!c%<-=!3BX2|%11 ze@|K8R`B`uyQlm(ivN4AZJilCkxiO{>qiODVfvDrlrysCO^DYd44Bb5e!LTQj55HM z*ZUCvaNW`X4{NrbI4o<3J5qSM%B@@7!@E@aBGe%pC!bd%DMgYbaOIo3yHvIk^?j3Z zDoi#}!KvM6KqeF|JTVp|)zxfXW_C+=n%_Dw=v6lE$t?hwFu7U+am-h1tsa5%CjKk}fm%M~XIpq=8|rX9hI0+HS0H%^90|xOyJg zEx_9+i}2Ekx8RovVk!BgtD-fiU8KiYP1NKio0RegV_`Do zUDvW$=bU7~TD=3%Gkubv2tS5DdlZ7c>*!y89|lyxhj-|GTcEi(FyfnF_-~NzZK^~@ zyoU6fo8zB6wfB{+Y32uJ4u*n*0u&VcBuqh+u-<;FR?Vqz7`eAjJ;j(M{wT3JzDp;XQy=zjp*D+;0j diff --git a/native-themes/COVERAGE.md b/native-themes/COVERAGE.md index 7f9257df5b4..e627b736967 100644 --- a/native-themes/COVERAGE.md +++ b/native-themes/COVERAGE.md @@ -149,6 +149,45 @@ SwitchMorph (droplet stretch/squash). | Menu / ExposedDropdown | ComboBox / Command menu | not started | | Card / ElevatedCard | Container card UIIDs | not started | +## UIIDs the framework assigns + +`ToggleButton` shipped unstyled for as long as both themes existed: the UIID is +written by framework code, no theme defined it, and the control fell through to +the `Component` default with no shape at all. That is a silent failure -- nothing +errors, the control simply looks wrong -- so the whole surface was enumerated +rather than sampled. Every `setUIID("...")` literal in `CodenameOne/src` was +checked against both themes: 128 names, of which 73 appeared in neither. + +Both themes now define the live ones, including the `TextComponent` / +`FloatingHint` / `ErrorLabel` trio behind the modern form API, the `ComboBox` +and popup families, the `Calendar` grid, `TreeNode`, and the `ToggleButton*` +edge names `ComponentGroup` renames its controls to. + +### Deliberately still undefined + +Nineteen names are left alone, in two groups. + +**Retired components.** `RSSReader`, `HTMLComponent` and `HTMLTable`, the +feature-phone soft keys (`SoftButton`, `SoftButtonLeft`, `SoftButtonRight`) and +`VKBButton`. Nothing a current application builds reaches them. + +**Names where the unstyled default is the better answer**, measured rather than +assumed. Defining a UIID is a visual change, and for these it was a change for +the worse: + +| UIID | What defining it did | +|---|---| +| `icon` | `SpanLabel` and `SpanButton` lost the icon spacing the default gives them; the text crowded the glyph | +| `Emblem` | same, for `MultiButton`'s trailing badge | +| `StatusBar` | collapsed the strip a `Form` reserves at the top, so iOS content ran into the status bar | +| `TouchCommand` | deriving it from `Button` gave title-bar commands a filled pill | +| `Scroll`, `ScrollThumb`, `HorizontalScroll`, `HorizontalScrollThumb` | sizing the scrollbar changes the content width of every scrollable form, which re-wrapped text in unrelated figures | + +Each was caught by rendering the guide's figure set before and after and +comparing: the scrollbar rules alone moved a `SpanLabel` figure by 21 pixels. +Sizing a scrollbar or a status bar is a layout decision that deserves its own +change with its own before-and-after, not a line in a gap-filling sweep. + ## How to add a component 1. Add the YAML entry (`fidelity-tests.yaml`): id, `material:` intent, native diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index b3272d5a159..66d91cdb93f 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -339,7 +339,7 @@ ToggleButton.selected { } ToggleButton.pressed { color: var(--accent-on-container-color, #21005d); - background-color: #ded1f5; + background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; @@ -360,6 +360,27 @@ ToggleButton.disabled { text-align: center; } +/* ComponentGroup renames the edge controls of a group: updateUIIDs() rewrites + them to ToggleButtonFirst, ToggleButtonLast or ToggleButtonOnly, and + UIManager does not fall back from those names to ToggleButton. Without these + entries a two-control group gets no styling at all and a three-control group + styles only its middle. They are deliberately identical to ToggleButton -- + every segment is already a pill, so there is no corner treatment to vary -- + and every state is spelled out because cn1-derive is only read at base + level. */ +ToggleButtonFirst { cn1-derive: ToggleButton; } +ToggleButtonFirst.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonFirst.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonFirst.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonLast { cn1-derive: ToggleButton; } +ToggleButtonLast.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonLast.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonLast.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonOnly { cn1-derive: ToggleButton; } +ToggleButtonOnly.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonOnly.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonOnly.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + /* Material 3 OUTLINED text field: no fill, a thin outline, taller (more vertical padding), tight margins. A line border is CEF-free. */ TextField { @@ -825,6 +846,125 @@ PhoneVerificationLink { padding: 1.5mm; } + +/* --------------------------------------------------------------------------- + * UIIDs the framework assigns that no theme defined. + * + * Every name below is written by framework code through setUIID, so a control + * using one had no style at all and fell through to the Component default -- + * the same silent failure ToggleButton had. Enumerated rather than guessed: + * the list is every setUIID("...") literal in CodenameOne/src that appears in + * neither theme, minus the ones belonging to retired components (RSSReader, + * HTMLComponent and HTMLTable, the feature-phone soft keys and VKBButton), + * which are left undefined on purpose. + * ------------------------------------------------------------------------- */ + +/* TextComponent is the modern form API: a wrapper container, a hint that floats + above the field once it has content, and an error line beneath it. All three + were undefined, so the control the guide recommends over a raw TextField + rendered with default styling. */ +TextComponent { background-color: transparent; padding: 0.5mm 0 1mm 0; margin: 0; } +FloatingHint { cn1-derive: SecondaryLabel; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.disabled { color: #a9a8aa; background-color: transparent; } +/* M3 error role; the line sits under the field and carries the message. */ +ErrorLabel { cn1-derive: SecondaryLabel; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +ErrorLabel.disabled { color: #a9a8aa; background-color: transparent; } + +/* Toolbar search mode swaps the title for a field with its own two UIIDs. */ +TextFieldSearch { cn1-derive: TextField; margin: 0.5mm 1mm 0.5mm 1mm; } +TextHintSearch { cn1-derive: TextHint; } + +/* Tree rows. */ +TreeNode { cn1-derive: Label; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } +TreeNode.selected { color: var(--accent-color, #6750a4); background-color: transparent; } +TreeNode.disabled { color: #a9a8aa; background-color: transparent; } + + +/* Table's documented cell/header UIIDs. The framework does not set these + itself -- the chapter tells you to -- so defining them makes the documented + pattern land on a real style instead of the default. */ +TableCell { cn1-derive: Label; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader { cn1-derive: Label; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + +/* Signature capture opens through this button. */ +SignatureButton { cn1-derive: FlatButton; } + +/* Pull to refresh: the pulled-down area and its label. */ +PullToRefresh { background-color: transparent; padding: 1.5mm; margin: 0; } +RefreshLabel { cn1-derive: SecondaryLabel; color: #49454f; background-color: transparent; } + +/* Autocomplete drops its suggestions into a popup list. */ +AutoCompletePopup { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +AutoCompleteList { background-color: #f3edf7; padding: 0; margin: 0; } + +/* ComboBox and the popup it opens. */ +ComboBox { cn1-derive: TextField; } +ComboBoxItem { cn1-derive: Label; color: #1d1b20; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } +ComboBoxItem.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); } +ComboBoxFocus { cn1-derive: ComboBoxItem; background-color: var(--accent-container-color, #eaddff); } +ComboBoxList { background-color: transparent; padding: 0; margin: 0; } +PopupItem { cn1-derive: ComboBoxItem; } +PopupFocus { cn1-derive: ComboBoxFocus; } +PopupContentPane { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } + +/* InteractionDialog and the popup dialog family. The four directional content + panes are separate UIIDs because a popup can open in any direction. */ +PopupDialog { background-color: #f3edf7; padding: 0; margin: 0; } +PopupDialogTitle { cn1-derive: DialogTitle; } +PopupBody { background-color: #f3edf7; padding: 1mm; margin: 0; } +PopupContentPaneUpwards { cn1-derive: PopupContentPane; } +PopupContentPaneDownwards { cn1-derive: PopupContentPane; } +PopupContentPaneLeft { cn1-derive: PopupContentPane; } +PopupContentPaneRight { cn1-derive: PopupContentPane; } + + +/* Calendar grid. */ +CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } +CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } +CalendarDate { cn1-derive: Label; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDate.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); } +CalendarDateLabel { cn1-derive: SecondaryLabel; color: #49454f; text-align: center; background-color: transparent; } +TODAY { cn1-derive: CalendarDate; color: var(--accent-color, #6750a4); font-family: "native:MainBold"; } + +/* Spinner separators and the time spinner's unit labels. */ +SpinnerSeparator { background-color: #cac4d0; padding: 0; margin: 0; } +TimeSpinnerHoursLabel { cn1-derive: SecondaryLabel; background-color: transparent; } +TimeSpinnerMinutesLabel { cn1-derive: SecondaryLabel; background-color: transparent; } + +/* The focus style a list renderer applies to the focused row. */ +ListRendererFocus { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + +/* The strip a Form reserves for the platform status bar. */ + +/* Side menu chrome. */ +MenuButton { cn1-derive: FlatButton; } +MenuButtonRight { cn1-derive: FlatButton; } +StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } +RightSideNavigationPanel { background-color: #f3edf7; padding: 0; margin: 0; } +RightSideCommand { cn1-derive: Command; } + +/* Commands, as drawn by the menu rather than the Toolbar. */ +Command { cn1-derive: Label; color: #1d1b20; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } +CommandList { background-color: transparent; padding: 0; margin: 0; } +CommandFocus { cn1-derive: Command; background-color: var(--accent-container-color, #eaddff); } +DialogCommandText { cn1-derive: Command; color: var(--accent-color, #6750a4); text-align: center; } + +/* Media transport controls. */ +MediaPlayerPlay { cn1-derive: FlatButton; } +MediaPlayerPause { cn1-derive: FlatButton; } +MediaPlayerFwd { cn1-derive: FlatButton; } +MediaPlayerBack { cn1-derive: FlatButton; } +MediaPlayerMax { cn1-derive: FlatButton; } + +/* Map zoom controls and the rich text editor surface. */ +MapZoomIn { cn1-derive: FlatButton; } +MapZoomOut { cn1-derive: FlatButton; } +RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } + +/* The tutorial overlay drawn over a form. */ +GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + + @media (prefers-color-scheme: dark) { Component { color: #e6e0e9; background-color: #141218; } Form { background-color: #141218; padding: 0; margin: 0; } @@ -859,8 +999,53 @@ PhoneVerificationLink { compiler does not carry them into the $Dark entries. */ ToggleButton { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: #5c4499; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } ToggleButton.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + + ToggleButtonFirst { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonFirst.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonFirst.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonFirst.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + ToggleButtonLast { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonLast.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonLast.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonLast.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + ToggleButtonOnly { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonOnly.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonOnly.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + ToggleButtonOnly.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + + /* Dark palette for the UIIDs filled in above. Only the colours change; + geometry is inherited from the light rules, which the compiler does + carry into $Dark for plain properties. */ + FloatingHint { color: #cac4d0; background-color: transparent; } + FloatingHint.disabled { color: #5c5967; background-color: transparent; } + ErrorLabel { color: #f2b8b5; background-color: transparent; } + ErrorLabel.disabled { color: #5c5967; background-color: transparent; } + TreeNode { color: #e6e0e9; background-color: transparent; } + TreeNode.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + TreeNode.disabled { color: #5c5967; background-color: transparent; } + TableCell { color: #e6e0e9; background-color: transparent; } + TableHeader { color: #cac4d0; background-color: transparent; } + RefreshLabel { color: #cac4d0; background-color: transparent; } + AutoCompletePopup { background-color: #211f26; border: 0.2mm solid #49454f; } + AutoCompleteList { background-color: #211f26; } + ComboBoxItem { color: #e6e0e9; background-color: transparent; } + ComboBoxItem.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); } + ComboBoxFocus { background-color: var(--accent-container-color-dark, #4f378b); } + PopupContentPane { background-color: #211f26; border: 0.2mm solid #49454f; } + PopupDialog { background-color: #211f26; } + PopupBody { background-color: #211f26; } + CalendarDate { color: #e6e0e9; background-color: transparent; } + CalendarDate.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); } + CalendarDateLabel { color: #cac4d0; background-color: transparent; } + TODAY { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + SpinnerSeparator { background-color: #49454f; } + ListRendererFocus { background-color: var(--accent-container-color-dark, #4f378b); } + RightSideNavigationPanel { background-color: #211f26; } + Command { color: #e6e0e9; background-color: transparent; } + CommandFocus { background-color: var(--accent-container-color-dark, #4f378b); } + DialogCommandText { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } FlatButton.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } TextField { color: #e6e0e9; background-color: transparent; border: 0.2mm solid #938f99; border-radius: 0.55mm; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index b6f63ffaeb6..cb18589e674 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -430,7 +430,7 @@ ToggleButton.selected { } ToggleButton.pressed { color: #ffffff; - background-color: #0064d1; + background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; @@ -449,6 +449,25 @@ ToggleButton.disabled { text-align: center; } +/* ComponentGroup renames the edge controls of a group to First, + Last or Only, and UIManager does not fall back from those to + ToggleButton. iOS sets ComponentGroupBool by default, so a segmented group + here would otherwise lose the styling on everything except its middle + control. Each state is written out because cn1-derive is read at base level + only. */ +ToggleButtonFirst { cn1-derive: ToggleButton; } +ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast { cn1-derive: ToggleButton; } +ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly { cn1-derive: ToggleButton; } +ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + TextField { color: #000000; /* Grouped-list cell (secondarySystemGroupedBackground): a WHITE rounded cell @@ -1139,6 +1158,99 @@ PhoneVerificationLink { padding: 1.5mm; } + +/* --------------------------------------------------------------------------- + * UIIDs the framework assigns that no theme defined. + * + * Same enumeration as the Material theme: every setUIID("...") literal in + * CodenameOne/src that appeared in neither theme, so the control had no style + * and fell through to the Component default. The retired components + * (RSSReader, HTMLComponent, HTMLTable, the feature-phone soft keys and + * VKBButton) are left undefined deliberately. + * ------------------------------------------------------------------------- */ + +/* TextComponent: wrapper, floating hint, error line. */ +TextComponent { background-color: transparent; padding: 0.5mm 0 1mm 0; margin: 0; } +FloatingHint { cn1-derive: SecondaryLabel; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.disabled { color: #c6c6c8; background-color: transparent; } +/* systemRed, the colour iOS uses for validation failures. */ +ErrorLabel { cn1-derive: SecondaryLabel; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +ErrorLabel.disabled { color: #c6c6c8; background-color: transparent; } + +TextFieldSearch { cn1-derive: TextField; margin: 0.5mm 1mm 0.5mm 1mm; } +TextHintSearch { cn1-derive: TextHint; } + +TreeNode { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } +TreeNode.selected { color: var(--accent-color, #007aff); background-color: transparent; } +TreeNode.disabled { color: #c6c6c8; background-color: transparent; } + + +TableCell { cn1-derive: Label; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader { cn1-derive: Label; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + +SignatureButton { cn1-derive: FlatButton; } + +PullToRefresh { background-color: transparent; padding: 1.5mm; margin: 0; } +RefreshLabel { cn1-derive: SecondaryLabel; color: #6c6c70; background-color: transparent; } + +AutoCompletePopup { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +AutoCompleteList { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; } + +ComboBox { cn1-derive: TextField; } +ComboBoxItem { cn1-derive: Label; color: #1c1c1e; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } +ComboBoxItem.selected { color: #ffffff; background-color: var(--accent-color, #007aff); } +ComboBoxFocus { cn1-derive: ComboBoxItem; background-color: rgba(0,122,255,0.14); } +ComboBoxList { background-color: transparent; padding: 0; margin: 0; } +PopupItem { cn1-derive: ComboBoxItem; } +PopupFocus { cn1-derive: ComboBoxFocus; } +PopupContentPane { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } + +PopupDialog { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; } +PopupDialogTitle { cn1-derive: DialogTitle; } +PopupBody { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } +PopupContentPaneUpwards { cn1-derive: PopupContentPane; } +PopupContentPaneDownwards { cn1-derive: PopupContentPane; } +PopupContentPaneLeft { cn1-derive: PopupContentPane; } +PopupContentPaneRight { cn1-derive: PopupContentPane; } + + +CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } +CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } +CalendarDate { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDate.selected { color: #ffffff; background-color: var(--accent-color, #007aff); } +CalendarDateLabel { cn1-derive: SecondaryLabel; color: #6c6c70; text-align: center; background-color: transparent; } +TODAY { cn1-derive: CalendarDate; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } + +SpinnerSeparator { background-color: #c6c6c8; padding: 0; margin: 0; } +TimeSpinnerHoursLabel { cn1-derive: SecondaryLabel; background-color: transparent; } +TimeSpinnerMinutesLabel { cn1-derive: SecondaryLabel; background-color: transparent; } + +ListRendererFocus { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + + +MenuButton { cn1-derive: FlatButton; } +MenuButtonRight { cn1-derive: FlatButton; } +StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } +RightSideNavigationPanel { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; } +RightSideCommand { cn1-derive: Command; } + +Command { cn1-derive: Label; color: #1c1c1e; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } +CommandList { background-color: transparent; padding: 0; margin: 0; } +CommandFocus { cn1-derive: Command; background-color: rgba(0,122,255,0.14); } +DialogCommandText { cn1-derive: Command; color: var(--accent-color, #007aff); text-align: center; } + +MediaPlayerPlay { cn1-derive: FlatButton; } +MediaPlayerPause { cn1-derive: FlatButton; } +MediaPlayerFwd { cn1-derive: FlatButton; } +MediaPlayerBack { cn1-derive: FlatButton; } +MediaPlayerMax { cn1-derive: FlatButton; } + +MapZoomIn { cn1-derive: FlatButton; } +MapZoomOut { cn1-derive: FlatButton; } +RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } + +GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + @media (prefers-color-scheme: dark) { Component { color: #ffffff; background-color: #000000; } Form { background-color: #1c1c1e; padding: 0; margin: 0; } @@ -1165,8 +1277,51 @@ PhoneVerificationLink { same reason as the buttons above: it is not carried into $Dark. */ ToggleButton { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } ToggleButton.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButton.pressed { color: #ffffff; background-color: #64b1ff; cn1-background-type: cn1-pill-border; } + ToggleButton.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } ToggleButton.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } + + ToggleButtonFirst { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } + ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButtonFirst.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } + ToggleButtonLast { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } + ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButtonLast.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } + ToggleButtonOnly { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } + ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } + ToggleButtonOnly.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } + + /* Dark palette for the UIIDs filled in above. */ + FloatingHint { color: #8e8e93; background-color: transparent; } + FloatingHint.disabled { color: #48484a; background-color: transparent; } + ErrorLabel { color: #ff453a; background-color: transparent; } + ErrorLabel.disabled { color: #48484a; background-color: transparent; } + TreeNode { color: #ffffff; background-color: transparent; } + TreeNode.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + TreeNode.disabled { color: #48484a; background-color: transparent; } + TableCell { color: #ffffff; background-color: transparent; } + TableHeader { color: #8e8e93; background-color: transparent; } + RefreshLabel { color: #8e8e93; background-color: transparent; } + AutoCompletePopup { background-color: rgba(28,28,30,0.94); border: 0.1mm solid #38383a; } + AutoCompleteList { background-color: rgba(28,28,30,0.94); } + ComboBoxItem { color: #ffffff; background-color: transparent; } + ComboBoxItem.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } + ComboBoxFocus { background-color: rgba(10,132,255,0.22); } + PopupContentPane { background-color: rgba(28,28,30,0.94); border: 0.1mm solid #38383a; } + PopupDialog { background-color: rgba(28,28,30,0.94); } + PopupBody { background-color: rgba(28,28,30,0.94); } + CalendarDate { color: #ffffff; background-color: transparent; } + CalendarDate.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } + CalendarDateLabel { color: #8e8e93; background-color: transparent; } + TODAY { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + SpinnerSeparator { background-color: #38383a; } + ListRendererFocus { background-color: rgba(10,132,255,0.22); } + RightSideNavigationPanel { background-color: rgba(28,28,30,0.94); } + Command { color: #ffffff; background-color: transparent; } + CommandFocus { background-color: rgba(10,132,255,0.22); } + DialogCommandText { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } FlatButton.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } /* Prominent filled button: white label on the OPAQUE dark accent pill. */ From 8a0a0fe5c02154f2853f5baa74498e3dd6c133de Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 04:59:06 +0300 Subject: [PATCH 03/29] Reseed the figures the new TableCell and TableHeader styles changed Table builds its cell UIID as getUIID() + "Cell" and its header as getUIID() + "Header", so TableCell and TableHeader are applied by the framework and not, as I first read from a javadoc example, only by application code. Every table in the guide had therefore been rendering with the Component default: cells with almost no padding and a header no heavier than a row. Defining the two UIIDs is what this change is for, and it grew those figures from 165 to 250 pixels tall because the cells finally have room. Locally that was invisible. The four table-shaped figures already differed from their committed baselines here for an unrelated reason -- Java2D rounds font metrics differently on this machine than on the runner -- so a fresh difference in the same four files read as the same old noise. CI has no such noise, which is why it caught what a local comparison could not, and it is the reason these baselines are taken from the run's own artifact rather than from a local render. All 48 committed figures now match the CI output byte for byte, with none relying on a tolerance sidecar to get there. Co-Authored-By: Claude Opus 5 (1M context) --- .../generated/components-table-pinstripe.png | Bin 6105 -> 9725 bytes .../components-table-with-spanning.png | Bin 5900 -> 9586 bytes .../img/generated/components-table.png | Bin 5461 -> 8727 bytes .../components-toggle-buttons-android.png | Bin 20977 -> 21007 bytes .../components-toggle-buttons-ios.png | Bin 15577 -> 15587 bytes .../img/generated/csv-parsing.png | Bin 5122 -> 7431 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/developer-guide/img/generated/components-table-pinstripe.png b/docs/developer-guide/img/generated/components-table-pinstripe.png index ba62524947e5f61a2f411f22905e1ee98469b13b..7b91e2ab79cbe629149dcba17eb03dc5acb8af8e 100644 GIT binary patch literal 9725 zcmdU#cT`i|*6vXRq$!Fbp^73%m(Y=-L`5(Z1q7r@5_(7J5TyhQy@!r80RibXbONCT zrAY^Ag7g3ZLb)5?_k4GZ+s^&U9cSEs7<+`QJ=fZMu4m5Qv+`b3U74PSg@%lbj9%sO zgJ)!9XVAd)-g!#kuYzY{AQ{=MR+R_$wcU+Zld0ma3=W};rlvHVDI=0xdiA*<_daG~ zD2fz&OnE;%^YVjkKT|T?C-~EnNPqI%kD2DY>sZ}Jv?h$Sax7{rYCKZQQz%|9YrEYo z9dQ`UUG_@#bZ=)?<;xOhQJCjQi+-lsuZp6}ivIo?7oHydj70(j20qK+fuNqLS`ENE zG*$UR66ip{fTvMh5MY=!7=Ak|`jOiI%^;r_HE@}zrKK;~2*Nf0-9YEj%q1{qilT?8 zrDB$bA03E=sLmnPX0_le__XX*pUqwb7bF*R`Y{lsrwR(EdSG zjua8Ec1xD}Dx$>d=f~`Nz3D+e3SburvlT|>!=dsE^Y#8oo4z7DZVN%QAj3^dO`Tlr z3EPRUJxS8riD>yFwWxixEm*;KARrC@#7eF+Je@i>H5@I9sIclUNnRRF_bS=EsmT61 zG+EXPC059#Rc$6gm>yEZg<2Ul+J7u_;)3uPDcP7+&tJ*&8pXSsfngb+0B&@M29V3!B28MbBD zg^btOTn>Jq(~hFCiFBZZ@B?~~_|{BOi1;A?u(*fwyjy57J!l;E4OXvTdmq~z2%Q{n zT4z+H7f_wm|0_`U+B#8|UeRmFaBG4^ZgsHKMr2X1fva?lP?Q9#HzpJW2hyT#^_@GI zQ=kIRKD+CIz~YzSe?3=m`#$LIH37r#Nu*UjF%F#b$fwF!>Gtb&cbJ6Xs!Rexu#ja5 zYEO1mMj(w(R~0NAHltG9=yWbrw?n&7Q>Wg9(H&Zf?LlzbA5PUB>}}3Ea{2T2-9ZT? z_I}iAy3%E&_ByALqz9-2$^?H-$DfhwI93M#%vQtOr#R~N{ z6!pd6(^|C42_>Q>!2(FNARwZjOu zT$APP8+De40<9y7R-g4imF_hE~4}=|SFj3XQ0xlP`3kZRF%tmubB1io)M2t}5Ja zzbd5t^Xc?lv|_E>8lTC=D}0u?G2%bB`~O3d@!to@auJXxL?oa_R(VGYi4ICZbgqCJ zWkn>IbucKM=Za_!=Xx%;GoZD`wH46(;<~SC2ZO*5y?6hLOTCThCUUKuM>jVckNwvs zG|t%yhP@Q}%5-JOPf7#Yap=p3>yDQlE3+EJiGS`ND6^Ru=|)T74QpK|%Cu)~4otS1eLIL2&rEWYx!^~=p>x9%QRsR=E{P~IEx-V}L@7veUvSCldidXgL5 zEc*u!_ZKCITwI%4P~D>Am$8`I?`8Jin$Wdwcwb^!)vZa^Cts}3@Pd52=%bJ5m&K!o zhxRQc-;>$Qi1H0Khp~YGuT#$1olu)d2tj!Dz0sZM{}arZT@LD-j;SGvT@x{k zEEdbbcY=7Zi@o~OvNy!}t}-%9nANQe-|(YD2SdJC&(ww(z)kv5LfwIcYlxLnjiCL^tBdN^fXEC3db?GmN2;vPj*Rvjb8|jCBC;N+> z`y?9(s;kbkJmK-%84cSoc8RA8V@y%Khz>a2_fjUZp#xE5M_T%tkrTB|Qz6sY#U}e? zFSHh~Ms3b5Hfm1rSjCE?Z*HZ-l+(KFkB0R(-AyAs5jWf6D~tX?Nu|jxL7{uXJP#Ma za4_YPKCMZ?$)g3y!V{%tai$?ZBcbbMl)Ffs*hNRVwLzcbC8Tc6d)4Nk?ln%LG{v+6 zj2b@Jc@c4e=6ZO_#6hQYY~vwQ)F&4Z805d57wFJ1x#yr|#Zo5Di2us8Vsn24V^h>! zWKx^ENa8&UOwIk3CM{Xu)$=r;Rs5N$_}4mV-E@ZNNjQ0cg~y}~D|ZF7%KSAU`SOJL(0 zl}rKV!1C!Lrb+!0=gDg!oVuWlF2Av!59KjVHwi84vXWeCblLV3?JwfQMiS>WSsj@`8%)7X;<$5%ey zT}q;G5R!CTpNs*rEsFIt$Mjl1F}d1KEv;O<#Ss?dq}l+~?H73Vphj z^A*+Jtv|_XWn=_%+dU4zDt)IMI=e{@LFqMNm9G3NFCibe{FOcdntM~UE&L4faFZ(Q z#s{qYqg1Fqt@e%|7o-3VOXs(Fn`e9n{yD~0P#YnnIY^75D~}8b%=YTg@LJSy=!K|r_g96Q8+=LQc~)TIwg9T7Lp_r6B(ASeCQVNUpTzQj>%i5uS7 zg6?h6&c+e(u7BwJ3Wy0O&$>~%H)7wVeV6^di={hbI+Hq^;!B!2uU?=#n6MqI>0wj! z9iQvbYJ_)1wygZv^y%|vc_CtU84OB~A1z!+!&M)o!8`Yn9h;87J4d{L#hFp#T*f3-fUb*y0fYa`7= zyw12)4sPmsg>iR%1fzUx{H0?y+~st=&qL;$18L3oORk3XGP`sR&X1HX!r62&@wymm zH8J--hDB*ZYS_ua>)!}g-K-yzC5U|6mWf)|t{>q|MV-4t$`;vc_;lZmrdiMZsr;g@ z$n(vVsk1-ZKHhh+vSiF+>eFD6vR!8Tc76cF7M$G2keZz&e;V7_EUJhtmH_Ks_p>C&0zx)x731e`9LAiuP-mqkj zMr!QN>+us8B;`(DdJ8zmd*nkev%2~Qhjhkkd`>!$Yj4~W=m_K_t?7Pqal~mgk25OulJhqOxtWbJ93{+ym@4>cAEv7>|SxQ1B`q8y9ypFGQo z*G56-vUOl@YoK{ujANB{advX*!KF`vZ{0F-4V@^ri3?_z_tdT^p8L@L^XU_5LMzy| z>1?3dP`6AsE{fM*fxPu7F7j4q$EJ@bF)E7lsv6~NOHjyp*-%Q>^>VU{$FDR)Tf7A^ zC%a<~&TIz*!zM^Z@l@2%$9NPSw8)Gmnv1d8YD8~C{_5f6#@)erY9AVgsi%!TmyNK$ zMzg$1hFi97WAD2DS_xkAi9Oh1p};hJ2vWX7r2(oTrq85Rn^vEb_%*2!bsEe-+~F4C ztcKur0FwZZUX2^)>6TsKiZX7yavQ?q++R|B&rt2$@y&KcYr&Y<+s{?iudBxKTVO-j z*T;*rltb8Vw$I$Z%x+L;`5uT?qv^W*Bc8R|c_^~!fMfUPwc<%G8Y~1#%=j{L_q4{I-6ZssV63C;SI4@7_Y9CSsNYUPp z@J4lN&+t5;uw7WIkUC#^S3XuYS3KtUhnQHZBE;v*Fu?rY_^`jncrkrrlJg4UL} zLrpv2a)73a?5x-svu`CV4ZFSJ)2}NFmazXJo_&&LVmmS9G4&D>l(>Zu!0o=9$ruN2 znM;oj)}&N$M2FTC1wr{RP% z_*4{`3msM94=&RfKiKjF+G*u(2xXb&q$(D9_%hCRssU*dTi6+sYguB^gXoMFcF0ys z=9)F_{^bNl_GkB$grwbb$ulg@BP7@id-J(uYa}iO^SP(iV@Qc23MR9`GZK!wFRo9y zoDow|%|vv((HlN{{wi3v&@iU>a+@kuH?(&?v&)%ccf9l=G{taV&EGSm8%58WeB`z^ zE;@@1mCAY&6NNXffCeh3`qX%AOurSQT7R1Vh+PaQyj#Y4lCAjZfn2R#HYwlG_igyq z#Z;uIor$eON{`9oilEcQ8SQY}y}nB&805*B5q0Ww>eF5f z$V{D%ObekZ$iis3O-aB9QSlnhag3Ml8rRDUEJ6wfGm9TowZ@8Pz0et{?4)m>i|O92 zqQ#C4{QB`9y!^>cIBb`Ptger(j=pkSsM>UamLct{98ivYdTC$J@vUXeaMP>gy6K`-aXfB5OnG9h^u||QMPWY;}he1zaMoB69{)3 zr*7Y>xq=Hysj$_~JR3(5pX;@ghR!RR`g0781<( zxSTgudJV-Zsds!MPkk{NSU<9HuRYL@P+Ad|1v(^e(toLXGMvsWlS>b(TzX2o#(KhE zcwxggeeYLG7~(?jr>o-Dbwj_N!VskV9g{@7BB|M9im)isA*z?H^EG6&{|)5FLPzWv z;e%`z%xu$T4Ct5Yo+l2iCIun-_NEdl8xMEKR7Nh8*JW|}=V#tyxbESysIj|V1Pkf~ z6URqfN>+X46&uI{=#KC1SOl6j$6P)(P&r_T3jdafDYqGlu`}%CcmG5MW8{TikpA8Q zx`tIe-eVlWg48PnW#)pf1%B*W++CGLkCrc^e-9TW3ZhGR1?nA>q&M@$B@fBl6xGd? ztsy)&2mDao1AP6NDrO)WT?*!w5r^Bas+TgtIFKk!!)ot`h3_0)Lm3*q-z^lFj$yci z@cs+Tq0y%)OaH_dDB2Oj5b5jTm(;5&bE_a{EIX!mViZpf`}aozo@vOA7cDNjF)XLh z`MOGnW?mGf1_@mj-|5D~#o9i`M()^r^&X)?`**G1b5sf49OU%AJ$7)>s_C$D9{>9H zP~yes1+fhx#&z1qhb#T~C=81AOV_7q$LGw}DsM8Oe@`B2>fbt2o3fuO?;>fs3&Vzb zj8B)n3_44s>ib+=M`-EgL{L+;Ke!7w+i_{ZTN1K`wjS^tC*I*CKI%=rD?*w`CsPXS zUT-)NhE-WNTR5|>sbcZ#Z@8j1-&u8#8Qt}D=`|ct*z3PPf+b$rrd&EAT}*<7ame$- z;)IPN?F`>eV|iH^hrSnQhbbvL&Cv0&>D4s$Jfws!Kh6(7v!p|tu0+}Or0QkZ=4^W? zRkv@j@ZdS)B~wtIOHSeUvd!ZkCiS+rEEJCoM448@PoJvP64gbPpK@tuwmZ)@kr}(! zXW4Qpc(~-0)BZgl)LMB<(H6ka|(FGLZJd0hQW447U z#%A@M-*lI&a4LP#RH17c(2N)Tc3ge5eVdNqQPoy!3`;EY<~AEv{M^CLl1LH3yZ>5u zWLsF=eMlgkUcGl#@NCnW!^7f$58>_a(EWgs#?ZlxKZ>WGt9>Syd;TaUA1=5-%^~H!ec7e?{cDe(VP$k6hTkv9Sit;i zsoJ-7RqQ#a6oytPyW}jrrGK}J?);V%H$m=9HCz%mNb<>W`ssp4+PsyE2s{a-_U1i5 zee{fm?k_>6??UP|HzPUiGo|dd>I75y+*RqhP^_y5+6GnOXWW^|6d{L#PNf_dubwLe z2Y6zleW^~1kTwLx%@Kj3=W^GT&jt z|NOHVHWXyhn3ek| zs1KR8G?Ed=XIz#UJXkb#C%Yl2sQzGdt~;e2?#q*CHU2f%o99T-hqQe$K?4Hx!(U;f z3m(YI`L5^D_${;F75D!{j0#s-H)|#ha}9D$=1BfL7am1n*t7duzvaJ3GMrvC0eDuwxAn&uEmJ3(oDZ|Rps&e41KN9n-^>&_}G=$N$b zY(n+KO%LnB34s8<1;sLWDOxJKb9dKn3{h(yBI}H&gH?SWfVr)X-hwHIam3gOR{vaK zEDul~*sN_0Apw-aU3r+&_Ov3 zj^s?bc|X?vhTYHNK^IOWf?`F=VvGOaE;8+Ry`e~0?$6GuhlJ%%jj2e{R`qjnE|@SrI41*g~6Y z2~(Jt*IwkttivHMl9S~$(~YP%w}9iczr44<_F3z-`~#ww{v`R-F4iYmg^~Aem+L@k zgd|gf`>A#K5GX1Ljz1s(5LT1Jc=0EO>E8SYoq4e&Igd_It;=F)u2FtUuttjb zEmO(&0iOYG=Fh$-%xfe`L3_)JXD8=_I7b)I7X0U5!MRAg}Z!-we zGVHlG9|t*8nh}J80-_rgqLC`8g-w*QiLgxy;GMKNQw1@f9N#ZFI_MGSX)kNwbMn=p?eZ5;!oX) z&X_#3&2V9LPUQLb9vyFhZT$vOvX~-dHd_B<5-^m*Pvm0U}I1K4t1uBOs-oU%$4#C65%V{Zd!L4B2O$PwaZduo+i z1VgKr5E(tXz@P$mS@xg>-ET48|Ck@pl}roKw}r{IiQXQm5{q~f(~bv^0XKB4Iq(Bo zD6z6L2@-UnOK&GnBAGGRi@1hE-@-aoyx;WppovHAuy!2-Wfr%7g_l>%qB~Y};8LMB zM5x^}u=^DKrhYzrGG6=mJdiJMP|){gS@Zmq?Hq?oXO}Z*D8CU$Ck%x-SYHsfAtY_fcsKC<$eHEI7bA|UtD}Qrq zoHJ_hodA4qqqUR3W&!v%N~8#WcnNUr#Nl^11q7teVEa*@86zeC((ppV`Wtag1uyD< z1&hLO+$;}ySY++w90B|`BHR7jv#pNXdiAz}-A(;LZvoXZ#_A$B(rs;e1mjOC4y)}a zJPA#CgImNlz!yzT^*Qh;8P)_|wm;Ry%xcrAh?~k$t2fi%6HlA#J-U0GWJ^=)h+*hu zK2d7)ws7|5EKkR=qwCth;AvLBkYGyd%5>;O3ykSyH@YT|?qn_blZc$s?Huw4Rr@A2 zuT=iwjaEJVSgM%>H66J*?q;kMNLT3Vbdh0JjYX03PNMtiO2;+gX5_c;f;oL!1xCxR zXLFH%&xn__{c&6O(OWZ*3q`}F$|8hsL7cT0xn4f*!aDzKE!y&GS=UZoxIYau#>mol zcU;OyMs8q?muK0izRG>rT$}Keg}JAZ!$MdkXyegIjqAASW6na$ozfWor`ROGHTipI zItI}-;_e*K#Qq|0SAhde@;yI(+_72^{Jo_3&0CR+u}+3|ezk7vohoE33diYjLRwAG zWN;5q4xkBpD7GLkyH1jTE-rpDhc=MJdLmQ081bmZ;c$!*SQfC<#{NR)BGPBxO%ga4 zptsX?jo$&@+jp$e<%@uNLjKT%t>A-~LJW$hrs4ljmw;JxazJJK)O#S{FfV>9q literal 6105 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 diff --git a/docs/developer-guide/img/generated/components-table-with-spanning.png b/docs/developer-guide/img/generated/components-table-with-spanning.png index 3a9b0d36b379ed307efe9fd3a1e64af9770f87e3..299584e043e0cdf1546b50de0024e87f213cd6a8 100644 GIT binary patch literal 9586 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 literal 5900 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 V=ETcf1-`m~^sX9dmucFE{ttdnJhK1* diff --git a/docs/developer-guide/img/generated/components-table.png b/docs/developer-guide/img/generated/components-table.png index 04c63c40d47170aca74aea96866d53fd97067f05..30c9c0d7b51e77fb5d0a674b6ea142ffd3da0a58 100644 GIT binary patch literal 8727 zcmd6tcT`hbpZBBJt0*EMg3?7aSWqOPR|P3bXwn1))PycI^r`|P(hV&nfPnNSy@MhI z0s*85(t;ETH4#F)Pe=dYgMZZ$ZES!Q{ zd~Zlk(Oa2Nw=VhI>?PW)o@N!QY&@vnWA zi6hU(K8!xwo7bQYeb1fz6}zW8x#I#Bh6;4#@krZSH}5?S#uKT6Q25ev&YYu_L>hhl zoBvjX9^?e-cKiLfWJ2X#C~V|d1KJ{nhUeJ#(MXi{T>oX~G$D?ze5I{T4t4Osy{}o# zBOyH9reh*_m~9~3VpjG=?szxrsgf0i(!s6pJzt%~?<%uQmkJL`%^8jl8C;yTnJ6ob zB)H55^6qC;WL}?g9(*8!vU}@UiW{r6O`>=ZF%2L2kuH=Be-isWslUCAICZ6UdJ=4~ zaz1Bf)vFesDakzwcg6W{uAM!YIpOMDi_UE~!ifw77dZG$_62dYVDsdR)J}P}^GM%t z=b*)|FN;fux;@0fcz>Lq8YCD{Qsx3S$T5_S!lUfIQVKYYfwG=zMd+0oUIe3vC8)Gg z)8cA6B`CUntyMIs#|NG!uTIc@ke;uti!nkKE3y1vdXdwIVANz`AcjaqTWU zFmUm0j$ME4g=C$@R2uf#PWt|CUq{Smbfm%yusFJZWyjT|d3&sObNs_rq+a>oZU77R zjoN5T?$NlWEFM;|@1V3l$Gm$p2Wq_Ofc2*c6Cm)o{c`JHAA;)FGzFd{?vLS2A*jA# z|5`+-Y$fHxXcJ8Y%4iqQF$^!KN3v!hIR7jIw;fqWC+}*!uB-Or$5Wr2n&FUMw7{hs7Cz*fLvCr?qv4^ zw4F>{G`^GcXwD8oYDtJITmSf+5Tar^-iNp&ANVbQ)_%fci{;xSV4~=Twm_&X8a>Bij4=OFc=53$?@A&0pmK9 z#gCe8;FQZ%?5B&B!VP(!w=loJ5S%-rF?J}MHRXfY4!uYrOn=^&G?(-6*#9D5 zxw;a#|6s&oekgyCDD?a3yA{87x0DInlp7FMFCRkB{WMU~7X}YIB{1wYbUK|r_N?#q%R18vHVc7-d{Qb{=pF)fyg&|% z`n#3{v1ysZ*Z;>lC)ByOfpNnqQPg+q++(ihmbOQAZfbo~MW#%U2-Ce!_mDFw1%!r>kJkks`7*iF_{mVgH>p3+Tf6o2bzbd%RmQn=|cN#K9Zm)lMUPK3fcG zpPyv414&?Oaz)oKFuK-MMy4*@9CHt|US8se8GCKV!pp$k=)-%D zHkdW7m!bthcXS?ush@KMCzV|&@&kH_qKsR}IaY=Ez@}pkj}kv#aO66rV^z?p=6-hHZ?Xaz@#2$4;e`uqu_TndCM*1@1g43=|9c zw!LZX(3>`?+|VtsZkmLVWEMMk@JKdA;fuw`?r`_X@@{C+~Jfw<)LGso7~K{nR|MI zppOXAci{}x01yaO_8h$Q54z~x2klC`+4%#}Xl`^l{V7kbBoqbKk+SJaqvae^@7N}f zZ2N4bZZ+nfP%9rH6_yS!(F%=TbKq&C(1I&ES?mb%9S0?}XR<1gN;VEVB` zXSVJgM`}+F`8DQd;;O?pDbimQq<4Ivh@Yq&&tk)<>>7$~iDe6!|1`3^BFJ?=)vW5- zvZDFrH>v?gPn|0o*(D*xYRhV-QnJdVipS6nBPF4T-<~Jkf`Qpn+DlvZ>>*Gby6cM3 zq_us7BS#N0X%*MDgB@ETHi=x6KZk34n=zu}Fl5+59;@rdoR)0QP!iF_N*IxAyW_9w z53hV{{>-NwIPu=F;AvOn3HeXRBhTqcIXM3rk`!H(>HjuRAD>)w8w5FCzxB}@$0~JaquAK zDCl>#T0GO5Etgy16fuCYJ1My@A^Y%6LAXVucYo2NvL#%@?7G~boENzfXLaJ+g9eqW|FjXdSVU5UvS;z6}W!KyOJ8S7xe)Mb;ce(~a zojf~`twkKlyL^KdH&wGOuk<}SVM@171XL^g0w5PAR5dd>(gcEuMTdN_>C@$L7=B;p zP;FB3$Tg{AlcM}?E&fe{_ICB6Z{V|eZ}TqptTZLZSGe~%<*utW67&V(Nt&dUtfsf! zkgek0&)^?vgau$G_TeJ>P*co^C1z2P1@wfe4bk|P!CC6c;Afg2{RBu_gbj5!-g-LL7A!2I^{V$i zp_gBt_CP=+(Q80ON2f$y>e@9ectg(nJ zhC}bm-y<4x<8QDk6p^fkADnyJq*QKrO?I7e_QoTZ*>Z{qPL$LLbpds1eFqC4nG|ho z8%ONj0Qd*6<&4+=BntoEQ2m|*7LGa$h~le}PWBKsfh*@j{%O(|Xc&6mz+;uJNQ0T- zffB%*h(`^kpzm^sU@C0-d6W#m?WQk(4YDwm^H>5^NEw^$s0B+|xr|=uMa__v)H@{{CUtEF>VEzkz+P0!M=Va{M@VymPMmi^vA=ZUa!dX6TUbg^@m^;X z-a(U^hrKU(5h@4Jyz4%(i?h((PMu7esH5^Ealf0Zs;x=jUTf9#!V*q|M)685xmx37 z6g>%smC_ESIQ8gr*&XB6jw5g}3sju?Rj6V(zQLOp=$9cQ){P~y93rp*>8qEVugzju zK|$#Vy(kO=UVEsf4Ep*@YP8Ju~ndu5s|vic!@wqFD^7&#$8=F1O*L)c=L_iJPl# z_TL~CDDH<_PKvN@E=Tu@dccd8OgV(eBHp8&f&D^q5uxRbDGM+baO;aVct^n_~8E5Y*}5ici(ya!`djR@0aHMp@C#4qRM~Eqchg zyN!Af9K!xlO4|27={_Rqpd_i4BsxeT^`@3uniM}uB}uBd!qhkO_}cRLQOf=cE}EY1 zz)P0VlJVU@~lQmOf(>TUz=3OxXtA$>FF6B6+UCdk-(j}b8?-E@4K|I(yv7wtF*VV;E^=5 zadcamNf7>mrfq@fsNEU3&b(N?FdVg|-4d*EeE~pN|2@7UK5f+j<=6s6kZXVR_F$5GU z{O4I{@LcU3)NFdoLTLp^#_)Q<0NsLV=hUkH69a_5WcR=371EO2c4vSLR_}?s0qVt1 z%|k*8|MRl@uU_-ARjNNH3WGUaljv!b;s3@CJ4}G3$c$nY{f03DNKXn8&e$N^6igZo z#$OL;xC>}Yf`33F9*?Kxs2?cu*%&1}QqaPv)VN#z2uPuA=wN#?z1DKcW@Fj!N)fi zN7l8>{^qOO+oV9ad2TIw z$a^h4wcryU7%CjU6+`MpleA-i*;1Os#-mb|gFY2U5ky~pAFFb3;@_)c2ulY7xyqJ6 z(2lEC=j#Q{O~#qFK4ly9y4AI%B1+pD2XMB(3$dZXy(+$yTNPTA8g%qJt#rm^@i-8R ztTe6N4>oDNd!Xhlrg^HULsnMSdThu<8{oMIccIggqIK7t9nV<{?$iuAU>^qI;s*J} zqF%BxT1p1FFfaHijI`r0((z%k3S*&HJ%a7+T znh)@u5|n#(AkJ`Zfb~J&|KUL|`f$dGqse)}0Bxuyte2N=x|*JU6gn%3rIcOP-vqmAJTtB=wGz z78;lIQh835Ke|HtA#_rV(o*wr!k{#+S^de~O$O7tONfGph>x2#kdOdfgV-}Oho9=% zT$Lv{x9ra2N-UZRw&lv*MY_F1GxAdMzKe197|<{%ZSkry^|haVLzbP|DC`;M#78R^mVbKe<&-f(DQ;=-n|uN8qfN1uh9`7 z55`Ha(UO~Is>AopfmE5z0Ck1@kIs(&1N8r$sQQ0%EYlH5C5g?|#kg5rO@6iY9!-dJ z1w!V7*L<+W?N~4iiYrq=AEV6c-SL&r`qgJSaJnb(M?qrZlIS~tGsMaSwoaJVr4R>A zEQ@Jr(f?UPs0-Y!_tJ#9z;d1~j!$m8kgo&&0Qu|76H4sChGP01O?Y=mRRU}o+<5jm z;v(R9L#)}mI28RFaA$Q<_=8O5{j_}5Xp^6=rsoP^6{7EX&4=rzLd<7VX$*lLq(^9V7M|t0CR0BuHsTd9Et@@LdALLx;0Dw# zDkWtwSJ%(r&^yp!X>K9lK*U;=7Z?>_Gz1r&()i>=pTOp4+9RxgyfHfPG&yefjF99B zpQ!GWdh2Er<6V*7Pu|PxSckUaSa@jgd;Oz4+F8^J#eh1;C13Xs8kB^THY zmu{OOH&^I);XNr5UOfk}XWTHGS?@KQ`9D$5poZ%MonIAx-vC|3St+q-1Ie-!$Rf=H ztyqy$9DvU!add-2&XTA)jyzFz5I6l9!e~^mAyFd_KRk{T5P6B0@iV%PsTrQ7Q;Duf zt{abv%3R?hA(0aHm8ZR|&ppLj-Agd|ocQW8G?qN+yD+G0(~A|)z8C+s>BGyPP;MKf zd>Rz(J)+?PQ(w25zwR76cU&Q#A2fme8*#%?^@O!A!7;UEcW!dqyb@7=xLys(F^-aB zco+Qz`M2U=gW2xHz;_)wyVfoA#6a_kd4r07m&JS*!s6%V=k0|Pkjnem1kxi3pmiVV zK+FjoA!WSIP)%F^S5JuMhSU6IXe<5Q@)s`v4(vql+v(-fo*}sD+qhZd>*Mx=XWiV~ zCd*7sgQWI>XlAiYRJlud=Dx{je4^LH)1vY=4l-2icXTA-h?O#IW-EJ2@GZaMK}omW z(T_gUBMD)GT!D$letHS%q1b2oMVo)kXr*$8-b*CS(HJ!T$4Wbo>%27Y09@_q-BSxX zN~dE*lG=7ImTDJz&I9d!a$f4+Ml+}|-iwLE3S#Iq=P^NktR|CNRl2~snJ_8xU+zWMd8HS_EHla-Zq&fYuwdG7nVpXav>b&ehqIs^c~ zQQaHR+W^4!3jCgRa6kAN>H4Gq0QiM9iNB;!XJ@`NM{6uxD>@^rW}+#6De(vg)$1^Mct$!PNUNU%$`Pa@b}&D1vwz z5lRv&?<$HufpX$a0>sj*#TDsH1ttS+w9???GvVj%IY4{mGux#~t7l?j)Vn2V1bM}T zwcV=Qp`oEy>zfhRpwKlv&HX$)g}TJkXWl?K1)K$eI;9M10#(`lCUd75yds}{@+G`NZ z@A+!9P#w+v%ah{p2Nt#4yCGwoyC@f_wK*f`pT7!u5Vws6f2x>s!I9HC?Q%S`XLH+z zb$$DvO;h^8Uo*_4_-&d4kqbexvW2$Jj<$f8(Q8ox_5b%L*Fn zI#p<`orQ*d^D$9T`LwhxWyo^vg4b4*x%%I?82;M1>N-bY=7uo*72fQqt0Nvw)a|yO z9Q#cYKHIfZTiZ+JTTTsPKGtKl&1cq4CA)|HN7hJn^DH$UBBQgz8j|Fp`Aj$6rb>!7 z`HcSc&n1$wN4u++c0RXfk8N1U?-KIgWGrD`kG=`&q^~yQjxrjM8fmMD-Io6_RnvCz zvW(R44xIzb1r~+~ZCH6ONgkw8)7|SGlD1OAjtbVaPS(@t@*8uNzlzCu-JDoh%jPo= zb%@6{IowkbLry2?P&w6=7xwQ|K~~BKnWtC{TjSnZvxO;jROX@&y7=3n2aVeM?ytZ{ z3bu!h!Ol>)@#Bsyt3Qp_Hs*YiSjSD-Rnwn8w%%A3*c(Sj1tyeVKl}>!!ku#8-;|0aI_Ne%Ht&uSb0|Vq|MpZKpM{+iwOFAvgXw z(9-@H;(wD%@+P1HN-NB93*WB5ld0zN!&^p&0z;W!VE%)JTB7JXMsTZx;8 zhtKOBmUCZ%wdeEUE7J$HA^-rRMdW~BHEE`X-5F4-^jO7fK zCLIJm$p`9R3ryDrfJVV`>@u={ebw4_TctRSwsLo&9$W?2yKa!CW)mRv{!kePXFH zngtIlU9C&(pDKAyhtAK>-(H{;4m5FxSP!MfO zBzk;ZIf=fKgu{{VS5e>g4-Am&eO5^>Y3SLFmLy@3Nx`$tLN0aM=>&pJgorW)5qX+Y zgBbMQ-S#nq!LpsZlkfe;23UyaVg=>hljpyDk;d6fSM9Wl`dg=?{3)G^Q z^&^+VdG1EwZ8C0|nPtUG*|}fU;a;%5>K2Q6xc&R`K1}8T@N&(yv@vz+Uh}cLRv(?< z@M`ovgGfyk$3TlI#9;NqDQ$FP1|C1K_~QE^&VMdC28HWeDWe!y za5nWZ8TGb{(}h%2dA3f5_6( zGOx6>Pc=k9u@Q0Rx5XhDLX8CsmY@igON5+K^n}{@(JSV^^kuNjBH4g|)45n4gc0`G z>^XYNqMTMqNl7m~=IA^4l+Z$cbd{16%?D6$6WY65h?^%SZ zszGp+@wDzYG)ufW}KxA_qj{(D&tI99shd*vb9< zlN&x&vWzcZLWkPDN6PQbPerLyaKVK(b>>~kiYDa2!G+%Nk0PkC^h$SXUL%HHF}U{7 z|A=$M`vD{MLV0Km6971_zZc`1=D3g;Q!aq-QH(Eq=>!3VNZasPh=F;a#l^*05;dd? zM8i1HTk`7b$3&)P!lW8{9p-j?h&=`)2K)21KT}Z?W_*%{B+)r1XJ;!y$bR6H_-8Cn zK;mhUPTi5PVVY{Z5Yp4r)XgnlEk4fN$ti1oaglWC7ndw?5{Z;UBAF82^TJ!iTPrFm z7$>AapE2o3kc#@%?`zWmvRsb}U!TMg^9avlHOq}26Kd$6MenqimhS_GB)(m`A=dW$ zCN8I7Fj)TN2$4Xzn zzE)9QUXA9xoo$%XZ-;vHC?`DpNR^SAcJ#!COJ`y_rN}0~%DAYwcrab?=u(A~I3BaZ z!nAUMS^{yjRx!;FoIcNc?A2+>8xB(+BV0EYhx5LHWgf*YV3@3s4m0uc@^VkBQuA4- zz;54u)85|xC?#O5 zupfeEJ@Q(a*2U{N8m5jr=E_J)>Qq!#&O2J(Gcz}zFNx+)!1wdIy1JUWy5`wBaF$I* zPmPRNp~9att;(WbTFq$u6w~zQvLM>*{Q|7<&JjsUUU?0MS327UREmm<%v)MoSPO68 zN)SAw{Upczv;$OXu6j=2KriWFVT$o&*p+Fk$g+T%b;=#`0nx|y#}-Utd=Pl;1FJ~@ zPzln71IL$%;zh-7Da5rgIKYFsI6Qh8z{+&@Kw`i2zl%OBhQ^mMBf&bc$MVi~4(a^_s#9uavh=}kV)U}k+Pn2#F=JjG1sI9A8KlC9T1kn;I2E;?@ zL_}coSPgQ05Y&wlY1)j~-rf&c3#oT$jTCW4ih^K}qV=S~kh7h}#q}#MhJOM+DTDO{ z+vGw_24YnOIjfJqG|#~Zw0CewAC&}!5}D%Coovj{&(G*i@l+1F? zd$-R+NBsQ!s7UX>0@s#wBE;9S4E{V1R1A&{D8PP)Py2c^m?IXVGW1!vcOr)m9WvF^ z3mcXHZPCJOo^)ZSB2Y_PJ9t!5RIKfn6glV4TW*6zUi^o|vZ{9Suw0u=$LhR}?`;$D5XVw?T zY6cLD5B8MvM4gBgWW3!G;QMMk0ZFGtl$4d%TM-g{5)U+7JKNff3kwTb7Uou9q+nT> zO?sMJX&M+r+%zyCU;0_Y+}hLn&Yguwnc)hzgrqC?qIWG7<#z?7Y!Sy!l7zT~6<(+L zx_NlWe=`g))`G4_9o!t)`gQ_co$n*c5@WWZHk#j2D7DILNmrrE;IKI0roMOTG}Ow z8tojZpam|CcBZM@iKt`7g!{8o({Fr_SO0$$^dXeztf{f_OQpxZKY%u-DGWwm&T-$KX={UiH!U;P&m!9pp4k z+;5?NtzYkBPP*}wjwm`)R!%NszZf_tofDST z7TE=vC&TO@bznn-2>8aaVIO=+$t}?NbLtqi9g7qw?p+FZEK`}-ol@pVdnM;$di{D( z9Wqf0YgYlQM3F=%2kk-8r+lMXuEG00kfeka1 zdb%e~z4+ODZ@L!Co3%FgF|_!L2RrKL^XGfnW~4#Uh;V4?=!CQri4V5k8sOfd=3+0$ z&ZGv7Ip+SL%<6~$pR5L@8XQTys9uA)M(R7H#r;5uHW=8NIX2(zU9D+_+4^K< zGns4hPY;(JipJ*U=Oef3*W2=|8lt0lK{UKwIPQr=n%%pX3npb$YhvPH!%$R5K*4gG zWEzPHk7VM5Ai$HOeWwPIHrYbEN=O4`q3s7R42#9-!d`DxNTyxen=0?pCCL) zq0~C+C%d)1KrD?D1kh7<2lKQY*5}Etlg-ar7v#R>cYfIbI%j{FqOo!!efFW3SH;C& zexcZPOkcc|U0z-u>Zh%#rS%LGPza8Lq8<6d9rKrj48OKjhoJ+9!{|Z;Q!}$%-53d; zD}a5<51shR6fbZWqR;;rqb1U@g06uM>|FmKL;W>y|25eBPbkU3cLgZT#%?q-dl)$4 O0lL=>p+%bZ0sjT86MF6d diff --git a/docs/developer-guide/img/generated/components-toggle-buttons-android.png b/docs/developer-guide/img/generated/components-toggle-buttons-android.png index a38b5a53c0f151f4dacd2a4713bbfca449800be1..58d5856a9cbed73cbbe8affeec364bdb6c1c5fdb 100644 GIT binary patch literal 21007 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 z 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�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

w)P!N($ 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 literal 20977 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 diff --git a/docs/developer-guide/img/generated/components-toggle-buttons-ios.png b/docs/developer-guide/img/generated/components-toggle-buttons-ios.png index 1e70d1357dae1724f0466a0c8f6c4a7a0008febf..f04985ea013d320ed691a33cd57548eec7cd5f28 100644 GIT binary patch literal 15587 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 JA!`!!{{Zhi$wL4D literal 15577 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 Wr4h&ggxcFzmKC0Zp=^9%A diff --git a/docs/developer-guide/img/generated/csv-parsing.png b/docs/developer-guide/img/generated/csv-parsing.png index 302e4c5504992d9981e221bc3b753a8dd7407f82..39de56ea30d6bf21538e1b4af08e51d777c2d9c1 100644 GIT binary patch literal 7431 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 LAYiHTn-Bj1gq~on literal 5122 zcmcIocT`i|mPh16I{G0fT|`3ff=G+fktUE3lo}F1K&sN4N>MrzTBr)rr8h%IY6#MM zRZ8d}frJ{E_};wvYu0)*Yt8&~?>%STd-mSHve!8`;;FtSJq;TT85tS9ww9U^8QB#i z=^08zNxD)n%`uRXF`>299)o-=cQUCHnY)_14dc$rG~+nWyopB4dcPG znon~np9R8A$s;JQhCJ%Onhj+qry$q8TZOiv_)CLc=g!LxK-HeYmCci+qB`ti;MoEy zFr77gPhrj5uHgba?&*)6n6v=TTl^eh&7ZNdJfHs$ z2W58%yK@B%UcTzh`Y75!`5aCH;nCyqYA`PeOQ)U&48aZuW-kL zWpX^e^l5b3RQwECM&fllE1MP0lt_z7tZ1YaI9rBS~wg?OWif!WB#tOx2}v0OO&(l?wHI^6G24rADer#Z|YM0 z+RBZq+3)e(lYJp|PeSL`dB;Yy)z)c)aFF#8j}k@r@iMqrp~JxLnAWZ$c=8GawunXo0!DQjb#AODgsuqq)o-%PJoSPwe_L z2$#wS;CE%m_Mg_J}q+3%;IrOn;bUjVLd|57wxO?}`U9N@iT{@3S#%Da5ElFE}cVM2yq6Hkea4*FSoP7g|~UI(hCKmYi> zYmAqf3oOXlD4#w1=HcDZEL)uxw~-&a!Qt^4DhQspkL^SCH;PW_EhIa-Wzr9aSf^?|>-GJc zXBn{+7jll#CDFGE7_v=(qJ|nN4s*YsK{zs%ZPq*ExaBq?XFF}AR4LE9(J&Tv>mbS~ zcHM?Aqfr)B<4|2nP~f5a+R@`ywy(>#P1OALHUeqfnccA*I-i7~ZApCnfb67p0TwJlcGi zh$VZ*J};2aXy0SW&j~Ti7d6ESW3+7~k@ndx*lkSzUchm?rao$s-q(QCAI{`!&fI@> z*wX^NH!Jig^WP@DmMD+256)Sp&kA_nBY}*Az5AusPmBC4|FxmfZ8K+p{RjL}`mLFw zRh?Fllhovq-ijlS+H$*98P0P5R4ikep6M665uCAH9N5VJ6nN?!H0D zhA*4(wKinH*#zfU!bvs?7ZUbL*%N2e+xO+tq2Gs}la>+wQ2QRD{pnO)%q)1X{#1V7 zM07^ZosJ*cqM0T{_kE@Q{r8uM_IKpd40K?giLJBPMg1N(t2G93hl=$p4#T>X8n)%3 z3c*W2zbQIN5wr$d8Kt{zNDU>P9hLl|WBW!fI$rG&iQqQYrj5fTN!B;io?mwzkE`u7 z8tCMGAqfvLHHe z+&Y~O*Xu#J&W%kxPX=g8vySm$#!87_VwH#>SaY-EvwY*8RA9h*ALCV-Y_o1EwBR2O zUt{w-66^{4Z+t_bt?a-056I^F1rLzazH?0xU~9S22d`Lf(L;BN$mUVAszKoysdOwV)>{2yaVU24>8U9CM~VQLP0WRpRO+&%r;o+{FkI{I zXLNjsFDdt*bH_4VnCa^$s-@Sy!#Au#S5tUXY{N4~v8{8D9c5VnblK$Fe6MV3Tj2bBwA zMpt?wmCnLP)Kcl9yT&SiBh<^zNdnON(~VN$nguJ~2g~KB`SP6XfZF|3RyyCeTHdR< zqcXNwqVwar+t?diCFXiP6~SNEzwh}(>)m@5ua<_0&=~CoPTIQRp}UJ$_8C&N^||Ep zE|i^OiwRRq4Rp~W6AzK5x|B@k`3(Iq^nb;BC5=_cWC37oIZC?vf2T-Z`AQKYh>SH{ zFe85n!}$?dxr{?@mkIT&5!!-Uy;h^tngFoy9yji&Ook3ge3zq?X;^q(r}a3lysE2W zWFWC)Q~V3xceungY&{*vs|O$c0Q;x6Tkj5B`?kd`+#%5(t=TiCU$)liR-G*f6VE03 zj;`T5WGc74x_~A{iwu4cMrNMyye3Pg6GDgteZF*Tn2%n*9iDqv{IOHP^CVsQ}e)*6W_|BLb9{!x`R7nSf#eC)4kHA^(v8P=2z52d;eNp)?RnAa}&r;e$w zWZv0@Kj2KfMVMA2XC)CTeH~hza{!` z0ufh6M+y|eX|~fP+t+Udzs3Rj;IZ2Z#o3nt;8h7o*nhegYVEL}7%_SXre?YNla8b0 ziv&+>`c>PYtKrcV=d4FQKeKMUo>;#vd1yQ6>mwPkex|=Bw>|%>>>Kxf8eQ8Gx$g1u zM>z=<#UfT(O1DMo&5nvsXi^IyD{K3$b-Vw-nt}3&0h*<)%m6S1TxAIIHpTCp0B3Y7 z3>2}~AX!)k%2cKV&l?HGFQh`v^HO=_(nmE1>NQi4Ck zJ_DLXP0J3qR9OlGs8aFVyH9%Kx{6B3|Hps>fg;Q}QIqyvZ6c->ZL{#}cSy08_=?dh zGRy)`9|2a=rdT3#1cHa*=>gvS`>9FW2gpyE&>>viy9wr+rqWNIe~D%< zb}g$KqH@3K0hE+1l0?l+=3kHM6`P|x95=^`q@oJWTed&2-bD+uXqedzW|bx+B#f2T zFBB&r5aTnoPPQzAIB1P6wjWt+(-payZ02H^Bn&apNf!C|EC92{ALbqq1JKVXbZOex zK+9u%k9I#v;el!3;J!N$(BbxAyt zIphLjh<2pXz#*^08DXc`r1be_-K>jot<$85g4ed2&2Y!LXo zOa?IzCZRz3gc&Ik!jQHSiOOSsRM#4sx<0Q;ZdwX8HK;JZ)so z-?`s(?RMu-#csd8%ew%q&FWrmbV|M)F1G^C^Vl5UO@`9`BeSn{bX2H zaGRJJ85td(e;>}(1UotwXQjvEgtM(~PVCn*J1Ixz*ch7wu0m1v8zXu6ghAXYro>@1 z|6wJGw+(7jk;@-wim!_4hkaW~UZ|OOv3l5#G`XUM)h~u~HU|{;Krw7GM$eu-lZtXZ zIsYONTV85P*r22U}(v_KCBoLC19rD}}@mlDN}rWzTDi{Vs_| z<7fmw-aye$DLJ*2M>V{#%%ZUmE{ZZhWeRi|mG|@3JCh8d?>zU-FjG13d0s(5$-BR3 z7-}uB)NbKkdsco8c^?&oqsU64>P2KFzcSx5^%z9ITZzcy8HY5VuywuV4l} z@-SP{Pfoht34HYv6f)tPgS)hx*m-V_2@(~8mMXU^JEO%c8oop_3+I!Z$fx?;BimzE zVCHOLzZ>(O%TLSV)ejkYQDI>naFLOE>%#4Fvsh5MC{okKpSt{vlv+da)6ee^SV$Qh zo#5CJPJeoY-_qLpxB%O3}O1A7a52ZK?Je)l(XX(f6Q3yCCb;lliJ zPWO?-KB7O-#npRjLQgO4K3Y3l(YH#!`rtPD6wbcmQ*+5~Mj%A9N*~hhx+TS4I%R0} z22?fO7;)B3vros>-v?$Ris^>$o($aI}!8bBov|EhXNh5|oHI+fV4{oxLF#JHReJS2enCqS<75 zTh)ABBKo(>O>^R-;|Nk!f%M$U=9BNC=-v6ok}%p^c2Ssff^1NIoH_!amtk6BQabj{ zeYxh@08+ZgHW~M=n|GSU%b{CdO4 zb9e4xpwXMxU8xPFA=RNiNxBgiKK~~B-7(Od} z$}?G!VnwH-`8Iag0EgkPkMTHd@s{3?8{p~fZ0)4l%kP=KR|b$UxT|pUCv!*qExP4! zc9$U_uf;05?x*YfhqSsw%hED0h8~rg)el50ZxhE9liwz|GrnTqwh{{X-519kua From c54d4f85497d81b0fce33a4b034b445392adc552 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 05:19:45 +0300 Subject: [PATCH 04/29] Absent from the CSS is not the same as unstyled The review is right about RightSideCommand, and the reason it is right invalidates a fifth of this change. UIManager.resetThemeProps() seeds defaults for a long list of UIIDs, each behind a guard that skips the seeding when the installed theme already defines that name: if (installedTheme == null || !installedTheme.containsKey("RightSideCommand.derive")) { themeProps.put("RightSideCommand.derive", "SideCommand"); themeProps.put("RightSideCommand.align", rightAlign); } So defining RightSideCommand in CSS did not fill a hole, it suppressed the framework's own setup -- and with it the right alignment a permanent or on-top right-side menu depends on. Deriving from Command, which defines neither the alignment nor SideCommand's geometry, left those entries with the generic command appearance. That guard exists for 21 of the 58 UIIDs this change was adding, so the enumeration behind it measured the wrong thing: absent from both theme files, rather than absent from the theme files AND from resetThemeProps. All 21 are removed. The four kept names that derived from one of them are re-pointed at Label, and the directional popup panes are given the background directly instead of deriving a rule that is going away. Three overrides are kept on purpose and named in COVERAGE.md: TableCell and TableHeader, where the seed sets transparency and no padding, which is why every table in the guide rendered with its cells nearly touching their borders; and ErrorLabel, where the seeded red is generic and the platforms disagree about which red. FloatingHint turns out to be the sharper find of the two passes -- the framework never defines it, yet seeds ErrorLabel, InputComponentAction and DescriptionLabel to derive from it, so three UIIDs were inheriting from nothing. Verified the rework changes no rendering: all 48 figures are identical before and after removing the 21, and against the pre-change set the only differences remain the four table figures and the two new toggle figures. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 251207 -> 219101 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 274568 -> 243415 bytes Themes/AndroidMaterialTheme.res | Bin 251207 -> 219101 bytes Themes/iOSModernTheme.res | Bin 274568 -> 243415 bytes native-themes/COVERAGE.md | 72 +++++++++++------- native-themes/android-material/theme.css | 47 ++---------- native-themes/ios-modern/theme.css | 47 ++---------- 7 files changed, 62 insertions(+), 104 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index beb6448b256544deaf33b61f96dd385f708d39b5..b0614d2bcffd7058236e92fd4292ab05e608eb30 100644 GIT binary patch delta 1120 zcmY+DZERCz6vsX1cJ1xkdb_P#S)r?eIK-@ohB3&P5i*8EV0_Sou4V+6QqZVLR}0dSfdp|O5fF_8BPO!=+0cIL}F)v>8E3;X3qJ9~G=PJhX0RYTK%NGyKIM}<{rqT>xHvsk{A1&R(fanY)_ zT^h15`IL~bFq-T@Q!L}4Kv-GNRJ!=vD#P`{A)HVPN1sZ(-` z!V1cFLkqpJAM9ld<^?x|U+C@%c8TFHMTEdJdmu|~8&Ls2Yw`uCWiLEPg9qV}dBn^? zXfWtZeQ;f;qkDbuo6bWp02NHBkqsn&zhKdjXk$P8u3;#&c>uO+2rl9Sa7`aY$KHlU zes>Vs>gZMwETU;71(g&{!Bez+x!B^wI8?EbgiO~{@Dm;Q2o-*H94dgO8ik~IEvLjJ zn8}}p&BnmnX;{DlqcVM%hTHmNSVALd@Um)GDSa^s?GzY6UAdeo1qZcegtE3c31uy1 z;?JLg%xbz(iw^FWF<;B)>TykkZcLz?PQ}nhZyv`rbb1th!*OwJTMV1-N1tUxTRes{ z0JY?fV>KzGXyrdA@Nv+pYWThr*bMYUTB!XnhE|ftaP|F=4~?M;^!2!SE~r>SlS$Ej zG>M*ndh}%CB${~1NelutC(%7Tj%I3437DSG1={~o+@8WTP{#x=qHpE|T-^kg8Ew>> zMjIbW<0^o~6v(2N3K?S~2OZW39?ha` z;4OYQhaqt);bXI}HN2~Pmu}+4dHhm04ZoYmm0-AIZ2^0vMZ$NJ1w5^t!%gp>#rApg z&7H-^4D+o!hZhXJ(ulX@}vj?}X0Z>XZ8tpET3 delta 18011 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 W_B#1hULY7VH+I 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 OYU*&oAP=;ET=M@$a~_xg diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index beb6448b256544deaf33b61f96dd385f708d39b5..b0614d2bcffd7058236e92fd4292ab05e608eb30 100644 GIT binary patch delta 1120 zcmY+DZERCz6vsX1cJ1xkdb_P#S)r?eIK-@ohB3&P5i*8EV0_Sou4V+6QqZVLR}0dSfdp|O5fF_8BPO!=+0cIL}F)v>8E3;X3qJ9~G=PJhX0RYTK%NGyKIM}<{rqT>xHvsk{A1&R(fanY)_ zT^h15`IL~bFq-T@Q!L}4Kv-GNRJ!=vD#P`{A)HVPN1sZ(-` z!V1cFLkqpJAM9ld<^?x|U+C@%c8TFHMTEdJdmu|~8&Ls2Yw`uCWiLEPg9qV}dBn^? zXfWtZeQ;f;qkDbuo6bWp02NHBkqsn&zhKdjXk$P8u3;#&c>uO+2rl9Sa7`aY$KHlU zes>Vs>gZMwETU;71(g&{!Bez+x!B^wI8?EbgiO~{@Dm;Q2o-*H94dgO8ik~IEvLjJ zn8}}p&BnmnX;{DlqcVM%hTHmNSVALd@Um)GDSa^s?GzY6UAdeo1qZcegtE3c31uy1 z;?JLg%xbz(iw^FWF<;B)>TykkZcLz?PQ}nhZyv`rbb1th!*OwJTMV1-N1tUxTRes{ z0JY?fV>KzGXyrdA@Nv+pYWThr*bMYUTB!XnhE|ftaP|F=4~?M;^!2!SE~r>SlS$Ej zG>M*ndh}%CB${~1NelutC(%7Tj%I3437DSG1={~o+@8WTP{#x=qHpE|T-^kg8Ew>> zMjIbW<0^o~6v(2N3K?S~2OZW39?ha` z;4OYQhaqt);bXI}HN2~Pmu}+4dHhm04ZoYmm0-AIZ2^0vMZ$NJ1w5^t!%gp>#rApg z&7H-^4D+o!hZhXJ(ulX@}vj?}X0Z>XZ8tpET3 delta 18011 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 W_B#1hULY7VH+I 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 OYU*&oAP=;ET=M@$a~_xg diff --git a/native-themes/COVERAGE.md b/native-themes/COVERAGE.md index e627b736967..79ba90ed44b 100644 --- a/native-themes/COVERAGE.md +++ b/native-themes/COVERAGE.md @@ -152,41 +152,61 @@ SwitchMorph (droplet stretch/squash). ## UIIDs the framework assigns `ToggleButton` shipped unstyled for as long as both themes existed: the UIID is -written by framework code, no theme defined it, and the control fell through to -the `Component` default with no shape at all. That is a silent failure -- nothing -errors, the control simply looks wrong -- so the whole surface was enumerated -rather than sampled. Every `setUIID("...")` literal in `CodenameOne/src` was -checked against both themes: 128 names, of which 73 appeared in neither. +written by framework code, nothing defined it, and the control fell through with +no shape at all. Nothing errors in that situation -- the control simply looks +wrong -- so the whole surface was enumerated rather than sampled. + +Enumerating it takes two passes, and the second one matters. Every +`setUIID("...")` literal in `CodenameOne/src` gives 128 names, of which 73 are +absent from both theme files. But absent from the CSS is not the same as +unstyled: `UIManager.resetThemeProps()` seeds defaults for a long list of UIIDs, +each behind a guard of the form + +```java +if (installedTheme == null || !installedTheme.containsKey("RightSideCommand.derive")) { + themeProps.put("RightSideCommand.derive", "SideCommand"); + themeProps.put("RightSideCommand.align", rightAlign); +} +``` + +so a theme that defines one of those names **suppresses** the framework's own +setup rather than filling a hole. Twenty-one of the 73 are seeded that way. The +real gap is the remainder: names in neither the CSS nor `resetThemeProps`. + +Both themes now define those, including `ToggleButton` and the `ToggleButton*` +edge names `ComponentGroup` renames its controls to, `FloatingHint`, `TreeNode`, +the `Calendar` grid, the media transport and the directional popup panes. + +### Three deliberate overrides + +| UIID | What the framework seeds | Why the theme overrides it | +|---|---|---| +| `TableCell` | `transparency` only, no padding | every table rendered with cells nearly touching their borders | +| `TableHeader` | `transparency` only | the header was no heavier than a row | +| `ErrorLabel` | `derive: FloatingHint` plus a generic red | the platform error colours differ: `#b3261e` on Material, `#ff3b30` on iOS | -Both themes now define the live ones, including the `TextComponent` / -`FloatingHint` / `ErrorLabel` trio behind the modern form API, the `ComboBox` -and popup families, the `Calendar` grid, `TreeNode`, and the `ToggleButton*` -edge names `ComponentGroup` renames its controls to. +`FloatingHint` is worth its own note: the framework never defines it, and yet +`ErrorLabel`, `InputComponentAction` and `DescriptionLabel` are all seeded to +derive **from** it. Three UIIDs inheriting from one nothing defined. ### Deliberately still undefined -Nineteen names are left alone, in two groups. - -**Retired components.** `RSSReader`, `HTMLComponent` and `HTMLTable`, the -feature-phone soft keys (`SoftButton`, `SoftButtonLeft`, `SoftButtonRight`) and -`VKBButton`. Nothing a current application builds reaches them. +**Retired components.** `RSSReader`, `HTMLComponent`, `HTMLTable`, the +feature-phone soft keys and `VKBButton`. -**Names where the unstyled default is the better answer**, measured rather than -assumed. Defining a UIID is a visual change, and for these it was a change for -the worse: +**Names where the unstyled default is the better answer**, measured by rendering +the guide's figure set before and after rather than assumed: | UIID | What defining it did | |---|---| -| `icon` | `SpanLabel` and `SpanButton` lost the icon spacing the default gives them; the text crowded the glyph | +| `icon` | `SpanLabel` and `SpanButton` lost the icon spacing the default gives them | | `Emblem` | same, for `MultiButton`'s trailing badge | -| `StatusBar` | collapsed the strip a `Form` reserves at the top, so iOS content ran into the status bar | -| `TouchCommand` | deriving it from `Button` gave title-bar commands a filled pill | -| `Scroll`, `ScrollThumb`, `HorizontalScroll`, `HorizontalScrollThumb` | sizing the scrollbar changes the content width of every scrollable form, which re-wrapped text in unrelated figures | - -Each was caught by rendering the guide's figure set before and after and -comparing: the scrollbar rules alone moved a `SpanLabel` figure by 21 pixels. -Sizing a scrollbar or a status bar is a layout decision that deserves its own -change with its own before-and-after, not a line in a gap-filling sweep. +| `StatusBar` | collapsed the strip a `Form` reserves, so iOS content ran into the system bar | +| `Scroll`, `ScrollThumb`, `HorizontalScroll`, `HorizontalScrollThumb` | the framework seeds these with a measured padding; overriding it changes the content width of every scrollable form, which re-wrapped text in unrelated figures | + +The scrollbar rules alone moved a `SpanLabel` figure by 21 pixels. Sizing a +scrollbar or a status bar is a layout decision that deserves its own change with +its own before-and-after, not a line in a gap-filling sweep. ## How to add a component diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 66d91cdb93f..77df34d90df 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -863,7 +863,6 @@ PhoneVerificationLink { above the field once it has content, and an error line beneath it. All three were undefined, so the control the guide recommends over a raw TextField rendered with default styling. */ -TextComponent { background-color: transparent; padding: 0.5mm 0 1mm 0; margin: 0; } FloatingHint { cn1-derive: SecondaryLabel; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.disabled { color: #a9a8aa; background-color: transparent; } /* M3 error role; the line sits under the field and carries the message. */ @@ -871,8 +870,6 @@ ErrorLabel { cn1-derive: SecondaryLabel; color: #b3261e; font-size: 1.9mm; paddi ErrorLabel.disabled { color: #a9a8aa; background-color: transparent; } /* Toolbar search mode swaps the title for a field with its own two UIIDs. */ -TextFieldSearch { cn1-derive: TextField; margin: 0.5mm 1mm 0.5mm 1mm; } -TextHintSearch { cn1-derive: TextHint; } /* Tree rows. */ TreeNode { cn1-derive: Label; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } @@ -887,35 +884,23 @@ TableCell { cn1-derive: Label; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; bac TableHeader { cn1-derive: Label; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } /* Signature capture opens through this button. */ -SignatureButton { cn1-derive: FlatButton; } /* Pull to refresh: the pulled-down area and its label. */ -PullToRefresh { background-color: transparent; padding: 1.5mm; margin: 0; } -RefreshLabel { cn1-derive: SecondaryLabel; color: #49454f; background-color: transparent; } /* Autocomplete drops its suggestions into a popup list. */ -AutoCompletePopup { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -AutoCompleteList { background-color: #f3edf7; padding: 0; margin: 0; } /* ComboBox and the popup it opens. */ -ComboBox { cn1-derive: TextField; } -ComboBoxItem { cn1-derive: Label; color: #1d1b20; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } -ComboBoxItem.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); } -ComboBoxFocus { cn1-derive: ComboBoxItem; background-color: var(--accent-container-color, #eaddff); } -ComboBoxList { background-color: transparent; padding: 0; margin: 0; } -PopupItem { cn1-derive: ComboBoxItem; } +ComboBoxFocus { cn1-derive: Label; background-color: var(--accent-container-color, #eaddff); } +PopupItem { cn1-derive: Label; } PopupFocus { cn1-derive: ComboBoxFocus; } -PopupContentPane { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } /* InteractionDialog and the popup dialog family. The four directional content panes are separate UIIDs because a popup can open in any direction. */ -PopupDialog { background-color: #f3edf7; padding: 0; margin: 0; } -PopupDialogTitle { cn1-derive: DialogTitle; } PopupBody { background-color: #f3edf7; padding: 1mm; margin: 0; } -PopupContentPaneUpwards { cn1-derive: PopupContentPane; } -PopupContentPaneDownwards { cn1-derive: PopupContentPane; } -PopupContentPaneLeft { cn1-derive: PopupContentPane; } -PopupContentPaneRight { cn1-derive: PopupContentPane; } +PopupContentPaneUpwards { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneDownwards { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneLeft { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneRight { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } /* Calendar grid. */ @@ -937,17 +922,12 @@ ListRendererFocus { background-color: var(--accent-container-color, #eaddff); pa /* The strip a Form reserves for the platform status bar. */ /* Side menu chrome. */ -MenuButton { cn1-derive: FlatButton; } MenuButtonRight { cn1-derive: FlatButton; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } -RightSideNavigationPanel { background-color: #f3edf7; padding: 0; margin: 0; } -RightSideCommand { cn1-derive: Command; } /* Commands, as drawn by the menu rather than the Toolbar. */ -Command { cn1-derive: Label; color: #1d1b20; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } -CommandList { background-color: transparent; padding: 0; margin: 0; } -CommandFocus { cn1-derive: Command; background-color: var(--accent-container-color, #eaddff); } -DialogCommandText { cn1-derive: Command; color: var(--accent-color, #6750a4); text-align: center; } +CommandFocus { cn1-derive: Label; background-color: var(--accent-container-color, #eaddff); } +DialogCommandText { cn1-derive: Label; color: var(--accent-color, #6750a4); text-align: center; } /* Media transport controls. */ MediaPlayerPlay { cn1-derive: FlatButton; } @@ -957,8 +937,6 @@ MediaPlayerBack { cn1-derive: FlatButton; } MediaPlayerMax { cn1-derive: FlatButton; } /* Map zoom controls and the rich text editor surface. */ -MapZoomIn { cn1-derive: FlatButton; } -MapZoomOut { cn1-derive: FlatButton; } RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } /* The tutorial overlay drawn over a form. */ @@ -1027,14 +1005,7 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm TreeNode.disabled { color: #5c5967; background-color: transparent; } TableCell { color: #e6e0e9; background-color: transparent; } TableHeader { color: #cac4d0; background-color: transparent; } - RefreshLabel { color: #cac4d0; background-color: transparent; } - AutoCompletePopup { background-color: #211f26; border: 0.2mm solid #49454f; } - AutoCompleteList { background-color: #211f26; } - ComboBoxItem { color: #e6e0e9; background-color: transparent; } - ComboBoxItem.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); } ComboBoxFocus { background-color: var(--accent-container-color-dark, #4f378b); } - PopupContentPane { background-color: #211f26; border: 0.2mm solid #49454f; } - PopupDialog { background-color: #211f26; } PopupBody { background-color: #211f26; } CalendarDate { color: #e6e0e9; background-color: transparent; } CalendarDate.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); } @@ -1042,8 +1013,6 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm TODAY { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } SpinnerSeparator { background-color: #49454f; } ListRendererFocus { background-color: var(--accent-container-color-dark, #4f378b); } - RightSideNavigationPanel { background-color: #211f26; } - Command { color: #e6e0e9; background-color: transparent; } CommandFocus { background-color: var(--accent-container-color-dark, #4f378b); } DialogCommandText { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } FlatButton.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index cb18589e674..153f6a6ef7f 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1170,15 +1170,12 @@ PhoneVerificationLink { * ------------------------------------------------------------------------- */ /* TextComponent: wrapper, floating hint, error line. */ -TextComponent { background-color: transparent; padding: 0.5mm 0 1mm 0; margin: 0; } FloatingHint { cn1-derive: SecondaryLabel; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.disabled { color: #c6c6c8; background-color: transparent; } /* systemRed, the colour iOS uses for validation failures. */ ErrorLabel { cn1-derive: SecondaryLabel; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.disabled { color: #c6c6c8; background-color: transparent; } -TextFieldSearch { cn1-derive: TextField; margin: 0.5mm 1mm 0.5mm 1mm; } -TextHintSearch { cn1-derive: TextHint; } TreeNode { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } TreeNode.selected { color: var(--accent-color, #007aff); background-color: transparent; } @@ -1188,30 +1185,18 @@ TreeNode.disabled { color: #c6c6c8; background-color: transparent; } TableCell { cn1-derive: Label; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader { cn1-derive: Label; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -SignatureButton { cn1-derive: FlatButton; } -PullToRefresh { background-color: transparent; padding: 1.5mm; margin: 0; } -RefreshLabel { cn1-derive: SecondaryLabel; color: #6c6c70; background-color: transparent; } -AutoCompletePopup { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -AutoCompleteList { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; } -ComboBox { cn1-derive: TextField; } -ComboBoxItem { cn1-derive: Label; color: #1c1c1e; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } -ComboBoxItem.selected { color: #ffffff; background-color: var(--accent-color, #007aff); } -ComboBoxFocus { cn1-derive: ComboBoxItem; background-color: rgba(0,122,255,0.14); } -ComboBoxList { background-color: transparent; padding: 0; margin: 0; } -PopupItem { cn1-derive: ComboBoxItem; } +ComboBoxFocus { cn1-derive: Label; background-color: rgba(0,122,255,0.14); } +PopupItem { cn1-derive: Label; } PopupFocus { cn1-derive: ComboBoxFocus; } -PopupContentPane { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupDialog { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; } -PopupDialogTitle { cn1-derive: DialogTitle; } PopupBody { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } -PopupContentPaneUpwards { cn1-derive: PopupContentPane; } -PopupContentPaneDownwards { cn1-derive: PopupContentPane; } -PopupContentPaneLeft { cn1-derive: PopupContentPane; } -PopupContentPaneRight { cn1-derive: PopupContentPane; } +PopupContentPaneUpwards { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneDownwards { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneLeft { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneRight { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } @@ -1228,16 +1213,11 @@ TimeSpinnerMinutesLabel { cn1-derive: SecondaryLabel; background-color: transpar ListRendererFocus { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -MenuButton { cn1-derive: FlatButton; } MenuButtonRight { cn1-derive: FlatButton; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } -RightSideNavigationPanel { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; } -RightSideCommand { cn1-derive: Command; } -Command { cn1-derive: Label; color: #1c1c1e; padding: 1.8mm 2mm 1.8mm 2mm; background-color: transparent; } -CommandList { background-color: transparent; padding: 0; margin: 0; } -CommandFocus { cn1-derive: Command; background-color: rgba(0,122,255,0.14); } -DialogCommandText { cn1-derive: Command; color: var(--accent-color, #007aff); text-align: center; } +CommandFocus { cn1-derive: Label; background-color: rgba(0,122,255,0.14); } +DialogCommandText { cn1-derive: Label; color: var(--accent-color, #007aff); text-align: center; } MediaPlayerPlay { cn1-derive: FlatButton; } MediaPlayerPause { cn1-derive: FlatButton; } @@ -1245,8 +1225,6 @@ MediaPlayerFwd { cn1-derive: FlatButton; } MediaPlayerBack { cn1-derive: FlatButton; } MediaPlayerMax { cn1-derive: FlatButton; } -MapZoomIn { cn1-derive: FlatButton; } -MapZoomOut { cn1-derive: FlatButton; } RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } @@ -1303,14 +1281,7 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm TreeNode.disabled { color: #48484a; background-color: transparent; } TableCell { color: #ffffff; background-color: transparent; } TableHeader { color: #8e8e93; background-color: transparent; } - RefreshLabel { color: #8e8e93; background-color: transparent; } - AutoCompletePopup { background-color: rgba(28,28,30,0.94); border: 0.1mm solid #38383a; } - AutoCompleteList { background-color: rgba(28,28,30,0.94); } - ComboBoxItem { color: #ffffff; background-color: transparent; } - ComboBoxItem.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } ComboBoxFocus { background-color: rgba(10,132,255,0.22); } - PopupContentPane { background-color: rgba(28,28,30,0.94); border: 0.1mm solid #38383a; } - PopupDialog { background-color: rgba(28,28,30,0.94); } PopupBody { background-color: rgba(28,28,30,0.94); } CalendarDate { color: #ffffff; background-color: transparent; } CalendarDate.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } @@ -1318,8 +1289,6 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm TODAY { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } SpinnerSeparator { background-color: #38383a; } ListRendererFocus { background-color: rgba(10,132,255,0.22); } - RightSideNavigationPanel { background-color: rgba(28,28,30,0.94); } - Command { color: #ffffff; background-color: transparent; } CommandFocus { background-color: rgba(10,132,255,0.22); } DialogCommandText { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } FlatButton.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } From 0d5050a137b68bc35c092558c79be526f2118c19 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 05:33:14 +0300 Subject: [PATCH 05/29] Give the derived aliases their states, and the popup panes a dark fill Both findings are the trap this file's own header warns about: the compiler honours cn1-derive at base level only, so a rule of the form MediaPlayerPlay { cn1-derive: FlatButton; } configures the unselected state and nothing else. Pressing the control asks for MediaPlayerPlay.press#, which does not exist, and createStyle answers that with a copy of the default style rather than FlatButton's pressed entry -- so the button would drop its whole appearance for as long as a finger was on it. The five media transport aliases and MenuButtonRight now spell out pressed and disabled in both themes and both appearances. The four directional popup panes had the same shape of hole in dark mode. After the previous commit stopped them deriving PopupContentPane they carry their light fill directly, and dark resolution only uses a $Dark that exists, so a popup opened in dark mode would have kept a near-white pane under dark-mode text. Only PopupBody had a dark entry; all four have one now. Neither fix moves a pixel in the figure set -- nothing in it presses a media control or opens a directional popup -- which is the same reason RightSideCommand got through: these are states no figure exercises, so the CSS has to be read rather than rendered to check them. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 219101 -> 227591 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 243415 -> 251833 bytes Themes/AndroidMaterialTheme.res | Bin 219101 -> 227591 bytes Themes/iOSModernTheme.res | Bin 243415 -> 251833 bytes native-themes/android-material/theme.css | 32 ++++++++++++++++++ native-themes/ios-modern/theme.css | 32 ++++++++++++++++++ 6 files changed, 64 insertions(+) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index b0614d2bcffd7058236e92fd4292ab05e608eb30..654402a98d962d6b437f02c565175d0597f621d2 100644 GIT binary patch delta 3728 zcmZ`+c}$c?6yF(fSeIp87FcdUMMM$NHckAawN%?0TTRhulQv!$mK9+^7B8B3rGIEz ztJq0+X={y%t+CN4jZKzVO>6sy=&FeIzM$gK#QTg_rEg~E`@Y%5nh?MF&F{T=@Auvu zdvRCd>idaJsnoml=d{L&e3YHR=))wHU!9pGKN9`Z8W;F%w%q)8%Y)Sd8o-yWd7b5% z;}lP&e|%j{UC=h;6TfYUg~QP!#L3si+hKG&N#l*P&?9~r9tSFBJ1OR+>kHT*bL`#l z#L0$QL*5o}@!JUu?)*ivc;<2k^glte*nkM5=mg0TA@SKW*pSJ-imLLmn({_p@cktf zBP*&J2J6w~M@)8{B)N8*O+`?0hNQynQ^aW`B?0$oVvhnwp2j3f*N*@(%{RB%zb0|q zJ%vTaMu_{*s}TRj4e56R!x-ps%`u zLHGvA<~L_L;3j@B)nff_Mzt9K=1_Kq)md7BMVa}A;$+?w&w$(|UbuK08}7F+BctX! zSU^KgF`IiwN@aGMFwr_qdf0PUh1T)_OLk?Z2gHXdyb4iZko%B0^sOK*R)iyERog%k zw>^q%1Ktt#Lg(X1h+<&6jYKKu?boA%L~MYNFR~jXWA78<+OUc3Zl3tk!3rX>*3YAv zp1Eop4$LhuwxPgbzK`~IOnmPn+i;5vd6hH{Hu|XDA?U+mXAb<2O+38t(S9t3pT&B) z{Wa!FP#&CKTeVR1X;daoKTXq!S@5=>CPV?1f-%BeAP+YA zRfXykEHd^y}XdWh^WGJtq1ER{I^b&Z++`3?e zFW5tEwo;LwRv4Tf*xyXtvUx-I3s09=$_j_jRb`1PfwcJ;ij_$wlnOv?h5Gr_o1}G$ zItUQXmrbHN7ssivYd&?#{!pis0rrJ+=rNY=6{oFUI^C+Unr1QG_ljy74|A$f(HJz_ z$X2Yz>09X_mpxmJXdSO@%HiHg)Sc438kJJZf7A&t(&0uUB0dB2P z&7d<|XXDYUv;K|sH7bDd=q81YB;D+e03BxJwLd^Jb-|4jKR^q01(BBFd4+lchvHhy zMCl}fS+%&j4tSqp6R7qR4DL<0_LQjQxmxT2b;nL=K)HHqshw9&?GGO}(4<#&rAl9t zC)KG=P-{xCp^hfY6f|b9CeRJq>aYnkGCZrJ?kHgVUc3lY>&i8Lctku=VJ};NnX4*G z#^wd6jh@(1!O(%Jqfr}m0ZEg*dhA|t?y342U_6wG8L=f}=nPiWTlF^hjJNfq#d>CN zK~Q@+`05FXhmuB;#EK)whUo?HNO#(MY?d;wJj{`w310+Nw`yc)4dQ~9(3#K~L`^h? zXF+*|d9Y|WjA=k=EWHbvu1He@b@5Ri26vGab)KmkUf^({K}Do8MlfF&7sol!=8M)9 z!EAWyvm}+kx`i0F+_Z{w1mlQ7~X+T-LAtV z4hj#Gq4>5-gwA*R6u|c#BuU~SI7~bQemzFqu;V^)Lf3K9H)0`v>kwP${1H;Z;A|HX zGEd-h*z_^^0&#{`pCBp9{Iknw9y*Ed$kxlm6*_y8^pSQcaQ8eJZrX*=F3&P?!?E-D zs{?;1z#eoE+I|s_6KK1H%e}lp9B`_e6dJZeVQeQ!ka%dq6_QTiyE7yk)^;OLyyv0) z42Dp9jj+&~E;+~4% rEDumV`cRWEGy_Mz$QvuO5}V@Y@ z6BitGaxkXD4MLzBi8ZNi6p$Zv;kZMiDGTA?+q)9$_`dJ+d7k%u=lJdxdvvkO&2N_f4ZI_*x*Tzg3I!u0?@6OHZ~U-_4jCscY&VsM%taM@n-U+Wc&D-HcY!JX zprIk5WevwPMPAEybxiYZ9h=syAKK{v?g!*e1|dW49?z#7#dl&e1&vTx0&ig#) zec!Wu`Ag>Lho1LxAf}fvHS)w*Zv@P&g52U;H?rn7})YgBS1;vg1j#56_+!AeT-rC;W z)6(@=^WOc{on0;6-DUcz2il^JlG%7_O*j{~d!aamD0rjVS*!kcQ^Bvi5K@1;;KF;^ zP?|oYN9XcGfr}{!X%SS?I7j=I&VS-?R4v(-%cEbRX|>K)N87r~T7@A@P}m+C-{OmG zMT;44-KJ}-j`AWoGk2eayZAzR8 zStb5VV@1eKFM>kjUaFFmZEk*b4rTaOF%+fuiz~oKOJ|qEaJw9a%_WD;sdt;)x*Rsf zosbSfkJ*`!kq~kE8_cB1d0qfD)VP&IkDM=2!Hl1f)Wb5Ompj81r)iM`&z~! zjq}vDuifk;fd5oLhLJ>ySkhYoeios6>9&GwfCE+F-aR8OP)ZAyy4*cIWz9mFoh6rz zjbUUTtDT5#GUXw2Juhvn)F~P!22CDVpOk^LkT?#85PP%)+%RlhU zQl4DG@!yw24o=k5uBJNV;B5jG(HA)ISG~OlFxV?sjR>66k2KIZM)XrFAdsc?8!3E3 zL+aYFg7o2cCszoIo~C>%i=KVpJFCF$oQb&(UCh>VY;XwjjZzE-LwYk}I93dT$JNlV z(ov~p34f1=30h{L2xTc{Q6@~zhXNg4TD3FVMl{Xjs39KhagiDQ|Nj6 zK-)nF`xAar&~*|aAO9VqAVfuQMd26(l*Q7<&%_{8y_BD-R7v2QG05d+$jn3xycX7v zF)B!zQ8-Kt8<3&yYRy&Zq|J{HLyj)?=m>;nGnnC6HEq2T4(^&ZZRNn)5ilGjpajRK zO*09o*L~#dnugn6puPpoQ6mu32_L!= zM7kg4qyk)%fOMWHBAsYu0k$NBDdpM)6BttO?aa_~j>Zq0Tij1j7$&no-O*|!Bj0Y* zC|!oEuVWP4E_M^LK?Kgj0iyC0mFT|imiDr_Y`r^5uc1W7#xY34;xS4V8yd8j`RNE` z&ok8J;+ZjuQMB5Z$Enjyj*&5aeI9&e92Vq>=NlZ3#$GB+)=`9EM9xRgICW5|_i)f? zA|^Arwux!fHeYpRoZK{5TjjrI@E9R~1d<6qxYJ^GLvy5v;d73P-MxpQqpMGC5 z*N34=kuBmv`Dq&_A)6!laweD8D}OT%L4o{2|>My@G~M))c9mewoH-p zB4_KaLcr4F#19OHxoV44t{*wls%zAdgrt(|kcZD+gZUO6;Ru!Oe^ zleA1PK)ztd`V_YXICq^ih{usLP7ad>Q)K{qr)_Q7^hcXC-xk}lG<=>tA2xnL((agG z?~rYADmJxS>=lRcM@Psb(*wBXBgi~Hd?G%4!r9k{8*}J++2VmJ{N#K}TKuR7dY#Vx zI4poN`gf)bvT&Ins`(_+?m!wb)~dhLpf|^w3CZqqrxJ}!tbh~)}S@u3y;9OcvB6mXS9J@s8sN? iRTTI)%OMr%H($gcYh(WZ|NnG(118&P#msEe zU-dERZtpi>3SneCv;B!7lQJ7CP@X|@^2BoC>GBp#YH(H4wOyHbCeJD7*xqBoWC2os z)RKt>ru=+`==3WtOk&f2+B5N?=n>fN<-lYEQs3^#Bm_|}J^4bF?DXC4ObQ643D!X4 zZ&z_`SMgwS11g_>(UVDddz~kf85`Ki_XB{YpY>-_M`!`Mn`io)04C1uHUUibAS-GD gnY19vFGc{B?+-^(zFjf`?9KMPNT%(1k<8w80D1Co&Hw-a diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index b0614d2bcffd7058236e92fd4292ab05e608eb30..654402a98d962d6b437f02c565175d0597f621d2 100644 GIT binary patch delta 3728 zcmZ`+c}$c?6yF(fSeIp87FcdUMMM$NHckAawN%?0TTRhulQv!$mK9+^7B8B3rGIEz ztJq0+X={y%t+CN4jZKzVO>6sy=&FeIzM$gK#QTg_rEg~E`@Y%5nh?MF&F{T=@Auvu zdvRCd>idaJsnoml=d{L&e3YHR=))wHU!9pGKN9`Z8W;F%w%q)8%Y)Sd8o-yWd7b5% z;}lP&e|%j{UC=h;6TfYUg~QP!#L3si+hKG&N#l*P&?9~r9tSFBJ1OR+>kHT*bL`#l z#L0$QL*5o}@!JUu?)*ivc;<2k^glte*nkM5=mg0TA@SKW*pSJ-imLLmn({_p@cktf zBP*&J2J6w~M@)8{B)N8*O+`?0hNQynQ^aW`B?0$oVvhnwp2j3f*N*@(%{RB%zb0|q zJ%vTaMu_{*s}TRj4e56R!x-ps%`u zLHGvA<~L_L;3j@B)nff_Mzt9K=1_Kq)md7BMVa}A;$+?w&w$(|UbuK08}7F+BctX! zSU^KgF`IiwN@aGMFwr_qdf0PUh1T)_OLk?Z2gHXdyb4iZko%B0^sOK*R)iyERog%k zw>^q%1Ktt#Lg(X1h+<&6jYKKu?boA%L~MYNFR~jXWA78<+OUc3Zl3tk!3rX>*3YAv zp1Eop4$LhuwxPgbzK`~IOnmPn+i;5vd6hH{Hu|XDA?U+mXAb<2O+38t(S9t3pT&B) z{Wa!FP#&CKTeVR1X;daoKTXq!S@5=>CPV?1f-%BeAP+YA zRfXykEHd^y}XdWh^WGJtq1ER{I^b&Z++`3?e zFW5tEwo;LwRv4Tf*xyXtvUx-I3s09=$_j_jRb`1PfwcJ;ij_$wlnOv?h5Gr_o1}G$ zItUQXmrbHN7ssivYd&?#{!pis0rrJ+=rNY=6{oFUI^C+Unr1QG_ljy74|A$f(HJz_ z$X2Yz>09X_mpxmJXdSO@%HiHg)Sc438kJJZf7A&t(&0uUB0dB2P z&7d<|XXDYUv;K|sH7bDd=q81YB;D+e03BxJwLd^Jb-|4jKR^q01(BBFd4+lchvHhy zMCl}fS+%&j4tSqp6R7qR4DL<0_LQjQxmxT2b;nL=K)HHqshw9&?GGO}(4<#&rAl9t zC)KG=P-{xCp^hfY6f|b9CeRJq>aYnkGCZrJ?kHgVUc3lY>&i8Lctku=VJ};NnX4*G z#^wd6jh@(1!O(%Jqfr}m0ZEg*dhA|t?y342U_6wG8L=f}=nPiWTlF^hjJNfq#d>CN zK~Q@+`05FXhmuB;#EK)whUo?HNO#(MY?d;wJj{`w310+Nw`yc)4dQ~9(3#K~L`^h? zXF+*|d9Y|WjA=k=EWHbvu1He@b@5Ri26vGab)KmkUf^({K}Do8MlfF&7sol!=8M)9 z!EAWyvm}+kx`i0F+_Z{w1mlQ7~X+T-LAtV z4hj#Gq4>5-gwA*R6u|c#BuU~SI7~bQemzFqu;V^)Lf3K9H)0`v>kwP${1H;Z;A|HX zGEd-h*z_^^0&#{`pCBp9{Iknw9y*Ed$kxlm6*_y8^pSQcaQ8eJZrX*=F3&P?!?E-D zs{?;1z#eoE+I|s_6KK1H%e}lp9B`_e6dJZeVQeQ!ka%dq6_QTiyE7yk)^;OLyyv0) z42Dp9jj+&~E;+~4% rEDumV`cRWEGy_Mz$QvuO5}V@Y@ z6BitGaxkXD4MLzBi8ZNi6p$Zv;kZMiDGTA?+q)9$_`dJ+d7k%u=lJdxdvvkO&2N_f4ZI_*x*Tzg3I!u0?@6OHZ~U-_4jCscY&VsM%taM@n-U+Wc&D-HcY!JX zprIk5WevwPMPAEybxiYZ9h=syAKK{v?g!*e1|dW49?z#7#dl&e1&vTx0&ig#) zec!Wu`Ag>Lho1LxAf}fvHS)w*Zv@P&g52U;H?rn7})YgBS1;vg1j#56_+!AeT-rC;W z)6(@=^WOc{on0;6-DUcz2il^JlG%7_O*j{~d!aamD0rjVS*!kcQ^Bvi5K@1;;KF;^ zP?|oYN9XcGfr}{!X%SS?I7j=I&VS-?R4v(-%cEbRX|>K)N87r~T7@A@P}m+C-{OmG zMT;44-KJ}-j`AWoGk2eayZAzR8 zStb5VV@1eKFM>kjUaFFmZEk*b4rTaOF%+fuiz~oKOJ|qEaJw9a%_WD;sdt;)x*Rsf zosbSfkJ*`!kq~kE8_cB1d0qfD)VP&IkDM=2!Hl1f)Wb5Ompj81r)iM`&z~! zjq}vDuifk;fd5oLhLJ>ySkhYoeios6>9&GwfCE+F-aR8OP)ZAyy4*cIWz9mFoh6rz zjbUUTtDT5#GUXw2Juhvn)F~P!22CDVpOk^LkT?#85PP%)+%RlhU zQl4DG@!yw24o=k5uBJNV;B5jG(HA)ISG~OlFxV?sjR>66k2KIZM)XrFAdsc?8!3E3 zL+aYFg7o2cCszoIo~C>%i=KVpJFCF$oQb&(UCh>VY;XwjjZzE-LwYk}I93dT$JNlV z(ov~p34f1=30h{L2xTc{Q6@~zhXNg4TD3FVMl{Xjs39KhagiDQ|Nj6 zK-)nF`xAar&~*|aAO9VqAVfuQMd26(l*Q7<&%_{8y_BD-R7v2QG05d+$jn3xycX7v zF)B!zQ8-Kt8<3&yYRy&Zq|J{HLyj)?=m>;nGnnC6HEq2T4(^&ZZRNn)5ilGjpajRK zO*09o*L~#dnugn6puPpoQ6mu32_L!= zM7kg4qyk)%fOMWHBAsYu0k$NBDdpM)6BttO?aa_~j>Zq0Tij1j7$&no-O*|!Bj0Y* zC|!oEuVWP4E_M^LK?Kgj0iyC0mFT|imiDr_Y`r^5uc1W7#xY34;xS4V8yd8j`RNE` z&ok8J;+ZjuQMB5Z$Enjyj*&5aeI9&e92Vq>=NlZ3#$GB+)=`9EM9xRgICW5|_i)f? zA|^Arwux!fHeYpRoZK{5TjjrI@E9R~1d<6qxYJ^GLvy5v;d73P-MxpQqpMGC5 z*N34=kuBmv`Dq&_A)6!laweD8D}OT%L4o{2|>My@G~M))c9mewoH-p zB4_KaLcr4F#19OHxoV44t{*wls%zAdgrt(|kcZD+gZUO6;Ru!Oe^ zleA1PK)ztd`V_YXICq^ih{usLP7ad>Q)K{qr)_Q7^hcXC-xk}lG<=>tA2xnL((agG z?~rYADmJxS>=lRcM@Psb(*wBXBgi~Hd?G%4!r9k{8*}J++2VmJ{N#K}TKuR7dY#Vx zI4poN`gf)bvT&Ins`(_+?m!wb)~dhLpf|^w3CZqqrxJ}!tbh~)}S@u3y;9OcvB6mXS9J@s8sN? iRTTI)%OMr%H($gcYh(WZ|NnG(118&P#msEe zU-dERZtpi>3SneCv;B!7lQJ7CP@X|@^2BoC>GBp#YH(H4wOyHbCeJD7*xqBoWC2os z)RKt>ru=+`==3WtOk&f2+B5N?=n>fN<-lYEQs3^#Bm_|}J^4bF?DXC4ObQ643D!X4 zZ&z_`SMgwS11g_>(UVDddz~kf85`Ki_XB{YpY>-_M`!`Mn`io)04C1uHUUibAS-GD gnY19vFGc{B?+-^(zFjf`?9KMPNT%(1k<8w80D1Co&Hw-a diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 77df34d90df..c72c301da03 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -923,6 +923,8 @@ ListRendererFocus { background-color: var(--accent-container-color, #eaddff); pa /* Side menu chrome. */ MenuButtonRight { cn1-derive: FlatButton; } +MenuButtonRight.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +MenuButtonRight.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } /* Commands, as drawn by the menu rather than the Toolbar. */ @@ -931,10 +933,20 @@ DialogCommandText { cn1-derive: Label; color: var(--accent-color, #6750a4); text /* Media transport controls. */ MediaPlayerPlay { cn1-derive: FlatButton; } +MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +MediaPlayerPlay.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } MediaPlayerPause { cn1-derive: FlatButton; } +MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +MediaPlayerPause.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } MediaPlayerFwd { cn1-derive: FlatButton; } +MediaPlayerFwd.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +MediaPlayerFwd.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } MediaPlayerBack { cn1-derive: FlatButton; } +MediaPlayerBack.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +MediaPlayerBack.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } MediaPlayerMax { cn1-derive: FlatButton; } +MediaPlayerMax.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } +MediaPlayerMax.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } /* Map zoom controls and the rich text editor surface. */ RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } @@ -993,6 +1005,26 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm ToggleButtonOnly.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } ToggleButtonOnly.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + /* The directional panes need their own dark entries: dark resolution + only uses a $Dark that exists, so without these they would keep + the light fill under dark-mode text. */ + PopupContentPaneUpwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneDownwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + MenuButtonRight.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MenuButtonRight.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerPlay.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerPause.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + MediaPlayerFwd.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerFwd.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + MediaPlayerBack.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerBack.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + MediaPlayerMax.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerMax.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } + /* Dark palette for the UIIDs filled in above. Only the colours change; geometry is inherited from the light rules, which the compiler does carry into $Dark for plain properties. */ diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 153f6a6ef7f..b6173f7cd5c 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1214,16 +1214,28 @@ ListRendererFocus { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1 MenuButtonRight { cn1-derive: FlatButton; } +MenuButtonRight.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +MenuButtonRight.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } CommandFocus { cn1-derive: Label; background-color: rgba(0,122,255,0.14); } DialogCommandText { cn1-derive: Label; color: var(--accent-color, #007aff); text-align: center; } MediaPlayerPlay { cn1-derive: FlatButton; } +MediaPlayerPlay.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerPlay.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerPause { cn1-derive: FlatButton; } +MediaPlayerPause.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerPause.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerFwd { cn1-derive: FlatButton; } +MediaPlayerFwd.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerFwd.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerBack { cn1-derive: FlatButton; } +MediaPlayerBack.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerBack.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerMax { cn1-derive: FlatButton; } +MediaPlayerMax.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerMax.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } @@ -1271,6 +1283,26 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } ToggleButtonOnly.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } + /* The directional panes need their own dark entries: dark resolution + only uses a $Dark that exists, so without these they would keep + the light fill under dark-mode text. */ + PopupContentPaneUpwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneDownwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + MenuButtonRight.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } + MenuButtonRight.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } + MediaPlayerPlay.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } + MediaPlayerPlay.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } + MediaPlayerPause.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } + MediaPlayerPause.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } + MediaPlayerFwd.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } + MediaPlayerFwd.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } + MediaPlayerBack.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } + MediaPlayerBack.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } + MediaPlayerMax.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } + MediaPlayerMax.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } + /* Dark palette for the UIIDs filled in above. */ FloatingHint { color: #8e8e93; background-color: transparent; } FloatingHint.disabled { color: #48484a; background-color: transparent; } From 7db8dce272a469e26addb32dec3e4020b2be83f5 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 05:51:48 +0300 Subject: [PATCH 06/29] Complete every state on every UIID this change adds Four more findings arrived, each naming a different UIID with the same defect: ComboBoxFocus and PopupFocus have no selected state, ListRendererFocus and CommandFocus likewise, TreeNode has no pressed state, DialogCommandText has no interaction states, FloatingHint loses its styling while its buttons are pressed. Fixing them one at a time was going to keep finding the next one, so this is done by enumeration instead: audit the state coverage of every UIID the change adds, then fill in what is missing. Only the ToggleButton family had all four states. Thirty-three other names had between one and three, which is why the same finding kept arriving under a different heading -- a lookup of .press# or .sel# that finds nothing does not fall back to the base UIID, it resolves against the global default style, so the control drops its whole appearance for as long as that state lasts. Each missing state is generated from the UIID's own base rule with one level of cn1-derive expanded, base declarations first and the UIID's overrides after, so a state entry says exactly what the base says. States that are meant to differ were already declared and are left untouched: the ToggleButton fills, TreeNode.selected, CalendarDate.selected, and the disabled colours on FloatingHint and ErrorLabel. That is 82 light rules and 49 dark ones per theme, and none of them moves a pixel in the figure set -- no figure presses a tree node or focuses a combo box popup. These are states the renders cannot reach, which is exactly why the audit had to be a read of the CSS against UIManager.createStyle rather than another round of screenshots. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 227591 -> 227908 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 251833 -> 251833 bytes Themes/AndroidMaterialTheme.res | Bin 227591 -> 227908 bytes Themes/iOSModernTheme.res | Bin 251833 -> 251833 bytes native-themes/android-material/theme.css | 175 +++++++++++++--- native-themes/ios-modern/theme.css | 190 ++++++++++++++---- 6 files changed, 293 insertions(+), 72 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 654402a98d962d6b437f02c565175d0597f621d2..0d43343be08cdfc5d7f6fd123e25257f9ab9d549 100644 GIT binary patch delta 162 zcmZqw#Czlm?*uW%x{czBucrHaV&s@S^8?>x{fFF>BVTb()_=8l^285flP|pEp1l9n zS|m32^wmsE0+apT@=gBmg?n=E>w2(c{vC)$rZ>yMe3(HC-YkRjf4>o!o*>1<((LxO n-R&*ocDJ`os=~|+3=C8Am@Syo1C~r($$W~DVS5Q9^W<^>hc-(v delta 171 zcmX@|g}40^?*uW93I+)km&Bs%>4nUU5|e!xg{Et`rWaZgTvoj3ghGZREm{!Q29`)}q>mlc5uOt{58+3KCZbUg{6z^k_@ z)8%ELGO@R~o0q(6U-FJ|`;vD|EW*s`0ZXQ@W@NVD`v3nw17C>0i(};U!n2IV(-oMQ OCoulszLAM}aybAUyhT0$ diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index 8f3c97017fb7ebe7760dc2093b1f2bfdc28c83a1..27b7f9663ece26a9bfeb90775ee521cfbb569711 100644 GIT binary patch delta 39 vcmdnFo`2_h{)QID7N#xCm&2GC7^YthW42&osG80n&U~7YVf*cH=6m%39S9BT delta 39 xcmV+?0NDSzuMfGe4}gRLgaWh!(^dj{|CiNP12_Wz|CbL}1Iq#bx7$|(-hW#d5#|5@ diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 654402a98d962d6b437f02c565175d0597f621d2..0d43343be08cdfc5d7f6fd123e25257f9ab9d549 100644 GIT binary patch delta 162 zcmZqw#Czlm?*uW%x{czBucrHaV&s@S^8?>x{fFF>BVTb()_=8l^285flP|pEp1l9n zS|m32^wmsE0+apT@=gBmg?n=E>w2(c{vC)$rZ>yMe3(HC-YkRjf4>o!o*>1<((LxO n-R&*ocDJ`os=~|+3=C8Am@Syo1C~r($$W~DVS5Q9^W<^>hc-(v delta 171 zcmX@|g}40^?*uW93I+)km&Bs%>4nUU5|e!xg{Et`rWaZgTvoj3ghGZREm{!Q29`)}q>mlc5uOt{58+3KCZbUg{6z^k_@ z)8%ELGO@R~o0q(6U-FJ|`;vD|EW*s`0ZXQ@W@NVD`v3nw17C>0i(};U!n2IV(-oMQ OCoulszLAM}aybAUyhT0$ diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index 8f3c97017fb7ebe7760dc2093b1f2bfdc28c83a1..27b7f9663ece26a9bfeb90775ee521cfbb569711 100644 GIT binary patch delta 39 vcmdnFo`2_h{)QID7N#xCm&2GC7^YthW42&osG80n&U~7YVf*cH=6m%39S9BT delta 39 xcmV+?0NDSzuMfGe4}gRLgaWh!(^dj{|CiNP12_Wz|CbL}1Iq#bx7$|(-hW#d5#|5@ diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index c72c301da03..6ad521b316a 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -326,39 +326,9 @@ ToggleButton { font-size: 2.5mm; text-align: center; } -ToggleButton.selected { - color: var(--accent-on-container-color, #21005d); - background-color: var(--accent-container-color, #eaddff); - cn1-background-type: cn1-pill-border; - border: 0.25mm solid #79747e; - padding: 1.55mm 4mm 1.55mm 4mm; - margin: 0.5mm; - font-family: "native:MainRegular"; - font-size: 2.5mm; - text-align: center; -} -ToggleButton.pressed { - color: var(--accent-on-container-color, #21005d); - background-color: var(--accent-container-color, #eaddff); - cn1-background-type: cn1-pill-border; - border: 0.25mm solid #79747e; - padding: 1.55mm 4mm 1.55mm 4mm; - margin: 0.5mm; - font-family: "native:MainRegular"; - font-size: 2.5mm; - text-align: center; -} -ToggleButton.disabled { - color: #a5a0ab; - background-color: transparent; - cn1-background-type: cn1-pill-border; - border: 0.25mm solid #cac4d0; - padding: 1.55mm 4mm 1.55mm 4mm; - margin: 0.5mm; - font-family: "native:MainRegular"; - font-size: 2.5mm; - text-align: center; -} +ToggleButton.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButton.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButton.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } /* ComponentGroup renames the edge controls of a group: updateUIIDs() rewrites them to ToggleButtonFirst, ToggleButtonLast or ToggleButtonOnly, and @@ -955,6 +925,95 @@ RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + +/* Every UIID above is completed to all four states below. A missing state is + not inherited: cn1-derive is read at base level only, and a lookup of + .press# that finds nothing resolves against the global default style, + so the control drops its whole appearance for the duration of that state. + Where a state is meant to differ it is declared above and left alone here. */ +CalendarDate.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDate.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDateLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; text-align: center; background-color: transparent; } +CalendarDateLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; text-align: center; background-color: transparent; } +CalendarDateLabel.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; text-align: center; background-color: transparent; } +CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } +CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } +CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } +CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } +CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } +CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } +ComboBoxFocus.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +ComboBoxFocus.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +ComboBoxFocus.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +CommandFocus.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +CommandFocus.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +CommandFocus.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +DialogCommandText.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } +DialogCommandText.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } +DialogCommandText.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } +ErrorLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +ErrorLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } +GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } +GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } +ListRendererFocus.selected { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } +ListRendererFocus.pressed { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } +ListRendererFocus.disabled { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } +MediaPlayerBack.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerFwd.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerMax.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerPause.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerPlay.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MenuButtonRight.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +PopupBody.selected { background-color: #f3edf7; padding: 1mm; margin: 0; } +PopupBody.pressed { background-color: #f3edf7; padding: 1mm; margin: 0; } +PopupBody.disabled { background-color: #f3edf7; padding: 1mm; margin: 0; } +PopupContentPaneDownwards.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneDownwards.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneDownwards.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneLeft.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneLeft.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneLeft.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneRight.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneRight.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneRight.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneUpwards.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneUpwards.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupContentPaneUpwards.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } +PopupFocus.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +PopupFocus.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +PopupFocus.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +PopupItem.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } +PopupItem.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } +PopupItem.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } +RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } +RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } +RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } +SpinnerSeparator.selected { background-color: #cac4d0; padding: 0; margin: 0; } +SpinnerSeparator.pressed { background-color: #cac4d0; padding: 0; margin: 0; } +SpinnerSeparator.disabled { background-color: #cac4d0; padding: 0; margin: 0; } +StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } +StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } +StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } +TODAY.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #6750a4); font-family: "native:MainBold"; } +TODAY.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #6750a4); font-family: "native:MainBold"; } +TODAY.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #6750a4); font-family: "native:MainBold"; } +TableCell.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TimeSpinnerHoursLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerHoursLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerHoursLabel.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerMinutesLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerMinutesLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerMinutesLabel.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + @media (prefers-color-scheme: dark) { Component { color: #e6e0e9; background-color: #141218; } Form { background-color: #141218; padding: 0; margin: 0; } @@ -1162,4 +1221,54 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm PhoneVerificationText { color: #cac4d0; } PhoneVerificationError { color: #f2b8b5; } PhoneVerificationLink { color: var(--accent-color-dark, #d0bcff); } + + CalendarDate.pressed { color: #e6e0e9; background-color: transparent; } + CalendarDate.disabled { color: #e6e0e9; background-color: transparent; } + CalendarDateLabel.selected { color: #cac4d0; background-color: transparent; } + CalendarDateLabel.pressed { color: #cac4d0; background-color: transparent; } + CalendarDateLabel.disabled { color: #cac4d0; background-color: transparent; } + ComboBoxFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); } + ComboBoxFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); } + ComboBoxFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); } + DialogCommandText.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + DialogCommandText.pressed { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + DialogCommandText.disabled { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + ErrorLabel.selected { color: #f2b8b5; background-color: transparent; } + ErrorLabel.pressed { color: #f2b8b5; background-color: transparent; } + FloatingHint.selected { color: #cac4d0; background-color: transparent; } + FloatingHint.pressed { color: #cac4d0; background-color: transparent; } + ListRendererFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); } + ListRendererFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); } + ListRendererFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); } + PopupBody.selected { background-color: #211f26; } + PopupBody.pressed { background-color: #211f26; } + PopupBody.disabled { background-color: #211f26; } + PopupContentPaneDownwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneDownwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneDownwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + SpinnerSeparator.selected { background-color: #49454f; } + SpinnerSeparator.pressed { background-color: #49454f; } + SpinnerSeparator.disabled { background-color: #49454f; } + TODAY.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + TODAY.pressed { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + TODAY.disabled { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + TableCell.selected { color: #e6e0e9; background-color: transparent; } + TableCell.pressed { color: #e6e0e9; background-color: transparent; } + TableCell.disabled { color: #e6e0e9; background-color: transparent; } + TableHeader.selected { color: #cac4d0; background-color: transparent; } + TableHeader.pressed { color: #cac4d0; background-color: transparent; } + TableHeader.disabled { color: #cac4d0; background-color: transparent; } + TreeNode.pressed { color: #e6e0e9; background-color: transparent; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index b6173f7cd5c..39ee1688063 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -418,36 +418,9 @@ ToggleButton { font-size: 2.7mm; text-align: center; } -ToggleButton.selected { - color: #ffffff; - background-color: var(--accent-color, #007aff); - cn1-background-type: cn1-pill-border; - padding: 1.1mm 2.6mm 1.1mm 2.6mm; - margin: 1mm 0.4mm 1mm 0.4mm; - font-family: "native:MainLight"; - font-size: 2.7mm; - text-align: center; -} -ToggleButton.pressed { - color: #ffffff; - background-color: var(--accent-color, #007aff); - cn1-background-type: cn1-pill-border; - padding: 1.1mm 2.6mm 1.1mm 2.6mm; - margin: 1mm 0.4mm 1mm 0.4mm; - font-family: "native:MainLight"; - font-size: 2.7mm; - text-align: center; -} -ToggleButton.disabled { - color: #b0b0b5; - background-color: rgba(199,197,198,0.55); - cn1-background-type: cn1-pill-border; - padding: 1.1mm 2.6mm 1.1mm 2.6mm; - margin: 1mm 0.4mm 1mm 0.4mm; - font-family: "native:MainLight"; - font-size: 2.7mm; - text-align: center; -} +ToggleButton.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButton.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } /* ComponentGroup renames the edge controls of a group to First, Last or Only, and UIManager does not fall back from those to @@ -456,17 +429,17 @@ ToggleButton.disabled { control. Each state is written out because cn1-derive is read at base level only. */ ToggleButtonFirst { cn1-derive: ToggleButton; } -ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonFirst.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast { cn1-derive: ToggleButton; } -ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonLast.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly { cn1-derive: ToggleButton; } -ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonOnly.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } TextField { color: #000000; @@ -1241,6 +1214,95 @@ RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + +/* Every UIID above is completed to all four states below. A missing state is + not inherited: cn1-derive is read at base level only, and a lookup of + .press# that finds nothing resolves against the global default style, + so the control drops its whole appearance for the duration of that state. + Where a state is meant to differ it is declared above and left alone here. */ +CalendarDate.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDate.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDateLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; text-align: center; background-color: transparent; } +CalendarDateLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; text-align: center; background-color: transparent; } +CalendarDateLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; text-align: center; background-color: transparent; } +CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } +CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } +CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } +CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } +CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } +CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } +ComboBoxFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +ComboBoxFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +ComboBoxFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +CommandFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +CommandFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +CommandFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +DialogCommandText.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } +DialogCommandText.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } +DialogCommandText.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } +ErrorLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +ErrorLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } +GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } +GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } +ListRendererFocus.selected { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } +ListRendererFocus.pressed { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } +ListRendererFocus.disabled { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } +MediaPlayerBack.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerFwd.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerMax.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerPause.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerPlay.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MenuButtonRight.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +PopupBody.selected { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } +PopupBody.pressed { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } +PopupBody.disabled { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } +PopupContentPaneDownwards.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneDownwards.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneDownwards.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneLeft.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneLeft.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneLeft.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneRight.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneRight.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneRight.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneUpwards.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneUpwards.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupContentPaneUpwards.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } +PopupFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +PopupFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +PopupFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +PopupItem.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } +PopupItem.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } +PopupItem.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } +RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } +RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } +RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } +SpinnerSeparator.selected { background-color: #c6c6c8; padding: 0; margin: 0; } +SpinnerSeparator.pressed { background-color: #c6c6c8; padding: 0; margin: 0; } +SpinnerSeparator.disabled { background-color: #c6c6c8; padding: 0; margin: 0; } +StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } +StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } +StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } +TODAY.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } +TODAY.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } +TODAY.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } +TableCell.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TimeSpinnerHoursLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerHoursLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerHoursLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerMinutesLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerMinutesLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerMinutesLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + @media (prefers-color-scheme: dark) { Component { color: #ffffff; background-color: #000000; } Form { background-color: #1c1c1e; padding: 0; margin: 0; } @@ -1507,4 +1569,54 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm PhoneVerificationText { color: #ebebf5; } PhoneVerificationError { color: #ff453a; } PhoneVerificationLink { color: var(--accent-color-dark, #0a84ff); } + + CalendarDate.pressed { color: #ffffff; background-color: transparent; } + CalendarDate.disabled { color: #ffffff; background-color: transparent; } + CalendarDateLabel.selected { color: #8e8e93; background-color: transparent; } + CalendarDateLabel.pressed { color: #8e8e93; background-color: transparent; } + CalendarDateLabel.disabled { color: #8e8e93; background-color: transparent; } + ComboBoxFocus.selected { background-color: rgba(10,132,255,0.22); } + ComboBoxFocus.pressed { background-color: rgba(10,132,255,0.22); } + ComboBoxFocus.disabled { background-color: rgba(10,132,255,0.22); } + CommandFocus.selected { background-color: rgba(10,132,255,0.22); } + CommandFocus.pressed { background-color: rgba(10,132,255,0.22); } + CommandFocus.disabled { background-color: rgba(10,132,255,0.22); } + DialogCommandText.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + DialogCommandText.pressed { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + DialogCommandText.disabled { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + ErrorLabel.selected { color: #ff453a; background-color: transparent; } + ErrorLabel.pressed { color: #ff453a; background-color: transparent; } + FloatingHint.selected { color: #8e8e93; background-color: transparent; } + FloatingHint.pressed { color: #8e8e93; background-color: transparent; } + ListRendererFocus.selected { background-color: rgba(10,132,255,0.22); } + ListRendererFocus.pressed { background-color: rgba(10,132,255,0.22); } + ListRendererFocus.disabled { background-color: rgba(10,132,255,0.22); } + PopupBody.selected { background-color: rgba(28,28,30,0.94); } + PopupBody.pressed { background-color: rgba(28,28,30,0.94); } + PopupBody.disabled { background-color: rgba(28,28,30,0.94); } + PopupContentPaneDownwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneDownwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneDownwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + SpinnerSeparator.selected { background-color: #38383a; } + SpinnerSeparator.pressed { background-color: #38383a; } + SpinnerSeparator.disabled { background-color: #38383a; } + TODAY.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + TODAY.pressed { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + TODAY.disabled { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + TableCell.selected { color: #ffffff; background-color: transparent; } + TableCell.pressed { color: #ffffff; background-color: transparent; } + TableCell.disabled { color: #ffffff; background-color: transparent; } + TableHeader.selected { color: #8e8e93; background-color: transparent; } + TableHeader.pressed { color: #8e8e93; background-color: transparent; } + TableHeader.disabled { color: #8e8e93; background-color: transparent; } + TreeNode.pressed { color: #ffffff; background-color: transparent; } } From 96a15ee08277fc305d0c034f51890c0b4b125126 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 06:06:05 +0300 Subject: [PATCH 07/29] Complete the dark side of the audit too The state audit in the previous commit only closed the light block. Its dark pass skipped any UIID that had dark state overrides but no dark base entry, and six did: the five media transport aliases and MenuButtonRight, each carrying a dark pressed and disabled from an earlier round and nothing else. A dark state that does not exist resolves to the LIGHT rule of the same name -- createStyle falls back to the original id when no $Dark entry is found -- so focusing one of those controls in dark mode picked up the light accent, #6750a4 against a dark surface on Material. All six now carry a dark base and a dark selected taken from the dark FlatButton they derive from, and the audit is re-run over both themes: no UIID this change adds has partial coverage in either block. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 227908 -> 231352 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 251833 -> 256627 bytes Themes/AndroidMaterialTheme.res | Bin 227908 -> 231352 bytes Themes/iOSModernTheme.res | Bin 251833 -> 256627 bytes native-themes/android-material/theme.css | 15 +++++++++++++++ native-themes/ios-modern/theme.css | 15 +++++++++++++++ 6 files changed, 30 insertions(+) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 0d43343be08cdfc5d7f6fd123e25257f9ab9d549..88b0fbe3ac81bd04bde35d7e88e62ebdc8a05c78 100644 GIT binary patch delta 1479 zcmZ8hU2GIp6z<&J9fqCR-P!KW(stS|C4~^E7d2bcC|GoCd9;$_+TU!HP}QWQ187n9SZxj=iKvs z=R4m$ch3JE`}pE9 z8X6or*dTs3-f*my1N$q_4)60L`e|NSg^Sg7xV@)^p18~zR+lxLb3Vt|amj%CZ(3;X z%py8+Z8Z27FGy50oa(7zuc4x~S4VeGgpOQMOl;qw;*4X4p4vBvStmA`0CQa{O1caU5i?-DxShlNszt9 z3H%Ym9J~qUXc{jUZdG`=uv{UJ=-q39!X#D~G}?BZyLSDA%6sb~fmieINZEqzQU8L3 zHyt=!uB3ymB3oq!mp6mqW2%H1 z8uJ!ps?<&!SMt+cr61(o_7_zu>CD7y6DmIIHRy4jC2^AL6DMOj6M_Y6l1zi+9@rDb z#=I_1IW9~mM_2-TH%H)gUokj+$-E~`iwQQYe#4D2jt#7TsHbwVckD_z_v z!5Blu=gNhrvGrRM-^|FDFFp_WbUKCB=^MHJoQmx^ z4U2Or)TVCa`8NRVXHz(P&dVL=vA}lKyf~3>l$Zlw$(S-%`B!B*K&ldRHl~H>lR@ h-c1DMdfh7*2Z5)u{OH%_OK$xYx2}BT*4aO&{s-6L3Hks4 delta 341 zcmdnd&v)bt?*uW%x{czMo|6qY*e2`y2uzOmVw-I5b#d|pcDBhD-XA9ibg@l7?ax1X zfgj8CyUa{Hli&Lup3ECAILVJ?GQU5^|DyQP`9C)?SxP4@Q!3rzkIu?FnAV>bk*CnzwnP2M5OGYRO*1aI!i6K-%% z=8D=qIX{kX^8Ogs>3fx-ntNjof;E-Jew;XuZF61x<WT?ZNpw5j8Q^yGin zq#?dyn>+#Nvk4c3fkF9jzJFbMvcXNE$pY6ofp)0@*^bQ{Znkf@$+&&P IO(u?Y08Xuh-T(jq diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index 27b7f9663ece26a9bfeb90775ee521cfbb569711..8d3bf60d396171497dfd5f2ef728be16b6eb0446 100644 GIT binary patch delta 1946 zcmZWqdrX^E6z_M(N}+|eqYr359S>=7K`k?|i~*B9*dP_Bt1K{91Z2aA&;X_V`i_f| zB}TxL>@Fs{?H`l5_?R&+GgD)H{9$6m#7v1q7Z;;3(fHsWH3ZLn@KI)y<~!$i?z#7O ze&4z0yY`0ludl50F6F5!?v-gcf5QkjqPCKuQ~M{zCMFHfW)lW4d>M5X4V?;Ukr9LN z;M-8EQi*s4)JA*haDdbcmo5f~Y3uOtNdu44GY!NdBd<1)a#)PkDJt8qntc4idAa;Sy#anc7GNdf)75$Q4tjIPAaHA&9Wzt+Tw zyLg6mdU9}lDl#}ZGCr(bH&n5-+b}O&i8(eY=wXPiAou9RE@bm#=zcgFwZ9M>;2H|s zq-(=;+>W{BbZj?r66SNekvnBbSVQwMCV2sFl=B3$2^ zUysOvm9MwKJ29(RaiUGu;1GVgjTa*GFJTm3t~G%_ZvCI2HqAj-+wfJfe)Iskd1|7^ z`jLqTm0A(piudShB4C1y#MP}M^~P;1V?D=K1>m2 z?>;1qYT~8^U`rIj=UU&ontra}RZS}RmL?Qbd~91>Y~+pk>r5F-ri%wj0sIiJ62?8T z3LT}t9oW!ON4bzr4TZ!+y1heIfkHBWZ-*>J`cGnDttkDnoP` zxkvx)SU)^rhcA*wT6q|WzMnWQ1WHK23P(G8%Z-8N+{qcsRdovVz2e#KP~rV7#lF*d+PhZlX%wvxvfK znTb=r+|6}Vp&{+uq@$N1XCERa>=LwiD=ws_gklRR4|Jt1fKPK|@bO2-pO_~2gLxcG zhvt!dE#_1}BwdP=53}j>56gih4$8~HDajUu9>FH8$*AyRT8_n4If2W{#BD%XL=n6 zBirQYa&wJ3Il57FazYi$

I(+~JEu}_{+qXV`As6>5oVXf8Vf<~6f3+kZ;7B)yu zc4*+4yr@BaGGmkU^!QM)8Nm=OK#|EW!gv_fCU2}4nOx8$GI?6N_~c0~@nF|5Do%db zE;iYuRbaZl0MPl*+65#L4>FIvCKrdHM2t_imZ6YKh Y+9s+r3r}trp3DfuOxuMgGbe-t0CD=vumAu6 diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 0d43343be08cdfc5d7f6fd123e25257f9ab9d549..88b0fbe3ac81bd04bde35d7e88e62ebdc8a05c78 100644 GIT binary patch delta 1479 zcmZ8hU2GIp6z<&J9fqCR-P!KW(stS|C4~^E7d2bcC|GoCd9;$_+TU!HP}QWQ187n9SZxj=iKvs z=R4m$ch3JE`}pE9 z8X6or*dTs3-f*my1N$q_4)60L`e|NSg^Sg7xV@)^p18~zR+lxLb3Vt|amj%CZ(3;X z%py8+Z8Z27FGy50oa(7zuc4x~S4VeGgpOQMOl;qw;*4X4p4vBvStmA`0CQa{O1caU5i?-DxShlNszt9 z3H%Ym9J~qUXc{jUZdG`=uv{UJ=-q39!X#D~G}?BZyLSDA%6sb~fmieINZEqzQU8L3 zHyt=!uB3ymB3oq!mp6mqW2%H1 z8uJ!ps?<&!SMt+cr61(o_7_zu>CD7y6DmIIHRy4jC2^AL6DMOj6M_Y6l1zi+9@rDb z#=I_1IW9~mM_2-TH%H)gUokj+$-E~`iwQQYe#4D2jt#7TsHbwVckD_z_v z!5Blu=gNhrvGrRM-^|FDFFp_WbUKCB=^MHJoQmx^ z4U2Or)TVCa`8NRVXHz(P&dVL=vA}lKyf~3>l$Zlw$(S-%`B!B*K&ldRHl~H>lR@ h-c1DMdfh7*2Z5)u{OH%_OK$xYx2}BT*4aO&{s-6L3Hks4 delta 341 zcmdnd&v)bt?*uW%x{czMo|6qY*e2`y2uzOmVw-I5b#d|pcDBhD-XA9ibg@l7?ax1X zfgj8CyUa{Hli&Lup3ECAILVJ?GQU5^|DyQP`9C)?SxP4@Q!3rzkIu?FnAV>bk*CnzwnP2M5OGYRO*1aI!i6K-%% z=8D=qIX{kX^8Ogs>3fx-ntNjof;E-Jew;XuZF61x<WT?ZNpw5j8Q^yGin zq#?dyn>+#Nvk4c3fkF9jzJFbMvcXNE$pY6ofp)0@*^bQ{Znkf@$+&&P IO(u?Y08Xuh-T(jq diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index 27b7f9663ece26a9bfeb90775ee521cfbb569711..8d3bf60d396171497dfd5f2ef728be16b6eb0446 100644 GIT binary patch delta 1946 zcmZWqdrX^E6z_M(N}+|eqYr359S>=7K`k?|i~*B9*dP_Bt1K{91Z2aA&;X_V`i_f| zB}TxL>@Fs{?H`l5_?R&+GgD)H{9$6m#7v1q7Z;;3(fHsWH3ZLn@KI)y<~!$i?z#7O ze&4z0yY`0ludl50F6F5!?v-gcf5QkjqPCKuQ~M{zCMFHfW)lW4d>M5X4V?;Ukr9LN z;M-8EQi*s4)JA*haDdbcmo5f~Y3uOtNdu44GY!NdBd<1)a#)PkDJt8qntc4idAa;Sy#anc7GNdf)75$Q4tjIPAaHA&9Wzt+Tw zyLg6mdU9}lDl#}ZGCr(bH&n5-+b}O&i8(eY=wXPiAou9RE@bm#=zcgFwZ9M>;2H|s zq-(=;+>W{BbZj?r66SNekvnBbSVQwMCV2sFl=B3$2^ zUysOvm9MwKJ29(RaiUGu;1GVgjTa*GFJTm3t~G%_ZvCI2HqAj-+wfJfe)Iskd1|7^ z`jLqTm0A(piudShB4C1y#MP}M^~P;1V?D=K1>m2 z?>;1qYT~8^U`rIj=UU&ontra}RZS}RmL?Qbd~91>Y~+pk>r5F-ri%wj0sIiJ62?8T z3LT}t9oW!ON4bzr4TZ!+y1heIfkHBWZ-*>J`cGnDttkDnoP` zxkvx)SU)^rhcA*wT6q|WzMnWQ1WHK23P(G8%Z-8N+{qcsRdovVz2e#KP~rV7#lF*d+PhZlX%wvxvfK znTb=r+|6}Vp&{+uq@$N1XCERa>=LwiD=ws_gklRR4|Jt1fKPK|@bO2-pO_~2gLxcG zhvt!dE#_1}BwdP=53}j>56gih4$8~HDajUu9>FH8$*AyRT8_n4If2W{#BD%XL=n6 zBirQYa&wJ3Il57FazYi$

I(+~JEu}_{+qXV`As6>5oVXf8Vf<~6f3+kZ;7B)yu zc4*+4yr@BaGGmkU^!QM)8Nm=OK#|EW!gv_fCU2}4nOx8$GI?6N_~c0~@nF|5Do%db zE;iYuRbaZl0MPl*+65#L4>FIvCKrdHM2t_imZ6YKh Y+9s+r3r}trp3DfuOxuMgGbe-t0CD=vumAu6 diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 6ad521b316a..1533460e475 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -1071,6 +1071,21 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm PopupContentPaneDownwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } PopupContentPaneLeft { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } PopupContentPaneRight { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + /* Dark base and selected for the FlatButton aliases. A dark state that + does not exist resolves to the LIGHT rule of the same name, so a focused + media control in dark mode was picking up the light accent. */ + MenuButtonRight { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MenuButtonRight.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerPlay { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerPlay.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerPause { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerPause.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerFwd { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerFwd.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerBack { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerBack.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerMax { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } + MediaPlayerMax.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MenuButtonRight.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MenuButtonRight.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 39ee1688063..5ef18ca8852 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1352,6 +1352,21 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 PopupContentPaneDownwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } PopupContentPaneLeft { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } PopupContentPaneRight { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + /* Dark base and selected for the FlatButton aliases. A dark state that + does not exist resolves to the LIGHT rule of the same name, so a focused + media control in dark mode was picking up the light accent. */ + MenuButtonRight { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MenuButtonRight.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPlay { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPlay.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPause { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPause.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerFwd { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerFwd.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerBack { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerBack.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerMax { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerMax.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MenuButtonRight.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } MenuButtonRight.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } MediaPlayerPlay.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } From ba41ec14bd2bf2d3f142de57206239b544de8771 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 06:23:45 +0300 Subject: [PATCH 08/29] Every rule that names a colour now has a dark counterpart The previous audit asked the wrong question again. It looked for UIIDs with partial dark coverage, which only finds names that already have some dark entry. A name with no dark entry at all and a hard-coded light colour in its light states is broken in exactly the same way and was invisible to that check: with no $Dark rule the light one is what resolves, so PopupItem.selected painted #1d1b20 on the dark popup and the disabled TimeSpinner labels sat at #49454f on the dark surface -- both nearly unreadable, both reported. The audit is now the right one: for every UIID this change adds, every state whose light rule names a colour must have a dark rule. The 32 missing ones per theme are generated by mapping the light body through the theme's own light-to- dark token pairs, and any colour the map does not cover is printed rather than passed through silently. Two came up and both are correct as they stand: GlassTutorial's rgba(0,0,0,0.72) scrim, which is a dark overlay in both appearances behind white text, and #000000, which only appears in dark rules that predate this change. Separately, MenuButtonRight no longer derives FlatButton. SideMenuBar drops that icon-only button into the TitleArea's east slot, where a content button's horizontal padding and pill widen the title bar and crowd the centred title. It derives TitleCommand now, which is the compact treatment that slot expects. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 231352 -> 240315 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 256627 -> 265335 bytes Themes/AndroidMaterialTheme.res | Bin 231352 -> 240315 bytes Themes/iOSModernTheme.res | Bin 256627 -> 265335 bytes native-themes/android-material/theme.css | 49 +++++++++++++++--- native-themes/ios-modern/theme.css | 49 +++++++++++++++--- 6 files changed, 82 insertions(+), 16 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 88b0fbe3ac81bd04bde35d7e88e62ebdc8a05c78..c7ebcc303a06c91a4f6f0f4c890c888479fdc639 100644 GIT binary patch delta 3971 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 H^Y;G_$y_S1 delta 1054 zcmZ8gTS!!45I$#)t?P2s&Gx3N>uN@smmb6$nxP3HVQGq>L1^X;bv4rm?IP%+q`U5} zqmKIGLkKLj9yTf*+rK!0){d&{+j<$|2Zm7SH zGba_-b+yv=D3}b2UD|LMjfE3uacfdd9tY^O|1;y2OqT;s8tU0}kc!6@o-F){_IDqE5#`GSZeo6+8Tn~#iW z`x5Fc`Sro%t1|PAIeY@GR`Q17`AXh5UkR4%OnuP8((BqobW@trMf$yvqT4H-e|dX{GhCv*x3zXiWsC)P6y;sTn}WDpXq_xdq7JmPKXm0 z78dCu698F#aEjb*dx2{dwl$QjHa?8LI-x+)24#&wg5cncBuPRS8*AZo zK}@J{MaYm#(aSN`amOcUN#%kps!oHW(&-Ih2Snqfrzt>m`PmX}vnLI?;3U0YW4WJQ zV4)YypeLi7@!oBQP(>D(+@PT|Pxw?`E@7ZKH=IVTO`&_>WKv4Og=sCHD7TfQLv#1x zhK027aV8u8CyXJYD0n6${7N=F$e) lMkTByuw?q{7u1q!d8>kvB*kw~9)gA67_LF^)u0g9`ww#4d4m7| diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 88b0fbe3ac81bd04bde35d7e88e62ebdc8a05c78..c7ebcc303a06c91a4f6f0f4c890c888479fdc639 100644 GIT binary patch delta 3971 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 H^Y;G_$y_S1 delta 1054 zcmZ8gTS!!45I$#)t?P2s&Gx3N>uN@smmb6$nxP3HVQGq>L1^X;bv4rm?IP%+q`U5} zqmKIGLkKLj9yTf*+rK!0){d&{+j<$|2Zm7SH zGba_-b+yv=D3}b2UD|LMjfE3uacfdd9tY^O|1;y2OqT;s8tU0}kc!6@o-F){_IDqE5#`GSZeo6+8Tn~#iW z`x5Fc`Sro%t1|PAIeY@GR`Q17`AXh5UkR4%OnuP8((BqobW@trMf$yvqT4H-e|dX{GhCv*x3zXiWsC)P6y;sTn}WDpXq_xdq7JmPKXm0 z78dCu698F#aEjb*dx2{dwl$QjHa?8LI-x+)24#&wg5cncBuPRS8*AZo zK}@J{MaYm#(aSN`amOcUN#%kps!oHW(&-Ih2Snqfrzt>m`PmX}vnLI?;3U0YW4WJQ zV4)YypeLi7@!oBQP(>D(+@PT|Pxw?`E@7ZKH=IVTO`&_>WKv4Og=sCHD7TfQLv#1x zhK027aV8u8CyXJYD0n6${7N=F$e) lMkTByuw?q{7u1q!d8>kvB*kw~9)gA67_LF^)u0g9`ww#4d4m7| diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 1533460e475..f9b21bb22f5 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -892,9 +892,10 @@ ListRendererFocus { background-color: var(--accent-container-color, #eaddff); pa /* The strip a Form reserves for the platform status bar. */ /* Side menu chrome. */ -MenuButtonRight { cn1-derive: FlatButton; } -MenuButtonRight.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } -MenuButtonRight.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } +/* SideMenuBar drops this icon-only button into the TitleArea's east slot, so + it takes the compact title-command treatment. FlatButton would give it a + content button's horizontal padding and pill, widening the title bar. */ +MenuButtonRight { cn1-derive: TitleCommand; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } /* Commands, as drawn by the menu rather than the Toolbar. */ @@ -966,7 +967,6 @@ MediaPlayerFwd.selected { color: var(--accent-on-color, #ffffff); background-col MediaPlayerMax.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } MediaPlayerPause.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } MediaPlayerPlay.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MenuButtonRight.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } PopupBody.selected { background-color: #f3edf7; padding: 1mm; margin: 0; } PopupBody.pressed { background-color: #f3edf7; padding: 1mm; margin: 0; } PopupBody.disabled { background-color: #f3edf7; padding: 1mm; margin: 0; } @@ -1074,8 +1074,6 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm /* Dark base and selected for the FlatButton aliases. A dark state that does not exist resolves to the LIGHT rule of the same name, so a focused media control in dark mode was picking up the light accent. */ - MenuButtonRight { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MenuButtonRight.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MediaPlayerPlay { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MediaPlayerPlay.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MediaPlayerPause { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } @@ -1086,8 +1084,6 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm MediaPlayerBack.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MediaPlayerMax { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MediaPlayerMax.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MenuButtonRight.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MenuButtonRight.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } MediaPlayerPlay.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } @@ -1286,4 +1282,41 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm TableHeader.pressed { color: #cac4d0; background-color: transparent; } TableHeader.disabled { color: #cac4d0; background-color: transparent; } TreeNode.pressed { color: #e6e0e9; background-color: transparent; } + + /* Dark counterparts for every rule above that names a colour. A light-only + state rule is not skipped in dark mode -- with no $Dark entry the light + one is what resolves -- so a hard-coded light foreground would be used + against the dark surface. */ + CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } + CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } + CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } + CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } + CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } + CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } + CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } + CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } + GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + PopupFocus.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + PopupFocus.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + PopupFocus.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + PopupItem.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } + PopupItem.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } + PopupItem.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } + RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } + RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } + RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } + RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } + StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } + StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } + StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } + StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } + TimeSpinnerHoursLabel.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerHoursLabel.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerHoursLabel.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerMinutesLabel.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerMinutesLabel.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerMinutesLabel.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 5ef18ca8852..e3ca02201a8 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1186,9 +1186,10 @@ TimeSpinnerMinutesLabel { cn1-derive: SecondaryLabel; background-color: transpar ListRendererFocus { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -MenuButtonRight { cn1-derive: FlatButton; } -MenuButtonRight.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MenuButtonRight.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } +/* SideMenuBar drops this icon-only button into the TitleArea's east slot, so + it takes the compact title-command treatment. FlatButton would give it a + content button's horizontal padding and pill, widening the title bar. */ +MenuButtonRight { cn1-derive: TitleCommand; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } CommandFocus { cn1-derive: Label; background-color: rgba(0,122,255,0.14); } @@ -1255,7 +1256,6 @@ MediaPlayerFwd.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; marg MediaPlayerMax.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerPause.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerPlay.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MenuButtonRight.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } PopupBody.selected { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } PopupBody.pressed { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } PopupBody.disabled { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } @@ -1355,8 +1355,6 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 /* Dark base and selected for the FlatButton aliases. A dark state that does not exist resolves to the LIGHT rule of the same name, so a focused media control in dark mode was picking up the light accent. */ - MenuButtonRight { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MenuButtonRight.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerPlay { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerPlay.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerPause { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } @@ -1367,8 +1365,6 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 MediaPlayerBack.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerMax { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } MediaPlayerMax.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MenuButtonRight.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } - MenuButtonRight.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } MediaPlayerPlay.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } MediaPlayerPlay.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } MediaPlayerPause.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } @@ -1634,4 +1630,41 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 TableHeader.pressed { color: #8e8e93; background-color: transparent; } TableHeader.disabled { color: #8e8e93; background-color: transparent; } TreeNode.pressed { color: #ffffff; background-color: transparent; } + + /* Dark counterparts for every rule above that names a colour. A light-only + state rule is not skipped in dark mode -- with no $Dark entry the light + one is what resolves -- so a hard-coded light foreground would be used + against the dark surface. */ + CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } + CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } + CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } + CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } + CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } + CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } + CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } + CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } + GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + PopupFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupItem.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } + PopupItem.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } + PopupItem.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } + RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } + RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } + RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } + RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } + StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } + StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } + StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } + StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } + TimeSpinnerHoursLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerHoursLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerHoursLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerMinutesLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerMinutesLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerMinutesLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } } From 818615aa3b484c76cda1e45e5f8385c13b88bf4f Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 06:41:22 +0300 Subject: [PATCH 09/29] Regenerate the states I deleted, and match TODAY to the row it replaces Re-pointing MenuButtonRight at TitleCommand last commit meant deleting the states that had been expanded from FlatButton, and I did not regenerate them, so it went back to a base rule with nothing behind it -- the same defect the audit had just closed, reintroduced by hand two commits later. Both audit scripts are re-run here rather than the states being written out again by hand. TODAY was derived from the wrong thing entirely. DateTimeRenderer extends SpinnerRenderer and swaps its own UIID to TODAY for the current date, restoring the original afterwards, so TODAY is a spinner row that happens to be today -- not a calendar cell. Deriving CalendarDate gave it different padding and typography from the rows above and below it, and a transparent selected state where the wheel expects its selection band, so the row changed size as it scrolled past. The two themes need different answers because only one of them themes the row. iOS defines SpinnerRenderer, so TODAY derives it there and overrides nothing but the accent colour and the weight. Android Material does not define SpinnerRenderer at all -- its spinner rows take the default -- so styling only today's row would make that one row the odd one out, which is the same defect from the other side. TODAY is simply not defined in the Material theme. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 240315 -> 240558 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 265335 -> 266422 bytes Themes/AndroidMaterialTheme.res | Bin 240315 -> 240558 bytes Themes/iOSModernTheme.res | Bin 265335 -> 266422 bytes native-themes/android-material/theme.css | 48 ++++++++++++++---- native-themes/ios-modern/theme.css | 30 ++++++++--- 6 files changed, 61 insertions(+), 17 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index c7ebcc303a06c91a4f6f0f4c890c888479fdc639..e4bb79c1026459f769cd3f5d0c82cc573c48c5ba 100644 GIT binary patch delta 973 zcmZuwO-vI(6yA9)%Tk-QthGX`l^?Zeu*#1?FhUH3R+c6jHNk^Qn@Fu9ATbyde?KZ|y+~Br+o52!4o)@P9gFrzR;et_*sp_& zR&+T<5*LoL220Hh?wy8we02+K=|-N<%g8J6t(Pbx#44}#D^xm$8sr>RJi}{KdmwL} z;@lP1iAgKVITzFRF+0ACL4oWu-#`l%>~!X-f}Nq9=dZQRG5n~5oi+yKG~+KT1jE%1 zhlLA~5NKLgw7Ivtw_nO}L$K<;kcP~VIq*L>1ko2V-C)4KZZNPi;{mUrD}(mOW6Gra z!c=Io%t*A*@l}nlghnE?^t(F~y6J=EaxviyzU(juPG?p&2`2A?e*NJwgNY>%O{N@^ zKUeR`M!-T;4-Pm;DSq-2CJ+QGc9jqpI!ed}e8I7}m(*c=7sK`yrZF7{JS-e%p~1=w zp;>z#Fl{L=Hn`vH4eXE&!&pr3fIrmMW((-z% zW!VW!Mb~ad+1RkI%}TGvf^DIwAkSS$L?csu)0xrv+`PfE$n1y6FTN!SJxkwUr>Lx@xt`bz)b7IPp;d zhVVv`D0tJ(+o4;JDkC|K$AdzOw3jARy%r0TWYEt* zt_bpklwBn1;V3;mIS0OO2C^We_aICdzs109b?UT=y4Ib>XR}Qk=)ky1_%QBF5sSwF zv2Cd~_*|tk(`-vxfnQ_b@fz(HWHDb8i!QgK-k5kB?ML&5L~X3teR_&B?gPcK0~-o! z2`o;M0V_pfBnpn^ee76>fy+#;odEy< diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index 00545f7172246267820a1d8f3c6e14b112165993..93cfef745fe3bd36061aec08f33767c522209421 100644 GIT binary patch delta 890 zcmZ8fO-~b16n!6Y9BY+nXPB0>APQ(eAZawwj78c)vJ@@3ibI+aMkEEARrJ{

`ARB*?n&*=<>zH79g)(~BU~iI1}WUIDrb zBg-|od?Z=RCcY&&F=iQ`zj0-i6(3-sqmyo+%-}vi0|=U_*^8r z>S#YXjTIL~Fjt5Ia*6nbLtFQ&Ec?pM9abhgSK?FGq{M60J#ssxqiSv(X{@vA#KmF7 zJ2~aVToapx!^H&FsxjHbnK5%TnYc;#Q=_XeJ>cCPIXF34V@H9n5BQkd{uH3svA-Iy zt>4RtHG|)o%3wrUpIJR}W&PKmXQ!mD$kk-1XFQRd(44-tS$H1CGQ1hYk{vW0*Kh#l ztkZpjtWctAg%wp5!6d5^L!G4^4=fA|}zW;OG z7}ci7x-&{opV7(8Gu_USQF!_@4@QCMIqr-+llLy=n9k+NsJtD>Yhh&pX`F88$fzJH zllqJrFa9K|&Z96VvziGJAkclj4PFLpF&AA~bzt zC8PLs-acl<=^Yh}g46B$n4NfqP#iU}k2xA_44W`m&s1R0u?c~h)AcJD<)(k?W7eJi zmV?KZ|y+~Br+o52!4o)@P9gFrzR;et_*sp_& zR&+T<5*LoL220Hh?wy8we02+K=|-N<%g8J6t(Pbx#44}#D^xm$8sr>RJi}{KdmwL} z;@lP1iAgKVITzFRF+0ACL4oWu-#`l%>~!X-f}Nq9=dZQRG5n~5oi+yKG~+KT1jE%1 zhlLA~5NKLgw7Ivtw_nO}L$K<;kcP~VIq*L>1ko2V-C)4KZZNPi;{mUrD}(mOW6Gra z!c=Io%t*A*@l}nlghnE?^t(F~y6J=EaxviyzU(juPG?p&2`2A?e*NJwgNY>%O{N@^ zKUeR`M!-T;4-Pm;DSq-2CJ+QGc9jqpI!ed}e8I7}m(*c=7sK`yrZF7{JS-e%p~1=w zp;>z#Fl{L=Hn`vH4eXE&!&pr3fIrmMW((-z% zW!VW!Mb~ad+1RkI%}TGvf^DIwAkSS$L?csu)0xrv+`PfE$n1y6FTN!SJxkwUr>Lx@xt`bz)b7IPp;d zhVVv`D0tJ(+o4;JDkC|K$AdzOw3jARy%r0TWYEt* zt_bpklwBn1;V3;mIS0OO2C^We_aICdzs109b?UT=y4Ib>XR}Qk=)ky1_%QBF5sSwF zv2Cd~_*|tk(`-vxfnQ_b@fz(HWHDb8i!QgK-k5kB?ML&5L~X3teR_&B?gPcK0~-o! z2`o;M0V_pfBnpn^ee76>fy+#;odEy< diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index 00545f7172246267820a1d8f3c6e14b112165993..93cfef745fe3bd36061aec08f33767c522209421 100644 GIT binary patch delta 890 zcmZ8fO-~b16n!6Y9BY+nXPB0>APQ(eAZawwj78c)vJ@@3ibI+aMkEEARrJ{

`ARB*?n&*=<>zH79g)(~BU~iI1}WUIDrb zBg-|od?Z=RCcY&&F=iQ`zj0-i6(3-sqmyo+%-}vi0|=U_*^8r z>S#YXjTIL~Fjt5Ia*6nbLtFQ&Ec?pM9abhgSK?FGq{M60J#ssxqiSv(X{@vA#KmF7 zJ2~aVToapx!^H&FsxjHbnK5%TnYc;#Q=_XeJ>cCPIXF34V@H9n5BQkd{uH3svA-Iy zt>4RtHG|)o%3wrUpIJR}W&PKmXQ!mD$kk-1XFQRd(44-tS$H1CGQ1hYk{vW0*Kh#l ztkZpjtWctAg%wp5!6d5^L!G4^4=fA|}zW;OG z7}ci7x-&{opV7(8Gu_USQF!_@4@QCMIqr-+llLy=n9k+NsJtD>Yhh&pX`F88$fzJH zllqJrFa9K|&Z96VvziGJAkclj4PFLpF&AA~bzt zC8PLs-acl<=^Yh}g46B$n4NfqP#iU}k2xA_44W`m&s1R0u?c~h)AcJD<)(k?W7eJi zmV.press# that finds nothing resolves against the global default style, + so the control drops its whole appearance for the duration of that state. + Where a state is meant to differ it is declared above and left alone here. */ +MenuButtonRight.selected { color: var(--accent-on-color, #ffffff); + background-color: var(--accent-color, #6750a4); + padding: 1.55mm 3.5mm 1.55mm 3.5mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + cn1-background-type: cn1-pill-border; + text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } +MenuButtonRight.pressed { color: var(--accent-on-color, #ffffff); + background-color: var(--accent-color, #6750a4); + padding: 1.55mm 3.5mm 1.55mm 3.5mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + cn1-background-type: cn1-pill-border; + text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } +MenuButtonRight.disabled { color: var(--accent-on-color, #ffffff); + background-color: var(--accent-color, #6750a4); + padding: 1.55mm 3.5mm 1.55mm 3.5mm; + margin: 0.5mm; + font-family: "native:MainRegular"; + font-size: 2.5mm; + cn1-background-type: cn1-pill-border; + text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } + @media (prefers-color-scheme: dark) { Component { color: #e6e0e9; background-color: #141218; } Form { background-color: #141218; padding: 0; margin: 0; } @@ -1112,7 +1138,6 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm CalendarDate { color: #e6e0e9; background-color: transparent; } CalendarDate.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); } CalendarDateLabel { color: #cac4d0; background-color: transparent; } - TODAY { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } SpinnerSeparator { background-color: #49454f; } ListRendererFocus { background-color: var(--accent-container-color-dark, #4f378b); } CommandFocus { background-color: var(--accent-container-color-dark, #4f378b); } @@ -1272,9 +1297,6 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm SpinnerSeparator.selected { background-color: #49454f; } SpinnerSeparator.pressed { background-color: #49454f; } SpinnerSeparator.disabled { background-color: #49454f; } - TODAY.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - TODAY.pressed { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - TODAY.disabled { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } TableCell.selected { color: #e6e0e9; background-color: transparent; } TableCell.pressed { color: #e6e0e9; background-color: transparent; } TableCell.disabled { color: #e6e0e9; background-color: transparent; } @@ -1319,4 +1341,12 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm TimeSpinnerMinutesLabel.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } TimeSpinnerMinutesLabel.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } TimeSpinnerMinutesLabel.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + + /* Dark counterparts for every rule above that names a colour. A light-only + state rule is not skipped in dark mode -- with no $Dark entry the light + one is what resolves -- so a hard-coded light foreground would be used + against the dark surface. */ + MenuButtonRight.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.pressed { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.disabled { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index e3ca02201a8..d3e32658df1 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1177,7 +1177,10 @@ CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } CalendarDate { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } CalendarDate.selected { color: #ffffff; background-color: var(--accent-color, #007aff); } CalendarDateLabel { cn1-derive: SecondaryLabel; color: #6c6c70; text-align: center; background-color: transparent; } -TODAY { cn1-derive: CalendarDate; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } +/* DateTimeRenderer swaps the spinner row's UIID to TODAY for the current date + and restores it afterwards, so this has to be the same row with an accent: + deriving anything else changes the row height mid-wheel. */ +TODAY { cn1-derive: SpinnerRenderer; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } SpinnerSeparator { background-color: #c6c6c8; padding: 0; margin: 0; } TimeSpinnerHoursLabel { cn1-derive: SecondaryLabel; background-color: transparent; } @@ -1286,9 +1289,6 @@ SpinnerSeparator.disabled { background-color: #c6c6c8; padding: 0; margin: 0; } StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } -TODAY.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } -TODAY.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } -TODAY.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } TableCell.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } @@ -1303,6 +1303,16 @@ TimeSpinnerMinutesLabel.pressed { color: #000000; background-color: transparent; TimeSpinnerMinutesLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + +/* Every UIID above is completed to all four states below. A missing state is + not inherited: cn1-derive is read at base level only, and a lookup of + .press# that finds nothing resolves against the global default style, + so the control drops its whole appearance for the duration of that state. + Where a state is meant to differ it is declared above and left alone here. */ +MenuButtonRight.selected { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } +MenuButtonRight.pressed { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } +MenuButtonRight.disabled { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + @media (prefers-color-scheme: dark) { Component { color: #ffffff; background-color: #000000; } Form { background-color: #1c1c1e; padding: 0; margin: 0; } @@ -1391,7 +1401,6 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 CalendarDate { color: #ffffff; background-color: transparent; } CalendarDate.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } CalendarDateLabel { color: #8e8e93; background-color: transparent; } - TODAY { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } SpinnerSeparator { background-color: #38383a; } ListRendererFocus { background-color: rgba(10,132,255,0.22); } CommandFocus { background-color: rgba(10,132,255,0.22); } @@ -1620,9 +1629,6 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 SpinnerSeparator.selected { background-color: #38383a; } SpinnerSeparator.pressed { background-color: #38383a; } SpinnerSeparator.disabled { background-color: #38383a; } - TODAY.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - TODAY.pressed { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - TODAY.disabled { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } TableCell.selected { color: #ffffff; background-color: transparent; } TableCell.pressed { color: #ffffff; background-color: transparent; } TableCell.disabled { color: #ffffff; background-color: transparent; } @@ -1667,4 +1673,12 @@ TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2 TimeSpinnerMinutesLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerMinutesLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerMinutesLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + + /* Dark counterparts for every rule above that names a colour. A light-only + state rule is not skipped in dark mode -- with no $Dark entry the light + one is what resolves -- so a hard-coded light foreground would be used + against the dark surface. */ + MenuButtonRight.selected { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + MenuButtonRight.pressed { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + MenuButtonRight.disabled { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } } From 6d65ade502e4ee5c631b8625d71193ad744191e5 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 06:58:38 +0300 Subject: [PATCH 10/29] Expand a derived state from the base's matching state, not its base Two bugs in the audit tooling, both of which hid work rather than doing it. The driver read its UIID list from the Material theme's diff and applied it to both files, so any name that exists in only one theme was never checked. TODAY is now iOS-only, which is exactly how it came back with a base rule and no states one commit after the audit reported zero gaps. The list is the union of both diffs now. The generator expanded cn1-derive from the base UIID's *base* rule for every state, so TODAY.selected inherited SpinnerRenderer rather than SpinnerRenderer.selected -- and SpinnerRenderer.selected is where the picker wheel's selection band lives, the pill background and its margins. Today's row would have scrolled through the wheel without the band the other rows get. The expansion is state-aware now: X.selected takes B.selected when B defines one and falls back to B otherwise. While regenerating, the expanded bodies are also deduped -- a base declaration followed by the derived UIID's override of the same property is correct CSS but leaves a dead value in the rule, and one of those dead values was a #000000 that kept surfacing in the unmapped-colour report and would eventually have masked a real one. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 240558 -> 239942 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 266422 -> 267942 bytes Themes/AndroidMaterialTheme.res | Bin 240558 -> 239942 bytes Themes/iOSModernTheme.res | Bin 266422 -> 267942 bytes native-themes/android-material/theme.css | 129 ++++++++---------- native-themes/ios-modern/theme.css | 123 ++++++++++------- 6 files changed, 129 insertions(+), 123 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index e4bb79c1026459f769cd3f5d0c82cc573c48c5ba..9dcc9d06134359d09852fd60361515275507e024 100644 GIT binary patch delta 150 zcmZ2?o$uHsz6oNCg^l7<#TlPWH&9{Zn9j$>C_G(&g;8MYb4G#530Z8@&jW=g$G;bz zy#BAy^p}i`LffsF7=`7gA5&%&o316z$UU7~2}rC{V9c8ypvX9Dx||Z@g2@6Y9MjJ! pGxAM;tqoJ5pv+h}c~3f6To+_p2FPsFc1u-8AZFTbsmfg11_0i0EsOvF delta 265 zcmX?hiErI?z6oNCHI3p^#TlPW4#?n`{+f+Zc=GzcLQ`Kd22X$I!vqz{1B>uY-{8x{ zH#z=2SjqHEMn<9Oy#7EnyO|)mwgZJ!<)-VZ1I5k>G4f4+pvWjT{j~-Y=kz{###z&k z2?4n>I*i=Y*DC-C1qH@M)9;wU6vHGoPtHpQ>zABT|r_>XkKOs6A&<<$xUx8XO`raMmS*dL@r?!WX~X5!jDj=H+iGCfs)UevnW1C zwh3a$bj3bqIW~x`(;fPlMYtis2o9;~7auT+utHp(*T<}dEH^n(QkWa!dx+ZiX-ww) zAPbQUn4IV%%m$4Yo_=N(Hd%;ahW*S^a>&75oSK6c+|%RxnZ=ZmEYJg~NlFi?EJ$Tw zKoXy9`N@e58Vwiw(V_vQ2RVeG(ZD}}*$(DuzX{A@$R3$|Fj;u=`%j!G(FrmKIq;wX zHg5v65*s9TrXK{F!>7w2jvNPf{!47``=8{?0!nw&4ILR3L}eV3^9*&9GV@Zb5GtoL zdNRsPf9Am`zy(R71x2aF(+!;&WvAcwVHAXDfA7qw&<^ARG1K<@KFm7K)3th;xweZ= IU|!e&0PExJz5oCK delta 55 zcmZ3sR$$vgfeB(9Rtyp`MK&5m{@=cmg)!B){Xq~T5HoFm5X3C)%*4R3 K{qI!fl??zgbQF{T diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index e4bb79c1026459f769cd3f5d0c82cc573c48c5ba..9dcc9d06134359d09852fd60361515275507e024 100644 GIT binary patch delta 150 zcmZ2?o$uHsz6oNCg^l7<#TlPWH&9{Zn9j$>C_G(&g;8MYb4G#530Z8@&jW=g$G;bz zy#BAy^p}i`LffsF7=`7gA5&%&o316z$UU7~2}rC{V9c8ypvX9Dx||Z@g2@6Y9MjJ! pGxAM;tqoJ5pv+h}c~3f6To+_p2FPsFc1u-8AZFTbsmfg11_0i0EsOvF delta 265 zcmX?hiErI?z6oNCHI3p^#TlPW4#?n`{+f+Zc=GzcLQ`Kd22X$I!vqz{1B>uY-{8x{ zH#z=2SjqHEMn<9Oy#7EnyO|)mwgZJ!<)-VZ1I5k>G4f4+pvWjT{j~-Y=kz{###z&k z2?4n>I*i=Y*DC-C1qH@M)9;wU6vHGoPtHpQ>zABT|r_>XkKOs6A&<<$xUx8XO`raMmS*dL@r?!WX~X5!jDj=H+iGCfs)UevnW1C zwh3a$bj3bqIW~x`(;fPlMYtis2o9;~7auT+utHp(*T<}dEH^n(QkWa!dx+ZiX-ww) zAPbQUn4IV%%m$4Yo_=N(Hd%;ahW*S^a>&75oSK6c+|%RxnZ=ZmEYJg~NlFi?EJ$Tw zKoXy9`N@e58Vwiw(V_vQ2RVeG(ZD}}*$(DuzX{A@$R3$|Fj;u=`%j!G(FrmKIq;wX zHg5v65*s9TrXK{F!>7w2jvNPf{!47``=8{?0!nw&4ILR3L}eV3^9*&9GV@Zb5GtoL zdNRsPf9Am`zy(R71x2aF(+!;&WvAcwVHAXDfA7qw&<^ARG1K<@KFm7K)3th;xweZ= IU|!e&0PExJz5oCK delta 55 zcmZ3sR$$vgfeB(9Rtyp`MK&5m{@=cmg)!B){Xq~T5HoFm5X3C)%*4R3 K{qI!fl??zgbQF{T diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 5b796c95611..c537f78c0ab 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -930,41 +930,41 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -CalendarDate.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDateLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; text-align: center; background-color: transparent; } -CalendarDateLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; text-align: center; background-color: transparent; } -CalendarDateLabel.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; text-align: center; background-color: transparent; } +CalendarDate.pressed { font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDate.disabled { font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDateLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; text-align: center; background-color: transparent; } +CalendarDateLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; text-align: center; background-color: transparent; } +CalendarDateLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; text-align: center; background-color: transparent; } CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } -ComboBoxFocus.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -ComboBoxFocus.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -ComboBoxFocus.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -CommandFocus.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -CommandFocus.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -CommandFocus.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -DialogCommandText.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } -DialogCommandText.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } -DialogCommandText.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } -ErrorLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } -ErrorLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } -FloatingHint.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } -FloatingHint.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +ComboBoxFocus.selected { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +ComboBoxFocus.pressed { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +ComboBoxFocus.disabled { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +CommandFocus.selected { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +CommandFocus.pressed { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +CommandFocus.disabled { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +DialogCommandText.selected { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } +DialogCommandText.pressed { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } +DialogCommandText.disabled { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } +ErrorLabel.selected { font-family: "native:MainRegular"; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +ErrorLabel.pressed { font-family: "native:MainRegular"; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.selected { font-family: "native:MainRegular"; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.pressed { font-family: "native:MainRegular"; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } ListRendererFocus.selected { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } ListRendererFocus.pressed { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } ListRendererFocus.disabled { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -MediaPlayerBack.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerFwd.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerMax.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerPause.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerPlay.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerBack.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerFwd.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerMax.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerPause.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } +MediaPlayerPlay.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } PopupBody.selected { background-color: #f3edf7; padding: 1mm; margin: 0; } PopupBody.pressed { background-color: #f3edf7; padding: 1mm; margin: 0; } PopupBody.disabled { background-color: #f3edf7; padding: 1mm; margin: 0; } @@ -980,9 +980,9 @@ PopupContentPaneRight.disabled { background-color: #f3edf7; padding: 0; margin: PopupContentPaneUpwards.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } PopupContentPaneUpwards.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } PopupContentPaneUpwards.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupFocus.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -PopupFocus.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -PopupFocus.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +PopupFocus.selected { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +PopupFocus.pressed { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } +PopupFocus.disabled { color: #1d1b20; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } PopupItem.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } PopupItem.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } PopupItem.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } @@ -995,19 +995,19 @@ SpinnerSeparator.disabled { background-color: #cac4d0; padding: 0; margin: 0; } StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } -TableCell.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableCell.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableCell.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableHeader.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableHeader.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableHeader.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TimeSpinnerHoursLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerHoursLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerHoursLabel.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerMinutesLabel.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerMinutesLabel.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerMinutesLabel.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } +TableCell.selected { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.disabled { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.selected { margin: 0; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.pressed { margin: 0; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TimeSpinnerHoursLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerHoursLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerHoursLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerMinutesLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerMinutesLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TimeSpinnerMinutesLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } +TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } /* Every UIID above is completed to all four states below. A missing state is @@ -1015,30 +1015,9 @@ TreeNode.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -MenuButtonRight.selected { color: var(--accent-on-color, #ffffff); - background-color: var(--accent-color, #6750a4); - padding: 1.55mm 3.5mm 1.55mm 3.5mm; - margin: 0.5mm; - font-family: "native:MainRegular"; - font-size: 2.5mm; - cn1-background-type: cn1-pill-border; - text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } -MenuButtonRight.pressed { color: var(--accent-on-color, #ffffff); - background-color: var(--accent-color, #6750a4); - padding: 1.55mm 3.5mm 1.55mm 3.5mm; - margin: 0.5mm; - font-family: "native:MainRegular"; - font-size: 2.5mm; - cn1-background-type: cn1-pill-border; - text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } -MenuButtonRight.disabled { color: var(--accent-on-color, #ffffff); - background-color: var(--accent-color, #6750a4); - padding: 1.55mm 3.5mm 1.55mm 3.5mm; - margin: 0.5mm; - font-family: "native:MainRegular"; - font-size: 2.5mm; - cn1-background-type: cn1-pill-border; - text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } +MenuButtonRight.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } +MenuButtonRight.pressed { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } +MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } @media (prefers-color-scheme: dark) { Component { color: #e6e0e9; background-color: #141218; } @@ -1321,9 +1300,9 @@ MenuButtonRight.disabled { color: var(--accent-on-color, #ffffff); GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - PopupFocus.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - PopupFocus.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - PopupFocus.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + PopupFocus.selected { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + PopupFocus.pressed { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + PopupFocus.disabled { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } PopupItem.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } PopupItem.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } PopupItem.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } @@ -1335,18 +1314,18 @@ MenuButtonRight.disabled { color: var(--accent-on-color, #ffffff); StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } - TimeSpinnerHoursLabel.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerHoursLabel.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerHoursLabel.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerMinutesLabel.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerMinutesLabel.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerMinutesLabel.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerHoursLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerHoursLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerHoursLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerMinutesLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerMinutesLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } + TimeSpinnerMinutesLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } /* Dark counterparts for every rule above that names a colour. A light-only state rule is not skipped in dark mode -- with no $Dark entry the light one is what resolves -- so a hard-coded light foreground would be used against the dark surface. */ - MenuButtonRight.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - MenuButtonRight.pressed { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - MenuButtonRight.disabled { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); padding: 1.55mm 3.5mm 1.55mm 3.5mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.pressed { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index d3e32658df1..c1fc8a6704e 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1224,41 +1224,41 @@ GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -CalendarDate.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDateLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; text-align: center; background-color: transparent; } -CalendarDateLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; text-align: center; background-color: transparent; } -CalendarDateLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; text-align: center; background-color: transparent; } +CalendarDate.pressed { font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDate.disabled { font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } +CalendarDateLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; text-align: center; background-color: transparent; } +CalendarDateLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; text-align: center; background-color: transparent; } +CalendarDateLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; text-align: center; background-color: transparent; } CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } -ComboBoxFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -ComboBoxFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -ComboBoxFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -CommandFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -CommandFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -CommandFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -DialogCommandText.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } -DialogCommandText.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } -DialogCommandText.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } -ErrorLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } -ErrorLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } -FloatingHint.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } -FloatingHint.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +ComboBoxFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +ComboBoxFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +ComboBoxFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +CommandFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +CommandFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +CommandFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +DialogCommandText.selected { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } +DialogCommandText.pressed { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } +DialogCommandText.disabled { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } +ErrorLabel.selected { font-family: "native:MainRegular"; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +ErrorLabel.pressed { font-family: "native:MainRegular"; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.selected { font-family: "native:MainRegular"; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } +FloatingHint.pressed { font-family: "native:MainRegular"; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } ListRendererFocus.selected { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } ListRendererFocus.pressed { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } ListRendererFocus.disabled { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -MediaPlayerBack.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerFwd.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerMax.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPause.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPlay.selected { color: #000000; padding: 1.1mm 2.8mm 1.1mm 2.8mm; margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; background-color: rgba(255,255,255,0.82); cn1-background-type: cn1-pill-border; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerBack.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerFwd.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerMax.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerPause.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } +MediaPlayerPlay.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } PopupBody.selected { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } PopupBody.pressed { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } PopupBody.disabled { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } @@ -1274,9 +1274,9 @@ PopupContentPaneRight.disabled { background-color: rgba(249,249,249,0.94); paddi PopupContentPaneUpwards.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } PopupContentPaneUpwards.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } PopupContentPaneUpwards.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -PopupFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -PopupFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +PopupFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +PopupFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } +PopupFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } PopupItem.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } PopupItem.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } PopupItem.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } @@ -1289,19 +1289,19 @@ SpinnerSeparator.disabled { background-color: #c6c6c8; padding: 0; margin: 0; } StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } -TableCell.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableCell.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableCell.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableHeader.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableHeader.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TableHeader.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TimeSpinnerHoursLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerHoursLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerHoursLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerMinutesLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerMinutesLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerMinutesLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TreeNode.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } +TableCell.selected { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.pressed { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableCell.disabled { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.selected { margin: 0; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.pressed { margin: 0; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TableHeader.disabled { margin: 0; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } +TimeSpinnerHoursLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerHoursLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerHoursLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerMinutesLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerMinutesLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TimeSpinnerMinutesLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } +TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } /* Every UIID above is completed to all four states below. A missing state is @@ -1313,6 +1313,23 @@ MenuButtonRight.selected { color: var(--accent-color, #007aff); background-color MenuButtonRight.pressed { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } MenuButtonRight.disabled { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + +/* Every UIID above is completed to all four states below. A missing state is + not inherited: cn1-derive is read at base level only, and a lookup of + .press# that finds nothing resolves against the global default style, + so the control drops its whole appearance for the duration of that state. + Where a state is meant to differ it is declared above and left alone here. */ + + +/* Every UIID above is completed to all four states below. A missing state is + not inherited: cn1-derive is read at base level only, and a lookup of + .press# that finds nothing resolves against the global default style, + so the control drops its whole appearance for the duration of that state. + Where a state is meant to differ it is declared above and left alone here. */ +TODAY.selected { background-color: rgba(120,120,128,0.10); cn1-background-type: cn1-pill-border; margin: 0 2mm 0 2mm; text-align: center; padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } +TODAY.pressed { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } +TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } + @media (prefers-color-scheme: dark) { Component { color: #ffffff; background-color: #000000; } Form { background-color: #1c1c1e; padding: 0; margin: 0; } @@ -1653,9 +1670,9 @@ MenuButtonRight.disabled { color: var(--accent-color, #007aff); background-color GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - PopupFocus.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupFocus.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupFocus.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } PopupItem.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } PopupItem.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } PopupItem.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } @@ -1667,12 +1684,12 @@ MenuButtonRight.disabled { color: var(--accent-color, #007aff); background-color StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } - TimeSpinnerHoursLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerHoursLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerHoursLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerMinutesLabel.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerMinutesLabel.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerMinutesLabel.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerHoursLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerHoursLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerHoursLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerMinutesLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerMinutesLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } + TimeSpinnerMinutesLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } /* Dark counterparts for every rule above that names a colour. A light-only state rule is not skipped in dark mode -- with no $Dark entry the light @@ -1681,4 +1698,14 @@ MenuButtonRight.disabled { color: var(--accent-color, #007aff); background-color MenuButtonRight.selected { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } MenuButtonRight.pressed { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } MenuButtonRight.disabled { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + + /* Dark counterparts for every rule above that names a colour. A light-only + state rule is not skipped in dark mode -- with no $Dark entry the light + one is what resolves -- so a hard-coded light foreground would be used + against the dark surface. */ + TODAY { cn1-derive: SpinnerRenderer; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + + TODAY.selected { background-color: rgba(120,120,128,0.18); cn1-background-type: cn1-pill-border; margin: 0 2mm 0 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + TODAY.pressed { background-color: transparent; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + TODAY.disabled { background-color: transparent; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } } From 026379018dd2d95bab973919dbd49edd5da333dd Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 07:15:18 +0300 Subject: [PATCH 11/29] The light-to-dark map was applied sequentially, so a swap pair cancelled itself Both reported rules are symptoms of one bug in the generator. The palette map was applied with a chain of str.replace calls, and Material maps #49454f to #cac4d0 and #cac4d0 to #49454f. Run in order, the first substitution produces a value the second turns straight back, so every on-surface-variant foreground came out of the generator still holding its light value: the disabled TimeSpinner labels at #49454f on the #141218 dark surface, and 35 rules like them. The map is one simultaneous regex pass now, which is the only form that is correct when the palette contains a swap. The iOS half had a plain omission -- no entry for #000000, which is what Label carries, so PopupItem's expanded states painted black text on the dark popup. I had seen #000000 in the unmapped-colour report and dismissed it as belonging to rules that predate this change. It did not; it was in the generated ones too. Fixing the two values in place turned out to be the wrong instinct and I undid it: replacing every #49454f in my dark rules also hit the 16 that were correct, having come from a light #cac4d0, and put a light outline on the dark popup panes. The dark side for these UIIDs is regenerated wholesale from the light rules instead, so one rule produces it rather than a mix of hand edits and patches. Regenerating surfaced four more colours the map did not cover, all of them iOS values reachable only through an expanded derive -- the picker wheel's selection band, FlatButton's pressed fill and glass border. Each is mapped to the value the theme's own dark block already uses for that surface. The report is empty now, including GlassTutorial's scrim, which is declared an identity rather than left to reappear every run: a permanently-noisy report is what let #000000 through. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 239942 -> 258167 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 267942 -> 284657 bytes Themes/AndroidMaterialTheme.res | Bin 239942 -> 258167 bytes Themes/iOSModernTheme.res | Bin 267942 -> 284657 bytes native-themes/android-material/theme.css | 245 ++++++++--------- native-themes/ios-modern/theme.css | 258 ++++++++---------- 6 files changed, 230 insertions(+), 273 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 9dcc9d06134359d09852fd60361515275507e024..e6007cc3b6f3c99cbc8b85bbf10b79b6e1fff491 100644 GIT binary patch delta 7979 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 diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 9dcc9d06134359d09852fd60361515275507e024..e6007cc3b6f3c99cbc8b85bbf10b79b6e1fff491 100644 GIT binary patch delta 7979 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 diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index c537f78c0ab..c15734d57b3 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -1048,79 +1048,9 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon FlatButton { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - /* Dark segmented button: the same outline/fill pairing against the dark - surface. cn1-background-type and the border are re-declared because the - compiler does not carry them into the $Dark entries. */ - ToggleButton { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButton.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - - ToggleButtonFirst { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonFirst.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonFirst.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonFirst.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - ToggleButtonLast { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonLast.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonLast.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonLast.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - ToggleButtonOnly { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonOnly.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonOnly.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - ToggleButtonOnly.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - - /* The directional panes need their own dark entries: dark resolution - only uses a $Dark that exists, so without these they would keep - the light fill under dark-mode text. */ - PopupContentPaneUpwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneDownwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - /* Dark base and selected for the FlatButton aliases. A dark state that - does not exist resolves to the LIGHT rule of the same name, so a focused - media control in dark mode was picking up the light accent. */ - MediaPlayerPlay { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerPlay.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerPause { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerPause.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerFwd { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerFwd.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerBack { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerBack.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerMax { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerMax.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerPlay.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerPause.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - MediaPlayerFwd.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerFwd.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - MediaPlayerBack.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerBack.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - MediaPlayerMax.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - MediaPlayerMax.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; } - - /* Dark palette for the UIIDs filled in above. Only the colours change; - geometry is inherited from the light rules, which the compiler does - carry into $Dark for plain properties. */ - FloatingHint { color: #cac4d0; background-color: transparent; } - FloatingHint.disabled { color: #5c5967; background-color: transparent; } - ErrorLabel { color: #f2b8b5; background-color: transparent; } - ErrorLabel.disabled { color: #5c5967; background-color: transparent; } - TreeNode { color: #e6e0e9; background-color: transparent; } - TreeNode.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - TreeNode.disabled { color: #5c5967; background-color: transparent; } - TableCell { color: #e6e0e9; background-color: transparent; } - TableHeader { color: #cac4d0; background-color: transparent; } - ComboBoxFocus { background-color: var(--accent-container-color-dark, #4f378b); } - PopupBody { background-color: #211f26; } - CalendarDate { color: #e6e0e9; background-color: transparent; } - CalendarDate.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); } - CalendarDateLabel { color: #cac4d0; background-color: transparent; } - SpinnerSeparator { background-color: #49454f; } - ListRendererFocus { background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus { background-color: var(--accent-container-color-dark, #4f378b); } - DialogCommandText { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + + + FlatButton.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } TextField { color: #e6e0e9; background-color: transparent; border: 0.2mm solid #938f99; border-radius: 0.55mm; } @@ -1237,57 +1167,23 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon PhoneVerificationError { color: #f2b8b5; } PhoneVerificationLink { color: var(--accent-color-dark, #d0bcff); } - CalendarDate.pressed { color: #e6e0e9; background-color: transparent; } - CalendarDate.disabled { color: #e6e0e9; background-color: transparent; } - CalendarDateLabel.selected { color: #cac4d0; background-color: transparent; } - CalendarDateLabel.pressed { color: #cac4d0; background-color: transparent; } - CalendarDateLabel.disabled { color: #cac4d0; background-color: transparent; } - ComboBoxFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); } - ComboBoxFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); } - ComboBoxFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); } - DialogCommandText.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - DialogCommandText.pressed { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - DialogCommandText.disabled { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - ErrorLabel.selected { color: #f2b8b5; background-color: transparent; } - ErrorLabel.pressed { color: #f2b8b5; background-color: transparent; } - FloatingHint.selected { color: #cac4d0; background-color: transparent; } - FloatingHint.pressed { color: #cac4d0; background-color: transparent; } - ListRendererFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); } - ListRendererFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); } - ListRendererFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); } - PopupBody.selected { background-color: #211f26; } - PopupBody.pressed { background-color: #211f26; } - PopupBody.disabled { background-color: #211f26; } - PopupContentPaneDownwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneDownwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneDownwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - SpinnerSeparator.selected { background-color: #49454f; } - SpinnerSeparator.pressed { background-color: #49454f; } - SpinnerSeparator.disabled { background-color: #49454f; } - TableCell.selected { color: #e6e0e9; background-color: transparent; } - TableCell.pressed { color: #e6e0e9; background-color: transparent; } - TableCell.disabled { color: #e6e0e9; background-color: transparent; } - TableHeader.selected { color: #cac4d0; background-color: transparent; } - TableHeader.pressed { color: #cac4d0; background-color: transparent; } - TableHeader.disabled { color: #cac4d0; background-color: transparent; } - TreeNode.pressed { color: #e6e0e9; background-color: transparent; } + + + + /* Dark counterparts for every rule above that names a colour. A light-only state rule is not skipped in dark mode -- with no $Dark entry the light one is what resolves -- so a hard-coded light foreground would be used against the dark surface. */ + CalendarDate { cn1-derive: Label; color: #e6e0e9; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } + CalendarDate.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); } + CalendarDate.pressed { font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } + CalendarDate.disabled { font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } + CalendarDateLabel { cn1-derive: SecondaryLabel; color: #cac4d0; text-align: center; background-color: transparent; } + CalendarDateLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; text-align: center; background-color: transparent; } + CalendarDateLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; text-align: center; background-color: transparent; } + CalendarDateLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; text-align: center; background-color: transparent; } CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } @@ -1296,10 +1192,72 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } + ComboBoxFocus { cn1-derive: Label; background-color: var(--accent-container-color-dark, #4f378b); } + ComboBoxFocus.selected { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + ComboBoxFocus.pressed { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + ComboBoxFocus.disabled { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus { cn1-derive: Label; background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus.selected { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus.pressed { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + CommandFocus.disabled { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } + DialogCommandText { cn1-derive: Label; color: var(--accent-color-dark, #d0bcff); text-align: center; } + DialogCommandText.selected { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color-dark, #d0bcff); text-align: center; } + DialogCommandText.pressed { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color-dark, #d0bcff); text-align: center; } + DialogCommandText.disabled { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color-dark, #d0bcff); text-align: center; } + ErrorLabel { cn1-derive: SecondaryLabel; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } + ErrorLabel.selected { font-family: "native:MainRegular"; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } + ErrorLabel.pressed { font-family: "native:MainRegular"; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } + ErrorLabel.disabled { color: #5c5967; background-color: transparent; } + FloatingHint { cn1-derive: SecondaryLabel; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } + FloatingHint.selected { font-family: "native:MainRegular"; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } + FloatingHint.pressed { font-family: "native:MainRegular"; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } + FloatingHint.disabled { color: #5c5967; background-color: transparent; } GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } + ListRendererFocus { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + ListRendererFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + ListRendererFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + ListRendererFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + MediaPlayerBack.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } + MediaPlayerBack.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerBack.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerFwd.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } + MediaPlayerFwd.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerFwd.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerMax.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } + MediaPlayerMax.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerMax.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerPause.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } + MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerPause.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerPlay.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } + MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } + MediaPlayerPlay.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } + MenuButtonRight.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.pressed { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + PopupBody { background-color: #211f26; padding: 1mm; margin: 0; } + PopupBody.selected { background-color: #211f26; padding: 1mm; margin: 0; } + PopupBody.pressed { background-color: #211f26; padding: 1mm; margin: 0; } + PopupBody.disabled { background-color: #211f26; padding: 1mm; margin: 0; } + PopupContentPaneDownwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneDownwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneDownwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneDownwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneLeft.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneRight.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } + PopupContentPaneUpwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } PopupFocus.selected { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } PopupFocus.pressed { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } PopupFocus.disabled { color: #e6e0e9; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } @@ -1310,22 +1268,43 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } + SpinnerSeparator { background-color: #49454f; padding: 0; margin: 0; } + SpinnerSeparator.selected { background-color: #49454f; padding: 0; margin: 0; } + SpinnerSeparator.pressed { background-color: #49454f; padding: 0; margin: 0; } + SpinnerSeparator.disabled { background-color: #49454f; padding: 0; margin: 0; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } - TimeSpinnerHoursLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerHoursLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerHoursLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerMinutesLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerMinutesLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - TimeSpinnerMinutesLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } - - /* Dark counterparts for every rule above that names a colour. A light-only - state rule is not skipped in dark mode -- with no $Dark entry the light - one is what resolves -- so a hard-coded light foreground would be used - against the dark surface. */ - MenuButtonRight.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - MenuButtonRight.pressed { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } + TableCell { cn1-derive: Label; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableCell.selected { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableCell.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableCell.disabled { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader { cn1-derive: Label; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader.selected { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader.pressed { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TimeSpinnerHoursLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } + TimeSpinnerHoursLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } + TimeSpinnerHoursLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } + TimeSpinnerMinutesLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } + TimeSpinnerMinutesLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } + TimeSpinnerMinutesLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } + ToggleButton { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButton.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonFirst.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonFirst.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonFirst.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonLast.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonLast.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonLast.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonOnly.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonOnly.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonOnly.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + TreeNode { cn1-derive: Label; color: #e6e0e9; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + TreeNode.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } + TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + TreeNode.disabled { color: #5c5967; background-color: transparent; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index c1fc8a6704e..49a2a0479d7 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1352,76 +1352,9 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce /* Gray button (.gray): white label on a slightly lighter dark glass pill. */ FlatButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - /* Dark segmented control. The pill background type is re-declared for the - same reason as the buttons above: it is not carried into $Dark. */ - ToggleButton { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } - ToggleButton.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButton.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButton.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } - - ToggleButtonFirst { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } - ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButtonFirst.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } - ToggleButtonLast { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } - ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButtonLast.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } - ToggleButtonOnly { color: #ffffff; background-color: rgba(58,58,60,0.78); cn1-background-type: cn1-pill-border; } - ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; } - ToggleButtonOnly.disabled { color: #636366; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; } - - /* The directional panes need their own dark entries: dark resolution - only uses a $Dark that exists, so without these they would keep - the light fill under dark-mode text. */ - PopupContentPaneUpwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneDownwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - /* Dark base and selected for the FlatButton aliases. A dark state that - does not exist resolves to the LIGHT rule of the same name, so a focused - media control in dark mode was picking up the light accent. */ - MediaPlayerPlay { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPlay.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPause { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPause.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerFwd { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerFwd.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerBack { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerBack.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerMax { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerMax.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPlay.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } - MediaPlayerPlay.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } - MediaPlayerPause.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } - MediaPlayerPause.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } - MediaPlayerFwd.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } - MediaPlayerFwd.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } - MediaPlayerBack.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } - MediaPlayerBack.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } - MediaPlayerMax.pressed { color: #ffffff; background-color: rgba(110,105,100,0.80); cn1-background-type: cn1-pill-border; } - MediaPlayerMax.disabled { color: #636366; background-color: rgba(134,127,122,0.55); cn1-background-type: cn1-pill-border; } - - /* Dark palette for the UIIDs filled in above. */ - FloatingHint { color: #8e8e93; background-color: transparent; } - FloatingHint.disabled { color: #48484a; background-color: transparent; } - ErrorLabel { color: #ff453a; background-color: transparent; } - ErrorLabel.disabled { color: #48484a; background-color: transparent; } - TreeNode { color: #ffffff; background-color: transparent; } - TreeNode.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - TreeNode.disabled { color: #48484a; background-color: transparent; } - TableCell { color: #ffffff; background-color: transparent; } - TableHeader { color: #8e8e93; background-color: transparent; } - ComboBoxFocus { background-color: rgba(10,132,255,0.22); } - PopupBody { background-color: rgba(28,28,30,0.94); } - CalendarDate { color: #ffffff; background-color: transparent; } - CalendarDate.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } - CalendarDateLabel { color: #8e8e93; background-color: transparent; } - SpinnerSeparator { background-color: #38383a; } - ListRendererFocus { background-color: rgba(10,132,255,0.22); } - CommandFocus { background-color: rgba(10,132,255,0.22); } - DialogCommandText { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + + + FlatButton.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } /* Prominent filled button: white label on the OPAQUE dark accent pill. */ @@ -1607,57 +1540,25 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce PhoneVerificationError { color: #ff453a; } PhoneVerificationLink { color: var(--accent-color-dark, #0a84ff); } - CalendarDate.pressed { color: #ffffff; background-color: transparent; } - CalendarDate.disabled { color: #ffffff; background-color: transparent; } - CalendarDateLabel.selected { color: #8e8e93; background-color: transparent; } - CalendarDateLabel.pressed { color: #8e8e93; background-color: transparent; } - CalendarDateLabel.disabled { color: #8e8e93; background-color: transparent; } - ComboBoxFocus.selected { background-color: rgba(10,132,255,0.22); } - ComboBoxFocus.pressed { background-color: rgba(10,132,255,0.22); } - ComboBoxFocus.disabled { background-color: rgba(10,132,255,0.22); } - CommandFocus.selected { background-color: rgba(10,132,255,0.22); } - CommandFocus.pressed { background-color: rgba(10,132,255,0.22); } - CommandFocus.disabled { background-color: rgba(10,132,255,0.22); } - DialogCommandText.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - DialogCommandText.pressed { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - DialogCommandText.disabled { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - ErrorLabel.selected { color: #ff453a; background-color: transparent; } - ErrorLabel.pressed { color: #ff453a; background-color: transparent; } - FloatingHint.selected { color: #8e8e93; background-color: transparent; } - FloatingHint.pressed { color: #8e8e93; background-color: transparent; } - ListRendererFocus.selected { background-color: rgba(10,132,255,0.22); } - ListRendererFocus.pressed { background-color: rgba(10,132,255,0.22); } - ListRendererFocus.disabled { background-color: rgba(10,132,255,0.22); } - PopupBody.selected { background-color: rgba(28,28,30,0.94); } - PopupBody.pressed { background-color: rgba(28,28,30,0.94); } - PopupBody.disabled { background-color: rgba(28,28,30,0.94); } - PopupContentPaneDownwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneDownwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneDownwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - SpinnerSeparator.selected { background-color: #38383a; } - SpinnerSeparator.pressed { background-color: #38383a; } - SpinnerSeparator.disabled { background-color: #38383a; } - TableCell.selected { color: #ffffff; background-color: transparent; } - TableCell.pressed { color: #ffffff; background-color: transparent; } - TableCell.disabled { color: #ffffff; background-color: transparent; } - TableHeader.selected { color: #8e8e93; background-color: transparent; } - TableHeader.pressed { color: #8e8e93; background-color: transparent; } - TableHeader.disabled { color: #8e8e93; background-color: transparent; } - TreeNode.pressed { color: #ffffff; background-color: transparent; } + + + + + + /* Dark counterparts for every rule above that names a colour. A light-only state rule is not skipped in dark mode -- with no $Dark entry the light one is what resolves -- so a hard-coded light foreground would be used against the dark surface. */ + CalendarDate { cn1-derive: Label; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } + CalendarDate.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } + CalendarDate.pressed { font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } + CalendarDate.disabled { font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } + CalendarDateLabel { cn1-derive: SecondaryLabel; color: #8e8e93; text-align: center; background-color: transparent; } + CalendarDateLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; text-align: center; background-color: transparent; } + CalendarDateLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; text-align: center; background-color: transparent; } + CalendarDateLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; text-align: center; background-color: transparent; } CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } @@ -1666,46 +1567,123 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } + ComboBoxFocus { cn1-derive: Label; background-color: rgba(10,132,255,0.22); } + ComboBoxFocus.selected { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + ComboBoxFocus.pressed { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + ComboBoxFocus.disabled { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + CommandFocus { cn1-derive: Label; background-color: rgba(10,132,255,0.22); } + CommandFocus.selected { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + CommandFocus.pressed { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + CommandFocus.disabled { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + DialogCommandText { cn1-derive: Label; color: var(--accent-color-dark, #0a84ff); text-align: center; } + DialogCommandText.selected { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color-dark, #0a84ff); text-align: center; } + DialogCommandText.pressed { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color-dark, #0a84ff); text-align: center; } + DialogCommandText.disabled { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color-dark, #0a84ff); text-align: center; } + ErrorLabel { cn1-derive: SecondaryLabel; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } + ErrorLabel.selected { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } + ErrorLabel.pressed { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } + ErrorLabel.disabled { color: #38383a; background-color: transparent; } + FloatingHint { cn1-derive: SecondaryLabel; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } + FloatingHint.selected { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } + FloatingHint.pressed { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } + FloatingHint.disabled { color: #38383a; background-color: transparent; } GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - PopupFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupItem.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } - PopupItem.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } - PopupItem.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } + ListRendererFocus { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + ListRendererFocus.selected { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + ListRendererFocus.pressed { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + ListRendererFocus.disabled { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } + MediaPlayerBack.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerBack.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerBack.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerFwd.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerFwd.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerFwd.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerMax.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerMax.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerMax.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPause.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPause.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPause.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPlay.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPlay.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MediaPlayerPlay.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } + MenuButtonRight.selected { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + MenuButtonRight.pressed { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + MenuButtonRight.disabled { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } + PopupBody { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } + PopupBody.selected { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } + PopupBody.pressed { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } + PopupBody.disabled { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } + PopupContentPaneDownwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneDownwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneDownwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneDownwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneLeft.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneRight.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupContentPaneUpwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } + PopupFocus.selected { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.pressed { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupFocus.disabled { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } + PopupItem.selected { color: #ffffff; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } + PopupItem.pressed { color: #ffffff; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } + PopupItem.disabled { color: #ffffff; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } + SpinnerSeparator { background-color: #38383a; padding: 0; margin: 0; } + SpinnerSeparator.selected { background-color: #38383a; padding: 0; margin: 0; } + SpinnerSeparator.pressed { background-color: #38383a; padding: 0; margin: 0; } + SpinnerSeparator.disabled { background-color: #38383a; padding: 0; margin: 0; } StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } + TODAY { cn1-derive: SpinnerRenderer; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + TODAY.selected { background-color: rgba(120,120,128,0.18); cn1-background-type: cn1-pill-border; margin: 0 2mm 0 2mm; text-align: center; padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + TODAY.pressed { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + TableCell { cn1-derive: Label; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableCell.selected { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableCell.pressed { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableCell.disabled { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader { cn1-derive: Label; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader.selected { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader.pressed { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } + TableHeader.disabled { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TimeSpinnerHoursLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerHoursLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerHoursLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerMinutesLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerMinutesLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerMinutesLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - - /* Dark counterparts for every rule above that names a colour. A light-only - state rule is not skipped in dark mode -- with no $Dark entry the light - one is what resolves -- so a hard-coded light foreground would be used - against the dark surface. */ - MenuButtonRight.selected { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - MenuButtonRight.pressed { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - MenuButtonRight.disabled { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - - /* Dark counterparts for every rule above that names a colour. A light-only - state rule is not skipped in dark mode -- with no $Dark entry the light - one is what resolves -- so a hard-coded light foreground would be used - against the dark surface. */ - TODAY { cn1-derive: SpinnerRenderer; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } - - TODAY.selected { background-color: rgba(120,120,128,0.18); cn1-background-type: cn1-pill-border; margin: 0 2mm 0 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } - TODAY.pressed { background-color: transparent; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } - TODAY.disabled { background-color: transparent; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } + ToggleButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButton.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButton.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButton.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + TreeNode { cn1-derive: Label; color: #ffffff; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + TreeNode.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } + TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } + TreeNode.disabled { color: #38383a; background-color: transparent; } } From 799589814e554d22d436dd41136780fcac223e37 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 07:28:54 +0300 Subject: [PATCH 12/29] Bind every foreground over an accent fill to its on-accent token The iOS selected toggle painted a hard-coded white label over a fill bound to var(--accent-color). Both themes expose an on-accent token precisely so an app can replace the accent at runtime through addThemeProps and have the text follow it; the existing rules in each theme already pair the two. Hard-coding the foreground means an app that supplies a light accent gets white on light. Enumerating rather than fixing the reported rule found 36, evenly split. iOS: the four ToggleButton names in selected and pressed, plus CalendarDate.selected, in both appearances. Material had the same defect from the other direction -- ComboBoxFocus, CommandFocus and PopupFocus put a literal on-surface colour over var(--accent-container-color), so overriding the accent container would have left the focused row's text at the old value. Each foreground now uses the token the theme itself pairs with that fill: --accent-on-color over --accent-color, --accent-on-container-color over --accent-container-color, and their dark counterparts where the theme declares them. iOS declares one on-accent token and uses it in both appearances, which the dark map now records as an identity so regeneration preserves it. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 258167 -> 259397 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 284657 -> 285724 bytes Themes/AndroidMaterialTheme.res | Bin 258167 -> 259397 bytes Themes/iOSModernTheme.res | Bin 284657 -> 285724 bytes native-themes/android-material/theme.css | 96 +++++++++--------- native-themes/ios-modern/theme.css | 36 +++---- 6 files changed, 66 insertions(+), 66 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index e6007cc3b6f3c99cbc8b85bbf10b79b6e1fff491..b457208245e8f1e5a7f0cbc712b0ef9ee61ee682 100644 GIT binary patch delta 830 zcmY*V&ubH55bf;NP`gPsN%Lcqnl^=kZA?RKy;zzU8%2syl%R*uCPCYihvZQ4qBe+- zi%9hYN9m=1Ks?ldd$0*2C}>eUl%6c42QQI=()yzTQ)jRD}IRHIck{GFpsa(pkU(~9L0Q+c7K?L(N<-{r?U{m zwKPm@PSiaGr~8joR_KBA!%*J#g@L!BYp-Qx`5C;glZMzdEJ9bc$77 c{7ey(`j8&>u`-4CJ)(tu3mVlKkLcO>2iQ6j2mk;8 delta 587 zcmXw$O=uHQ6oq?ck`PSnOq;YuHywRjCkaLl$CnWAnGL2({9HV(VWK zf`%tVQae0yrwTntm3ypW6$~zQfL!VGcqs^);Yh=%nz=E73?na&d_7a z#cqx}Ovmt3SQ&FeUh~z-*?jY1`icoyL5J9{QZL=rc+DT>@;w?b zaFiJ(C#eQBsu(yzFAVh2jR;h_KZ^adn1+)=BgoL~r8Z;LVFxuvgl)HtF3^WD;oazy z+|+*&p4NVo@ylb_cDIblNw`>`>>yQ>+l`4y_=yZ0r{V-ucIuN#@6N%`H{ytPQ)C)$ zDkeqpgA|U@#0*>%N~4?V3kXs+jT|js7c7|(mEs^L6;klgT9f_Epo^AA1#2wqu{YVh zBaN%*q}pw`csz^qN^9l&Ji-*qA<8Q`$dBxrKiJVr;S@YE{KkO37W$(gS;z-tXD mcGxQPus|_JNybcI{nVaY{5_gp;pEDHEFrF8Lk_SUgWx!#|W zBMB{4u&pf33Z3*UvsIiSdcp9HXr0>-v`H(LK{LND!B;G8peMjzn=+0n;W^5Qw)^lR zY*%RHfllj*LV!PZ1=Otse$!{w8E*>%=9k@z*3AAi zE*d8}DJPCfY0eJf=IE`(;l18_pZERtRX65mXnHB!?^)Ltwp?cSF&MqNNSMqOF~N$D zF6LbfFmr@{Iz<><-H?_H1jL?ztHVEFucL!mVw^EC!)Fg^=1Q32(^A{7OI-Q~WdWP6 zynLO&jKVU~U`?TqI|@BC-o^hxVeDrujLsTdJV!4bg^?(KipM1F3(0ZpW10(RqR0do zZp2FQt|IG8AoMaog1e2|TOAg?I@eUl%6c42QQI=()yzTQ)jRD}IRHIck{GFpsa(pkU(~9L0Q+c7K?L(N<-{r?U{m zwKPm@PSiaGr~8joR_KBA!%*J#g@L!BYp-Qx`5C;glZMzdEJ9bc$77 c{7ey(`j8&>u`-4CJ)(tu3mVlKkLcO>2iQ6j2mk;8 delta 587 zcmXw$O=uHQ6oq?ck`PSnOq;YuHywRjCkaLl$CnWAnGL2({9HV(VWK zf`%tVQae0yrwTntm3ypW6$~zQfL!VGcqs^);Yh=%nz=E73?na&d_7a z#cqx}Ovmt3SQ&FeUh~z-*?jY1`icoyL5J9{QZL=rc+DT>@;w?b zaFiJ(C#eQBsu(yzFAVh2jR;h_KZ^adn1+)=BgoL~r8Z;LVFxuvgl)HtF3^WD;oazy z+|+*&p4NVo@ylb_cDIblNw`>`>>yQ>+l`4y_=yZ0r{V-ucIuN#@6N%`H{ytPQ)C)$ zDkeqpgA|U@#0*>%N~4?V3kXs+jT|js7c7|(mEs^L6;klgT9f_Epo^AA1#2wqu{YVh zBaN%*q}pw`csz^qN^9l&Ji-*qA<8Q`$dBxrKiJVr;S@YE{KkO37W$(gS;z-tXD mcGxQPus|_JNybcI{nVaY{5_gp;pEDHEFrF8Lk_SUgWx!#|W zBMB{4u&pf33Z3*UvsIiSdcp9HXr0>-v`H(LK{LND!B;G8peMjzn=+0n;W^5Qw)^lR zY*%RHfllj*LV!PZ1=Otse$!{w8E*>%=9k@z*3AAi zE*d8}DJPCfY0eJf=IE`(;l18_pZERtRX65mXnHB!?^)Ltwp?cSF&MqNNSMqOF~N$D zF6LbfFmr@{Iz<><-H?_H1jL?ztHVEFucL!mVw^EC!)Fg^=1Q32(^A{7OI-Q~WdWP6 zynLO&jKVU~U`?TqI|@BC-o^hxVeDrujLsTdJV!4bg^?(KipM1F3(0ZpW10(RqR0do zZp2FQt|IG8AoMaog1e2|TOAg?I@First, @@ -429,16 +429,16 @@ ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55) control. Each state is written out because cn1-derive is read at base level only. */ ToggleButtonFirst { cn1-derive: ToggleButton; } -ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast { cn1-derive: ToggleButton; } -ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly { cn1-derive: ToggleButton; } -ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } -ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } TextField { @@ -1175,7 +1175,7 @@ PopupContentPaneRight { background-color: rgba(249,249,249,0.94); padding: 0; ma CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } CalendarDate { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.selected { color: #ffffff; background-color: var(--accent-color, #007aff); } +CalendarDate.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); } CalendarDateLabel { cn1-derive: SecondaryLabel; color: #6c6c70; text-align: center; background-color: transparent; } /* DateTimeRenderer swaps the spinner row's UIID to TODAY for the current date and restores it afterwards, so this has to be the same row with an accent: @@ -1552,7 +1552,7 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce one is what resolves -- so a hard-coded light foreground would be used against the dark surface. */ CalendarDate { cn1-derive: Label; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDate.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); } + CalendarDate.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); } CalendarDate.pressed { font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } CalendarDate.disabled { font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } CalendarDateLabel { cn1-derive: SecondaryLabel; color: #8e8e93; text-align: center; background-color: transparent; } @@ -1670,17 +1670,17 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce TimeSpinnerMinutesLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } TimeSpinnerMinutesLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } ToggleButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButton.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButton.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButton.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonFirst.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonFirst.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonLast.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonLast.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonOnly.selected { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonOnly.pressed { color: #ffffff; background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } TreeNode { cn1-derive: Label; color: #ffffff; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } TreeNode.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } From 04abd0adb8b97b2fc5ff70c69c33b47f9c47e00c Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 12:29:56 +0300 Subject: [PATCH 13/29] Narrow the sweep to the UIIDs whose gap is provable The macOS UI suite went red on this branch: AppReviewDialog, ChatView light and dark, ListTheme light and dark, and ValidatorLightweightPicker all differ from their references, and master is green at the commit this branch is based on, so the failures are mine. Those references are the project's own regression guard for shipped screens, and 154 of the 160 tests still match, so this is not a wholesale theme shift -- it is a handful of my definitions changing components that already looked the way someone intended. Two are visible in the diffs and neither is a bug fix. ListTheme's focused row had a blue focus ring and my ListRendererFocus replaced it with a filled band, which is a style opinion about an appearance that was working. AppReviewDialog's command text changed because DialogCommandText, absent before, now centres and accents it. ChatView's messages shift vertically and I could not attribute that to a specific rule by reading the CSS -- which is the point: I was inferring causes from test names rather than knowing them. So the sweep is cut back to the names whose gap is demonstrable rather than plausible: the ToggleButton family, which is the bug this PR was opened for; FloatingHint and ErrorLabel, where the framework seeds ErrorLabel, InputComponentAction and DescriptionLabel to derive from a UIID that nothing defines; and TableCell and TableHeader, where the seed sets transparency and no padding and the guide's own table figures show the difference. Twenty-nine other names go back to being undefined. They may well deserve styling. What they do not deserve is a sweep that changes how shipped screens look with no before-and-after for any of them, which is what this had become. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 259397 -> 178277 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 285724 -> 206789 bytes Themes/AndroidMaterialTheme.res | Bin 259397 -> 178277 bytes Themes/iOSModernTheme.res | Bin 285724 -> 206789 bytes native-themes/android-material/theme.css | 275 ----------------- native-themes/ios-modern/theme.css | 291 ------------------ 6 files changed, 566 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index b457208245e8f1e5a7f0cbc712b0ef9ee61ee682..8e36a01587f227910d41dea844da2322275b805c 100644 GIT binary patch delta 368 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 diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index fd378b740b8e11b5e40ca30869b40337390a964e..bfc702a38d4770a8b21ed094880eff03d612be5a 100644 GIT binary patch delta 424 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%0AeP@5QcV)3WobO*=9_?Q~8!CSaRiFtxjK_If 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�O!ph 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 diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index b457208245e8f1e5a7f0cbc712b0ef9ee61ee682..8e36a01587f227910d41dea844da2322275b805c 100644 GIT binary patch delta 368 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 diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index fd378b740b8e11b5e40ca30869b40337390a964e..bfc702a38d4770a8b21ed094880eff03d612be5a 100644 GIT binary patch delta 424 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%0AeP@5QcV)3WobO*=9_?Q~8!CSaRiFtxjK_If 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�O!ph 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 diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 36a8fb15b6d..1ff7f83cee5 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -208,13 +208,6 @@ TertiaryLabel { cn1-derive: Label; color: #79747e; } SpanLabel { cn1-derive: Label; background-color: transparent; } SpanLabelText { cn1-derive: Label; background-color: transparent; } -/* Material 3 button: fully-rounded "pill" shape via cn1-pill-border - (RoundBorder, CEF-free). border-radius (RoundRectBorder) was leaving - visible artefacts when the button height didn't divide cleanly - the - pill border paints a single rounded fill that scales correctly. - Generous horizontal padding so short labels still get clear pill - ends. cn1-derive doesn't carry cn1-background-type forward, so the - derived UIIDs (RaisedButton, FlatButton) re-declare it explicitly. */ /* Re-declare every state-affecting property (padding, margin, font, text-align) on `.pressed` and `.disabled` so the compiled $press# / $dis# style entries keep IDENTICAL geometry to the base. Without @@ -440,9 +433,6 @@ SliderFull { Slider.disabled { background-color: #e3e3e4; color: #a9a8aa; } SliderFull.disabled { background-color: #a9a8aa; color: #a9a8aa; } -/* Progress indicator: a flat rounded track (no thumb). Distinct from Slider so - the interactive slider can use the M3 purple inactive track + bar thumb while - the progress bar keeps the neutral grey determinate track. */ /* Native Android determinate ProgressBar: SQUARE track (no rounding) and a neutral palette (NOT the accent). Colours below are colour-picked from the native widget, not the M3 token spec. */ @@ -663,12 +653,6 @@ MultiLine2 { cn1-derive: Label; color: #49454f; } MultiLine3 { cn1-derive: Label; color: #79747e; } MultiLine4 { cn1-derive: Label; color: #79747e; } -/* Material 3 dialogs use surface-container-highest (#e6e0e9) so the - dialog sits visibly above the surface background (#fef7ff). All - Dialog sub-UIIDs (Body / Title / ContentPane / CommandArea) are - transparent so the Dialog's surface paints once - otherwise each - sub-region's bgColor draws over Dialog's and reads as a - visibly different shade in the rounded corners. */ /* margin: 0 - see iOS Modern Dialog rule for the rationale. A non-zero margin here forced Dialog.show() to grow the dialog to screen size with the body floating in mostly empty space. */ @@ -816,7 +800,6 @@ PhoneVerificationLink { padding: 1.5mm; } - /* --------------------------------------------------------------------------- * UIIDs the framework assigns that no theme defined. * @@ -839,185 +822,37 @@ FloatingHint.disabled { color: #a9a8aa; background-color: transparent; } ErrorLabel { cn1-derive: SecondaryLabel; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.disabled { color: #a9a8aa; background-color: transparent; } -/* Toolbar search mode swaps the title for a field with its own two UIIDs. */ - -/* Tree rows. */ -TreeNode { cn1-derive: Label; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } -TreeNode.selected { color: var(--accent-color, #6750a4); background-color: transparent; } -TreeNode.disabled { color: #a9a8aa; background-color: transparent; } - - /* Table's documented cell/header UIIDs. The framework does not set these itself -- the chapter tells you to -- so defining them makes the documented pattern land on a real style instead of the default. */ TableCell { cn1-derive: Label; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader { cn1-derive: Label; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -/* Signature capture opens through this button. */ - -/* Pull to refresh: the pulled-down area and its label. */ - -/* Autocomplete drops its suggestions into a popup list. */ - -/* ComboBox and the popup it opens. */ -ComboBoxFocus { cn1-derive: Label; background-color: var(--accent-container-color, #eaddff); } -PopupItem { cn1-derive: Label; } -PopupFocus { cn1-derive: ComboBoxFocus; } - -/* InteractionDialog and the popup dialog family. The four directional content - panes are separate UIIDs because a popup can open in any direction. */ -PopupBody { background-color: #f3edf7; padding: 1mm; margin: 0; } -PopupContentPaneUpwards { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneDownwards { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneLeft { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneRight { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } - - -/* Calendar grid. */ -CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } -CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } -CalendarDate { cn1-derive: Label; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #6750a4); } -CalendarDateLabel { cn1-derive: SecondaryLabel; color: #49454f; text-align: center; background-color: transparent; } - -SpinnerSeparator { background-color: #cac4d0; padding: 0; margin: 0; } -TimeSpinnerHoursLabel { cn1-derive: SecondaryLabel; background-color: transparent; } -TimeSpinnerMinutesLabel { cn1-derive: SecondaryLabel; background-color: transparent; } - -/* The focus style a list renderer applies to the focused row. */ -ListRendererFocus { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - -/* The strip a Form reserves for the platform status bar. */ - -/* Side menu chrome. */ /* SideMenuBar drops this icon-only button into the TitleArea's east slot, so it takes the compact title-command treatment. FlatButton would give it a content button's horizontal padding and pill, widening the title bar. */ -MenuButtonRight { cn1-derive: TitleCommand; } -StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } - -/* Commands, as drawn by the menu rather than the Toolbar. */ -CommandFocus { cn1-derive: Label; background-color: var(--accent-container-color, #eaddff); } -DialogCommandText { cn1-derive: Label; color: var(--accent-color, #6750a4); text-align: center; } - -/* Media transport controls. */ -MediaPlayerPlay { cn1-derive: FlatButton; } -MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerPlay.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerPause { cn1-derive: FlatButton; } -MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerPause.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerFwd { cn1-derive: FlatButton; } -MediaPlayerFwd.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerFwd.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerBack { cn1-derive: FlatButton; } -MediaPlayerBack.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerBack.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerMax { cn1-derive: FlatButton; } -MediaPlayerMax.pressed { background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; } -MediaPlayerMax.disabled { background-color: transparent; color: #a5a0ab; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.65mm 5mm 1.65mm 5mm; } - -/* Map zoom controls and the rich text editor surface. */ -RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } - -/* The tutorial overlay drawn over a form. */ -GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - - /* Every UIID above is completed to all four states below. A missing state is not inherited: cn1-derive is read at base level only, and a lookup of .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -CalendarDate.pressed { font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.disabled { font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDateLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; text-align: center; background-color: transparent; } -CalendarDateLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; text-align: center; background-color: transparent; } -CalendarDateLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; text-align: center; background-color: transparent; } -CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } -CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } -CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } -CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } -CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } -CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } -ComboBoxFocus.selected { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -ComboBoxFocus.pressed { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -ComboBoxFocus.disabled { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -CommandFocus.selected { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -CommandFocus.pressed { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -CommandFocus.disabled { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -DialogCommandText.selected { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } -DialogCommandText.pressed { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } -DialogCommandText.disabled { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color, #6750a4); text-align: center; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } FloatingHint.selected { font-family: "native:MainRegular"; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } -GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } -GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } -GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } -ListRendererFocus.selected { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -ListRendererFocus.pressed { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -ListRendererFocus.disabled { background-color: var(--accent-container-color, #eaddff); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -MediaPlayerBack.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerFwd.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerMax.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerPause.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -MediaPlayerPlay.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color, #6750a4); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } -PopupBody.selected { background-color: #f3edf7; padding: 1mm; margin: 0; } -PopupBody.pressed { background-color: #f3edf7; padding: 1mm; margin: 0; } -PopupBody.disabled { background-color: #f3edf7; padding: 1mm; margin: 0; } -PopupContentPaneDownwards.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneDownwards.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneDownwards.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneLeft.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneLeft.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneLeft.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneRight.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneRight.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneRight.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneUpwards.selected { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneUpwards.pressed { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupContentPaneUpwards.disabled { background-color: #f3edf7; padding: 0; margin: 0; border: 0.2mm solid #cac4d0; } -PopupFocus.selected { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -PopupFocus.pressed { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -PopupFocus.disabled { color: var(--accent-on-container-color, #21005d); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color, #eaddff); } -PopupItem.selected { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } -PopupItem.pressed { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } -PopupItem.disabled { color: #1d1b20; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } -RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } -RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } -RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } -SpinnerSeparator.selected { background-color: #cac4d0; padding: 0; margin: 0; } -SpinnerSeparator.pressed { background-color: #cac4d0; padding: 0; margin: 0; } -SpinnerSeparator.disabled { background-color: #cac4d0; padding: 0; margin: 0; } -StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } -StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } -StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.disabled { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.selected { margin: 0; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.pressed { margin: 0; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #49454f; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TimeSpinnerHoursLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerHoursLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerHoursLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerMinutesLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerMinutesLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TimeSpinnerMinutesLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #49454f; background-color: transparent; } -TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #1d1b20; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } - /* Every UIID above is completed to all four states below. A missing state is not inherited: cn1-derive is read at base level only, and a lookup of .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -MenuButtonRight.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } -MenuButtonRight.pressed { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } -MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color, #6750a4); padding: 1mm 2mm 1mm 2mm; } @media (prefers-color-scheme: dark) { Component { color: #e6e0e9; background-color: #141218; } @@ -1048,9 +883,6 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon FlatButton { color: var(--accent-color-dark, #d0bcff); background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } - - - FlatButton.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; } TextField { color: #e6e0e9; background-color: transparent; border: 0.2mm solid #938f99; border-radius: 0.55mm; } @@ -1167,43 +999,10 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon PhoneVerificationError { color: #f2b8b5; } PhoneVerificationLink { color: var(--accent-color-dark, #d0bcff); } - - - - - /* Dark counterparts for every rule above that names a colour. A light-only state rule is not skipped in dark mode -- with no $Dark entry the light one is what resolves -- so a hard-coded light foreground would be used against the dark surface. */ - CalendarDate { cn1-derive: Label; color: #e6e0e9; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDate.selected { color: var(--accent-on-color-dark, #381e72); background-color: var(--accent-color-dark, #d0bcff); } - CalendarDate.pressed { font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDate.disabled { font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDateLabel { cn1-derive: SecondaryLabel; color: #cac4d0; text-align: center; background-color: transparent; } - CalendarDateLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; text-align: center; background-color: transparent; } - CalendarDateLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; text-align: center; background-color: transparent; } - CalendarDateLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; text-align: center; background-color: transparent; } - CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } - CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } - CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } - CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } - CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } - CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } - CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } - CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } - ComboBoxFocus { cn1-derive: Label; background-color: var(--accent-container-color-dark, #4f378b); } - ComboBoxFocus.selected { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - ComboBoxFocus.pressed { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - ComboBoxFocus.disabled { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus { cn1-derive: Label; background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus.selected { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus.pressed { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - CommandFocus.disabled { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - DialogCommandText { cn1-derive: Label; color: var(--accent-color-dark, #d0bcff); text-align: center; } - DialogCommandText.selected { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color-dark, #d0bcff); text-align: center; } - DialogCommandText.pressed { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color-dark, #d0bcff); text-align: center; } - DialogCommandText.disabled { background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: var(--accent-color-dark, #d0bcff); text-align: center; } ErrorLabel { cn1-derive: SecondaryLabel; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } @@ -1212,70 +1011,6 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon FloatingHint.selected { font-family: "native:MainRegular"; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.disabled { color: #5c5967; background-color: transparent; } - GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - ListRendererFocus { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - ListRendererFocus.selected { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - ListRendererFocus.pressed { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - ListRendererFocus.disabled { background-color: var(--accent-container-color-dark, #4f378b); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - MediaPlayerBack.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } - MediaPlayerBack.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerBack.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerFwd.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } - MediaPlayerFwd.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerFwd.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerMax.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } - MediaPlayerMax.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerMax.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerPause.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } - MediaPlayerPause.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerPause.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerPlay.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; text-align: center; } - MediaPlayerPlay.pressed { background-color: transparent; color: var(--accent-color-dark, #d0bcff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.65mm 5mm 1.65mm 5mm; } - MediaPlayerPlay.disabled { background-color: transparent; color: #5c5967; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.65mm 5mm 1.65mm 5mm; } - MenuButtonRight.selected { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - MenuButtonRight.pressed { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; cn1-background-type: cn1-pill-border; text-align: center; background-color: transparent; color: var(--accent-color-dark, #d0bcff); padding: 1mm 2mm 1mm 2mm; } - PopupBody { background-color: #211f26; padding: 1mm; margin: 0; } - PopupBody.selected { background-color: #211f26; padding: 1mm; margin: 0; } - PopupBody.pressed { background-color: #211f26; padding: 1mm; margin: 0; } - PopupBody.disabled { background-color: #211f26; padding: 1mm; margin: 0; } - PopupContentPaneDownwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneDownwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneDownwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneDownwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneLeft.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneRight.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards.selected { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards.pressed { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupContentPaneUpwards.disabled { background-color: #211f26; padding: 0; margin: 0; border: 0.2mm solid #49454f; } - PopupFocus.selected { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - PopupFocus.pressed { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - PopupFocus.disabled { color: var(--accent-on-container-color-dark, #eaddff); padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; background-color: var(--accent-container-color-dark, #4f378b); } - PopupItem.selected { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } - PopupItem.pressed { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } - PopupItem.disabled { color: #e6e0e9; background-color: transparent; padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; } - RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } - RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } - RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } - RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } - SpinnerSeparator { background-color: #49454f; padding: 0; margin: 0; } - SpinnerSeparator.selected { background-color: #49454f; padding: 0; margin: 0; } - SpinnerSeparator.pressed { background-color: #49454f; padding: 0; margin: 0; } - SpinnerSeparator.disabled { background-color: #49454f; padding: 0; margin: 0; } - StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } - StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } - StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } - StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } TableCell { cn1-derive: Label; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } @@ -1284,12 +1019,6 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon TableHeader.selected { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.pressed { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } - TimeSpinnerHoursLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } - TimeSpinnerHoursLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } - TimeSpinnerHoursLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } - TimeSpinnerMinutesLabel.selected { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } - TimeSpinnerMinutesLabel.pressed { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } - TimeSpinnerMinutesLabel.disabled { padding: 0.5mm 1.5mm 0.5mm 1.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #cac4d0; background-color: transparent; } ToggleButton { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } @@ -1303,8 +1032,4 @@ MenuButtonRight.disabled { margin: 0.5mm; font-family: "native:MainRegular"; fon ToggleButtonOnly.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } - TreeNode { cn1-derive: Label; color: #e6e0e9; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } - TreeNode.selected { color: var(--accent-color-dark, #d0bcff); background-color: transparent; } - TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } - TreeNode.disabled { color: #5c5967; background-color: transparent; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 458dd87fde1..e8cf1fdd883 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -578,7 +578,6 @@ SliderFull { padding: 0; margin: 0; } -/* Disabled slider is translucent (faded track, fill and thumb). */ /* paintNativeSlider fills with the style's solid bgColor (alpha/transparency is ignored), so the disabled tones must be SOLID light colours, not rgba() -- an rgba fill rendered as full-saturation blue and read as "not disabled". */ @@ -670,8 +669,6 @@ Title { } MainTitle { cn1-derive: Title; } -/* iOS 26 nav-bar items: a circular translucent-white glass button holding a blue - glyph (no text). cn1-round-border draws the circle; rgba gives the glass fill. */ /* Leading/trailing margins reproduce the native bar-item inset from the screen edge (~2.6mm); flush-to-edge circles were the single biggest Toolbar diff. */ /* Item 5: the toolbar command glyph/text is sized from the command style's font @@ -817,16 +814,10 @@ Tab { font-size: 1.65mm; text-align: center; } -/* iOS 26 bottom tab bar: the selected item sits on its OWN brighter frosted - sub-capsule (a lighter glass pill INSIDE the outer bar) and turns blue -- a - layered "glass on glass" highlight, like the native UITabBar. */ /* iOS 26: the SELECTION capsule is the Liquid Glass indicator (the bright frosted glass blob), sitting on a more translucent bar -- so the glass material/refraction/ specular belongs HERE, not on the outer bar. backdrop-filter makes this the glass hero; the bar (TabsContainer) is dialled down to a plainer translucent surface. */ -/* The selected-tab background is drawn by the single sliding selection capsule - (Tabs.paintSelectionCapsule, tabsSelectionCapsuleBool) so it can tween between - tabs -- so the per-tab selected fill is transparent. */ /* The selected tab paints NO background of its own -- the single sliding glass selection capsule (Tabs.paintSelectionCapsule) is the only selection visual. A cn1-pill-border here painted a SECOND, smaller, brighter pill on top of the @@ -976,14 +967,6 @@ MultiLine4 { padding: 0; } -/* Dialog uses a translucent surface so any backdrop (form bg or - the test harness's diagonal-stripe texture) reads through - - approximates the iOS 26 vibrancy effect within the CEF-free - subset. DialogBody is left fully transparent: it was previously - painting its own opaque shade on top of Dialog and reading as a - visibly different colour. All Dialog sub-UIIDs share the same - translucent surface (or stay transparent so Dialog's surface - shows through). */ /* margin: 0 - CN1's Dialog uses its own UIID margin as a positioning hint; a non-zero value here makes Dialog.show() lay the dialog out at screen-minus-margin (looks correct for a small modal but for @@ -1021,7 +1004,6 @@ DialogCenteredTitle { cn1-derive: Container; background-color: transparent; padd DialogContentPane { background-color: transparent; padding: 2mm; margin: 0; } /* Action row: a hairline separator above the buttons, like the native alert. */ DialogCommandArea { background-color: transparent; padding: 0; border-top: 0.2mm solid #c6c6c8; } -/* Alert actions are blue, ~17pt, centred and split the row. */ /* Defined standalone (NOT cn1-derive: Button) so the Button pill background / cn1-pill-border can never leak in and turn the flush alert actions into pills. */ DialogButton { cn1-background-type: cn1-none; color: var(--accent-color, #007aff); background-color: transparent; font-family: "native:MainRegular"; font-size: 2.9mm; padding: 2mm; margin: 0; border-radius: 0; text-align: center; } @@ -1131,7 +1113,6 @@ PhoneVerificationLink { padding: 1.5mm; } - /* --------------------------------------------------------------------------- * UIIDs the framework assigns that no theme defined. * @@ -1149,186 +1130,30 @@ FloatingHint.disabled { color: #c6c6c8; background-color: transparent; } ErrorLabel { cn1-derive: SecondaryLabel; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.disabled { color: #c6c6c8; background-color: transparent; } - -TreeNode { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } -TreeNode.selected { color: var(--accent-color, #007aff); background-color: transparent; } -TreeNode.disabled { color: #c6c6c8; background-color: transparent; } - - TableCell { cn1-derive: Label; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader { cn1-derive: Label; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } - - - -ComboBoxFocus { cn1-derive: Label; background-color: rgba(0,122,255,0.14); } -PopupItem { cn1-derive: Label; } -PopupFocus { cn1-derive: ComboBoxFocus; } - -PopupBody { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } -PopupContentPaneUpwards { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneDownwards { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneLeft { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneRight { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } - - -CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } -CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } -CalendarDate { cn1-derive: Label; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); } -CalendarDateLabel { cn1-derive: SecondaryLabel; color: #6c6c70; text-align: center; background-color: transparent; } -/* DateTimeRenderer swaps the spinner row's UIID to TODAY for the current date - and restores it afterwards, so this has to be the same row with an accent: - deriving anything else changes the row height mid-wheel. */ -TODAY { cn1-derive: SpinnerRenderer; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } - -SpinnerSeparator { background-color: #c6c6c8; padding: 0; margin: 0; } -TimeSpinnerHoursLabel { cn1-derive: SecondaryLabel; background-color: transparent; } -TimeSpinnerMinutesLabel { cn1-derive: SecondaryLabel; background-color: transparent; } - -ListRendererFocus { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - - -/* SideMenuBar drops this icon-only button into the TitleArea's east slot, so - it takes the compact title-command treatment. FlatButton would give it a - content button's horizontal padding and pill, widening the title bar. */ -MenuButtonRight { cn1-derive: TitleCommand; } -StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } - -CommandFocus { cn1-derive: Label; background-color: rgba(0,122,255,0.14); } -DialogCommandText { cn1-derive: Label; color: var(--accent-color, #007aff); text-align: center; } - -MediaPlayerPlay { cn1-derive: FlatButton; } -MediaPlayerPlay.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPlay.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPause { cn1-derive: FlatButton; } -MediaPlayerPause.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPause.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerFwd { cn1-derive: FlatButton; } -MediaPlayerFwd.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerFwd.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerBack { cn1-derive: FlatButton; } -MediaPlayerBack.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerBack.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerMax { cn1-derive: FlatButton; } -MediaPlayerMax.pressed { color: #1c1c1e; background-color: rgba(186,184,185,0.85); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerMax.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - -RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } - -GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - - /* Every UIID above is completed to all four states below. A missing state is not inherited: cn1-derive is read at base level only, and a lookup of .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -CalendarDate.pressed { font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDate.disabled { font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } -CalendarDateLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; text-align: center; background-color: transparent; } -CalendarDateLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; text-align: center; background-color: transparent; } -CalendarDateLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #6c6c70; text-align: center; background-color: transparent; } -CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } -CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } -CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } -CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } -CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } -CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } -ComboBoxFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -ComboBoxFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -ComboBoxFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -CommandFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -CommandFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -CommandFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -DialogCommandText.selected { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } -DialogCommandText.pressed { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } -DialogCommandText.disabled { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color, #007aff); text-align: center; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } FloatingHint.selected { font-family: "native:MainRegular"; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } -GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } -GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } -GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } -ListRendererFocus.selected { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -ListRendererFocus.pressed { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -ListRendererFocus.disabled { background-color: rgba(0,122,255,0.14); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } -MediaPlayerBack.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerFwd.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerMax.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPause.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -MediaPlayerPlay.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } -PopupBody.selected { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } -PopupBody.pressed { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } -PopupBody.disabled { background-color: rgba(249,249,249,0.94); padding: 1mm; margin: 0; } -PopupContentPaneDownwards.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneDownwards.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneDownwards.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneLeft.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneLeft.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneLeft.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneRight.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneRight.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneRight.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneUpwards.selected { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneUpwards.pressed { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupContentPaneUpwards.disabled { background-color: rgba(249,249,249,0.94); padding: 0; margin: 0; border: 0.1mm solid #c6c6c8; } -PopupFocus.selected { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -PopupFocus.pressed { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -PopupFocus.disabled { color: #000000; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(0,122,255,0.14); } -PopupItem.selected { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } -PopupItem.pressed { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } -PopupItem.disabled { color: #000000; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } -RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } -RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } -RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } -SpinnerSeparator.selected { background-color: #c6c6c8; padding: 0; margin: 0; } -SpinnerSeparator.pressed { background-color: #c6c6c8; padding: 0; margin: 0; } -SpinnerSeparator.disabled { background-color: #c6c6c8; padding: 0; margin: 0; } -StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } -StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } -StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.disabled { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.selected { margin: 0; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.pressed { margin: 0; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.disabled { margin: 0; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } -TimeSpinnerHoursLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerHoursLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerHoursLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerMinutesLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerMinutesLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TimeSpinnerMinutesLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #3c3c43; background-color: transparent; } -TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; color: #1c1c1e; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } - /* Every UIID above is completed to all four states below. A missing state is not inherited: cn1-derive is read at base level only, and a lookup of .press# that finds nothing resolves against the global default style, so the control drops its whole appearance for the duration of that state. Where a state is meant to differ it is declared above and left alone here. */ -MenuButtonRight.selected { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } -MenuButtonRight.pressed { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } -MenuButtonRight.disabled { color: var(--accent-color, #007aff); background-color: rgba(255,255,255,0.72); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - - -/* Every UIID above is completed to all four states below. A missing state is - not inherited: cn1-derive is read at base level only, and a lookup of - .press# that finds nothing resolves against the global default style, - so the control drops its whole appearance for the duration of that state. - Where a state is meant to differ it is declared above and left alone here. */ - - -/* Every UIID above is completed to all four states below. A missing state is - not inherited: cn1-derive is read at base level only, and a lookup of - .press# that finds nothing resolves against the global default style, - so the control drops its whole appearance for the duration of that state. - Where a state is meant to differ it is declared above and left alone here. */ -TODAY.selected { background-color: rgba(120,120,128,0.10); cn1-background-type: cn1-pill-border; margin: 0 2mm 0 2mm; text-align: center; padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } -TODAY.pressed { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } -TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color, #007aff); font-family: "native:MainBold"; } @media (prefers-color-scheme: dark) { Component { color: #ffffff; background-color: #000000; } @@ -1352,9 +1177,6 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce /* Gray button (.gray): white label on a slightly lighter dark glass pill. */ FlatButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - - - FlatButton.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } /* Prominent filled button: white label on the OPAQUE dark accent pill. */ @@ -1540,45 +1362,10 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce PhoneVerificationError { color: #ff453a; } PhoneVerificationLink { color: var(--accent-color-dark, #0a84ff); } - - - - - - - /* Dark counterparts for every rule above that names a colour. A light-only state rule is not skipped in dark mode -- with no $Dark entry the light one is what resolves -- so a hard-coded light foreground would be used against the dark surface. */ - CalendarDate { cn1-derive: Label; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDate.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); } - CalendarDate.pressed { font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDate.disabled { font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm; margin: 0.2mm; background-color: transparent; text-align: center; } - CalendarDateLabel { cn1-derive: SecondaryLabel; color: #8e8e93; text-align: center; background-color: transparent; } - CalendarDateLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; text-align: center; background-color: transparent; } - CalendarDateLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; text-align: center; background-color: transparent; } - CalendarDateLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; text-align: center; background-color: transparent; } - CalendarDayArea { background-color: transparent; padding: 0; margin: 0; } - CalendarDayArea.selected { background-color: transparent; padding: 0; margin: 0; } - CalendarDayArea.pressed { background-color: transparent; padding: 0; margin: 0; } - CalendarDayArea.disabled { background-color: transparent; padding: 0; margin: 0; } - CalendarTitleArea { background-color: transparent; padding: 1mm; margin: 0; } - CalendarTitleArea.selected { background-color: transparent; padding: 1mm; margin: 0; } - CalendarTitleArea.pressed { background-color: transparent; padding: 1mm; margin: 0; } - CalendarTitleArea.disabled { background-color: transparent; padding: 1mm; margin: 0; } - ComboBoxFocus { cn1-derive: Label; background-color: rgba(10,132,255,0.22); } - ComboBoxFocus.selected { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - ComboBoxFocus.pressed { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - ComboBoxFocus.disabled { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - CommandFocus { cn1-derive: Label; background-color: rgba(10,132,255,0.22); } - CommandFocus.selected { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - CommandFocus.pressed { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - CommandFocus.disabled { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - DialogCommandText { cn1-derive: Label; color: var(--accent-color-dark, #0a84ff); text-align: center; } - DialogCommandText.selected { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color-dark, #0a84ff); text-align: center; } - DialogCommandText.pressed { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color-dark, #0a84ff); text-align: center; } - DialogCommandText.disabled { background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: var(--accent-color-dark, #0a84ff); text-align: center; } ErrorLabel { cn1-derive: SecondaryLabel; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } @@ -1587,74 +1374,6 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce FloatingHint.selected { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.disabled { color: #38383a; background-color: transparent; } - GlassTutorial { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - GlassTutorial.selected { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - GlassTutorial.pressed { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - GlassTutorial.disabled { color: #ffffff; background-color: rgba(0,0,0,0.72); padding: 2mm; margin: 0; } - ListRendererFocus { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - ListRendererFocus.selected { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - ListRendererFocus.pressed { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - ListRendererFocus.disabled { background-color: rgba(10,132,255,0.22); padding: 1.8mm 2mm 1.8mm 2mm; margin: 0; } - MediaPlayerBack.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerBack.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerBack.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerFwd.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerFwd.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerFwd.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerMax.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerMax.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerMax.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPause.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPause.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPause.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPlay.selected { margin: 1mm 2mm 1mm 2mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; border: 0.1mm solid rgba(255,255,255,0.58); cn1-stroke-gradient: #8e8e93; cn1-stroke-gradient-angle: 135deg; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPlay.pressed { color: #ffffff; background-color: rgba(150,143,138,0.78); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MediaPlayerPlay.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2mm 1.1mm 2mm; } - MenuButtonRight.selected { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - MenuButtonRight.pressed { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - MenuButtonRight.disabled { color: var(--accent-color-dark, #0a84ff); background-color: rgba(58,58,60,0.78); padding: 1.6mm; margin: 0.5mm 2.6mm 0.5mm 0.5mm; cn1-background-type: cn1-round-border; font-size: 4mm; } - PopupBody { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } - PopupBody.selected { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } - PopupBody.pressed { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } - PopupBody.disabled { background-color: rgba(28,28,30,0.94); padding: 1mm; margin: 0; } - PopupContentPaneDownwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneDownwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneDownwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneDownwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneLeft.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneRight.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards.selected { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards.pressed { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupContentPaneUpwards.disabled { background-color: rgba(28,28,30,0.94); padding: 0; margin: 0; border: 0.1mm solid #38383a; } - PopupFocus.selected { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupFocus.pressed { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupFocus.disabled { color: #ffffff; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; background-color: rgba(10,132,255,0.22); } - PopupItem.selected { color: #ffffff; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } - PopupItem.pressed { color: #ffffff; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } - PopupItem.disabled { color: #ffffff; background-color: transparent; padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; } - RichTextComponent { background-color: transparent; padding: 1mm; margin: 0; } - RichTextComponent.selected { background-color: transparent; padding: 1mm; margin: 0; } - RichTextComponent.pressed { background-color: transparent; padding: 1mm; margin: 0; } - RichTextComponent.disabled { background-color: transparent; padding: 1mm; margin: 0; } - SpinnerSeparator { background-color: #38383a; padding: 0; margin: 0; } - SpinnerSeparator.selected { background-color: #38383a; padding: 0; margin: 0; } - SpinnerSeparator.pressed { background-color: #38383a; padding: 0; margin: 0; } - SpinnerSeparator.disabled { background-color: #38383a; padding: 0; margin: 0; } - StatusBarSideMenu { background-color: transparent; padding: 0; margin: 0; } - StatusBarSideMenu.selected { background-color: transparent; padding: 0; margin: 0; } - StatusBarSideMenu.pressed { background-color: transparent; padding: 0; margin: 0; } - StatusBarSideMenu.disabled { background-color: transparent; padding: 0; margin: 0; } - TODAY { cn1-derive: SpinnerRenderer; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } - TODAY.selected { background-color: rgba(120,120,128,0.18); cn1-background-type: cn1-pill-border; margin: 0 2mm 0 2mm; text-align: center; padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } - TODAY.pressed { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } - TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: center; /* Native UIPickerView rows sit on an ~87px @3x pitch; 1mm insets spread the wheel to ~110px per row. */ padding: 0.4mm 2mm 0.4mm 2mm; color: var(--accent-color-dark, #0a84ff); font-family: "native:MainBold"; } TableCell { cn1-derive: Label; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } @@ -1663,12 +1382,6 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce TableHeader.selected { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.pressed { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.disabled { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } - TimeSpinnerHoursLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerHoursLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerHoursLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerMinutesLabel.selected { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerMinutesLabel.pressed { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } - TimeSpinnerMinutesLabel.disabled { padding: 1mm 2mm 1mm 2mm; margin: 0; font-family: "native:MainRegular"; color: #8e8e93; background-color: transparent; } ToggleButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } @@ -1682,8 +1395,4 @@ TODAY.disabled { background-color: transparent; font-size: 3.2mm; text-align: ce ToggleButtonOnly.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - TreeNode { cn1-derive: Label; color: #ffffff; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } - TreeNode.selected { color: var(--accent-color-dark, #0a84ff); background-color: transparent; } - TreeNode.pressed { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.2mm 1.5mm 1.2mm 1.5mm; background-color: transparent; } - TreeNode.disabled { color: #38383a; background-color: transparent; } } From 92631e40338f79866699f505e262f490b7376225 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 12:44:21 +0300 Subject: [PATCH 14/29] An alias needs a dark base of its own ToggleButtonFirst, ToggleButtonLast and ToggleButtonOnly are written as pure aliases -- cn1-derive: ToggleButton and nothing else -- and the dark generator skipped exactly that shape on the reasoning that an alias inherits its base. It does, but it inherits the LIGHT base: cn1-derive in the light block names the light rule, and dark resolution falls back to the light entry when no $Dark one exists. So an unselected edge segment of a group kept the light capsule on the dark surface, #1d1b20 text on #141218 in Material. All three now carry a dark base written out from the dark ToggleButton, and the generator no longer treats an alias as safe to skip -- it looks for the base's dark rule for that state and copies it. The audit is tightened to match. It was asking whether every light rule that names a colour has a dark counterpart, which an alias passes trivially by naming no colour at all. It now requires all four states in both blocks for every UIID the change adds, and reports zero. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 178277 -> 179779 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 206789 -> 208279 bytes Themes/AndroidMaterialTheme.res | Bin 178277 -> 179779 bytes Themes/iOSModernTheme.res | Bin 206789 -> 208279 bytes native-themes/android-material/theme.css | 3 +++ native-themes/ios-modern/theme.css | 3 +++ 6 files changed, 6 insertions(+) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 8e36a01587f227910d41dea844da2322275b805c..916bc5ab25c5b9c1fd7e5951c9dcb4623a1e4d0e 100644 GIT binary patch delta 522 zcmYk2O-n*S6o$Ri?OshY6!Dr?M1h-#q!y77ebFzdMJu78BEsJD^Tg)G4G@qw$ct+DcC7-Eni&fA~)`q?w8q zjgUV>8sdhoQXRe={TedZt~T-bNa0tmIWOUAf&SeV)n-GQZ94ZAJUb>*u`S;vLO8FW S@q}160{Uh^7cK%ik!?SSkj*my delta 206 zcmX^7hwJGFt_fm{XE%!9pFG)Umc--RX@SEtH5tO@n|y(jW%Bj~LQp=(^mpr-*e2hB3$Rb;-N3{-xo5TUWV3}ZRcw=k7s^3( cux-Az(w2F$UIBZv^V)XjwT#Q1*D?tL0Jbz&o&W#< diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index bfc702a38d4770a8b21ed094880eff03d612be5a..07e7ca68c997f22d2815373590e09e6ca4541e5b 100644 GIT binary patch delta 596 zcmYk2KS/{+t?lFtjdsyV}*(L^n})uHXsP7Oi@R|gTXSV&3;{y}5f#UgYNs+%G2 z@NK0aSwyMvpmxwnTm*A2iA{5eC@P1MSZE8K^!>ght=m2C^FHtQdv4EESV>7~@{Xgm zr$3UMWX&PTpM5%NNkPb3Iy-O^8BV{ekT{{_&87%un_$AdWh zoi!g;=&gx;A8CcOU0vU}ppdx|G=Sg6_&IgK@)(7YV?{(CYeXTOJ7H^VP{XG=N2=_8 zaPNmBKiW{nTIk$I7y8h4v7nC8AJ;k@+SK@B7p3|g_?c@FRWQj00<|h!EC-OfguS>} x57hdk$`l?Rg>XpOZ$3=hI{VyCsFAsP^q-w)MmvZiZ7-OWMYAGpnHA@s=Xd+B{R992 delta 137 zcmbP!o9F0xo(W=%b2f^X-eFXjyz!p&^a37cj>VaGnKm~)h+~;7_F8=U0TE`N&G(*u zW1JlLTzqoDE4Jxp#F;rZ^So3B$qP+>@Q!o(I~it<$@iW@I6SgIY5#YZ87D9NB0l|t oJTu>9o|i(CCw$_b{#J^SV{`q-f6UE`zP2y=%D8>eSEjG#05x?!VE_OC diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 8e36a01587f227910d41dea844da2322275b805c..916bc5ab25c5b9c1fd7e5951c9dcb4623a1e4d0e 100644 GIT binary patch delta 522 zcmYk2O-n*S6o$Ri?OshY6!Dr?M1h-#q!y77ebFzdMJu78BEsJD^Tg)G4G@qw$ct+DcC7-Eni&fA~)`q?w8q zjgUV>8sdhoQXRe={TedZt~T-bNa0tmIWOUAf&SeV)n-GQZ94ZAJUb>*u`S;vLO8FW S@q}160{Uh^7cK%ik!?SSkj*my delta 206 zcmX^7hwJGFt_fm{XE%!9pFG)Umc--RX@SEtH5tO@n|y(jW%Bj~LQp=(^mpr-*e2hB3$Rb;-N3{-xo5TUWV3}ZRcw=k7s^3( cux-Az(w2F$UIBZv^V)XjwT#Q1*D?tL0Jbz&o&W#< diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index bfc702a38d4770a8b21ed094880eff03d612be5a..07e7ca68c997f22d2815373590e09e6ca4541e5b 100644 GIT binary patch delta 596 zcmYk2KS/{+t?lFtjdsyV}*(L^n})uHXsP7Oi@R|gTXSV&3;{y}5f#UgYNs+%G2 z@NK0aSwyMvpmxwnTm*A2iA{5eC@P1MSZE8K^!>ght=m2C^FHtQdv4EESV>7~@{Xgm zr$3UMWX&PTpM5%NNkPb3Iy-O^8BV{ekT{{_&87%un_$AdWh zoi!g;=&gx;A8CcOU0vU}ppdx|G=Sg6_&IgK@)(7YV?{(CYeXTOJ7H^VP{XG=N2=_8 zaPNmBKiW{nTIk$I7y8h4v7nC8AJ;k@+SK@B7p3|g_?c@FRWQj00<|h!EC-OfguS>} x57hdk$`l?Rg>XpOZ$3=hI{VyCsFAsP^q-w)MmvZiZ7-OWMYAGpnHA@s=Xd+B{R992 delta 137 zcmbP!o9F0xo(W=%b2f^X-eFXjyz!p&^a37cj>VaGnKm~)h+~;7_F8=U0TE`N&G(*u zW1JlLTzqoDE4Jxp#F;rZ^So3B$qP+>@Q!o(I~it<$@iW@I6SgIY5#YZ87D9NB0l|t oJTu>9o|i(CCw$_b{#J^SV{`q-f6UE`zP2y=%D8>eSEjG#05x?!VE_OC diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 1ff7f83cee5..79eb3d39d87 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -1023,6 +1023,9 @@ TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #49454f; font-family: ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonFirst { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonLast { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonOnly { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index e8cf1fdd883..8dea77c0a27 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1386,6 +1386,9 @@ TableHeader.disabled { margin: 0; color: #6c6c70; font-family: "native:MainBold" ToggleButton.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } From a8fd83eded3ddc6841b70ca77c3a1cc646a73b3b Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 13:18:32 +0300 Subject: [PATCH 15/29] sel# means focused, not checked, so stop painting it as checked Button.isPressedStyle() sends a checked toggle to press# when it has no focus and to sel# when it does, and an unchecked toggle with focus lands on sel# too. That one slot therefore says "focused" for either value, and cannot say which value. An earlier round moved the checked fill into press#, correctly, but left the same fill in sel# -- so on a keyboard or TV device, moving focus onto an unchecked radio painted it exactly like the checked one beside it, and the actual value disappeared. sel# is now the base appearance with an accent ring: focus stays visible and never claims a value the control does not have. The cost is that a focused checked toggle shows the ring rather than the fill for as long as it holds focus, which is a framework limit -- one style slot, two dimensions -- and the lesser of the two, because it understates the focused control rather than inventing a selection that is not there. The figure needed the same care. Focus lands on the first focusable control, so the sample's checked CheckBox came out ringed and looked unchecked. Trying to render in pure touch mode did not help: shouldRenderSelection() also returns true when the last interaction was a keypad. The figure focuses an unchecked control instead, so the two filled rows read as checked and the ring reads as focus, and the caption says which is which. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 179779 -> 178663 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 208279 -> 207343 bytes Themes/AndroidMaterialTheme.res | Bin 179779 -> 178663 bytes Themes/iOSModernTheme.res | Bin 208279 -> 207343 bytes .../screenshots/ToggleButtonFigure.java | 6 +++++ .../The-Components-Of-Codename-One.asciidoc | 5 +++- .../components-toggle-buttons-android.png | Bin 21007 -> 21047 bytes .../components-toggle-buttons-ios.png | Bin 15587 -> 16234 bytes native-themes/android-material/theme.css | 23 ++++++++++++------ native-themes/ios-modern/theme.css | 23 ++++++++++++------ 10 files changed, 40 insertions(+), 17 deletions(-) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index 916bc5ab25c5b9c1fd7e5951c9dcb4623a1e4d0e..a6c58dd7b6164bf02607012d27f31c384e648b01 100644 GIT binary patch delta 685 zcmY+BT}YE*6vy|T?R}g33ODzaE~l$3DDff~N*{I~*;Uq!gb@T@w7d!`FpMs`DBC|h zxR18^YNB&xdoM;5EE1hJfp?KKx2q)RLNKT>u;(3OdG(y zd+oJGap9T;%LyAIka0SC40B<-apm1MZq0;H2`flN{aDV~a4%)iJ$xl3b-|7$oH%Dj zdCaD*0}6gVYvM?T6eMED_aL@nhtT)P3jb3pMq(E2Y}_xQexd;#V~RGIh$#3xGFhWFVxywKsQRM0 zI!uJUyT2)BL$UxE4x&Yr?5N88>xR@R5Ki5BX|7l!iJaD+TXlmMlGt8s67^k3e+cZv zR&*~O6>%H`c`H7aY}lH&Vc?TP>n~k)<90cO;({4h%YArK@glKi<;T;c3%(tpU7W4B zS-C#kTP^ffrNA4m8zm>F$4SPS=ss>6C5L`<=!4|VisZu3l#AcS$mFwIBJd~sSb z@tqe!vc>4TWGMWO(XhfT3G&t!!Q&Zf+XZknL;Z4~F=#jdDegsgypvBQ$)#IO{BnX` zNd_KCQ$t};r5=SJOp-@m2!EORpAyVbkT+(ij?d3hxW@Bizv|X^u_dM#Kyk8}hg7l` xN?AHt&mcPqYAdCP2 delta 934 zcmY*XT}YE*81;MS=6=&THm7qsTPaHUgOy~4decQwb`f+DsRiPVl+a}mh9L9<+79zE zx6dus6q+;R6NX--=?DxoulJ#LCv=ffHD6cn0;8u@^6uyf4JX3-!iJ$yqtqNI6oh^BzAPk1h#iyqf_F0{ z(FspPOMOw614HDb%ASwqBOKOpAe&0ZnO>Fhj46}Zbo04z7HeBttVdGlu<9`ov`TBQ zd((P%CX3M#OPiRFc~$o%D2qCz-!Z44&X-56Qgu9KN6lOwt|!fE{5&Q8+>HDGCZ>IQ zEYEtNUlN5=Xid6!7BgmMy#FdAZHSzx47DVSxoI21i|)+ZM1LY2^dvplkd9q#cIeEP6MDUq2~LXCVJxpEh(mK9~I`ZuasMg6duF{-Sn zkqfXQo2VzovktB~GmYxZv>8_?4fwI*IZ`jKdi!_f#I7v3XUQ`lWK*%9ouj8<_0&N; z3=d!|%etLqzj432yN3qrgiEyTXK`UaAr7;Co%*rG5CRUmAhOCdvuT9c=#9vlvHM+bD}erLzlzMLep_(q{m=Q#3j|zKvh%! YG+QU_^l*ypa$jz^>t{Qf^>aJ^&q6TnR&nOkUw*^$ z5mtH{eNe{!g$U-$3MG1&il54<@Wk~|Ns?xcPEX%sl0WB(#Y3ic;qkX7J}Gz59aSWM z%>{7dYoLi@w(^_J;OBQ?XY9j-4}<{oA7hxT9cnA1)vTPvU`lZ&Yp0kXUsq$!&oAdU z$-(-GwiKRQ?8Sk4hx4PJX+k%uCax?f&av-*!TGhFG-N|3b}t(Ee9cc|HfUR^4vK_E zo($&&J(ifUR(X7`sZZEEc_Mv9rzL%FR-o zxuv+=w?zF32$843KDwQjJN3;9rO{S})aS`5+E9Sgq{=wGk3a}7R1VY0F3@St4+S>s zjs)PEkBCE5w8!Zg2U83R<iBale!q9Gl^R4_onm$e>xtb<8G z6C9y^VZs?7eG5ZGH0Yy@1$*25@UjILnGD7{>SWo%x*Eon3d`n%Pxzw=Vr5vy@0IYmK1)AQTm8bQ8jaM7pGigcW9j z@G9@kTbC{wbJz$2yL1qVBIwVmVTvU!ndRysH>YoA*0jqv@Vvk0dEbZm@m8a8txspq zpBN8QxCg!XGF6RZ4=VA*yD$!=BpgN!|Gdh_)vrG6OUc+gp2eDe1?N8a&5nt?9K2l? z_Dx1HK2zZs3$}8zXXYHk*HcBbHwc<3&0gYoXwZv|>7x$P`NhDxv_xeFDCTOqoMG=3 z1-pN0xG*czBkR%{sFRSf#QO`(C{9jnkyU>d~-rtgY6iH78)_@Bc)%w6j?R++Op9Fp-h) z*h(?xcw5kHEcr}j3mV%-37r{K%|WB`APbORXBwRr4?aZ)q(?ftDT)hDCw~CEn4MOr zEiBkAVNvgtZLszA3NeGV4m69|E<;oo7rS_;Z(Z7Oub>UA`Q@XlDpP1k6TzbfJLm*B z;bn19sWmLtI|=`^f%7bSPmZvp9LcMl2hS~wPI5Rv?bq@usapX*jd1&^XA-^PumqMT ziY*h-4OE=(tip3xSVhQal5^EC~8Lwyd)8iPt L5Z0DBbf|v;_#7{) diff --git a/Themes/AndroidMaterialTheme.res b/Themes/AndroidMaterialTheme.res index 916bc5ab25c5b9c1fd7e5951c9dcb4623a1e4d0e..a6c58dd7b6164bf02607012d27f31c384e648b01 100644 GIT binary patch delta 685 zcmY+BT}YE*6vy|T?R}g33ODzaE~l$3DDff~N*{I~*;Uq!gb@T@w7d!`FpMs`DBC|h zxR18^YNB&xdoM;5EE1hJfp?KKx2q)RLNKT>u;(3OdG(y zd+oJGap9T;%LyAIka0SC40B<-apm1MZq0;H2`flN{aDV~a4%)iJ$xl3b-|7$oH%Dj zdCaD*0}6gVYvM?T6eMED_aL@nhtT)P3jb3pMq(E2Y}_xQexd;#V~RGIh$#3xGFhWFVxywKsQRM0 zI!uJUyT2)BL$UxE4x&Yr?5N88>xR@R5Ki5BX|7l!iJaD+TXlmMlGt8s67^k3e+cZv zR&*~O6>%H`c`H7aY}lH&Vc?TP>n~k)<90cO;({4h%YArK@glKi<;T;c3%(tpU7W4B zS-C#kTP^ffrNA4m8zm>F$4SPS=ss>6C5L`<=!4|VisZu3l#AcS$mFwIBJd~sSb z@tqe!vc>4TWGMWO(XhfT3G&t!!Q&Zf+XZknL;Z4~F=#jdDegsgypvBQ$)#IO{BnX` zNd_KCQ$t};r5=SJOp-@m2!EORpAyVbkT+(ij?d3hxW@Bizv|X^u_dM#Kyk8}hg7l` xN?AHt&mcPqYAdCP2 delta 934 zcmY*XT}YE*81;MS=6=&THm7qsTPaHUgOy~4decQwb`f+DsRiPVl+a}mh9L9<+79zE zx6dus6q+;R6NX--=?DxoulJ#LCv=ffHD6cn0;8u@^6uyf4JX3-!iJ$yqtqNI6oh^BzAPk1h#iyqf_F0{ z(FspPOMOw614HDb%ASwqBOKOpAe&0ZnO>Fhj46}Zbo04z7HeBttVdGlu<9`ov`TBQ zd((P%CX3M#OPiRFc~$o%D2qCz-!Z44&X-56Qgu9KN6lOwt|!fE{5&Q8+>HDGCZ>IQ zEYEtNUlN5=Xid6!7BgmMy#FdAZHSzx47DVSxoI21i|)+ZM1LY2^dvplkd9q#cIeEP6MDUq2~LXCVJxpEh(mK9~I`ZuasMg6duF{-Sn zkqfXQo2VzovktB~GmYxZv>8_?4fwI*IZ`jKdi!_f#I7v3XUQ`lWK*%9ouj8<_0&N; z3=d!|%etLqzj432yN3qrgiEyTXK`UaAr7;Co%*rG5CRUmAhOCdvuT9c=#9vlvHM+bD}erLzlzMLep_(q{m=Q#3j|zKvh%! YG+QU_^l*ypa$jz^>t{Qf^>aJ^&q6TnR&nOkUw*^$ z5mtH{eNe{!g$U-$3MG1&il54<@Wk~|Ns?xcPEX%sl0WB(#Y3ic;qkX7J}Gz59aSWM z%>{7dYoLi@w(^_J;OBQ?XY9j-4}<{oA7hxT9cnA1)vTPvU`lZ&Yp0kXUsq$!&oAdU z$-(-GwiKRQ?8Sk4hx4PJX+k%uCax?f&av-*!TGhFG-N|3b}t(Ee9cc|HfUR^4vK_E zo($&&J(ifUR(X7`sZZEEc_Mv9rzL%FR-o zxuv+=w?zF32$843KDwQjJN3;9rO{S})aS`5+E9Sgq{=wGk3a}7R1VY0F3@St4+S>s zjs)PEkBCE5w8!Zg2U83R<iBale!q9Gl^R4_onm$e>xtb<8G z6C9y^VZs?7eG5ZGH0Yy@1$*25@UjILnGD7{>SWo%x*Eon3d`n%Pxzw=Vr5vy@0IYmK1)AQTm8bQ8jaM7pGigcW9j z@G9@kTbC{wbJz$2yL1qVBIwVmVTvU!ndRysH>YoA*0jqv@Vvk0dEbZm@m8a8txspq zpBN8QxCg!XGF6RZ4=VA*yD$!=BpgN!|Gdh_)vrG6OUc+gp2eDe1?N8a&5nt?9K2l? z_Dx1HK2zZs3$}8zXXYHk*HcBbHwc<3&0gYoXwZv|>7x$P`NhDxv_xeFDCTOqoMG=3 z1-pN0xG*czBkR%{sFRSf#QO`(C{9jnkyU>d~-rtgY6iH78)_@Bc)%w6j?R++Op9Fp-h) z*h(?xcw5kHEcr}j3mV%-37r{K%|WB`APbORXBwRr4?aZ)q(?ftDT)hDCw~CEn4MOr zEiBkAVNvgtZLszA3NeGV4m69|E<;oo7rS_;Z(Z7Oub>UA`Q@XlDpP1k6TzbfJLm*B z;bn19sWmLtI|=`^f%7bSPmZvp9LcMl2hS~wPI5Rv?bq@usapX*jd1&^XA-^PumqMT ziY*h-4OE=(tip3xSVhQal5^EC~8Lwyd)8iPt L5Z0DBbf|v;_#7{) diff --git a/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java b/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java index fb8200f89b8..fb6887ed441 100644 --- a/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java +++ b/docs/demos/common/src/main/java/com/codenameone/developerguide/screenshots/ToggleButtonFigure.java @@ -65,6 +65,12 @@ public Form build() { hi.add(cb1).add(cb2).add(cb3).add(cb4).add(rb1).add(rb2).add(rb3); hi.show(); // end::the-components-of-codename-one-java-156[] + // Focus lands on the first focusable control by default, and a focused + // toggle resolves sel# -- the accent ring -- whether or not it is + // checked. That would draw the one control the sample checks as though + // it were not. Focus an unchecked control instead, so the two filled + // rows read as checked and the ring reads as focus. + hi.setFocused(rb1); return hi; } } diff --git a/docs/developer-guide/The-Components-Of-Codename-One.asciidoc b/docs/developer-guide/The-Components-Of-Codename-One.asciidoc index 069f315cc12..57f18aab23a 100644 --- a/docs/developer-guide/The-Components-Of-Codename-One.asciidoc +++ b/docs/developer-guide/The-Components-Of-Codename-One.asciidoc @@ -736,7 +736,10 @@ image:img/generated/components-toggle-buttons-android.png[Toggle buttons under A image:img/generated/components-toggle-buttons-ios.png[Toggle buttons under the iOS theme,scaledwidth=35%] Both themes draw the selection as a change of fill rather than of label color alone, so a -selected toggle stays readable for someone who can't separate the two hues. +selected toggle stays readable for someone who can't separate the two hues. The outlined row in +each figure is the one holding focus: focus is drawn as a ring precisely so it can't be mistaken +for a value, since the framework resolves a focused toggle through the same style whether +it's checked or not. That's half the story though: to get the full effect of some cool toggle button UI's you can use a https://www.codenameone.com/javadoc/com/codename1/ui/ComponentGroup.html[ComponentGroup]. This allows you to create a button bar effect with the toggle buttons. diff --git a/docs/developer-guide/img/generated/components-toggle-buttons-android.png b/docs/developer-guide/img/generated/components-toggle-buttons-android.png index 58d5856a9cbed73cbbe8affeec364bdb6c1c5fdb..fd3ccf4e1ef3ece41e553b6b79d3da38f92a352d 100644 GIT binary patch literal 21047 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 z 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�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

w)P!N($ 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 diff --git a/docs/developer-guide/img/generated/components-toggle-buttons-ios.png b/docs/developer-guide/img/generated/components-toggle-buttons-ios.png index f04985ea013d320ed691a33cd57548eec7cd5f28..ec8598c2700499163df900125ff3511c1325585a 100644 GIT binary patch literal 16234 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 G|33gMok)}b literal 15587 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 JA!`!!{{Zhi$wL4D diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 79eb3d39d87..d909dc13385 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -319,7 +319,14 @@ ToggleButton { font-size: 2.5mm; text-align: center; } -ToggleButton.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +/* sel# is not the checked look. Button.isPressedStyle() sends a checked toggle + to press# when it has no focus and to sel# when it does, and an unchecked + toggle with focus lands on sel# as well -- so that one slot means "focused", + for either value. Painting the checked fill there made a focused unchecked + radio indistinguishable from the checked one beside it. sel# is the base + appearance with an accent ring instead: focus stays visible and never claims + a value the control does not have. */ +ToggleButton.selected { color: #1d1b20; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color, #6750a4); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } @@ -332,15 +339,15 @@ ToggleButton.disabled { color: #a5a0ab; background-color: transparent; cn1-backg and every state is spelled out because cn1-derive is only read at base level. */ ToggleButtonFirst { cn1-derive: ToggleButton; } -ToggleButtonFirst.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonFirst.selected { cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } ToggleButtonFirst.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast { cn1-derive: ToggleButton; } -ToggleButtonLast.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonLast.selected { cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } ToggleButtonLast.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly { cn1-derive: ToggleButton; } -ToggleButtonOnly.selected { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } +ToggleButtonOnly.selected { cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } ToggleButtonOnly.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } @@ -1020,19 +1027,19 @@ TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #49454f; font-family: TableHeader.pressed { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #cac4d0; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } ToggleButton { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } - ToggleButton.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButton.selected { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color-dark, #d0bcff); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } - ToggleButtonFirst.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonFirst.selected { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color-dark, #d0bcff); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } - ToggleButtonLast.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonLast.selected { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color-dark, #d0bcff); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } - ToggleButtonOnly.selected { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } + ToggleButtonOnly.selected { color: #e6e0e9; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color-dark, #d0bcff); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly.pressed { color: var(--accent-on-container-color-dark, #eaddff); background-color: var(--accent-container-color-dark, #4f378b); cn1-background-type: cn1-pill-border; border: 0.25mm solid #938f99; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly.disabled { color: #5c5967; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #49454f; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 8dea77c0a27..afdf72a548a 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -418,7 +418,14 @@ ToggleButton { font-size: 2.7mm; text-align: center; } -ToggleButton.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +/* sel# is not the checked look. Button.isPressedStyle() sends a checked toggle + to press# when it has no focus and to sel# when it does, and an unchecked + toggle with focus lands on sel# as well -- so that one slot means "focused", + for either value. Painting the checked fill there made a focused unchecked + radio indistinguishable from the checked one beside it. sel# is the base + appearance with an accent ring instead: focus stays visible and never claims + a value the control does not have. */ +ToggleButton.selected { color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } @@ -429,15 +436,15 @@ ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55) control. Each state is written out because cn1-derive is read at base level only. */ ToggleButtonFirst { cn1-derive: ToggleButton; } -ToggleButtonFirst.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonFirst.selected { cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButtonFirst.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast { cn1-derive: ToggleButton; } -ToggleButtonLast.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonLast.selected { cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButtonLast.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly { cn1-derive: ToggleButton; } -ToggleButtonOnly.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } +ToggleButtonOnly.selected { cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButtonOnly.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } @@ -1383,19 +1390,19 @@ TableHeader.disabled { margin: 0; color: #6c6c70; font-family: "native:MainBold" TableHeader.pressed { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader.disabled { margin: 0; color: #8e8e93; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } ToggleButton { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButton.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButton.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color-dark, #0a84ff); } ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonFirst.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonFirst.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color-dark, #0a84ff); } ToggleButtonFirst.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonLast.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonLast.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color-dark, #0a84ff); } ToggleButtonLast.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } - ToggleButtonOnly.selected { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } + ToggleButtonOnly.selected { color: #ffffff; background-color: rgba(134,127,122,0.74); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color-dark, #0a84ff); } ToggleButtonOnly.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color-dark, #0a84ff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.disabled { color: #48484a; background-color: rgba(58,58,60,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } } From 1f1fb16879a28dae2fa575e58b613096938b2e7c Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 13:46:55 +0300 Subject: [PATCH 16/29] Reseed the toggle baselines from CI after the focus-ring change The focus ring changed both toggle figures, and the copies committed with it were local renders. Java2D rounds font metrics differently here than on the runner, so those never match CI byte for byte. Both are replaced with the run's own artifact, and all 48 committed figures now match that run exactly, none of them leaning on a tolerance sidecar. Co-Authored-By: Claude Opus 5 (1M context) --- .../components-toggle-buttons-android.png | Bin 21047 -> 21085 bytes .../components-toggle-buttons-ios.png | Bin 16234 -> 16259 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/developer-guide/img/generated/components-toggle-buttons-android.png b/docs/developer-guide/img/generated/components-toggle-buttons-android.png index fd3ccf4e1ef3ece41e553b6b79d3da38f92a352d..42b36ba50f967c5d08c6ed2769ef672332b48102 100644 GIT binary patch literal 21085 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 z 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 {4V?#nk^2 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 literal 16234 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 G|33gMok)}b From 8791d4f12e010f9b13594b028d3f1edcbe45ce88 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 13:55:30 +0300 Subject: [PATCH 17/29] Record why sel# cannot carry both focus and value The review is right that a focused checked toggle is now indistinguishable from a focused unchecked one, and its own conclusion is the answer: preserving both needs separate state resolution, which is not something a theme can express. sel# is one slot and focus plus value are two dimensions, so every CSS assignment loses one of them. The two losses are not equal, and the choice between them is now written where the next person will meet it rather than in a review thread. Putting the checked fill in sel# makes a focused unchecked control claim to be selected -- arrowing through a radio group lights up every control in turn. Putting the base plus a ring there makes a focused checked control understate itself while it holds focus. The second never asserts a value the control does not have, so it stays, and the comment says explicitly not to move the fill back, because that trade has been made once already in this branch. The real fix belongs in Component.getStyle(): resolve focus separately from state so a checked control keeps press# and focus is drawn some other way. That is a framework change with its own blast radius, not a line in a theme. Co-Authored-By: Claude Opus 5 (1M context) --- native-themes/android-material/theme.css | 22 ++++++++++++++++++---- native-themes/ios-modern/theme.css | 22 ++++++++++++++++++---- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index d909dc13385..0742f0943a6 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -322,10 +322,24 @@ ToggleButton { /* sel# is not the checked look. Button.isPressedStyle() sends a checked toggle to press# when it has no focus and to sel# when it does, and an unchecked toggle with focus lands on sel# as well -- so that one slot means "focused", - for either value. Painting the checked fill there made a focused unchecked - radio indistinguishable from the checked one beside it. sel# is the base - appearance with an accent ring instead: focus stays visible and never claims - a value the control does not have. */ + for either value, and cannot also say which value. + + Neither assignment is lossless, and the choice here is deliberate: + + sel# = the checked fill -> a focused UNCHECKED control looks checked. + Arrowing through a radio group makes every + control you land on claim to be selected. + sel# = base + focus ring -> a focused CHECKED control looks unchecked, + for as long as it holds focus. + + The second is kept because it never asserts a value the control does not + have; the first invents one. It is a framework limit rather than a theme + bug -- one style slot for two dimensions -- and no CSS here can express + both. Fixing it properly means resolving focus separately from state in + Component.getStyle(), so a checked control keeps press# while focus is + drawn some other way. Until then, do not "fix" this rule by moving the + checked fill back into sel#: that trade has been made once already and it + is the worse half. */ ToggleButton.selected { color: #1d1b20; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color, #6750a4); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index afdf72a548a..953019572f3 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -421,10 +421,24 @@ ToggleButton { /* sel# is not the checked look. Button.isPressedStyle() sends a checked toggle to press# when it has no focus and to sel# when it does, and an unchecked toggle with focus lands on sel# as well -- so that one slot means "focused", - for either value. Painting the checked fill there made a focused unchecked - radio indistinguishable from the checked one beside it. sel# is the base - appearance with an accent ring instead: focus stays visible and never claims - a value the control does not have. */ + for either value, and cannot also say which value. + + Neither assignment is lossless, and the choice here is deliberate: + + sel# = the checked fill -> a focused UNCHECKED control looks checked. + Arrowing through a radio group makes every + control you land on claim to be selected. + sel# = base + focus ring -> a focused CHECKED control looks unchecked, + for as long as it holds focus. + + The second is kept because it never asserts a value the control does not + have; the first invents one. It is a framework limit rather than a theme + bug -- one style slot for two dimensions -- and no CSS here can express + both. Fixing it properly means resolving focus separately from state in + Component.getStyle(), so a checked control keeps press# while focus is + drawn some other way. Until then, do not "fix" this rule by moving the + checked fill back into sel#: that trade has been made once already and it + is the worse half. */ ToggleButton.selected { color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } From bb639d7b22d9fde4f45e3664d83a772b813de9bd Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 14:08:05 +0300 Subject: [PATCH 18/29] A state rule that names only colours is built from the default, not its base The disabled rules on FloatingHint and ErrorLabel carried a foreground and nothing else. createStyle does not fill the rest in from the UIID's base -- a state entry with no derivation is built from the global default style -- so disabling a TextComponent dropped the hint's font size, padding and margin and resized the field's layout as it went. The generated states did not have this problem because they were expanded from the base when they were written. These four were hand-written earlier in the branch, and the audit only asked whether a state rule exists. Existing is not the same as complete, which is the third distinct way this branch has managed to report zero: a missing state, a state missing in only one theme, and now a state that is present but says almost nothing. Every state rule of every UIID this change adds is now merged against its base: the base's declarations first, the state's own after, so a deliberate override still wins. ToggleButton's accent ring survives that merge, which is the case worth checking, and the audit is extended from "does the state exist" to "does it carry its base's property set". Co-Authored-By: Claude Opus 5 (1M context) --- native-themes/android-material/theme.css | 14 +++++++------- native-themes/ios-modern/theme.css | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 0742f0943a6..790053511b5 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -353,15 +353,15 @@ ToggleButton.disabled { color: #a5a0ab; background-color: transparent; cn1-backg and every state is spelled out because cn1-derive is only read at base level. */ ToggleButtonFirst { cn1-derive: ToggleButton; } -ToggleButtonFirst.selected { cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } +ToggleButtonFirst.selected { color: #1d1b20; background-color: transparent; cn1-background-type: cn1-pill-border; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } ToggleButtonFirst.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonFirst.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast { cn1-derive: ToggleButton; } -ToggleButtonLast.selected { cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } +ToggleButtonLast.selected { color: #1d1b20; background-color: transparent; cn1-background-type: cn1-pill-border; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } ToggleButtonLast.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonLast.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly { cn1-derive: ToggleButton; } -ToggleButtonOnly.selected { cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } +ToggleButtonOnly.selected { color: #1d1b20; background-color: transparent; cn1-background-type: cn1-pill-border; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; cn1-derive: ToggleButton; border: 0.25mm solid var(--accent-color, #6750a4); } ToggleButtonOnly.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButtonOnly.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } @@ -838,10 +838,10 @@ PhoneVerificationLink { were undefined, so the control the guide recommends over a raw TextField rendered with default styling. */ FloatingHint { cn1-derive: SecondaryLabel; color: #49454f; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } -FloatingHint.disabled { color: #a9a8aa; background-color: transparent; } +FloatingHint.disabled { padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 1.9mm; color: #a9a8aa; background-color: transparent; } /* M3 error role; the line sits under the field and carries the message. */ ErrorLabel { cn1-derive: SecondaryLabel; color: #b3261e; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } -ErrorLabel.disabled { color: #a9a8aa; background-color: transparent; } +ErrorLabel.disabled { padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 1.9mm; color: #a9a8aa; background-color: transparent; } /* Table's documented cell/header UIIDs. The framework does not set these itself -- the chapter tells you to -- so defining them makes the documented @@ -1027,11 +1027,11 @@ TableHeader.disabled { margin: 0; font-size: 2.5mm; color: #49454f; font-family: ErrorLabel { cn1-derive: SecondaryLabel; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #f2b8b5; font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } - ErrorLabel.disabled { color: #5c5967; background-color: transparent; } + ErrorLabel.disabled { font-size: 1.9mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; color: #5c5967; background-color: transparent; } FloatingHint { cn1-derive: SecondaryLabel; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.selected { font-family: "native:MainRegular"; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #cac4d0; font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } - FloatingHint.disabled { color: #5c5967; background-color: transparent; } + FloatingHint.disabled { font-size: 1.9mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; color: #5c5967; background-color: transparent; } TableCell { cn1-derive: Label; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; font-size: 2.5mm; color: #e6e0e9; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 953019572f3..e4b9e429685 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -450,15 +450,15 @@ ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55) control. Each state is written out because cn1-derive is read at base level only. */ ToggleButtonFirst { cn1-derive: ToggleButton; } -ToggleButtonFirst.selected { cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } +ToggleButtonFirst.selected { color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButtonFirst.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonFirst.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast { cn1-derive: ToggleButton; } -ToggleButtonLast.selected { cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } +ToggleButtonLast.selected { color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButtonLast.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonLast.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly { cn1-derive: ToggleButton; } -ToggleButtonOnly.selected { cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } +ToggleButtonOnly.selected { color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; cn1-derive: ToggleButton; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButtonOnly.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButtonOnly.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } @@ -1146,10 +1146,10 @@ PhoneVerificationLink { /* TextComponent: wrapper, floating hint, error line. */ FloatingHint { cn1-derive: SecondaryLabel; color: #6c6c70; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } -FloatingHint.disabled { color: #c6c6c8; background-color: transparent; } +FloatingHint.disabled { padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2mm; color: #c6c6c8; background-color: transparent; } /* systemRed, the colour iOS uses for validation failures. */ ErrorLabel { cn1-derive: SecondaryLabel; color: #ff3b30; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } -ErrorLabel.disabled { color: #c6c6c8; background-color: transparent; } +ErrorLabel.disabled { padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; font-family: "native:MainRegular"; font-size: 2mm; color: #c6c6c8; background-color: transparent; } TableCell { cn1-derive: Label; color: #1c1c1e; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableHeader { cn1-derive: Label; color: #6c6c70; font-family: "native:MainBold"; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } @@ -1390,11 +1390,11 @@ TableHeader.disabled { margin: 0; color: #6c6c70; font-family: "native:MainBold" ErrorLabel { cn1-derive: SecondaryLabel; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } - ErrorLabel.disabled { color: #38383a; background-color: transparent; } + ErrorLabel.disabled { font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; color: #38383a; background-color: transparent; } FloatingHint { cn1-derive: SecondaryLabel; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.selected { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } - FloatingHint.disabled { color: #38383a; background-color: transparent; } + FloatingHint.disabled { font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; color: #38383a; background-color: transparent; } TableCell { cn1-derive: Label; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } From e9038b11209ae56beeea6b4d2664906ec7686072 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 14:16:48 +0300 Subject: [PATCH 19/29] dis# collapses the same two dimensions that sel# does Component.getStyle() returns getDisabledStyle() before it ever consults isPressedStyle(), so a disabled toggle resolves dis# whether it is checked or not. The review is right that disabling a form therefore hides which of its toggles were on, and right again that a theme cannot fix it: dis# is one slot and it is being asked to carry both enabled-ness and value. The answer is the one already recorded for sel#, so it is recorded in the same place rather than argued twice. Muting the unselected appearance declines to state a value; muting the checked fill would state a wrong one on every disabled unchecked control. Declining is the lesser failure. Both cases want the same framework change and neither is patched here: getStyle() would have to combine state with focus and with enabled, rather than collapsing three dimensions onto one lookup, and that reaches every focusable component in the framework. Co-Authored-By: Claude Opus 5 (1M context) --- native-themes/android-material/theme.css | 21 ++++++++++++++++----- native-themes/ios-modern/theme.css | 21 ++++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/native-themes/android-material/theme.css b/native-themes/android-material/theme.css index 790053511b5..966022cb3a7 100644 --- a/native-themes/android-material/theme.css +++ b/native-themes/android-material/theme.css @@ -335,11 +335,22 @@ ToggleButton { The second is kept because it never asserts a value the control does not have; the first invents one. It is a framework limit rather than a theme bug -- one style slot for two dimensions -- and no CSS here can express - both. Fixing it properly means resolving focus separately from state in - Component.getStyle(), so a checked control keeps press# while focus is - drawn some other way. Until then, do not "fix" this rule by moving the - checked fill back into sel#: that trade has been made once already and it - is the worse half. */ + both. Until then, do not "fix" this rule by moving the checked fill back + into sel#: that trade has been made once already and it is the worse half. + + dis# has the identical problem and the identical resolution. getStyle() + returns getDisabledStyle() before it consults isPressedStyle(), so a + disabled toggle resolves dis# whether it is checked or not, and a disabled + form cannot show which of its toggles were on. dis# is therefore the muted + unselected appearance, for the same reason: it declines to state a value + rather than stating a wrong one. + + Both cases want the same framework change, which is why neither is patched + here: Component.getStyle() would have to combine state with focus and with + enabled -- a checked control keeping its fill while disabled or focused, + and those conditions drawn some other way -- rather than collapsing three + dimensions onto one style lookup. That reaches every focusable component, + so it is not a line in a theme. */ ToggleButton.selected { color: #1d1b20; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid var(--accent-color, #6750a4); padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.pressed { color: var(--accent-on-container-color, #21005d); background-color: var(--accent-container-color, #eaddff); cn1-background-type: cn1-pill-border; border: 0.25mm solid #79747e; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } ToggleButton.disabled { color: #a5a0ab; background-color: transparent; cn1-background-type: cn1-pill-border; border: 0.25mm solid #cac4d0; padding: 1.55mm 4mm 1.55mm 4mm; margin: 0.5mm; font-family: "native:MainRegular"; font-size: 2.5mm; text-align: center; } diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index e4b9e429685..4378c416fef 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -434,11 +434,22 @@ ToggleButton { The second is kept because it never asserts a value the control does not have; the first invents one. It is a framework limit rather than a theme bug -- one style slot for two dimensions -- and no CSS here can express - both. Fixing it properly means resolving focus separately from state in - Component.getStyle(), so a checked control keeps press# while focus is - drawn some other way. Until then, do not "fix" this rule by moving the - checked fill back into sel#: that trade has been made once already and it - is the worse half. */ + both. Until then, do not "fix" this rule by moving the checked fill back + into sel#: that trade has been made once already and it is the worse half. + + dis# has the identical problem and the identical resolution. getStyle() + returns getDisabledStyle() before it consults isPressedStyle(), so a + disabled toggle resolves dis# whether it is checked or not, and a disabled + form cannot show which of its toggles were on. dis# is therefore the muted + unselected appearance, for the same reason: it declines to state a value + rather than stating a wrong one. + + Both cases want the same framework change, which is why neither is patched + here: Component.getStyle() would have to combine state with focus and with + enabled -- a checked control keeping its fill while disabled or focused, + and those conditions drawn some other way -- rather than collapsing three + dimensions onto one style lookup. That reaches every focusable component, + so it is not a line in a theme. */ ToggleButton.selected { color: #1c1c1e; background-color: rgba(199,197,198,0.80); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; border: 0.3mm solid var(--accent-color, #007aff); } ToggleButton.pressed { color: var(--accent-on-color, #ffffff); background-color: var(--accent-color, #007aff); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } ToggleButton.disabled { color: #b0b0b5; background-color: rgba(199,197,198,0.55); cn1-background-type: cn1-pill-border; padding: 1.1mm 2.6mm 1.1mm 2.6mm; margin: 1mm 0.4mm 1mm 0.4mm; font-family: "native:MainLight"; font-size: 2.7mm; text-align: center; } From 5becde82aebdcef525fad5a4a241b57dd1b1e6fb Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 14:30:32 +0300 Subject: [PATCH 20/29] The disabled hint was mapped to a separator grey, not a text grey iOS dark FloatingHint and ErrorLabel came out at #38383a, which measures 1.45:1 against the theme's #1c1c1e surface -- the number in the review, and unreadable. The cause is a limit of the light-to-dark table: the light value it came from, #c6c6c8, is both a separator and a disabled label in this theme, and the table maps by value, so a colour with two roles gets whichever mapping was written for the other one. #636366 is systemGray2 in dark and measures 2.84:1, nearly double, while staying clearly below the #8e8e93 the enabled hint uses, so disabled still reads as disabled. The table entry is corrected too, since no separator among these UIIDs uses that light value any more. Material was checked rather than assumed: its dark disabled sits at 2.73:1, the same band, and matches the convention its own Button.disabled already sets, so it is left alone. Co-Authored-By: Claude Opus 5 (1M context) --- .../iOSPort/nativeSources/iOSModernTheme.res | Bin 207343 -> 207343 bytes Themes/iOSModernTheme.res | Bin 207343 -> 207343 bytes native-themes/ios-modern/theme.css | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index 107c4fbf22fecba484a2f0557372ad840e3dc937..951d4f899c1bbe75853b813539c4a7bab3f5b372 100644 GIT binary patch delta 35 pcmaEVndkjwo(-own3I#!HlOv#=K(RA?L*t`Lm9W*hca!r0stm{4+H=J delta 38 ucmaEVndkjwo(-owm@F(NU-S{)eBUFMhuOlys@XoY-9D6YyL~9rhARL|B@c)I diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index 107c4fbf22fecba484a2f0557372ad840e3dc937..951d4f899c1bbe75853b813539c4a7bab3f5b372 100644 GIT binary patch delta 35 pcmaEVndkjwo(-own3I#!HlOv#=K(RA?L*t`Lm9W*hca!r0stm{4+H=J delta 38 ucmaEVndkjwo(-owm@F(NU-S{)eBUFMhuOlys@XoY-9D6YyL~9rhARL|B@c)I diff --git a/native-themes/ios-modern/theme.css b/native-themes/ios-modern/theme.css index 4378c416fef..a40d1da582d 100644 --- a/native-themes/ios-modern/theme.css +++ b/native-themes/ios-modern/theme.css @@ -1401,11 +1401,11 @@ TableHeader.disabled { margin: 0; color: #6c6c70; font-family: "native:MainBold" ErrorLabel { cn1-derive: SecondaryLabel; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.selected { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } ErrorLabel.pressed { font-family: "native:MainRegular"; color: #ff453a; font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; background-color: transparent; } - ErrorLabel.disabled { font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; color: #38383a; background-color: transparent; } + ErrorLabel.disabled { font-size: 2mm; padding: 0.3mm 0.5mm 0 0.5mm; margin: 0; color: #636366; background-color: transparent; } FloatingHint { cn1-derive: SecondaryLabel; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.selected { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } FloatingHint.pressed { font-family: "native:MainRegular"; color: #8e8e93; font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; background-color: transparent; } - FloatingHint.disabled { font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; color: #38383a; background-color: transparent; } + FloatingHint.disabled { font-size: 2mm; padding: 0 0.5mm 0.3mm 0.5mm; margin: 0; color: #636366; background-color: transparent; } TableCell { cn1-derive: Label; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.selected { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } TableCell.pressed { margin: 0; font-family: "native:MainRegular"; color: #ffffff; padding: 1.5mm 2mm 1.5mm 2mm; background-color: transparent; } From cdf0dd02d2a72a18c06f582b8caeb84cb48b9b3b Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 14:44:27 +0300 Subject: [PATCH 21/29] setToggle leaves the UIID behind, and sets the wrong one on the way out Defining ToggleButton makes two long-standing bugs in Button.setToggle visible, which is what the review is pointing at, so they are fixed with it. setToggle(false) never restored the UIID. A CheckBox or RadioButton taken back out of toggle mode kept ToggleButton, so it painted the toggle's pill and padding while drawing its own state glyph again. Invisible while nothing defined ToggleButton; not invisible now. The UIID it had before entering toggle mode is remembered and put back, and setUIID clears preferredSize, so the size computed without the glyph is recalculated on the next pass. The condition was also mis-parenthesised: && binds tighter than ||, so if (toggle && "CheckBox".equals(getUIID()) || "RadioButton".equals(getUIID())) reads (toggle && isCheckBox) || isRadioButton, and leaving toggle mode assigned ToggleButton whenever the UIID was RadioButton at that moment -- the exact opposite of the intent. Both are covered by tests, and the tests were checked against the old code rather than assumed: with the original condition restored, both fail. The first version of the precedence test did not, because a control that was never a toggle returns at setToggle's equality guard and never reaches the condition, so asserting on a fresh RadioButton proved nothing. It now enters toggle mode and sets its own UIID first, which is the path an application takes to get there. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 30 ++++++++++++++-- .../com/codename1/ui/RadioButtonTest.java | 35 +++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index 423b961ef20..b5c49d9626c 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1034,14 +1034,40 @@ public boolean isToggle() { /// #### Parameters /// /// - `toggle`: the toggle to set + /// The UIID this control carried before setToggle(true) replaced it, so + /// setToggle(false) can put it back. Null whenever toggle mode was not + /// entered from a CheckBox or RadioButton UIID. + private String preToggleUIID; + public void setToggle(boolean toggle) { if (this.toggle == toggle) { return; } this.toggle = toggle; accessibilityChanged(AccessibilityManager.CHANGE_STRUCTURE | AccessibilityManager.CHANGE_STATE); - if (toggle && "CheckBox".equals(getUIID()) || "RadioButton".equals(getUIID())) { - setUIID("ToggleButton"); + // The UIID follows the mode in both directions. Two things were wrong here + // for as long as no theme defined ToggleButton, which is what kept them + // invisible: + // + // - && binds tighter than ||, so the old condition read + // (toggle && isCheckBox) || isRadioButton. setToggle(false) on a + // RadioButton therefore set its UIID to ToggleButton, the opposite of + // what was asked for. + // - nothing restored the UIID afterwards, so a control taken back out of + // toggle mode kept the toggle's appearance while painting its state + // glyph again. + // + // setUIID clears preferredSize, so the size computed without the glyph is + // recalculated on the next layout pass. + String uiid = getUIID(); + if (toggle) { + if ("CheckBox".equals(uiid) || "RadioButton".equals(uiid)) { + preToggleUIID = uiid; + setUIID("ToggleButton"); + } + } else if (preToggleUIID != null && "ToggleButton".equals(uiid)) { + setUIID(preToggleUIID); + preToggleUIID = null; } } diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index 0c7b7e594a8..e29ae09f783 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -13,6 +13,41 @@ class RadioButtonTest extends UITestBase { + @Test + void testDisablingToggleRestoresTheOriginalUiid() { + RadioButton radio = new RadioButton("Choice"); + assertEquals("RadioButton", radio.getUIID()); + + radio.setToggle(true); + assertEquals("ToggleButton", radio.getUIID()); + + radio.setToggle(false); + assertFalse(radio.isToggle()); + assertEquals("RadioButton", radio.getUIID(), + "leaving toggle mode has to put the UIID back, or the control keeps " + + "painting as a toggle while drawing its radio glyph again"); + } + + @Test + void testDisablingToggleOnARadioUiidDoesNotMakeItAToggleUiid() { + // Regression: the condition read (toggle && isCheckBox) || isRadioButton, + // because && binds tighter than ||, so leaving toggle mode assigned + // ToggleButton whenever the UIID was RadioButton at that moment. + // + // Reaching it needs toggle mode on with a RadioButton UIID, which is what + // an application does when it sets its own UIID on a toggle: the early + // return in setToggle means a control that was never a toggle cannot get + // there, which is why asserting on a fresh RadioButton proves nothing. + RadioButton radio = new RadioButton("Choice"); + radio.setToggle(true); + radio.setUIID("RadioButton"); + + radio.setToggle(false); + + assertFalse(radio.isToggle()); + assertEquals("RadioButton", radio.getUIID()); + } + @Test void testCreateToggleAddsToGroupAndSetsToggleUiid() { ButtonGroup group = new ButtonGroup(); From ee20edbd8990931d8794a985f3f44f6ddef3cb3e Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 15:03:05 +0300 Subject: [PATCH 22/29] Add the copyright header the diff-scoped gate now asks of this test check-copyright-headers went red on RadioButtonTest. The file never had a header, and neither does CheckBoxTest beside it, but the gate only looks at files a PR touches -- so adding tests to it brought a pre-existing omission into scope. It takes the Codename One GPLv2 with Classpath Exception header, not the Oracle one, since the file is ours. CheckBoxTest is left alone: it is not part of this change, and fixing it here would be unrelated churn in a PR that has already grown once. The gate was not re-run after the core commit, which is why CI found this rather than I did. Co-Authored-By: Claude Opus 5 (1M context) --- .../com/codename1/ui/RadioButtonTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index e29ae09f783..1e72410e5f0 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ + package com.codename1.ui; import com.codename1.junit.FormTest; From 7637135a20a5ad102cd365ff92a2fd1e41b6e8ac Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 15:07:48 +0300 Subject: [PATCH 23/29] The restore guard missed every toggle that sits in a group setHorizontal(true) on a ComponentGroup sets its element prefix to ToggleButton, so its members are renamed ToggleButtonFirst, ToggleButton and ToggleButtonLast -- or ToggleButtonOnly when there is one. The guard added with the restore matched the bare name alone, so setToggle(false) silently skipped the restore for any grouped toggle, which is the common case for the control this whole change is about. Worse, the group records the UIID it replaced in $origUIID and puts that back when the control leaves it, so a control that had quietly failed to restore then had ToggleButton reinstated on the way out. setToggle now updates $origUIID alongside the UIID when one is present, so the group's own restore agrees with the control's state. Covered by a test that builds the horizontal group, checks the rename landed, disables toggle mode and then removes the control -- and the test was probed by narrowing the guard back to the bare name, which fails it. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 27 +++++++++++++++++- .../com/codename1/ui/RadioButtonTest.java | 28 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index b5c49d9626c..a96060c9601 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1065,12 +1065,37 @@ public void setToggle(boolean toggle) { preToggleUIID = uiid; setUIID("ToggleButton"); } - } else if (preToggleUIID != null && "ToggleButton".equals(uiid)) { + } else if (preToggleUIID != null && isToggleUIID(uiid)) { setUIID(preToggleUIID); + // A horizontal ComponentGroup renames its members and remembers what it + // replaced in $origUIID, then puts that back when the control leaves the + // group. Left alone it would reinstate ToggleButton on a control that is + // no longer a toggle. + if (getClientProperty("$origUIID") != null) { + putClientProperty("$origUIID", preToggleUIID); + } preToggleUIID = null; } } + /// True for the UIID setToggle assigns and for the three a horizontal + /// ComponentGroup renames its edge controls to. Matching only the bare name + /// would skip the restore for any toggle that happens to sit in a group. + /// + /// #### Parameters + /// + /// - `uiid`: the UIID to test + /// + /// #### Returns + /// + /// true if this is a toggle UIID + private static boolean isToggleUIID(String uiid) { + return "ToggleButton".equals(uiid) + || "ToggleButtonFirst".equals(uiid) + || "ToggleButtonLast".equals(uiid) + || "ToggleButtonOnly".equals(uiid); + } + /// Overriden to workaround issue with caps text and different UIID's /// {@inheritDoc} @Override diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index 1e72410e5f0..8ca4aec65f6 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -71,6 +71,34 @@ void testDisablingToggleOnARadioUiidDoesNotMakeItAToggleUiid() { assertEquals("RadioButton", radio.getUIID()); } + @Test + void testDisablingToggleRestoresTheUiidInsideAComponentGroup() { + // A horizontal ComponentGroup renames its members to ToggleButtonFirst, + // ToggleButton and ToggleButtonLast, and records what it replaced in + // $origUIID so it can put it back on removal. A restore that only matched + // the bare name skipped all of those, and the group then reinstated + // ToggleButton on a control that was no longer a toggle. + ComponentGroup group = new ComponentGroup(); + group.setForceGroup(true); + group.setHorizontal(true); + RadioButton first = new RadioButton("One"); + RadioButton last = new RadioButton("Two"); + first.setToggle(true); + last.setToggle(true); + group.addComponent(first); + group.addComponent(last); + assertEquals("ToggleButtonFirst", first.getUIID()); + + first.setToggle(false); + + assertFalse(first.isToggle()); + assertEquals("RadioButton", first.getUIID()); + + group.removeComponent(first); + assertEquals("RadioButton", first.getUIID(), + "leaving the group must not reinstate the toggle UIID"); + } + @Test void testCreateToggleAddsToGroupAndSetsToggleUiid() { ButtonGroup group = new ButtonGroup(); From 819720d9208d010120975262670caa5a613dc30c Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 15:16:07 +0300 Subject: [PATCH 24/29] Stop guessing the group's prefix and correct each holder on its own terms A vertical ComponentGroup keeps the default prefix, so its members are renamed GroupElement, GroupElementFirst, GroupElementLast or GroupElementOnly -- names with nothing toggle-ish about them -- while $origUIID still holds ToggleButton. The previous guard matched the live UIID against a list of toggle names, so it skipped that case entirely, and removing the control afterwards put ToggleButton back on a plain radio. Enumerating GroupElement* as well would have been the third revision of the same list, so the list is no longer the mechanism. The toggle UIID can be held in two places and each is now corrected on its own terms: the live UIID when it is still a toggle name, and $origUIID when it holds one, whatever prefix the group happens to use. Neither depends on knowing the group's orientation. Both orientations are covered by tests, and each was probed against the revision it fixes: the vertical test fails against the live-UIID-only guard this commit replaces. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 23 +++++++++++------ .../com/codename1/ui/RadioButtonTest.java | 25 +++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index a96060c9601..62b4a527321 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1065,13 +1065,22 @@ public void setToggle(boolean toggle) { preToggleUIID = uiid; setUIID("ToggleButton"); } - } else if (preToggleUIID != null && isToggleUIID(uiid)) { - setUIID(preToggleUIID); - // A horizontal ComponentGroup renames its members and remembers what it - // replaced in $origUIID, then puts that back when the control leaves the - // group. Left alone it would reinstate ToggleButton on a control that is - // no longer a toggle. - if (getClientProperty("$origUIID") != null) { + } else if (preToggleUIID != null) { + // Two places can be holding the toggle UIID, and which ones depends on + // the group this control is in -- horizontal groups rename members to + // ToggleButton*, vertical ones to GroupElement*, and an ungrouped + // control keeps the name setToggle assigned. So each is corrected on + // its own terms rather than by guessing the group's prefix: + // + // - the live UIID, when it is still a toggle name; + // - $origUIID, which is what a ComponentGroup puts back when the + // control leaves it, and which holds ToggleButton whatever prefix + // the group itself uses. + if (isToggleUIID(uiid)) { + setUIID(preToggleUIID); + } + Object saved = getClientProperty("$origUIID"); + if (saved instanceof String && isToggleUIID((String) saved)) { putClientProperty("$origUIID", preToggleUIID); } preToggleUIID = null; diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index 8ca4aec65f6..60362d3c5ac 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -99,6 +99,31 @@ void testDisablingToggleRestoresTheUiidInsideAComponentGroup() { "leaving the group must not reinstate the toggle UIID"); } + @Test + void testDisablingToggleRestoresTheUiidInsideAVerticalComponentGroup() { + // A vertical group keeps the default prefix, so its members are renamed + // GroupElementFirst and the like -- names with nothing toggle-ish about + // them -- while $origUIID still holds ToggleButton. Matching on the live + // UIID alone therefore missed this case entirely, and removing the control + // put ToggleButton back on a plain radio. + ComponentGroup group = new ComponentGroup(); + group.setForceGroup(true); + RadioButton first = new RadioButton("One"); + RadioButton last = new RadioButton("Two"); + first.setToggle(true); + last.setToggle(true); + group.addComponent(first); + group.addComponent(last); + assertEquals("GroupElementFirst", first.getUIID()); + + first.setToggle(false); + group.removeComponent(first); + + assertFalse(first.isToggle()); + assertEquals("RadioButton", first.getUIID(), + "leaving a vertical group must not reinstate the toggle UIID"); + } + @Test void testCreateToggleAddsToGroupAndSetsToggleUiid() { ButtonGroup group = new ButtonGroup(); From f524d50d968aaf5cad100d280691a874e29427d9 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 15:27:33 +0300 Subject: [PATCH 25/29] While a control is in a group, the live UIID is the group's to set A horizontal ComponentGroup renames every member -- toggle or not -- so the bar gets its segmented edges, and it does not re-apply that when a member's UIID changes underneath it. Resetting the live UIID on setToggle(false) therefore stripped that member's styling for as long as it took some later structural or theme update to put it back. Only $origUIID needs correcting while the control is grouped; the restore then happens where it always happens, on removal. $origUIID is not the test for "is grouped", which is the trap here: ComponentGroup sets it on the first rename and never clears it, not even in removeComponentImpl, so it means "was grouped at some point". The parent answers the question directly and is used instead. The horizontal test now asserts the group's alias survives setToggle(false) and that removal yields the plain UIID, and it was probed against the previous revision -- which resets the live UIID -- where it fails. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 9 ++++++++- .../src/test/java/com/codename1/ui/RadioButtonTest.java | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index 62b4a527321..041693c4714 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1076,7 +1076,14 @@ public void setToggle(boolean toggle) { // - $origUIID, which is what a ComponentGroup puts back when the // control leaves it, and which holds ToggleButton whatever prefix // the group itself uses. - if (isToggleUIID(uiid)) { + // While the control is still in a group the live UIID belongs to the + // group: a horizontal one renames every member, toggle or not, to give + // the bar its segmented edges, and it does not re-apply that when the + // UIID changes under it. Resetting it here would strip the member's + // styling until the next structural or theme update. $origUIID is not + // the test for that -- ComponentGroup sets it once and never clears it, + // so it says "was grouped at some point" rather than "is grouped now". + if (!(getParent() instanceof ComponentGroup) && isToggleUIID(uiid)) { setUIID(preToggleUIID); } Object saved = getClientProperty("$origUIID"); diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index 60362d3c5ac..242f29447e2 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -92,7 +92,10 @@ void testDisablingToggleRestoresTheUiidInsideAComponentGroup() { first.setToggle(false); assertFalse(first.isToggle()); - assertEquals("RadioButton", first.getUIID()); + assertEquals("ToggleButtonFirst", first.getUIID(), + "the live UIID belongs to the group while the control is in it: the " + + "group renames every member for the segmented edges and does " + + "not re-apply that when the UIID changes under it"); group.removeComponent(first); assertEquals("RadioButton", first.getUIID(), From a47c56b0ae4b1ceaec5f53fbcac31ad661b115a2 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 15:37:57 +0300 Subject: [PATCH 26/29] Make entering toggle mode keep the group's saved name in step too Only one direction was doing it. Leaving toggle mode moved $origUIID from ToggleButton back to the plain UIID; entering it looked at the live UIID, saw a group alias, recognised nothing and left $origUIID holding the plain name. So a control toggled off and on again inside a group was handed a radio UIID and its glyph on the way out -- the same defect as before, from the other side. Both directions now treat the two holders the same way. The live UIID is converted when it is a name this method owns, and the group's saved name is converted whenever it is out of step with the mode, in either direction. That also covers a plain radio added to a horizontal group and toggled afterwards, which never passed through the bare-name branch at all. Probed against the previous revision, where the round-trip test fails. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 10 +++++++ .../com/codename1/ui/RadioButtonTest.java | 26 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index 041693c4714..3d57faa861b 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1065,6 +1065,16 @@ public void setToggle(boolean toggle) { preToggleUIID = uiid; setUIID("ToggleButton"); } + // Grouped, the live UIID is the group's alias and says nothing about + // what this control is, so the name that matters is the one the group + // saved to restore on removal. Entering toggle mode has to move that to + // ToggleButton, exactly as leaving it moves it back, or a control + // toggled while inside a group is handed a radio UIID on the way out. + Object saved = getClientProperty("$origUIID"); + if (saved instanceof String && !isToggleUIID((String) saved)) { + preToggleUIID = (String) saved; + putClientProperty("$origUIID", "ToggleButton"); + } } else if (preToggleUIID != null) { // Two places can be holding the toggle UIID, and which ones depends on // the group this control is in -- horizontal groups rename members to diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index 242f29447e2..d7ad58533ed 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -127,6 +127,32 @@ void testDisablingToggleRestoresTheUiidInsideAVerticalComponentGroup() { "leaving a vertical group must not reinstate the toggle UIID"); } + @Test + void testTogglingOffAndOnInsideAGroupLeavesTheGroupHoldingTheToggleUiid() { + // The group saves what it replaced and restores it on removal, so both + // directions of setToggle have to keep that saved name in step. Only the + // disable direction did: re-enabling saw a group alias as the live UIID, + // recognised nothing, and left the group holding RadioButton for a control + // that was a toggle again. + ComponentGroup group = new ComponentGroup(); + group.setForceGroup(true); + group.setHorizontal(true); + RadioButton first = new RadioButton("One"); + RadioButton last = new RadioButton("Two"); + first.setToggle(true); + last.setToggle(true); + group.addComponent(first); + group.addComponent(last); + + first.setToggle(false); + first.setToggle(true); + + assertTrue(first.isToggle()); + group.removeComponent(first); + assertEquals("ToggleButton", first.getUIID(), + "a control that is a toggle again must not leave the group as a radio"); + } + @Test void testCreateToggleAddsToGroupAndSetsToggleUiid() { ButtonGroup group = new ButtonGroup(); From 49946b146a2f11e8f476d019e1c88f8171c4c230 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Thu, 10 Sep 2026 20:38:18 +0300 Subject: [PATCH 27/29] The themes were compiled by a jar from another checkout Three macOS screenshot tests kept failing on screens that use none of the UIIDs this change adds -- ChatView in both appearances and ValidatorLightweightPicker. Narrowing the theme from 58 UIIDs to 8 did not move them by a single pixel: both runs produced byte-identical images, which is what finally ruled the CSS out. build-native-themes.sh prefers maven/css-compiler/target and falls back to ~/.m2. I never built the module, so every theme build in this branch used a jar some other checkout installed at some other commit. That jar does not merely compile the rules that changed -- it re-emits the entire theme its own way. The proof: compiling MASTER's own CSS with it produces a .res of 178627 bytes where master has 178705 committed; compiling the same CSS with the jar built from this tree reproduces master's file byte for byte. So the committed .res carried a compiler's worth of unrelated differences, and those are what moved the two screens. Rebuilt with the jar from this tree, the theme now differs from master only in the UIIDs this change adds -- 658 entries added, none removed, all of them ToggleButton*, FloatingHint, ErrorLabel, TableCell and TableHeader -- and the guide's other 46 figures are untouched. The script logs which jar it picked and I did not read it, but a silent fallback that changes output this much deserves more than a log line, so it now warns when the jar comes from ~/.m2 and says how to build the matching one. Co-Authored-By: Claude Opus 5 (1M context) --- Ports/Android/src/AndroidMaterialTheme.res | Bin 178663 -> 178731 bytes .../iOSPort/nativeSources/iOSModernTheme.res | Bin 207343 -> 207421 bytes Themes/AndroidMaterialTheme.res | Bin 178663 -> 178731 bytes Themes/iOSModernTheme.res | Bin 207343 -> 207421 bytes scripts/build-native-themes.sh | 13 +++++++++++++ 5 files changed, 13 insertions(+) diff --git a/Ports/Android/src/AndroidMaterialTheme.res b/Ports/Android/src/AndroidMaterialTheme.res index a6c58dd7b6164bf02607012d27f31c384e648b01..de3c0252c13345a6f6d13b04ebf591165cafe872 100644 GIT binary patch delta 569 zcmXAlT}YE*6vy9lnzD~~OWl|Ih+0Y!QPiCz=_;$6>b(%si5yM{FYa}S zs0BKV;o)fue2^;(S-{G?d}?6ZTHC)%}rHvoU$i8C8TwhIrizZ=&eHzqM|{EUmD{ce778k<2Z@4lS%~1POYG1jS54dWgI|h=f^zH%QFL3aL!d6(dO- zXr4lR3NlDJ$cP2mW>ODYVGn|uLZt+;8Wx*{)xY*Id^6uSmv4r@$E|I~#cTLi(=?|B z+V0VKpFx>MiwZxD8m~}GrEe}T^}B`@WzmYu!P^$-_G$MyFQum^&|F%H!U_72K4jm_ z_*y_swP)!~?F8Mb8=~y`ar#`}sKVkCMW|C#!w8KuBoF*FsIak5@d=z&jD{U<%t@g; z-6rLAmn(dYT7W!3lP(1B(O}TD13jzF)Ee>Ao=BzL8rhFgV`W=@n%t$^p{-I-qDA>m zgE-=|PyWt!^T${)xjz=lMP+Lc-3W0et;g!T(FG0($3qrGyF9$&0tdOrbUEY#pMy(0 z(8~iJFeU7PMdS`IB=K|zlI52dUZ_nzdgn@%IScG!?x}`KS+0h5keV7WK+d0mKq|L% zLJF6B0-YaqKk}xdZcnJDf_%tI);g#Fsg|oR5`q_z1SEx4bk^XYyz&Wyn B=~Vy# diff --git a/Ports/iOSPort/nativeSources/iOSModernTheme.res b/Ports/iOSPort/nativeSources/iOSModernTheme.res index 951d4f899c1bbe75853b813539c4a7bab3f5b372..df0f3650494647377cad96c65f649e5ce9555333 100644 GIT binary patch delta 728 zcmY+BUr5tY6vuatKjz$KE}h%lMqk5TJsQ`s;Kof6@0YxesFzWf73nYHY2`bjTOU)Kj68@08QQ|XY{I9dS1ifz>5;Se2 zI`sg=@*81{Wz`OeEhVejos^sZYKAIA?{EdEWT$zwNMIX_c=c?%w^78FXv`Z!;&sd` zApooNo4996S)OUm2Nfuc>3b_{&+rKkChu#mldaf0Oy53{x5KGrib&#t{>vh|e_Sk~w}Sv}Tsny2M}h0WtcB(iP7 zJFm$FE6=L~E!E~iDMVF93hjjQO+39APDL*RUsHpMdW&HUsCFNeL6j!acnOqB+~R~s z^u`HGNQ33@6{x=g>;-(b72K5F2A6>zGKdFy)(#nk8~fklwQ*etymT%E?}19D;2_ZL zX;4~ua2XoNvH~*_t*pWaE1yb6nOY3kjkGldM}QX1IFZCD6Q59(9U+FQvhWv(zGi;U zfqMSkj0Wn;!9Y6y;l^GH9zq||`Vs60df>rE@jraCU#zachx`A=6!hU!pu?4z57ZgJ zV|KpUif(eXp|Jm&p|C&Gjz-{-4)l|&a|3fs0GjQ>J!RamfJdoj0c}W~AMqs6&rf(A Xc*|$JLYgmFjdU@LZ9tj`&hP#W<6#FZ delta 625 zcmX9)TS(J!6#k#%nucqxx&7Uy5neKSam!|AL=uH1ES+eWnY$HT=%EnD!XOo?hw8z0 z)_z?cddV&id&s|VtVjz|Gab{toxa(Eab4sWVbY{TexaLM={G2l=3OxYNHF*Ud3Tc?nJ4WPI*n#KWd~|zf7H8 z4S78EN}s0yl}TSGP@l)B91Emnqm)NIL7Bdnr_;rt>pwLs3&9&eYeP9SPC9a*(Nb~9 zK&}Qo87j2OyHIE)xx3nx@vaP1;@x$i6rUTaOqZ-hyZo&ugfD?+!r^Li4L_sRBlqah z$TZy?4J)P3Wl$Yp%uK$qr%J(#+sB2^2{xKCWQgP@s9k2f&k1_u!<(TER6*v2a;Vdb z9aV5t9cCV^f(hWud%y+!sTx`|Vp|RL^HL4WBTv=A67WPllx!CehDL4*Lr2QjMBXy9 zSS0wxi3n_{6oxpQXAy^wz-@1!KJ_9~OCX28yoI@3@$v_>qm)CRgBCvY6NWTg_#3|F z39XEM{6NO*$PHE;2Datmt89@h!GSxs?3l*ArT7O#3L2wjsNn%8o-Ps_oA54wXhIKi z#X*b#&$QrK5R(DS5b(%si5yM{FYa}S zs0BKV;o)fue2^;(S-{G?d}?6ZTHC)%}rHvoU$i8C8TwhIrizZ=&eHzqM|{EUmD{ce778k<2Z@4lS%~1POYG1jS54dWgI|h=f^zH%QFL3aL!d6(dO- zXr4lR3NlDJ$cP2mW>ODYVGn|uLZt+;8Wx*{)xY*Id^6uSmv4r@$E|I~#cTLi(=?|B z+V0VKpFx>MiwZxD8m~}GrEe}T^}B`@WzmYu!P^$-_G$MyFQum^&|F%H!U_72K4jm_ z_*y_swP)!~?F8Mb8=~y`ar#`}sKVkCMW|C#!w8KuBoF*FsIak5@d=z&jD{U<%t@g; z-6rLAmn(dYT7W!3lP(1B(O}TD13jzF)Ee>Ao=BzL8rhFgV`W=@n%t$^p{-I-qDA>m zgE-=|PyWt!^T${)xjz=lMP+Lc-3W0et;g!T(FG0($3qrGyF9$&0tdOrbUEY#pMy(0 z(8~iJFeU7PMdS`IB=K|zlI52dUZ_nzdgn@%IScG!?x}`KS+0h5keV7WK+d0mKq|L% zLJF6B0-YaqKk}xdZcnJDf_%tI);g#Fsg|oR5`q_z1SEx4bk^XYyz&Wyn B=~Vy# diff --git a/Themes/iOSModernTheme.res b/Themes/iOSModernTheme.res index 951d4f899c1bbe75853b813539c4a7bab3f5b372..df0f3650494647377cad96c65f649e5ce9555333 100644 GIT binary patch delta 728 zcmY+BUr5tY6vuatKjz$KE}h%lMqk5TJsQ`s;Kof6@0YxesFzWf73nYHY2`bjTOU)Kj68@08QQ|XY{I9dS1ifz>5;Se2 zI`sg=@*81{Wz`OeEhVejos^sZYKAIA?{EdEWT$zwNMIX_c=c?%w^78FXv`Z!;&sd` zApooNo4996S)OUm2Nfuc>3b_{&+rKkChu#mldaf0Oy53{x5KGrib&#t{>vh|e_Sk~w}Sv}Tsny2M}h0WtcB(iP7 zJFm$FE6=L~E!E~iDMVF93hjjQO+39APDL*RUsHpMdW&HUsCFNeL6j!acnOqB+~R~s z^u`HGNQ33@6{x=g>;-(b72K5F2A6>zGKdFy)(#nk8~fklwQ*etymT%E?}19D;2_ZL zX;4~ua2XoNvH~*_t*pWaE1yb6nOY3kjkGldM}QX1IFZCD6Q59(9U+FQvhWv(zGi;U zfqMSkj0Wn;!9Y6y;l^GH9zq||`Vs60df>rE@jraCU#zachx`A=6!hU!pu?4z57ZgJ zV|KpUif(eXp|Jm&p|C&Gjz-{-4)l|&a|3fs0GjQ>J!RamfJdoj0c}W~AMqs6&rf(A Xc*|$JLYgmFjdU@LZ9tj`&hP#W<6#FZ delta 625 zcmX9)TS(J!6#k#%nucqxx&7Uy5neKSam!|AL=uH1ES+eWnY$HT=%EnD!XOo?hw8z0 z)_z?cddV&id&s|VtVjz|Gab{toxa(Eab4sWVbY{TexaLM={G2l=3OxYNHF*Ud3Tc?nJ4WPI*n#KWd~|zf7H8 z4S78EN}s0yl}TSGP@l)B91Emnqm)NIL7Bdnr_;rt>pwLs3&9&eYeP9SPC9a*(Nb~9 zK&}Qo87j2OyHIE)xx3nx@vaP1;@x$i6rUTaOqZ-hyZo&ugfD?+!r^Li4L_sRBlqah z$TZy?4J)P3Wl$Yp%uK$qr%J(#+sB2^2{xKCWQgP@s9k2f&k1_u!<(TER6*v2a;Vdb z9aV5t9cCV^f(hWud%y+!sTx`|Vp|RL^HL4WBTv=A67WPllx!CehDL4*Lr2QjMBXy9 zSS0wxi3n_{6oxpQXAy^wz-@1!KJ_9~OCX28yoI@3@$v_>qm)CRgBCvY6NWTg_#3|F z39XEM{6NO*$PHE;2Datmt89@h!GSxs?3l*ArT7O#3L2wjsNn%8o-Ps_oA54wXhIKi z#X*b#&$QrK5R(DS5([^<]+).*#\1#')" fi + # A jar in ~/.m2 was built by some other checkout at some other commit, and + # nothing here can tell which. Compiling with it re-emits the WHOLE theme the + # way that build did, not just the rules you edited, so the committed .res + # picks up differences no CSS diff can explain -- which is how a theme change + # once moved screens that use none of its UIIDs. CI has no ~/.m2 and always + # builds from source, so target/ above is the jar that matches the tree. installed_jar="$HOME/.m2/repository/com/codenameone/codenameone-css-compiler/$version/codenameone-css-compiler-${version}-jar-with-dependencies.jar" if [ -f "$installed_jar" ]; then echo "$installed_jar" @@ -60,6 +66,13 @@ ensure_jar() { local jar if jar="$(locate_jar)"; then log "Using CSS compiler jar: $jar" + case "$jar" in + "$HOME"/.m2/*) + log "WARNING: that jar comes from ~/.m2 and was built by another checkout." + log "WARNING: it re-emits the whole theme its own way. Build the module first" + log "WARNING: (mvn -f maven/css-compiler/pom.xml package) to compile with this tree." + ;; + esac printf '%s\n' "$jar" return fi From 5128dcd526377193bf4543cc057693286ba1476e Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Fri, 11 Sep 2026 06:16:01 +0300 Subject: [PATCH 28/29] Being inside a group is not the same as the group owning your UIID Two findings, both correct, both from the same wrong assumption in the previous commit: that a ComponentGroup parent means the group has taken the UIID. It has not when the group is inactive. updateUIIDs() returns without renaming anything unless ComponentGroupBool is on or the group is forced, and that constant is off by default -- Android Material never sets it, only the iOS theme does. A toggle in such a group still carries its own ToggleButton UIID, so skipping the restore because the parent happened to be a group left a plain radio wearing the toggle style. The test is now whether the group recorded what it replaced, which is the thing that says it took ownership. And the grouped path was converting any saved UIID, not just the defaults. setToggle has only ever converted CheckBox and RadioButton -- an application that assigned its own UIID keeps it, which is what the original condition did and what the guide says. My version replaced a custom name with ToggleButton in the group's record, so removal handed back ToggleButton instead of the application's UIID. Only the two defaults are converted now. Both are covered, and both tests fail against the previous revision's guards. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 33 +++++++++++++++- .../com/codename1/ui/RadioButtonTest.java | 39 +++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index 3d57faa861b..c8441391fb2 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1071,7 +1071,7 @@ public void setToggle(boolean toggle) { // ToggleButton, exactly as leaving it moves it back, or a control // toggled while inside a group is handed a radio UIID on the way out. Object saved = getClientProperty("$origUIID"); - if (saved instanceof String && !isToggleUIID((String) saved)) { + if (isDefaultToggleableUIID(saved)) { preToggleUIID = (String) saved; putClientProperty("$origUIID", "ToggleButton"); } @@ -1093,7 +1093,7 @@ public void setToggle(boolean toggle) { // styling until the next structural or theme update. $origUIID is not // the test for that -- ComponentGroup sets it once and never clears it, // so it says "was grouped at some point" rather than "is grouped now". - if (!(getParent() instanceof ComponentGroup) && isToggleUIID(uiid)) { + if (!groupOwnsUIID() && isToggleUIID(uiid)) { setUIID(preToggleUIID); } Object saved = getClientProperty("$origUIID"); @@ -1104,6 +1104,35 @@ public void setToggle(boolean toggle) { } } + /// Whether a ComponentGroup is currently holding this control's UIID. Being + /// inside one is not enough: updateUIIDs() returns without renaming anything + /// when ComponentGroupBool is off and the group is not forced -- the default, + /// and what Android Material ships -- and in that case the live UIID is still + /// ours to restore. The group records what it replaced, so the presence of + /// that record is what says it took ownership. + /// + /// #### Returns + /// + /// true if a group renamed this control + private boolean groupOwnsUIID() { + return getParent() instanceof ComponentGroup && getClientProperty("$origUIID") != null; + } + + /// Whether the given saved UIID is one setToggle is allowed to convert. An + /// application that assigned its own UIID keeps it: the original code only + /// ever converted the two defaults, and the guide says as much. + /// + /// #### Parameters + /// + /// - `saved`: the value recorded by a ComponentGroup + /// + /// #### Returns + /// + /// true for the default CheckBox and RadioButton UIIDs + private static boolean isDefaultToggleableUIID(Object saved) { + return "CheckBox".equals(saved) || "RadioButton".equals(saved); + } + /// True for the UIID setToggle assigns and for the three a horizontal /// ComponentGroup renames its edge controls to. Matching only the bare name /// would skip the restore for any toggle that happens to sit in a group. diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index d7ad58533ed..f129d1550dc 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -153,6 +153,45 @@ void testTogglingOffAndOnInsideAGroupLeavesTheGroupHoldingTheToggleUiid() { "a control that is a toggle again must not leave the group as a radio"); } + @Test + void testTogglingInsideAnInactiveGroupStillRestoresTheUiid() { + // ComponentGroupBool is off by default -- Android Material never sets it -- + // and an unforced group then returns from updateUIIDs without renaming + // anything. The live UIID is still the control's own in that case, so + // skipping the restore merely because the parent is a group left a plain + // radio wearing the toggle style. + ComponentGroup group = new ComponentGroup(); + RadioButton radio = new RadioButton("Choice"); + radio.setToggle(true); + group.addComponent(radio); + assertEquals("ToggleButton", radio.getUIID()); + + radio.setToggle(false); + + assertEquals("RadioButton", radio.getUIID()); + } + + @Test + void testTogglingInsideAGroupKeepsAnApplicationsOwnUiid() { + // setToggle has only ever converted the two default UIIDs; a UIID the + // application chose is left alone. The grouped path has to honour that too, + // or the group hands back ToggleButton instead of the custom name. + ComponentGroup group = new ComponentGroup(); + group.setForceGroup(true); + group.setHorizontal(true); + RadioButton custom = new RadioButton("Choice"); + custom.setUIID("MyChoice"); + RadioButton other = new RadioButton("Other"); + group.addComponent(custom); + group.addComponent(other); + + custom.setToggle(true); + group.removeComponent(custom); + + assertEquals("MyChoice", custom.getUIID(), + "a UIID the application set must survive toggle mode"); + } + @Test void testCreateToggleAddsToGroupAndSetsToggleUiid() { ButtonGroup group = new ButtonGroup(); From 21d75d61ace36d4034092dac3e5801b5e4ecd180 Mon Sep 17 00:00:00 2001 From: Shai Almog Date: Fri, 11 Sep 2026 16:04:56 +0300 Subject: [PATCH 29/29] Ask the group whether it is grouping, and reseed the one golden this moved $origUIID outlives the ownership it records. refreshTheme with grouping switched off calls restoreUIID, which hands the live UIID back to the control and leaves that property set, so reading it as "the group owns this" kept answering yes after the group had let go -- and setToggle(false) then skipped the restore, leaving a plain radio painted as a toggle. I had noted that this property is never cleared two commits before I started using it as the ownership test. ComponentGroup now answers the question itself, with the same condition updateUIIDs uses to decide whether to rename at all, so there is one definition of "grouping is active" rather than a marker that approximates it. Covered by a test that switches grouping off, refreshes, and then disables toggle mode; it fails against the marker-based predicate. The macOS ValidatorLightweightPicker golden is reseeded from the run's own artifact. That screen builds PickerComponent.createDate(...).label("Birthdate"), and a PickerComponent is an InputComponent whose label is a FloatingHint -- the UIID that had been deriving from nothing -- so giving it a real style moves the row and everything under it. The change is intended and the reference was stale. Only that one golden moved. The same test has references for ten other ports, and the iOS, JavaScript and Mac Catalyst suites all ran it on this branch and matched, so the shift is specific to the AppKit port's layout of that row rather than to the theme in general. Co-Authored-By: Claude Opus 5 (1M context) --- CodenameOne/src/com/codename1/ui/Button.java | 8 ++++-- .../src/com/codename1/ui/ComponentGroup.java | 13 +++++++++ .../com/codename1/ui/RadioButtonTest.java | 27 ++++++++++++++++++ .../ValidatorLightweightPicker.png | Bin 56595 -> 56825 bytes 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Button.java b/CodenameOne/src/com/codename1/ui/Button.java index c8441391fb2..bbf215882fa 100644 --- a/CodenameOne/src/com/codename1/ui/Button.java +++ b/CodenameOne/src/com/codename1/ui/Button.java @@ -1108,14 +1108,16 @@ public void setToggle(boolean toggle) { /// inside one is not enough: updateUIIDs() returns without renaming anything /// when ComponentGroupBool is off and the group is not forced -- the default, /// and what Android Material ships -- and in that case the live UIID is still - /// ours to restore. The group records what it replaced, so the presence of - /// that record is what says it took ownership. + /// ours to restore. The group is asked directly rather than inferred from the + /// UIID it saved, because restoreUIID leaves that saved value in place when + /// grouping is switched off, so it outlives the ownership it recorded. /// /// #### Returns /// /// true if a group renamed this control private boolean groupOwnsUIID() { - return getParent() instanceof ComponentGroup && getClientProperty("$origUIID") != null; + Container parent = getParent(); + return parent instanceof ComponentGroup && ((ComponentGroup) parent).isGroupingActive(); } /// Whether the given saved UIID is one setToggle is allowed to convert. An diff --git a/CodenameOne/src/com/codename1/ui/ComponentGroup.java b/CodenameOne/src/com/codename1/ui/ComponentGroup.java index ae951bb275e..bfaf78edc47 100644 --- a/CodenameOne/src/com/codename1/ui/ComponentGroup.java +++ b/CodenameOne/src/com/codename1/ui/ComponentGroup.java @@ -183,6 +183,19 @@ private void updateUIID(String newUIID, Component c) { reverseRadio(c); } + /// Whether this group is currently renaming its members' UIIDs. updateUIIDs() + /// does nothing unless the theme constant is on or grouping is forced, and + /// Button needs the same answer to know whether a member's live UIID belongs + /// to the group or to itself. $origUIID cannot answer it: restoreUIID leaves + /// that set, so it says "was renamed once", not "is renamed now". + /// + /// #### Returns + /// + /// true when this group assigns its members' UIIDs + boolean isGroupingActive() { + return getUIManager().isThemeConstant(groupFlag, false) || forceGroup; + } + private void restoreUIID(Component c) { String o = (String) c.getClientProperty("$origUIID"); if (o != null) { diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java index f129d1550dc..37aa13997c3 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/RadioButtonTest.java @@ -192,6 +192,33 @@ void testTogglingInsideAGroupKeepsAnApplicationsOwnUiid() { "a UIID the application set must survive toggle mode"); } + @Test + void testRestoreWorksAfterGroupingIsSwitchedOff() { + // refreshTheme with grouping off calls restoreUIID, which puts the live + // UIID back but leaves $origUIID set. Reading that marker as ownership + // therefore kept reporting "the group has it" long after the group had + // given it back, and the restore was skipped. + ComponentGroup group = new ComponentGroup(); + group.setForceGroup(true); + group.setHorizontal(true); + RadioButton radio = new RadioButton("Choice"); + RadioButton other = new RadioButton("Other"); + radio.setToggle(true); + other.setToggle(true); + group.addComponent(radio); + group.addComponent(other); + assertEquals("ToggleButtonFirst", radio.getUIID()); + + group.setForceGroup(false); + group.refreshTheme(false); + assertEquals("ToggleButton", radio.getUIID(), "the group gives the UIID back"); + + radio.setToggle(false); + + assertEquals("RadioButton", radio.getUIID(), + "with the group no longer grouping, the UIID is the control's to restore"); + } + @Test void testCreateToggleAddsToGroupAndSetsToggleUiid() { ButtonGroup group = new ButtonGroup(); diff --git a/scripts/macos/screenshots/ValidatorLightweightPicker.png b/scripts/macos/screenshots/ValidatorLightweightPicker.png index dbb661e51742313c9b4658f44398f3228d093c3e..21ec56b57d1c15966d3285a80aa938e517b1258e 100644 GIT binary patch literal 56825 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%0A}irY4P-g1{6m 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ⅈBZ5 zz0DQLN4~vp2RmR>9o-0{&+|*~CU&%j;(`GoZajZ(g{C`XpZikO>xjd&v~`a7^p3jK zbsr}q4uSTLg^76f(2SeNt=-sq=U2FNn^sFo_Ev^Q6PG6OJ*#O@;laUD1E`k1 zaV5+WcZQD$l=JK{GDs=p5}N>FNrOkR{c41jm+H!fElDvK$%loL$2N9nQ&b-Mpp()& zHl)R#V{Iv7;~kn)EuQsFj6q0n*3w(7H0*=V7iK4+t;9k!qu{m6w2| zA=wTksOvRx_HTX_vjMzANLWayVHjzvzY*9(UuI95R(LkR?)u%2lbotpB81Y3v%ZmC;G z*l$nXpjlHh`wpaBR;xec;9rv~XW+y!H9}F2e&2``s-2-jQ*R(V*7|SoJTXIcwrom0 zOZNqcKtSIM(!dq7PSv$V*>JABWx+0>>&nWse;kTdh$49y2}nsz^_j@Ds2mA@$wjIj z!~i6E8DUkp&FZfo%Wxbm==6q-I(U30WcxK6(BM@+J89F!)02;PI73u zYIe25cRdCC#`?V*SkRwm>DQgd}d-OyFJl=an;VNEw`&TC!YdNX~X;B>sB`4UPhEJwwi~ZddE*zdph; zfld2`w`K#&fBo@tt>JJ}F@c;b2>Sj4^)GMZ()Q4V0gge~g39uT-@pHTnR-1qYPgHb z(P%jYY@qP~z{{t&s)l`BCaxX{0J$r{uU}_#qs6Z5diuToNjgk%o%gNFlX`+rPSnRn zd%YaCZX+KSYe(~41N{ds=W!Kyo@FgCiB56)eaΝM3EUKEGrX@O!W_4j_dQ^xdxc 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

I5}st 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 a)u%3ap%=>+F$jS_nrb?KWgaoR{=Wc(zH!_D