mirror of
https://github.com/supabase/supabase.git
synced 2026-10-19 08:09:11 +03:00
The bucket endpoints now accept `versioning_status`, and the lifecycle configuration has its own PUT/GET/DELETE beside the bucket, so the versioning section stops being form state only. - Create sends `DISABLED`/`ENABLED`, then writes the retention policy as a second call, since Storage stores it separately from the bucket - Edit derives `ENABLED`/`SUSPENDED` through `toVersioningStatusUpdate`; `DISABLED` is not an accepted update, so a bucket that was never versioned sends no versioning field at all - Edit reads the stored policy back to prefill, rather than assuming none `toLifecycleRules`/`fromLifecycleRules` map the form onto the API's rules. "Both conditions" is one rule; "either condition" needs two, because S3 only honors a version cap alongside an age. The policy is only written when one of the three fields the form owns actually changed — a blind PUT replaces the whole configuration and would drop rules the dashboard cannot model. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3euXsz25sTybsGTcxCFfn
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 — use a named export, not a default export
export const ComponentA = ({ sampleProp }: ComponentAProps) => {
return <div>ComponentA: {sampleProp}</div>
}