mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 17:35:10 +03:00
## What kind of change does this PR introduce? Feature ## What is the current behavior? Functions page on self-hosted differs from Platform ## What is the new behavior? > [!NOTE] > This PR only add readonly operations. Function edit and deploy should be implemented in a future one. Adds the possibility to download and see function code in Self-Host version. <details> <img width="1465" height="944" alt="image" src="https://github.com/user-attachments/assets/4bbf8f5c-3390-4de6-9e8b-8ec9cd59ebad" /> </details> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * API endpoint to stream function files/artifacts as multipart/form-data. * New function file entry type and server-side file listing for functions. * **Improvements** * Edge Functions "Code" navigation item always visible. * Download popover reworked: ZIP download always available; CLI section shown only on supported platforms. * Editor set to read-only and file actions disabled on unsupported environments. * **Editor** * Added JavaScript, TypeScript, and Markdown language modules for the embedded editor. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.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)