Base UI renders all three controls as a `span`, so the `disabled` attribute never reaches the DOM and every `disabled:` variant on them compiled to a rule that could not match. A disabled checkbox was pixel-identical to a live one: same opacity, same `cursor: auto`, nothing to tell a user the control was refusing them. The same went for the form-wide disable these components apply while a submit is in flight — the whole form stayed visually interactive. Base UI publishes the state as `data-disabled` instead (alongside `aria-disabled`, which was already correct), which is the same mechanism `data-checked:` here already relies on. Verified in the browser rather than by reading: the styled node reports `data-disabled=""`, no `disabled` attribute, and now computes to opacity 0.5 / cursor not-allowed where it previously computed to 1 / auto. UserFormDialog can drop the wrapper it was dimming by hand as a result, which also stops the explanation underneath a locked control from being dimmed along with it. AnchorFormDialog still dims its locked role group at the call site; that now compounds slightly with the control's own dimming, and is left alone rather than changed unverified. Tabs already carried an `aria-disabled:` fallback beside its `disabled:`, and the native inputs (Input, Textarea, CommandInput, InputGroup) were never affected.
Convoy
Convoy is a modern and performant KVM server management panel for hosting businesses. It's built with PHP and React and proven technology like Proxmox, making it easier to drop Convoy in an existing system.
Stop paying hundreds of dollars for unreliable and slow software. Subscribe to a license to use Convoy today for $6/node/mo
Documentation
Installation
Convoy installs onto a dedicated host with one command:
curl -fsSL https://install.convoypanel.com | sudo bash
See docs/deployment.md for requirements, TLS, upgrades and running against an external database, and docs/configuration.md for every supported setting.
Local Development
Local dev runs on ddev (Postgres 17):
ddev start
ddev composer install
ddev artisan migrate
ddev npm install && ddev npm run build # or: ddev npm run dev for HMR
The app is served at https://convoy.ddev.site. See AGENTS.md for details on running Artisan/Composer/npm, regenerating typed frontend artifacts, and database snapshots.
Acknowledgements
Please visit this page on our website to view acknowledgements.
License
Convoy is licensed under our own proprietary license.
