Repository navigation
feat(plugins): add classNames overrides for targeted styling - #280
olliethedev merged 4 commits into
Conversation
|
@devansh-jagtap is attempting to deploy a commit to the olliethedev's Team Team on Vercel. A member of the Team first needs to authorize it. |
|
Reviewed the final head Local verification: 1,096 Stack tests, 196 Codegen tests, all 23 styling tests, typecheck, lint, build, Knip, docs production build, 7 release-gate tests, and 8 packed-consumer harness tests pass. Default/styled screenshots are attached; the generated Next.js preview also stayed within the viewport at desktop and mobile widths. Full hosted framework/consumer checks are still running. The earlier Vercel authorization notices concern old fork commits. Both real deployments now pass on the final head via the matching upstream review branch. Copilot's quota notice did not contain a code finding; independent review is complete. No review threads remain unanswered. |
|
Main verification update: TanStack passed all 189 tests. Next.js and React Router each hit the existing sidebar-chat smoke test: the live AI response exceeded its 30-second wait, then the built-in retry matched both the retained sidebar title and the message using the test's unscoped text selector. The trace shows the message rendered and the response still in progress; this PR does not change that test or streaming behavior. Next.js also recovered from a public-chat request timeout on its built-in retry. Rerunning the two failed jobs once on the unchanged merge commit. Publication remains gated on successful full main checks; no test assertions or release checks have been relaxed. |
|
Released in 4.1.0. Both All main workflows and both production deployments passed. Final E2E results: Next.js 192 passed / 1 intentional framework skip; TanStack 189 passed; React Router 187 passed / 1 flaky test passed on retry / 1 intentional framework skip. Existing live-AI flakiness required failed-job retries, and a later Next.js attempt needed an infrastructure retry for slow Ubuntu package downloads. No assertions or release gates were weakened. The PR description now contains the final verification and release links. |
Summary
classNamesslots to Blog, AI Chat, CMS, and Form Builder so consumers can style built-in UI without replacing components. Classes merge with defaults, with consumer overrides winning Tailwind conflicts. Closes Add classNames field to plugin overrides for styling customization #36.@btst/stackand@btst/codegen4.1.0 release on current main. Generated installations and playground templates select Stack 4.1.0.Type of change
Checklist
pnpm buildpassespnpm typecheckpassespnpm lintpassesdocs/content/docs/); docs production build passesLocal Knip, 7 release-gate tests, and 8 packed-consumer harness tests also pass. The additional regression assertions reproduced seven failures before the fixes. Independent standards and specification reviews of
0a0e192cdecd932d721cba0b1017c9ad9cfe44d7found no remaining blockers. All hosted workflows, both actual Vercel production deployments, and publication preflight passed on merge commitb22183f63c5e5729b234cbb1acff68c5b8e51531. Main E2E needed retries for existing live-AI flakiness and one runner with slow Ubuntu package downloads; no source, assertions, or release requirements were changed for those retries. Full E2E ran in GitHub Actions; local browser checks covered the generated Next.js preview at desktop and mobile sizes. No late review findings remain. Release 4.1.0 is published and its publication workflow passed. Both npm packages resolve throughlatestto 4.1.0 and the merge commit; fresh-cache downloads and tarball checksums are verified.Slots
container,postCard,postTitle,postMeta,tagsList,paginationcontainer,sidebar,messageList,message,userMessage,assistantMessage,inputcontainer,contentTypeCard,contentTypeTitle,table,tableRow,paginationcontainer,table,tableRow,pagination,formForm Builder's table and pagination slots cover both forms and submissions.
formmerges after the standaloneFormRenderer.classNameprop and persists across its states. Blog's optionaltagsListadds a flex wrapper only when supplied. Slots style the built-in components; replacement components own their styling. Form fields and submit-button primitives remain outside this change's scope.