tools.build is a set of functions to build Clojure code. Not ClojureScript.
cljs.build.api is entirely standalone and has absolutely nothing to do with tools.build. It is therefore unaware of what a “basis” is. The only thing it is concerned with is the available classpath when the API function is called.
The classpath is contructed by the command you run, so clj -T:build uber. That basically activates the :build alias, but not the :app alias where your dependency is specified.
In general CLJS, meaning cljs.build.api, figwheel and shadow-cljs, do not mix well into the the tools.build setup. It is generally advisable to either run them as separate steps before building the CLJ parts. Or using tools.build to run a new JVM instance and running that command for you, via java-command. Generally it is much easier to just to npx shadow-cljs release app && clj -T:build uber or using a Makefile or just a shell script.
Of course nothing stops you from making all CLJS related dependencies available when invoking the build task, but that is not the general idea behind tools.build.