I am wondering if HA sends an off command with 0 brightness or the bulbs I have do not respond that way.
See if this will work for you, I use the following to dim. The switch I use has 3 different commands single press, hold, and hold release.
Depending on the bulb you may need to adjust the step in the call service and the time between messages in the trigger node. When the button is held the trigger node will fire repeatedly until the button is released.
[{"id":"6476799275779344","type":"trigger","z":"f80b6c338afd5483","name":"","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"-300","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":600,"y":3280,"wires":[["cd0c062ffc8bac00"]]},{"id":"44da3c09a9ec58e7","type":"change","z":"f80b6c338afd5483","name":"","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":3340,"wires":[["6476799275779344"]]},{"id":"cd0c062ffc8bac00","type":"api-call-service","z":"f80b6c338afd5483","name":"","server":"6b1110b5.183a4","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.lefty_and_righty"],"data":"{\t \"brightness_step\": -20\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":850,"y":3220,"wires":[[]]},{"id":"bafb7b2a626b8f16","type":"inject","z":"f80b6c338afd5483","name":"button pressed","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":3220,"wires":[["cd0c062ffc8bac00"]]},{"id":"466712ec09b2dbf6","type":"inject","z":"f80b6c338afd5483","name":"button held","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":3280,"wires":[["6476799275779344"]]},{"id":"7106fe13db6ee114","type":"inject","z":"f80b6c338afd5483","name":"button release","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":3340,"wires":[["44da3c09a9ec58e7"]]},{"id":"6b1110b5.183a4","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]