So basically Oracle Apex, oracle html db before that, and end of the 90s we were generating this from Oracle Designer 2000: low-code tools to generate web applications from the database...
When I hear "low code" I get a little skeptical. Often such tools make the first 80% of the project simpler but the last 20% a bear, unless you live with clunky defaults. There's a difference between managing code better and removing code. Generally I find the best path to "low code" is to write small simplification wrappers that fit your shop's conventions, because a big vendor probably won't fit your shop's conventions out of the box.
Thus, you can code like "currentForm.AddButton("clickMe", destination: screenY); and all the styling etc. is done by your shop's wrapper to fit your shop's preference. The wrapper won't fit all needs, but if fits 90% of buttons, then you only have to specialize 10% of them. I don't know why people tolerate copy and paste of verbose snippets for such. Wrap the repetitive clutter away to make it easier to grok your primary work.
I like optional named parameters such that customization is incremimental:
I worked on Oracle Developer/Designer in the 90s. Was pretty good. I also went to the Oracle course at Reading for MOD PL/SQL which Htmldb and Apex were based on. There is still quite a bit of Apex work around, and all the oracle "applications" of course as well.
Thus, you can code like "currentForm.AddButton("clickMe", destination: screenY); and all the styling etc. is done by your shop's wrapper to fit your shop's preference. The wrapper won't fit all needs, but if fits 90% of buttons, then you only have to specialize 10% of them. I don't know why people tolerate copy and paste of verbose snippets for such. Wrap the repetitive clutter away to make it easier to grok your primary work.
I like optional named parameters such that customization is incremimental:
currentForm.AddButton("clickMe", destination: screenY, color: "green");
currentForm.AddButton("clickMe", destination: screenY, style: "compact", animation: "images/wiggle7.gif");
It's kind of like query-by-example: only specify the constraints you need instead instead of every potential attribute under the sun.