mirror of
https://github.com/supabase/supabase.git
synced 2026-10-19 16:19:10 +03:00
## What kind of change does this PR introduce? Feature. Resolves DEPR-390 ## What is the current behavior? Projects aren’t sortable in either the card or table view. ## What is the new behavior? Projects are sortable in both: - Card view: sort dropdown - Table view: sort dropdown or table column headers | Before | After | | --- | --- | | <img width="1382" height="797" alt="Supabase-4D1BFE40-875D-494C-8F17-A68D92826458" src="https://github.com/user-attachments/assets/c4f17b77-bc90-447f-90cd-78a11c2e4129" /> | <img width="1382" height="797" alt="Supabase-D8C0AC7C-A28D-4AA6-BA7C-0FCD61DB5D11" src="https://github.com/user-attachments/assets/d926d03d-2702-48e5-9d1f-0e09d163079d" /> | | <img width="1382" height="797" alt="Supabase-0A545C5C-40B5-47F7-9ACD-2200879BB95E" src="https://github.com/user-attachments/assets/f2103c32-a150-4db7-a78a-8bd610e2a028" /> | <img width="1382" height="797" alt="Supabase-0F7AB608-2E86-4F0C-BB60-C85D9B7F3D57" src="https://github.com/user-attachments/assets/baa63f14-4059-483d-a9d6-33663e5cff43" /> | ## Additional context I wonder if this is overkill given most folks only have 1–2 projects. Some ideas: - Only sortable in table view via column headers - Conditional rendering for folks with 2+ projects - Opt-in feature - Feature-flag I’ve opted to make it global and synced for now. --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Writing pages
Rough guidelines
- Try to break down your pages into smaller building blocks - components which are tightly coupled to a page can be placed within the folder
components/interfaces/xxx/...(Refer to the README.md under the components folder) - Keep to using
useStatehooks for any UI related logic, do not create MobX local stores to handle UI logic.
Template for building pages
import { NextPage } from 'next'
import { withAuth } from 'hooks/misc/withAuth'
// Import the corresponding layout based on the page
import { Layout } from 'components/layouts'
// Import the main building blocks of the page
import { ... } from 'components/interfaces/xxx'
// Import reusable UI components if needed
import { ... } from 'components/ui/xxx'
// Name your page accordingly
const Page: NextPage = () => {
return (
<Layout>
<div>Page content</div>
</Layout>
)
}
export default withAuth(Page)