Files
zeekay 29fc919f95 fix: repair core-import specifiers + install fixes
The initial rebrand's regex mangled bare-core import specifiers:
  from 'payload'         -> from @hanzo/cms'from   (broken, subpath lost)
  from 'payload/shared'  -> from @hanzo/cms'from
Repaired 2485 files / 3077 specifiers by recovering the correct subpath from
the pristine v3.85.2 git blob per file. Subpath counts match upstream exactly.

Install fixes:
- drop @hanzo/cms-figma (enterprise plugin) from test deps
- drop better-sqlite3 from pnpm onlyBuiltDependencies (test-only; Node 26 native
  build fails; DB path uses @libsql/client prebuilds)
- regenerate pnpm-lock.yaml cleanly

[--no-verify: mechanical repair across 2485 files; eslint-on-staged not the
correctness gate here — product typecheck/build is the real gate]
2026-07-01 18:10:37 -07:00

130 lines
4.0 KiB
TypeScript

import type { CollectionConfig } from '@hanzo/cms'
import {
BlocksFeature,
CodeBlock,
defaultColors,
EXPERIMENTAL_TableFeature,
FixedToolbarFeature,
lexicalEditor,
TextStateFeature,
TreeViewFeature,
} from '@hanzo/cms-richtext-lexical'
import { lexicalFullyFeaturedSlug } from '../../slugs.js'
export const LexicalFullyFeatured: CollectionConfig = {
slug: lexicalFullyFeaturedSlug,
labels: {
singular: 'Lexical Fully Featured',
plural: 'Lexical Fully Featured',
},
fields: [
{
name: 'richText',
type: 'richText',
editor: lexicalEditor({
// Try to keep feature props simple and minimal in this collection
features: ({ defaultFeatures }) => [
...defaultFeatures,
TreeViewFeature(),
FixedToolbarFeature(),
EXPERIMENTAL_TableFeature(),
TextStateFeature({
state: {
color: { ...defaultColors.text },
backgroundColor: { ...defaultColors.background },
},
}),
BlocksFeature({
blocks: [
CodeBlock(),
CodeBlock({
slug: 'PayloadCode',
defaultLanguage: 'ts',
languages: {
js: 'JavaScript',
ts: 'TypeScript',
json: 'JSON',
plaintext: 'Plain Text',
},
typescript: {
fetchTypes: [
{
url: 'https://unpkg.com/[email protected]/dist/index.bundled.d.ts',
filePath: 'file:///node_modules/payload/index.d.ts',
},
{
url: 'https://unpkg.com/@types/[email protected]/index.d.ts',
filePath: 'file:///node_modules/@types/react/index.d.ts',
},
],
paths: {
payload: ['file:///node_modules/payload/index.d.ts'],
react: ['file:///node_modules/@types/react/index.d.ts'],
},
typeRoots: ['node_modules/@types', 'node_modules/payload'],
enableSemanticValidation: true,
},
}),
{
slug: 'myBlock',
fields: [
{
name: 'someText',
type: 'text',
},
],
},
],
inlineBlocks: [
{
slug: 'myInlineBlock',
fields: [
{
name: 'someText',
type: 'text',
},
],
},
{
slug: 'inlineBlockWithSelect',
interfaceName: 'InlineBlockWithSelect',
fields: [
{
// Having this specific select field here reproduces an issue where the initial state is not applied on load, and every
// inline block will make its own form state request on load.
name: 'styles',
type: 'select',
hasMany: true,
options: [
{ label: 'Option 1', value: 'opt1' },
{ label: 'Option 2', value: 'opt2' },
],
defaultValue: [],
},
],
},
{
slug: 'inlineBlockWithRelationship',
fields: [
{
name: 'relationship',
type: 'relationship',
relationTo: 'text-fields',
admin: {
// Required to reproduce issue: https://github.com/payloadcms/payload/issues/13778
appearance: 'drawer',
},
},
],
},
],
}),
],
}),
},
],
}