mirror of
https://github.com/supabase/supabase.git
synced 2026-10-12 21:05:06 +03:00
## 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? For the new AI filters we should take a totally different approach. Rather than using the URL as the source of truth, it should rather act as a secondary state store. The first being local state in Snap that gets loaded from the URL. By forcing this clear line we can always make sure the URL is backed up with the right values and ensure state is updated quickly. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Toggleable next‑gen filter bar with lifecycle that initializes and syncs filters to the URL. * Centralized filter API in table state for setting, clearing, and sharing filters across components. * **Improvements** * Grid queries are project‑scoped, use placeholder previous data, and reapply optimistic updates on refresh. * Added MS SQL sorting warning and feature‑flag controls for queue/operation behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> ## Testing - Make sure the old filters still work as expected - Enable the new Headers, test out new filters approach (count is still broken FYI, will fix that later)
Writing components
Where to create your components
- For components that declare the general structure and layout of a page:
/components/layouts/xxx
- For components that are tightly coupled to a specific interface:
/components/interfaces/xxx
- For components that are meant to be reusable across multiple pages:
/components/ui/xxx
- Note: We're gradually moving files out of the
to-be-cleanedfolder into the respective folders as we refactor
Component structure
- If a component has constants and utility methods that are tightly coupled to itself, keep them close to the component and enclose them in a folder with an
index.tsxas an entry point - Otherwise it can just be a file on its own
- For example:
-
components/ui - SampleComponentA - SampleComponentA.tsx - SampleComponentA.constants.ts - SampleComponentA.utils.ts - SampleComponentA.types.ts - index.ts - SampleComponentB.tsx
-
Template for building components
// Declare the prop types of your component
interface ComponentAProps {
sampleProp: string
}
// Name your component accordingly
const ComponentA = ({ sampleProp }: ComponentAProps) => {
return <div>ComponentA: {sampleProp}</div>
}
export default ComponentA