Adds a file dropzone to the create branch of the Add secret dialog
(final PR in the PLAT-240 stack, after #26723 and #26724). The browser
reads the file, derives the format from the extension
(`.env`/`.json`/`.yaml`/`.yml`), and imports via `POST /secrets/batch`;
per-entry backend errors surface in an alert and the success toast flags
secrets imported without an env name. Storybook play stories and vitests
cover the flow.
Also documents the upload flow in `docs/user-guides/user-secrets.md`.
Closes https://linear.app/codercom/issue/PLAT-240
> Reviewed and updated by Coder Agents on behalf of @dylanhuff-at-coder.
This pull-request looks at all (most) of our instances of `const styles
= { ... }` and attempts to smooth them down into the minimum viable
Tailwind equivalent 🙂
This pull-request removes all instances of `<IconButton />` being
imported from `@mui/material/IconButton`. This means that we've removed
one whole dependency from MUI and replaced all instances with the local
variant.
* chore: add generic ref support for useClickable
* chore: update useClickable call sites to use type parameter
* chore: update useClickableTableRow implementation
* chore: update other components using useClickableTableRow
* feat: add middle-click and cmd-click support for rows
* refactor: rename variable for clarity
* docs: add comment for clarity
* chore: add more click logic and comments
* refactor: clean up useClickableTableRow
* docs: rewrite comments for clarity
* fix: update TimelineEntry to accept forwarded ref
* fix: fix keyboard event logic to respond to spaces properly