mirror of
https://github.com/supabase/supabase.git
synced 2026-06-17 13:14:06 +08:00
* Final replacements of ui setNotification with toast * Rip out UiStore * Rip out UiStore * Shift files under authConfigSchema to components/Auth * Rip out use of observers
45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# 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-cleaned` folder 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.tsx` as 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
|
|
|
|
```ts
|
|
|
|
// 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
|
|
```
|