@nextsparkjs/core 0.1.0-beta.65 → 0.1.0-beta.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entities/patterns/messages/de.json +76 -0
- package/dist/entities/patterns/messages/en.json +87 -0
- package/dist/entities/patterns/messages/es.json +86 -0
- package/dist/entities/patterns/messages/fr.json +76 -0
- package/dist/entities/patterns/messages/it.json +76 -0
- package/dist/entities/patterns/messages/pt.json +76 -0
- package/dist/styles/classes.json +1 -1
- package/package.json +6 -1
- package/src/entities/index.ts +24 -0
- package/src/entities/patterns/index.ts +27 -0
- package/src/entities/patterns/messages/de.json +76 -0
- package/src/entities/patterns/messages/en.json +87 -0
- package/src/entities/patterns/messages/es.json +86 -0
- package/src/entities/patterns/messages/fr.json +76 -0
- package/src/entities/patterns/messages/it.json +76 -0
- package/src/entities/patterns/messages/pt.json +76 -0
- package/src/entities/patterns/patterns.config.ts +84 -0
- package/src/entities/patterns/patterns.fields.ts +104 -0
- package/src/entities/patterns/patterns.service.ts +718 -0
- package/src/entities/patterns/patterns.types.ts +118 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"singular": "Pattern",
|
|
4
|
+
"plural": "Patterns"
|
|
5
|
+
},
|
|
6
|
+
"title": "Patterns",
|
|
7
|
+
"subtitle": "Create reusable block compositions for your pages",
|
|
8
|
+
"description": "Manage reusable patterns that can be inserted into pages and posts",
|
|
9
|
+
"fields": {
|
|
10
|
+
"title": {
|
|
11
|
+
"label": "Title",
|
|
12
|
+
"placeholder": "Enter pattern name...",
|
|
13
|
+
"description": "Pattern display name"
|
|
14
|
+
},
|
|
15
|
+
"slug": {
|
|
16
|
+
"label": "Slug",
|
|
17
|
+
"placeholder": "pattern-slug",
|
|
18
|
+
"description": "URL-friendly identifier, unique per team"
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"label": "Status",
|
|
22
|
+
"placeholder": "Select status...",
|
|
23
|
+
"description": "Publication status"
|
|
24
|
+
},
|
|
25
|
+
"description": {
|
|
26
|
+
"label": "Description",
|
|
27
|
+
"placeholder": "Describe this pattern...",
|
|
28
|
+
"description": "Brief description of pattern purpose"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"draft": "Draft",
|
|
33
|
+
"published": "Published"
|
|
34
|
+
},
|
|
35
|
+
"messages": {
|
|
36
|
+
"created": "Pattern created successfully",
|
|
37
|
+
"updated": "Pattern updated successfully",
|
|
38
|
+
"deleted": "Pattern deleted successfully",
|
|
39
|
+
"createError": "Error creating pattern",
|
|
40
|
+
"updateError": "Error updating pattern",
|
|
41
|
+
"deleteError": "Error deleting pattern",
|
|
42
|
+
"notFound": "Pattern not found",
|
|
43
|
+
"emptyPattern": "This pattern has no blocks yet",
|
|
44
|
+
"locked": {
|
|
45
|
+
"title": "Pattern Reference",
|
|
46
|
+
"description": "This is a pattern reference. Edit the pattern directly to make changes."
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"actions": {
|
|
50
|
+
"create": "Create Pattern",
|
|
51
|
+
"edit": "Edit Pattern",
|
|
52
|
+
"delete": "Delete Pattern",
|
|
53
|
+
"publish": "Publish",
|
|
54
|
+
"unpublish": "Unpublish",
|
|
55
|
+
"duplicate": "Duplicate",
|
|
56
|
+
"editPattern": "Edit Pattern",
|
|
57
|
+
"removeReference": "Remove Reference"
|
|
58
|
+
},
|
|
59
|
+
"labels": {
|
|
60
|
+
"patternPrefix": "Pattern"
|
|
61
|
+
},
|
|
62
|
+
"builder": {
|
|
63
|
+
"title": "Pattern Builder",
|
|
64
|
+
"description": "Add blocks to create your reusable pattern",
|
|
65
|
+
"emptyState": "No blocks yet. Add blocks to create your pattern.",
|
|
66
|
+
"blocksAllowed": "Only certain blocks can be used in patterns",
|
|
67
|
+
"patternReference": "Pattern Reference",
|
|
68
|
+
"lockedMessage": "This is a pattern reference. Edit the pattern directly to make changes."
|
|
69
|
+
},
|
|
70
|
+
"list": {
|
|
71
|
+
"title": "All Patterns",
|
|
72
|
+
"empty": "No patterns yet",
|
|
73
|
+
"emptyDescription": "Create your first pattern to get started",
|
|
74
|
+
"filters": {
|
|
75
|
+
"all": "All",
|
|
76
|
+
"draft": "Drafts",
|
|
77
|
+
"published": "Published"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"picker": {
|
|
81
|
+
"title": "Insert Pattern",
|
|
82
|
+
"search": "Search patterns...",
|
|
83
|
+
"noResults": "No patterns found",
|
|
84
|
+
"selectPattern": "Select a pattern to insert",
|
|
85
|
+
"loading": "Loading patterns..."
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"singular": "Patrón",
|
|
4
|
+
"plural": "Patrones"
|
|
5
|
+
},
|
|
6
|
+
"title": "Patrones",
|
|
7
|
+
"subtitle": "Crea composiciones de bloques reutilizables para tus páginas",
|
|
8
|
+
"description": "Gestiona patrones reutilizables que se pueden insertar en páginas y publicaciones",
|
|
9
|
+
"fields": {
|
|
10
|
+
"title": {
|
|
11
|
+
"label": "Título",
|
|
12
|
+
"placeholder": "Ingresa el nombre del patrón...",
|
|
13
|
+
"description": "Nombre del patrón"
|
|
14
|
+
},
|
|
15
|
+
"slug": {
|
|
16
|
+
"label": "Slug",
|
|
17
|
+
"placeholder": "patron-slug",
|
|
18
|
+
"description": "Identificador amigable para URL, único por equipo"
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"label": "Estado",
|
|
22
|
+
"placeholder": "Selecciona un estado...",
|
|
23
|
+
"description": "Estado de publicación"
|
|
24
|
+
},
|
|
25
|
+
"description": {
|
|
26
|
+
"label": "Descripción",
|
|
27
|
+
"placeholder": "Describe este patrón...",
|
|
28
|
+
"description": "Breve descripción del propósito del patrón"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"draft": "Borrador",
|
|
33
|
+
"published": "Publicado"
|
|
34
|
+
},
|
|
35
|
+
"messages": {
|
|
36
|
+
"created": "Patrón creado exitosamente",
|
|
37
|
+
"updated": "Patrón actualizado exitosamente",
|
|
38
|
+
"deleted": "Patrón eliminado exitosamente",
|
|
39
|
+
"createError": "Error al crear el patrón",
|
|
40
|
+
"updateError": "Error al actualizar el patrón",
|
|
41
|
+
"deleteError": "Error al eliminar el patrón",
|
|
42
|
+
"notFound": "Patrón no encontrado",
|
|
43
|
+
"emptyPattern": "Este patrón aún no tiene bloques",
|
|
44
|
+
"locked": {
|
|
45
|
+
"title": "Referencia de Patrón",
|
|
46
|
+
"description": "Esta es una referencia de patrón. Edita el patrón directamente para hacer cambios."
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"actions": {
|
|
50
|
+
"create": "Crear Patrón",
|
|
51
|
+
"edit": "Editar Patrón",
|
|
52
|
+
"delete": "Eliminar Patrón",
|
|
53
|
+
"publish": "Publicar",
|
|
54
|
+
"unpublish": "Despublicar",
|
|
55
|
+
"duplicate": "Duplicar",
|
|
56
|
+
"editPattern": "Editar Patrón",
|
|
57
|
+
"removeReference": "Eliminar Referencia"
|
|
58
|
+
},
|
|
59
|
+
"labels": {
|
|
60
|
+
"patternPrefix": "Patrón"
|
|
61
|
+
},
|
|
62
|
+
"builder": {
|
|
63
|
+
"title": "Constructor de Patrones",
|
|
64
|
+
"description": "Agrega bloques para crear tu patrón reutilizable",
|
|
65
|
+
"emptyState": "Aún no hay bloques. Agrega bloques para crear tu patrón.",
|
|
66
|
+
"blocksAllowed": "Solo ciertos bloques se pueden usar en patrones",
|
|
67
|
+
"patternReference": "Referencia de Patrón",
|
|
68
|
+
"lockedMessage": "Esta es una referencia de patrón. Edita el patrón directamente para hacer cambios."
|
|
69
|
+
},
|
|
70
|
+
"list": {
|
|
71
|
+
"title": "Todos los Patrones",
|
|
72
|
+
"empty": "Aún no hay patrones",
|
|
73
|
+
"emptyDescription": "Crea tu primer patrón para comenzar",
|
|
74
|
+
"filters": {
|
|
75
|
+
"all": "Todos",
|
|
76
|
+
"draft": "Borradores",
|
|
77
|
+
"published": "Publicados"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"picker": {
|
|
81
|
+
"title": "Insertar Patrón",
|
|
82
|
+
"search": "Buscar patrones...",
|
|
83
|
+
"noResults": "No se encontraron patrones",
|
|
84
|
+
"selectPattern": "Selecciona un patrón para insertar"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"singular": "Modèle",
|
|
4
|
+
"plural": "Modèles"
|
|
5
|
+
},
|
|
6
|
+
"title": "Modèles",
|
|
7
|
+
"subtitle": "Créez des compositions de blocs réutilisables pour vos pages",
|
|
8
|
+
"description": "Gérez les modèles réutilisables qui peuvent être insérés dans les pages et les articles",
|
|
9
|
+
"fields": {
|
|
10
|
+
"title": {
|
|
11
|
+
"label": "Titre",
|
|
12
|
+
"placeholder": "Entrez le nom du modèle...",
|
|
13
|
+
"description": "Nom d'affichage du modèle"
|
|
14
|
+
},
|
|
15
|
+
"slug": {
|
|
16
|
+
"label": "Slug",
|
|
17
|
+
"placeholder": "modele-slug",
|
|
18
|
+
"description": "Identifiant convivial pour URL, unique par équipe"
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"label": "Statut",
|
|
22
|
+
"placeholder": "Sélectionnez un statut...",
|
|
23
|
+
"description": "Statut de publication"
|
|
24
|
+
},
|
|
25
|
+
"description": {
|
|
26
|
+
"label": "Description",
|
|
27
|
+
"placeholder": "Décrivez ce modèle...",
|
|
28
|
+
"description": "Brève description de l'objectif du modèle"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"draft": "Brouillon",
|
|
33
|
+
"published": "Publié"
|
|
34
|
+
},
|
|
35
|
+
"messages": {
|
|
36
|
+
"created": "Modèle créé avec succès",
|
|
37
|
+
"updated": "Modèle mis à jour avec succès",
|
|
38
|
+
"deleted": "Modèle supprimé avec succès",
|
|
39
|
+
"createError": "Erreur lors de la création du modèle",
|
|
40
|
+
"updateError": "Erreur lors de la mise à jour du modèle",
|
|
41
|
+
"deleteError": "Erreur lors de la suppression du modèle",
|
|
42
|
+
"notFound": "Modèle introuvable"
|
|
43
|
+
},
|
|
44
|
+
"actions": {
|
|
45
|
+
"create": "Créer un Modèle",
|
|
46
|
+
"edit": "Modifier le Modèle",
|
|
47
|
+
"delete": "Supprimer le Modèle",
|
|
48
|
+
"publish": "Publier",
|
|
49
|
+
"unpublish": "Dépublier",
|
|
50
|
+
"duplicate": "Dupliquer"
|
|
51
|
+
},
|
|
52
|
+
"builder": {
|
|
53
|
+
"title": "Constructeur de Modèles",
|
|
54
|
+
"description": "Ajoutez des blocs pour créer votre modèle réutilisable",
|
|
55
|
+
"emptyState": "Aucun bloc pour le moment. Ajoutez des blocs pour créer votre modèle.",
|
|
56
|
+
"blocksAllowed": "Seuls certains blocs peuvent être utilisés dans les modèles",
|
|
57
|
+
"patternReference": "Référence de Modèle",
|
|
58
|
+
"lockedMessage": "Ceci est une référence de modèle. Modifiez le modèle directement pour apporter des modifications."
|
|
59
|
+
},
|
|
60
|
+
"list": {
|
|
61
|
+
"title": "Tous les Modèles",
|
|
62
|
+
"empty": "Aucun modèle pour le moment",
|
|
63
|
+
"emptyDescription": "Créez votre premier modèle pour commencer",
|
|
64
|
+
"filters": {
|
|
65
|
+
"all": "Tous",
|
|
66
|
+
"draft": "Brouillons",
|
|
67
|
+
"published": "Publiés"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"picker": {
|
|
71
|
+
"title": "Insérer un Modèle",
|
|
72
|
+
"search": "Rechercher des modèles...",
|
|
73
|
+
"noResults": "Aucun modèle trouvé",
|
|
74
|
+
"selectPattern": "Sélectionnez un modèle à insérer"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"singular": "Modello",
|
|
4
|
+
"plural": "Modelli"
|
|
5
|
+
},
|
|
6
|
+
"title": "Modelli",
|
|
7
|
+
"subtitle": "Crea composizioni di blocchi riutilizzabili per le tue pagine",
|
|
8
|
+
"description": "Gestisci modelli riutilizzabili che possono essere inseriti in pagine e post",
|
|
9
|
+
"fields": {
|
|
10
|
+
"title": {
|
|
11
|
+
"label": "Titolo",
|
|
12
|
+
"placeholder": "Inserisci il nome del modello...",
|
|
13
|
+
"description": "Nome visualizzato del modello"
|
|
14
|
+
},
|
|
15
|
+
"slug": {
|
|
16
|
+
"label": "Slug",
|
|
17
|
+
"placeholder": "modello-slug",
|
|
18
|
+
"description": "Identificatore compatibile con URL, unico per team"
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"label": "Stato",
|
|
22
|
+
"placeholder": "Seleziona stato...",
|
|
23
|
+
"description": "Stato di pubblicazione"
|
|
24
|
+
},
|
|
25
|
+
"description": {
|
|
26
|
+
"label": "Descrizione",
|
|
27
|
+
"placeholder": "Descrivi questo modello...",
|
|
28
|
+
"description": "Breve descrizione dello scopo del modello"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"draft": "Bozza",
|
|
33
|
+
"published": "Pubblicato"
|
|
34
|
+
},
|
|
35
|
+
"messages": {
|
|
36
|
+
"created": "Modello creato con successo",
|
|
37
|
+
"updated": "Modello aggiornato con successo",
|
|
38
|
+
"deleted": "Modello eliminato con successo",
|
|
39
|
+
"createError": "Errore durante la creazione del modello",
|
|
40
|
+
"updateError": "Errore durante l'aggiornamento del modello",
|
|
41
|
+
"deleteError": "Errore durante l'eliminazione del modello",
|
|
42
|
+
"notFound": "Modello non trovato"
|
|
43
|
+
},
|
|
44
|
+
"actions": {
|
|
45
|
+
"create": "Crea Modello",
|
|
46
|
+
"edit": "Modifica Modello",
|
|
47
|
+
"delete": "Elimina Modello",
|
|
48
|
+
"publish": "Pubblica",
|
|
49
|
+
"unpublish": "Annulla Pubblicazione",
|
|
50
|
+
"duplicate": "Duplica"
|
|
51
|
+
},
|
|
52
|
+
"builder": {
|
|
53
|
+
"title": "Costruttore di Modelli",
|
|
54
|
+
"description": "Aggiungi blocchi per creare il tuo modello riutilizzabile",
|
|
55
|
+
"emptyState": "Nessun blocco ancora. Aggiungi blocchi per creare il tuo modello.",
|
|
56
|
+
"blocksAllowed": "Solo alcuni blocchi possono essere utilizzati nei modelli",
|
|
57
|
+
"patternReference": "Riferimento al Modello",
|
|
58
|
+
"lockedMessage": "Questo è un riferimento al modello. Modifica il modello direttamente per apportare modifiche."
|
|
59
|
+
},
|
|
60
|
+
"list": {
|
|
61
|
+
"title": "Tutti i Modelli",
|
|
62
|
+
"empty": "Nessun modello ancora",
|
|
63
|
+
"emptyDescription": "Crea il tuo primo modello per iniziare",
|
|
64
|
+
"filters": {
|
|
65
|
+
"all": "Tutti",
|
|
66
|
+
"draft": "Bozze",
|
|
67
|
+
"published": "Pubblicati"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"picker": {
|
|
71
|
+
"title": "Inserisci Modello",
|
|
72
|
+
"search": "Cerca modelli...",
|
|
73
|
+
"noResults": "Nessun modello trovato",
|
|
74
|
+
"selectPattern": "Seleziona un modello da inserire"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"singular": "Padrão",
|
|
4
|
+
"plural": "Padrões"
|
|
5
|
+
},
|
|
6
|
+
"title": "Padrões",
|
|
7
|
+
"subtitle": "Crie composições de blocos reutilizáveis para suas páginas",
|
|
8
|
+
"description": "Gerencie padrões reutilizáveis que podem ser inseridos em páginas e posts",
|
|
9
|
+
"fields": {
|
|
10
|
+
"title": {
|
|
11
|
+
"label": "Título",
|
|
12
|
+
"placeholder": "Digite o nome do padrão...",
|
|
13
|
+
"description": "Nome de exibição do padrão"
|
|
14
|
+
},
|
|
15
|
+
"slug": {
|
|
16
|
+
"label": "Slug",
|
|
17
|
+
"placeholder": "padrao-slug",
|
|
18
|
+
"description": "Identificador amigável para URL, único por equipe"
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"label": "Status",
|
|
22
|
+
"placeholder": "Selecione o status...",
|
|
23
|
+
"description": "Status de publicação"
|
|
24
|
+
},
|
|
25
|
+
"description": {
|
|
26
|
+
"label": "Descrição",
|
|
27
|
+
"placeholder": "Descreva este padrão...",
|
|
28
|
+
"description": "Breve descrição do propósito do padrão"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"draft": "Rascunho",
|
|
33
|
+
"published": "Publicado"
|
|
34
|
+
},
|
|
35
|
+
"messages": {
|
|
36
|
+
"created": "Padrão criado com sucesso",
|
|
37
|
+
"updated": "Padrão atualizado com sucesso",
|
|
38
|
+
"deleted": "Padrão excluído com sucesso",
|
|
39
|
+
"createError": "Erro ao criar padrão",
|
|
40
|
+
"updateError": "Erro ao atualizar padrão",
|
|
41
|
+
"deleteError": "Erro ao excluir padrão",
|
|
42
|
+
"notFound": "Padrão não encontrado"
|
|
43
|
+
},
|
|
44
|
+
"actions": {
|
|
45
|
+
"create": "Criar Padrão",
|
|
46
|
+
"edit": "Editar Padrão",
|
|
47
|
+
"delete": "Excluir Padrão",
|
|
48
|
+
"publish": "Publicar",
|
|
49
|
+
"unpublish": "Despublicar",
|
|
50
|
+
"duplicate": "Duplicar"
|
|
51
|
+
},
|
|
52
|
+
"builder": {
|
|
53
|
+
"title": "Construtor de Padrões",
|
|
54
|
+
"description": "Adicione blocos para criar seu padrão reutilizável",
|
|
55
|
+
"emptyState": "Ainda não há blocos. Adicione blocos para criar seu padrão.",
|
|
56
|
+
"blocksAllowed": "Apenas certos blocos podem ser usados em padrões",
|
|
57
|
+
"patternReference": "Referência de Padrão",
|
|
58
|
+
"lockedMessage": "Esta é uma referência de padrão. Edite o padrão diretamente para fazer alterações."
|
|
59
|
+
},
|
|
60
|
+
"list": {
|
|
61
|
+
"title": "Todos os Padrões",
|
|
62
|
+
"empty": "Ainda não há padrões",
|
|
63
|
+
"emptyDescription": "Crie seu primeiro padrão para começar",
|
|
64
|
+
"filters": {
|
|
65
|
+
"all": "Todos",
|
|
66
|
+
"draft": "Rascunhos",
|
|
67
|
+
"published": "Publicados"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"picker": {
|
|
71
|
+
"title": "Inserir Padrão",
|
|
72
|
+
"search": "Pesquisar padrões...",
|
|
73
|
+
"noResults": "Nenhum padrão encontrado",
|
|
74
|
+
"selectPattern": "Selecione um padrão para inserir"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns Entity Configuration
|
|
3
|
+
*
|
|
4
|
+
* Core entity for reusable block compositions in the builder system.
|
|
5
|
+
* Follows the 5-section structure for entity configuration.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Layers } from 'lucide-react'
|
|
9
|
+
import type { EntityConfig } from '../../lib/entities/types'
|
|
10
|
+
import { patternsFields } from './patterns.fields'
|
|
11
|
+
|
|
12
|
+
export const patternsEntityConfig: EntityConfig = {
|
|
13
|
+
// ==========================================
|
|
14
|
+
// 1. BASIC IDENTIFICATION
|
|
15
|
+
// ==========================================
|
|
16
|
+
slug: 'patterns',
|
|
17
|
+
enabled: true,
|
|
18
|
+
names: {
|
|
19
|
+
singular: 'pattern',
|
|
20
|
+
plural: 'Patterns'
|
|
21
|
+
},
|
|
22
|
+
icon: Layers,
|
|
23
|
+
|
|
24
|
+
// ==========================================
|
|
25
|
+
// 2. ACCESS AND SCOPE CONFIGURATION
|
|
26
|
+
// ==========================================
|
|
27
|
+
access: {
|
|
28
|
+
public: false, // Patterns are internal, not public content
|
|
29
|
+
api: true, // Has API endpoints for block editor integration
|
|
30
|
+
metadata: false, // Does not use metadata system
|
|
31
|
+
shared: true // All team members see same patterns (team-scoped)
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
// ==========================================
|
|
35
|
+
// 3. UI/UX FEATURES
|
|
36
|
+
// ==========================================
|
|
37
|
+
ui: {
|
|
38
|
+
dashboard: {
|
|
39
|
+
showInMenu: false, // Hidden from sidebar, accessible via topbar settings menu
|
|
40
|
+
showInTopbar: true
|
|
41
|
+
},
|
|
42
|
+
public: {
|
|
43
|
+
hasArchivePage: false,
|
|
44
|
+
hasSinglePage: false // Patterns don't have public pages
|
|
45
|
+
},
|
|
46
|
+
features: {
|
|
47
|
+
searchable: true,
|
|
48
|
+
sortable: true,
|
|
49
|
+
filterable: true,
|
|
50
|
+
bulkOperations: true,
|
|
51
|
+
importExport: false
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
// ==========================================
|
|
56
|
+
// 4. BUILDER CONFIGURATION
|
|
57
|
+
// ==========================================
|
|
58
|
+
builder: {
|
|
59
|
+
enabled: true, // Patterns use the block builder
|
|
60
|
+
showSlug: false, // Slug is auto-generated, not user-editable
|
|
61
|
+
seo: false // Patterns don't need SEO metadata
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
// ==========================================
|
|
65
|
+
// 5. INTERNATIONALIZATION
|
|
66
|
+
// ==========================================
|
|
67
|
+
i18n: {
|
|
68
|
+
fallbackLocale: 'en',
|
|
69
|
+
loaders: {
|
|
70
|
+
en: () => import('./messages/en.json'),
|
|
71
|
+
es: () => import('./messages/es.json')
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
// ==========================================
|
|
76
|
+
// FIELDS (imported from separate file)
|
|
77
|
+
// ==========================================
|
|
78
|
+
fields: patternsFields,
|
|
79
|
+
|
|
80
|
+
// ==========================================
|
|
81
|
+
// SOURCE
|
|
82
|
+
// ==========================================
|
|
83
|
+
source: 'core'
|
|
84
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns Entity Fields Configuration
|
|
3
|
+
*
|
|
4
|
+
* Defines all business fields for the patterns entity.
|
|
5
|
+
* System fields (id, createdAt, updatedAt, userId, teamId) are implicit
|
|
6
|
+
* and must NOT be declared here.
|
|
7
|
+
*
|
|
8
|
+
* Reference: core/lib/entities/system-fields.ts
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { EntityField } from '../../lib/entities/types'
|
|
12
|
+
|
|
13
|
+
export const patternsFields: EntityField[] = [
|
|
14
|
+
{
|
|
15
|
+
name: 'title',
|
|
16
|
+
type: 'text',
|
|
17
|
+
required: true,
|
|
18
|
+
display: {
|
|
19
|
+
label: 'Title',
|
|
20
|
+
description: 'Pattern display name',
|
|
21
|
+
placeholder: 'Enter pattern name...',
|
|
22
|
+
showInList: true,
|
|
23
|
+
showInDetail: true,
|
|
24
|
+
showInForm: true,
|
|
25
|
+
order: 1,
|
|
26
|
+
columnWidth: 8
|
|
27
|
+
},
|
|
28
|
+
api: {
|
|
29
|
+
readOnly: false,
|
|
30
|
+
searchable: true,
|
|
31
|
+
sortable: true
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'slug',
|
|
36
|
+
type: 'text',
|
|
37
|
+
required: true,
|
|
38
|
+
display: {
|
|
39
|
+
label: 'Slug',
|
|
40
|
+
description: 'URL-friendly identifier, unique per team',
|
|
41
|
+
placeholder: 'pattern-slug',
|
|
42
|
+
showInList: true,
|
|
43
|
+
showInDetail: true,
|
|
44
|
+
showInForm: true,
|
|
45
|
+
order: 2,
|
|
46
|
+
columnWidth: 4
|
|
47
|
+
},
|
|
48
|
+
api: {
|
|
49
|
+
readOnly: false,
|
|
50
|
+
searchable: true,
|
|
51
|
+
sortable: true
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'status',
|
|
56
|
+
type: 'select',
|
|
57
|
+
required: false,
|
|
58
|
+
defaultValue: 'draft',
|
|
59
|
+
options: [
|
|
60
|
+
{ value: 'draft', label: 'Draft' },
|
|
61
|
+
{ value: 'published', label: 'Published' }
|
|
62
|
+
],
|
|
63
|
+
display: {
|
|
64
|
+
label: 'Status',
|
|
65
|
+
description: 'Publication status',
|
|
66
|
+
placeholder: 'Select status...',
|
|
67
|
+
showInList: true,
|
|
68
|
+
showInDetail: true,
|
|
69
|
+
showInForm: true,
|
|
70
|
+
order: 3,
|
|
71
|
+
columnWidth: 4
|
|
72
|
+
},
|
|
73
|
+
api: {
|
|
74
|
+
readOnly: false,
|
|
75
|
+
searchable: false,
|
|
76
|
+
sortable: true,
|
|
77
|
+
filterable: true
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'description',
|
|
82
|
+
type: 'textarea',
|
|
83
|
+
required: false,
|
|
84
|
+
display: {
|
|
85
|
+
label: 'Description',
|
|
86
|
+
description: 'Brief description of pattern purpose',
|
|
87
|
+
placeholder: 'Describe this pattern...',
|
|
88
|
+
showInList: false,
|
|
89
|
+
showInDetail: true,
|
|
90
|
+
showInForm: true,
|
|
91
|
+
order: 4,
|
|
92
|
+
columnWidth: 12
|
|
93
|
+
},
|
|
94
|
+
api: {
|
|
95
|
+
readOnly: false,
|
|
96
|
+
searchable: true,
|
|
97
|
+
sortable: false
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// NOTE: The 'blocks' field is managed by the builder view
|
|
101
|
+
// It is not declared here as it's a system field for builder-enabled entities
|
|
102
|
+
// System fields (id, createdAt, updatedAt, userId, teamId) are also implicit
|
|
103
|
+
// Reference: core/lib/entities/system-fields.ts
|
|
104
|
+
]
|