Commit Graph
6 Commits
Author SHA1 Message Date
Alaister YoungandAlaister Young ca2b50a0a7 chore(ui-patterns): collapse the admonition shim into ui-patterns/Admonition (#48377)
Follow-up to #48344: collapses the two resolution paths for the
Admonition module into one.

`src/admonition.tsx` was a back-compat shim re-exporting
`src/Admonition/`. Two ways to resolve one module is exactly what
produced the macOS self-import bug fixed in #48344, and the local
typecheck errors that #48374 worked around. This removes the shim and
standardizes on the PascalCase subpath, matching every other export in
the package.

**Changed:**

- Codemodded all 246 `ui-patterns/admonition` imports to
`ui-patterns/Admonition` (240 `.tsx`, 5 `.mdx`, 1 `.ts` across studio,
docs, www, design-system, and lite-studio)
- Pointed the 5 internal `'../admonition'` imports back at the
`'../Admonition'` directory

**Removed:**

- `packages/ui-patterns/src/admonition.tsx`, and its `./admonition`
entry in the exports map (regenerated with `pnpm gen:exports`)

## To test

- `grep -r "ui-patterns/admonition" --include='*.ts*'` → no hits
- `pnpm test:case-hazards` → passes
- `pnpm typecheck` → all 15 tasks green
- `pnpm --filter studio run lint:ratchet` → passes
- `pnpm --filter ui-patterns vitest run src/Admonition` → 11 tests pass

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Standardized Admonition component imports across the application and
documentation.
* Improved compatibility with case-sensitive environments by using the
canonical component path.
  * Removed the legacy Admonition import entry point.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
2026-07-29 00:48:56 +08:00
Danny WhiteandJoshen Lim 69f3c43118 fix(studio): close Vercel create popup on cancel (#48371)
## What kind of change does this PR introduce?

Bug fix / UX polish.

## What is the current behavior?

Cancel on the Vercel create interstitial redirects to Vercel’s `next`
URL. That finishes the install flow and shows “Completing installation…”
/ “Installation complete”, even though the user cancelled. The Deploy
Button job still proceeds and fails. The button was also labelled
“Return to Vercel”, which read like an alternate success path.

| Before |
| --- |
| <img width="719" height="118" alt="Create Vercel Project Supabase"
src="https://github.com/user-attachments/assets/c7ad261a-f132-4226-b460-21ec267595c0"
/>|
| <img width="800" height="599" alt="95801"
src="https://github.com/user-attachments/assets/6d235c4b-be90-4d5e-89bc-a68933f9dc46"
/> |

## What is the new behavior?

- _Return to Vercel_ button now labelled **Cancel**
- **Cancel** closes the popup via `window.close()` (same honest abort as
manually closing the window)
- If the browser blocks programmatic close, Cancel is replaced by muted
fallback copy: “Close window to cancel” (`role="status"` /
`aria-live="polite"`)
- Cancel is left-aligned with `justify-between` when there’s no
additional-costs block; with costs, both actions stay on the right
- Removes the free-limit hint line about returning to Vercel (Cancel
makes that self-evident)
- Success path is unchanged: after create, we still redirect via `next`
- `/new` Cancel still navigates into Studio (`cancelAction: 'studio'`).
This is unchanged behaviour

| After (Fallback) |
| --- |
| <img width="713" height="103" alt="img"
src="https://github.com/user-attachments/assets/95aafc0d-1c3d-4093-9681-88ad0a40f9fe"
/> |

## Additional context

Follow-up to #48311. Vercel’s `next` URL has no documented cancel/abort
status, so closing the popup is the correct escape hatch.

### To test

Full Deploy Button popup cancel can’t be verified on prod until this
merges. Locally:

1. Open Studio on this branch.
2. In `ProjectCreationFooter.tsx`, temporarily force the fallback:
   ```ts
   const [showCloseWindowHint, setShowCloseWindowHint] = useState(true)
   ```
3. Load create-project UI:
- Free org / no costs: Confirm Cancel is left, Create is right
(`justify-between`). With the forced hint, Cancel is replaced by “Close
window to cancel”.
- Paid org with additional costs: Confirm costs on the left; hint/Create
on the right.
4. Revert `useState` to `false`.
5. Optional: open a Vercel create interstitial URL in a normal tab (not
a popup), click Cancel. `window.close()` fails and the hint should
replace Cancel after ~100ms.
6. On `/new/[slug]`, Confirm Cancel still returns to the Studio
dashboard (not close-window).

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Summary by CodeRabbit

* **New Features**
* Updated Project Creation Cancel to close the popup window directly
when applicable, with a “close window to cancel” hint when closing isn’t
available.
* **Bug Fixes**
* Removed Vercel-specific “return and restart” messaging and related
return-url handling.
* Standardized Cancel navigation for non-popup flows to return to the
last relevant location (or the organizations page).
* **Refactor**
* Improved Project Creation footer layout/visibility for additional cost
details.
* **Chores**
* Simplified the free-project limit warning configuration by removing an
unused option.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-07-28 15:28:00 +10:00
Danny WhiteandJoshen Lim c9ed51c99e fix(studio): add return to Vercel escape hatch (#48311)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Bug fix / UX improvement for the Vercel Deploy Button create-project
interstitial.

## What is the current behavior?

On the Vercel create-project step, the organization picker is locked
(correct — the integration is bound to that org) and Cancel is hidden.
If the org can't create a free project (member free-project limits),
users hit a dead end: Upgrade may not help, and there's no way out of
the popup.

Also includes a small capitalisation nit on the Vercel install page.

| Before |
| --- |
| <img width="800" height="629" alt="Create Vercel Project Supabase"
src="https://github.com/user-attachments/assets/2acdc7a3-eb99-43c6-9135-557370647da1"
/> |

## What is the new behavior?

- Replaces `hideCancelButton` with `cancelAction: 'studio' | 'vercel' |
'hidden'`
- Vercel create flow shows **Return to Vercel**, which redirects to the
install `next` URL (closing the popup cleanly)
- Free-project-limit admonition adds a Vercel-only hint pointing at that
button: “Or return to Vercel and restart with a different organization.”
- Main `/new` Cancel behaviour is unchanged
- Org picker stays disabled

## Additional context

Org switching mid-create is intentionally not allowed. That would orphan
the Vercel install. Returning to Vercel is the safe escape hatch so
users can restart Deploy Button with another org, or free a project slot
/ upgrade and try again.

## To test

As far as I can tell, this is impossible to test on prod. Shortly after
merge though, you could test the following:
- [ ] Happy path: create still works; Return to Vercel is secondary and
does not block submit
- [ ] Free-limit blocked org: Create disabled, Return to Vercel visible
and redirects to `next`
- [ ] Main `/new`: Cancel still goes to last org / organizations

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced project creation flow for Vercel: when a valid return
destination is available, users can choose **“Return to Vercel”**.
- Added additional messaging in the free-project-limit warning to guide
users back to Vercel and restart with a different organization (when
applicable).
- **Bug Fixes**
- Improved cancel behavior and routing consistency by only enabling
Vercel return when the destination is valid.
- **Style**
- Updated the Vercel integration interstitial title capitalization for
consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-07-28 08:14:01 +10:00
4a0bb36ca8 style: require sorted imports in studio/components (#44408)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
2026-04-01 10:22:37 +02:00
Joshen Lim de50740b04 Chore/request upgrade plan modal (#40889)
* init request upgrade plan modal

* Consolidate UpgradeToPro components across UI + use UpgradePlanButton, UpgradePlanButton determines whether to show request upgrade CTA

* Allow to pass icon to Admonition

* Tiny fix on upgrade plan button CTA to consider addons

* Hook up upgrade request endpoint

* Update API types

* remove hardcode

* Add request upgrade CTA in plan side panel

* Fix disk compute

* Show request upgrade button for change to large compute

* Nit
2025-12-04 16:02:01 +08:00
Joshen Lim 6e2a7feee7 Break down new project page into smaller components (#39812)
* Break down new project page into smaller components

* Fix types

* Address comments

* Add min length check for project name in project settings

* Fix tests
2025-10-27 14:04:56 +08:00