Page Types

Create a new file CustomRecordPage.js in the @/plugins/custom/page-types directory,

import definePageType from '@/lib/page-type/definePageType.js'
import getRecord from '@/lib/record/getRecord.js'

export default definePageType({
    id: 'CustomRecordPage',
    getPageData: async (ctx, { initialState, params, searchParams }) => {

        const { recordTypeId, recordId } = params

        // this might look unfamiliar
        // pages work with a normalized state object
        // the pros outweigh the cons
        // read more on this in concepts → state

        const record = await getRecord(ctx, { recordTypeId, recordId })

        let state = initialState

        state = addRecordsToState(state, recordTypeId, [record])

        return {
            props: {
                state,
                // notFound: true, // handles record not found
                // restricted: true, // handles not authorized
            }
        }
    }
})

Then within the @/plugins/custom/page-types/index.js they're bundled into an array which can be imported from the plugins config.js

import CustomRecordPage from './CustomRecordPage'
import AnotherCustomPage from './AnotherCustomPage'
import YetAnotherCustomPage from './YetAnotherCustomPage'

export default ([
    CustomRecordPage,
    AnotherCustomPage,
    YetAnotherCustomPage,
])

The page types are registered within @/plugins/custom/register.js

import definePlugin from '@/lib/module/definePlugin'
import pageTypes from './page-types'

export default definePlugin({
    pageTypes
    // other configuration ...
})