From f62f8188bfbbfe9f1c1c8fb61b71344097eebaa3 Mon Sep 17 00:00:00 2001 From: kyle Date: Mon, 29 Jun 2026 22:31:37 +0000 Subject: [PATCH] additional colors under admin control --- backend/__pycache__/seed.cpython-312.pyc | Bin 21816 -> 21925 bytes backend/app/__pycache__/main.cpython-312.pyc | Bin 13083 -> 13413 bytes .../app/__pycache__/models.cpython-312.pyc | Bin 10537 -> 10836 bytes backend/app/main.py | 4 ++++ backend/app/models.py | 6 ++++++ backend/seed.py | 4 ++++ src/app/admin/admin.component.ts | 12 ++++++++++++ src/app/interfaces/station-config.ts | 4 ++++ src/app/services/station-config.service.ts | 4 ++++ src/app/services/theme.service.ts | 4 ++++ src/app/utils/color-harmony.ts | 4 ++++ 11 files changed, 42 insertions(+) diff --git a/backend/__pycache__/seed.cpython-312.pyc b/backend/__pycache__/seed.cpython-312.pyc index a3245f2e61364995569992e43decfefbdcd72738..0f8e2217a3fe91cbef9f3b310297b37bc45b6b1a 100644 GIT binary patch delta 2325 zcma)6X>(Im7``{j4NXZ?Xqq-@D3pSQltQ5ex>yA&2#7GEeo$n%llHxB1KB*ep~{St zIwNDpamK)vq0aP!qKGUacu~P!T(K^3!x}em{ot2_`~lzhq%C)l>5%C>_j%5F&vTx$ z_4E<>;8EE#Qc_YZ;cxFho!h;4?D6>J!ISg$+cWSC9Drxxxnbu)c}s=n)ym;u2i8Fp zo`*x=h8Kn%a2SrjQK%677`zC_p;Yjf-~^lmKk;72mP)Nm^9FD%db}(=OgIIvfDK(< z9ai8qI1Oh|RS5Muya8`Q#)ekZ*#vLF+t}$Rg=T(>**n5)6TA!Wq19OobPv1_AD|KO z58)&D7+r{e0_WgU^gxat0gK0o@c0Zq$2q=0moIV79DJ2Q`867m{06>7^&MJ~IuGBY z8bvcyXjWx0`$3rHH81=KwjKxk^oV0i5U%K-QO~gGUr<+D^slIA3caFWZ~+@;Sqd(q zuCeIfP|t?H;CKAi;`a~y&e7(=p9WLfWYTDcbJd)R=Q=? z9GRVQ$UVk}x^87B9(JE;)@`$8wj&L>*be+K2Z4(qO3+9UBZw0u2$BdPC%d0`4*^5S zJG&F{o=9(DgpMsKCqj+*u{2dwsOe-%W4fBs!+InUSI0&uyRi2Gb6+TB%WOr;ya=0E z1o3VrvK3ph(Mu>~o2b3MfQlB^*@Khh^Qmd$(S~y6A)H~i@pQv6x!>Hla9GZ$SLdk zmOR$ea+9C9NehTwE6=sBldBJ}w7Axj>{4(%O}DYN#j8AlQ=BpMmgC~!;)ZFs51SX;*ErYG>r84Jl;z1HK#Eh-H zn#4>=apy{^`79DOLd@s0Nz{t6xtHdUm`h}4L%{JbNvU149Z$W9}t5HqQhWHwxZbgOjUs@~FI$83~ m94!ludS}pIc{Sp{cTv}XC+oN@)yp=%)jWGAvpEjqN&g35zIj0a delta 2234 zcma)6ZERCj7{2%Rp0bXvW$U`NE1zQy3WJ$}j==<(ASwZWNFt7en{MyjR%p9=+DR~) zLc$Lc6H;Mt zdCqg*_nZwMR!@wmzB3gShx98bApIJpX!0BQ7TGxz zLxy5?4zcr6>^n067eMRL;o=^>GXmH6_sFL^coF#w2mb;2Ob7pQPpjTJ%Q5g1Cd_v5 zpOMdj-{2Sg*5mgQe&?DE@T>JGYg2!>kFisJEvi{V!HE4=aFtixVmH<2bhXPm(%8*7 z_0z7Nw^hsaAdGr=FMhaA!9$^sLNkRpg>4kJQ%GQlx_Odt7ljmtqPx34)f4Y6tw`fY z#*JaN{PBk=qsACWXH1?oGTB%*-k&nYR`Ek+EF4Ze5piK$?GlE;aJfPX2Q&x zvX^`cjc9Qwx?}0InSyA!qq&q`>ad>a>)$cv+4^(I!jSB$cigF*-HX{z+f7TW{^QWu zKQHOYyS0$ejU3+if_eJly?qJ%%T7|a$hezs>tt(yJ%L*sx6ZeY%2uXS>q=Ym&9Y2h_*yjumU&>*zVs8%ieQ*&<8x zcq&_TCCn73$H5<@&`E(VC*MkeE(13x&?$M0!anQl>hNM}Le%Bxp@jn(7Y2NdrMIYO zOcVH%ICRbqcFZq}$j2`)g2ynjv95$^7<@O*bGOyMq5jr9!TlJbsua$sh{wddSw4{J zj%7_FmPqhHocKqzNABy<)NZSC!=cvO9zz4k|!ebr4vz&q(v!NEHjK$ zEQz*?F5FK3W4MYLO6fpl?a6)^NSG`6K^!AkCUhq#4sqrxil^ZY-zi%qWJoyw>;nU7DEUB8BPHbaWRWGg;fM#IS!e1^hC zwVZiODTcM2HOwi-*%}NCMcR|=B*Z44VG|cN0joCcL{=9B;MIZGmoThwp@ z#Vw(-5&ZJ(R!}?Y_{ABmH&5f=#1wgpJ2^imzbL*uBeNv6id{Jk3}B);nduoNAW?(V zq*UWuJP@_HsVSMIxj_31DN8ZoW$g8pr~P@p@pH@WDlWrj6s{f3so>O22Cyy zG3QDKhLt)H7k}NnQKW`3@&>2m4BHh->or$uZg55SxWLWcN);bqI3|EG5Ld}CL5F~FQv^|02IyM z>@Vfb$(Xu%w(>_N#;VD^YSL^~Ak}%3*QvQOZrc1sjgwKl9w>5)xwxe07Hdv^d1_IS zHb_bGWDyMmHn0T+lf5+bq%uLGr68glL}UYrTg-_mDMdMxCuulX7J~RJ$@zJCMGYYN zTo925BHBSjK9IP@m6(#7nHOJLoLY2?Ej=|qJ|(HBaWc2266-Xebk$}fAd7L@=1@I% zM#e>x=jw~IO$6!fo4iZ^tpF&1i$K0A0x2#koV?w@o^26`=|B08fdtnEAd?Y@i@!~l TGqh!MWMnk^*HhCSN zD!Y0O>uiP;jmfw8Y#B8tOYj@=YSnV)F{NnMa@H`XXipB~Hx||btI_S`0;<%jVF!}> zljra|OCpOK)NlgD4WY6>_~qG+peD-+h%*{*HWS#yG}%#j9i!jo55g6UjDC|dMa{Y5 zf$mZV;^L*7SBcgza(+-3;b&`b|Ddi=W6b1asngs^Km|p~AR=Y5rL-m+l$jx| z&6)!gP2W62+MAOxaq|8T|}+8`FEYejNuK}lwQo+fhf?tHG*^ONwr>=H!>B7J)St#ZQjaG++Z;n=^T`rk+$PNMj+0Cq*j#VWF{4XBCx0zM08DNHhe1p z3b-PW?~6d%i*hF!*=vBb6?uaQ6A)npByMroByCZ7hck8BLWk~75? zFwT}-5xT?kijZ4__e~)QbP=E$wFQE+HCLqWh`b`~-r$3-rqO%zS+PJyt~!u?Afjoq zhD0)B-Q+?g$<0e8vKhIWK{6nsce0dJIb$j*Vlh>+>z*O#+W}SRrO^tEJ zWHxnqt~DUlAmZ+1ef3DjHIqBl+nvCE1bYYU@*a>Hu(QA}09ydohZ+^PIBatBQ%ZAE e?TR){4$?^Ew`Fu^oZ#|>0YrasV48eLBOL&>F~F?= delta 427 zcmcZ-vNDM8G%qg~0}zCAIc4Q2Zsa@3#dL;c@&S3<&0^gBEG(6}ntGcJ1^Ahm{WNta zpHK}v6)A70TXAV7etx&^hg@|u&2r9Bzz!Ah=4doyyif|P)W z$&H*1sh*gtA6$>XXkr$lA z%(?l2Vl*SybdVH?*gn}+IgD{S*to6Aw-^~`OColMOZGxmJKwfr#sqqckEJS4`fb(XImaFxYQk*Ml7j ob`#iku)!-P$7{+muA5w|naFR>=*Bp~ = [ { field: 'color_success', prop: '--color-success' }, { field: 'color_danger', prop: '--color-danger' }, { field: 'color_info', prop: '--color-info' }, + { field: 'color_white', prop: '--color-white' }, + { field: 'color_light', prop: '--color-light' }, + { field: 'color_medium', prop: '--color-medium' }, + { field: 'color_black', prop: '--color-black' }, ]; /** Build a gradient CSS value from three color stops. */ diff --git a/src/app/utils/color-harmony.ts b/src/app/utils/color-harmony.ts index 626c21b..7605438 100644 --- a/src/app/utils/color-harmony.ts +++ b/src/app/utils/color-harmony.ts @@ -253,6 +253,10 @@ export const COLOR_ROLES: readonly ColorRole[] = [ { field: 'color_success', label: 'Success', group: 'semantic' }, { field: 'color_danger', label: 'Danger', group: 'semantic' }, { field: 'color_info', label: 'Info', group: 'semantic' }, + { field: 'color_white', label: 'White', group: 'neutral' }, + { field: 'color_light', label: 'Light', group: 'neutral' }, + { field: 'color_medium', label: 'Medium', group: 'neutral' }, + { field: 'color_black', label: 'Black', group: 'neutral' }, ] as const; /**