Officially the designer should have full control over the colors and programmers shouldn’t modify colours, that’s why there are const qualifiers in the exported code for the color arrays.
If you want to change the global color for some widget you can set it directly on ‘screen loaded’ event with lv_obj_set_style_text_color or similar functions, or by the ui_object_set_themeable_style_property() to have theme-handling support (followed by a call to ui_theme_set() function). (Calling the _ui_theme_set_variable_styles() function periodically from main loop can even follow changes in the theme/style-variables.)
There are pre-defined and custom states for that in SquareLine Studio in LVGL, with inheritance provided by LVGL. We used that in designs with success. So I think it’s easier if your designer sets ‘USER1’/‘USER2’/etc. state in the Inspector panel, sets the preferred color for that state, and later you can set/clear those states in your code (with lv_obj_add_state() and lv_obj_clear_state() or maybe _ui_state_modify()), bringing in the extra colors for the given special state.