@motor-cms/ui-admin 1.0.1-alpha.0

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.
Files changed (103) hide show
  1. package/README.md +77 -0
  2. package/app/components/form/inputs/CategoryTreeInput.vue +154 -0
  3. package/app/components/form/inputs/CategoryTreePicker.vue +355 -0
  4. package/app/components/form/inputs/NestedDraggable.vue +217 -0
  5. package/app/components/form/inputs/QuicklinksInput.vue +186 -0
  6. package/app/lang/de/motor-admin/CLAUDE.md +21 -0
  7. package/app/lang/de/motor-admin/ai_system_prompts.json +12 -0
  8. package/app/lang/de/motor-admin/categories.json +12 -0
  9. package/app/lang/de/motor-admin/category_trees.json +14 -0
  10. package/app/lang/de/motor-admin/clients.json +26 -0
  11. package/app/lang/de/motor-admin/config_variables.json +14 -0
  12. package/app/lang/de/motor-admin/domains.json +19 -0
  13. package/app/lang/de/motor-admin/email_templates.json +38 -0
  14. package/app/lang/de/motor-admin/global.json +5 -0
  15. package/app/lang/de/motor-admin/languages.json +16 -0
  16. package/app/lang/de/motor-admin/permissions.json +14 -0
  17. package/app/lang/de/motor-admin/roles.json +15 -0
  18. package/app/lang/de/motor-admin/users.json +22 -0
  19. package/app/lang/en/motor-admin/CLAUDE.md +7 -0
  20. package/app/lang/en/motor-admin/ai_system_prompts.json +12 -0
  21. package/app/lang/en/motor-admin/categories.json +12 -0
  22. package/app/lang/en/motor-admin/category_trees.json +14 -0
  23. package/app/lang/en/motor-admin/clients.json +26 -0
  24. package/app/lang/en/motor-admin/config_variables.json +14 -0
  25. package/app/lang/en/motor-admin/domains.json +18 -0
  26. package/app/lang/en/motor-admin/email_templates.json +33 -0
  27. package/app/lang/en/motor-admin/global.json +5 -0
  28. package/app/lang/en/motor-admin/languages.json +16 -0
  29. package/app/lang/en/motor-admin/permissions.json +14 -0
  30. package/app/lang/en/motor-admin/roles.json +15 -0
  31. package/app/lang/en/motor-admin/users.json +22 -0
  32. package/app/pages/dashboard.vue +5 -0
  33. package/app/pages/index.vue +39 -0
  34. package/app/pages/login.vue +85 -0
  35. package/app/pages/motor-admin/ai-system-prompts/CLAUDE.md +7 -0
  36. package/app/pages/motor-admin/ai-system-prompts/[id]/edit.vue +48 -0
  37. package/app/pages/motor-admin/ai-system-prompts/create.vue +40 -0
  38. package/app/pages/motor-admin/ai-system-prompts/index.vue +68 -0
  39. package/app/pages/motor-admin/category-trees/CLAUDE.md +7 -0
  40. package/app/pages/motor-admin/category-trees/[id]/CLAUDE.md +7 -0
  41. package/app/pages/motor-admin/category-trees/[id]/categories/[categoryId]/edit.vue +73 -0
  42. package/app/pages/motor-admin/category-trees/[id]/categories/create.vue +64 -0
  43. package/app/pages/motor-admin/category-trees/[id]/edit.vue +45 -0
  44. package/app/pages/motor-admin/category-trees/[id]/index.vue +81 -0
  45. package/app/pages/motor-admin/category-trees/create.vue +37 -0
  46. package/app/pages/motor-admin/category-trees/index.vue +54 -0
  47. package/app/pages/motor-admin/clients/CLAUDE.md +11 -0
  48. package/app/pages/motor-admin/clients/[id]/CLAUDE.md +11 -0
  49. package/app/pages/motor-admin/clients/[id]/edit.vue +45 -0
  50. package/app/pages/motor-admin/clients/create.vue +37 -0
  51. package/app/pages/motor-admin/clients/index.vue +46 -0
  52. package/app/pages/motor-admin/config-variables/CLAUDE.md +11 -0
  53. package/app/pages/motor-admin/config-variables/[id]/edit.vue +44 -0
  54. package/app/pages/motor-admin/config-variables/create.vue +36 -0
  55. package/app/pages/motor-admin/config-variables/index.vue +66 -0
  56. package/app/pages/motor-admin/domains/CLAUDE.md +11 -0
  57. package/app/pages/motor-admin/domains/[id]/edit.vue +54 -0
  58. package/app/pages/motor-admin/domains/create.vue +46 -0
  59. package/app/pages/motor-admin/domains/index.vue +98 -0
  60. package/app/pages/motor-admin/email-templates/CLAUDE.md +12 -0
  61. package/app/pages/motor-admin/email-templates/[id]/CLAUDE.md +7 -0
  62. package/app/pages/motor-admin/email-templates/[id]/edit.vue +56 -0
  63. package/app/pages/motor-admin/email-templates/create.vue +48 -0
  64. package/app/pages/motor-admin/email-templates/index.vue +67 -0
  65. package/app/pages/motor-admin/index.vue +12 -0
  66. package/app/pages/motor-admin/languages/CLAUDE.md +7 -0
  67. package/app/pages/motor-admin/languages/[id]/edit.vue +44 -0
  68. package/app/pages/motor-admin/languages/create.vue +36 -0
  69. package/app/pages/motor-admin/languages/index.vue +44 -0
  70. package/app/pages/motor-admin/permission-groups/CLAUDE.md +14 -0
  71. package/app/pages/motor-admin/permission-groups/[id]/CLAUDE.md +11 -0
  72. package/app/pages/motor-admin/permission-groups/[id]/edit.vue +49 -0
  73. package/app/pages/motor-admin/permission-groups/create.vue +41 -0
  74. package/app/pages/motor-admin/permission-groups/index.vue +43 -0
  75. package/app/pages/motor-admin/roles/CLAUDE.md +7 -0
  76. package/app/pages/motor-admin/roles/[id]/edit.vue +47 -0
  77. package/app/pages/motor-admin/roles/create.vue +40 -0
  78. package/app/pages/motor-admin/roles/index.vue +45 -0
  79. package/app/pages/motor-admin/theme-preview/CLAUDE.md +7 -0
  80. package/app/pages/motor-admin/theme-preview/index.vue +4801 -0
  81. package/app/pages/motor-admin/theme-preview/themes/CLAUDE.md +11 -0
  82. package/app/pages/motor-admin/theme-preview/themes/asymmetric-brutalist.md +381 -0
  83. package/app/pages/motor-admin/theme-preview/themes/bold-modern.md +231 -0
  84. package/app/pages/motor-admin/theme-preview/themes/geometric-minimal.md +778 -0
  85. package/app/pages/motor-admin/theme-preview/themes/gradient-flow.md +1057 -0
  86. package/app/pages/motor-admin/theme-preview/themes/liquid-glass.md +823 -0
  87. package/app/pages/motor-admin/theme-preview/themes/neon-amber.md +1223 -0
  88. package/app/pages/motor-admin/theme-preview/themes/neon-terminal.md +779 -0
  89. package/app/pages/motor-admin/theme-preview/themes/neon-violet.md +1134 -0
  90. package/app/pages/motor-admin/theme-preview/themes/professional-clean.md +232 -0
  91. package/app/pages/motor-admin/theme-preview/themes/refined-brutalist.md +462 -0
  92. package/app/pages/motor-admin/theme-preview/themes/wild-card.md +263 -0
  93. package/app/pages/motor-admin/users/CLAUDE.md +17 -0
  94. package/app/pages/motor-admin/users/[id]/CLAUDE.md +11 -0
  95. package/app/pages/motor-admin/users/[id]/edit.vue +83 -0
  96. package/app/pages/motor-admin/users/create.vue +40 -0
  97. package/app/pages/motor-admin/users/index.vue +66 -0
  98. package/app/pages/profile.vue +363 -0
  99. package/app/pages/search.vue +91 -0
  100. package/app/types/generated/form-meta.ts +258 -0
  101. package/app/types/generated/grid-meta.ts +172 -0
  102. package/nuxt.config.ts +1 -0
  103. package/package.json +26 -0
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Form field metadata — auto-generated from OpenAPI spec.
3
+ * Do not edit manually. Run `npm run sync:api` to regenerate.
4
+ */
5
+
6
+ export const aISystemPromptFormMeta = {
7
+ post: {
8
+ schemaName: 'AISystemPromptPostRequest',
9
+ fields: {
10
+ client_id: { input: 'select' },
11
+ name: { input: 'text', required: true },
12
+ prompt: { input: 'text', required: true }
13
+ }
14
+ },
15
+ patch: {
16
+ schemaName: 'AISystemPromptPatchRequest',
17
+ fields: {
18
+ client_id: { input: 'select' },
19
+ name: { input: 'text', required: true },
20
+ prompt: { input: 'text', required: true }
21
+ }
22
+ }
23
+ } as const
24
+
25
+ export const clientFormMeta = {
26
+ post: {
27
+ schemaName: 'ClientPostRequest',
28
+ fields: {
29
+ name: { input: 'text', required: true },
30
+ slug: { input: 'text', required: true },
31
+ address: { input: 'text' },
32
+ zip: { input: 'text' },
33
+ city: { input: 'text' },
34
+ country_iso_3166_1: { input: 'text' },
35
+ website: { input: 'text' },
36
+ description: { input: 'textarea' },
37
+ is_active: { input: 'toggle' },
38
+ contact_name: { input: 'text' },
39
+ contact_email: { input: 'email' },
40
+ contact_phone: { input: 'text' }
41
+ }
42
+ },
43
+ patch: {
44
+ schemaName: 'ClientPatchRequest',
45
+ fields: {
46
+ name: { input: 'text', required: true },
47
+ slug: { input: 'text', required: true },
48
+ address: { input: 'text' },
49
+ zip: { input: 'text' },
50
+ city: { input: 'text' },
51
+ country_iso_3166_1: { input: 'text' },
52
+ website: { input: 'text' },
53
+ description: { input: 'textarea' },
54
+ is_active: { input: 'toggle' },
55
+ contact_name: { input: 'text' },
56
+ contact_email: { input: 'email' },
57
+ contact_phone: { input: 'text' }
58
+ }
59
+ }
60
+ } as const
61
+
62
+ export const configVariableFormMeta = {
63
+ post: {
64
+ schemaName: 'ConfigVariablePostRequest',
65
+ fields: {
66
+ package: { input: 'text', required: true },
67
+ group: { input: 'text', required: true },
68
+ name: { input: 'text', required: true },
69
+ value: { input: 'text', required: true },
70
+ is_invisible: { input: 'toggle' }
71
+ }
72
+ },
73
+ patch: {
74
+ schemaName: 'ConfigVariablePatchRequest',
75
+ fields: {
76
+ package: { input: 'text', required: true },
77
+ group: { input: 'text', required: true },
78
+ name: { input: 'text', required: true },
79
+ value: { input: 'text', required: true },
80
+ is_invisible: { input: 'toggle' }
81
+ }
82
+ }
83
+ } as const
84
+
85
+ export const domainFormMeta = {
86
+ post: {
87
+ schemaName: 'DomainPostRequest',
88
+ fields: {
89
+ client_id: { input: 'select', required: true },
90
+ is_active: { input: 'toggle', required: true },
91
+ name: { input: 'text', required: true },
92
+ protocol: { input: 'text', required: true },
93
+ host: { input: 'text', required: true },
94
+ port: { input: 'number', required: true },
95
+ path: { input: 'text', required: true }
96
+ }
97
+ },
98
+ patch: {
99
+ schemaName: 'DomainPatchRequest',
100
+ fields: {
101
+ client_id: { input: 'select', required: true },
102
+ is_active: { input: 'toggle', required: true },
103
+ name: { input: 'text', required: true },
104
+ protocol: { input: 'text', required: true },
105
+ host: { input: 'text', required: true },
106
+ port: { input: 'number', required: true },
107
+ path: { input: 'text', required: true }
108
+ }
109
+ }
110
+ } as const
111
+
112
+ export const emailTemplateFormMeta = {
113
+ post: {
114
+ schemaName: 'EmailTemplatePostRequest',
115
+ fields: {
116
+ client_id: { input: 'select', required: true },
117
+ language_id: { input: 'select', required: true },
118
+ name: { input: 'text', required: true },
119
+ slug: { input: 'text' },
120
+ subject: { input: 'text', required: true },
121
+ body_text: { input: 'textarea' },
122
+ body_html: { input: 'textarea' },
123
+ default_sender_name: { input: 'text' },
124
+ default_sender_email: { input: 'email' },
125
+ default_recipient_name: { input: 'text' },
126
+ default_recipient_email: { input: 'email' },
127
+ default_cc_email: { input: 'email' },
128
+ default_bcc_email: { input: 'email' },
129
+ default_replyto_name: { input: 'text' },
130
+ default_replyto_email: { input: 'email' },
131
+ has_body_html: { input: 'toggle' }
132
+ }
133
+ },
134
+ patch: {
135
+ schemaName: 'EmailTemplatePatchRequest',
136
+ fields: {
137
+ client_id: { input: 'select', required: true },
138
+ language_id: { input: 'select', required: true },
139
+ name: { input: 'text', required: true },
140
+ slug: { input: 'text' },
141
+ subject: { input: 'text', required: true },
142
+ body_text: { input: 'textarea' },
143
+ body_html: { input: 'textarea' },
144
+ default_sender_name: { input: 'text' },
145
+ default_sender_email: { input: 'email' },
146
+ default_recipient_name: { input: 'text' },
147
+ default_recipient_email: { input: 'email' },
148
+ default_cc_email: { input: 'email' },
149
+ default_bcc_email: { input: 'email' },
150
+ default_replyto_name: { input: 'text' },
151
+ default_replyto_email: { input: 'email' },
152
+ has_body_html: { input: 'toggle' }
153
+ }
154
+ }
155
+ } as const
156
+
157
+ export const languageFormMeta = {
158
+ post: {
159
+ schemaName: 'LanguagePostRequest',
160
+ fields: {
161
+ iso_639_1: { input: 'text', required: true },
162
+ english_name: { input: 'text', required: true },
163
+ native_name: { input: 'text', required: true }
164
+ }
165
+ },
166
+ patch: {
167
+ schemaName: 'LanguagePatchRequest',
168
+ fields: {
169
+ iso_639_1: { input: 'text', required: true },
170
+ english_name: { input: 'text', required: true },
171
+ native_name: { input: 'text', required: true }
172
+ }
173
+ }
174
+ } as const
175
+
176
+ export const permissionFormMeta = {
177
+ post: {
178
+ schemaName: 'PermissionPostRequest',
179
+ fields: {
180
+ name: { input: 'text', required: true },
181
+ guard_name: { input: 'text', required: true },
182
+ permission_group_id: { input: 'select' }
183
+ }
184
+ },
185
+ patch: {
186
+ schemaName: 'PermissionPatchRequest',
187
+ fields: {
188
+ name: { input: 'text', required: true },
189
+ guard_name: { input: 'text', required: true },
190
+ permission_group_id: { input: 'select' }
191
+ }
192
+ }
193
+ } as const
194
+
195
+ export const permissionGroupFormMeta = {
196
+ post: {
197
+ schemaName: 'PermissionGroupPostRequest',
198
+ fields: {
199
+ name: { input: 'text', required: true },
200
+ sort_position: { input: 'number' },
201
+ permissions: { input: 'multi-select' }
202
+ }
203
+ },
204
+ patch: {
205
+ schemaName: 'PermissionGroupPatchRequest',
206
+ fields: {
207
+ name: { input: 'text', required: true },
208
+ sort_position: { input: 'number' },
209
+ permissions: { input: 'multi-select' }
210
+ }
211
+ }
212
+ } as const
213
+
214
+ export const roleFormMeta = {
215
+ post: {
216
+ schemaName: 'RolePostRequest',
217
+ fields: {
218
+ name: { input: 'text', required: true },
219
+ guard_name: { input: 'text', required: true },
220
+ permissions: { input: 'multi-select' }
221
+ }
222
+ },
223
+ patch: {
224
+ schemaName: 'RolePatchRequest',
225
+ fields: {
226
+ name: { input: 'text', required: true },
227
+ guard_name: { input: 'text', required: true },
228
+ permissions: { input: 'multi-select' }
229
+ }
230
+ }
231
+ } as const
232
+
233
+ export const userFormMeta = {
234
+ post: {
235
+ schemaName: 'UserPostRequest',
236
+ fields: {
237
+ name: { input: 'text', required: true },
238
+ email: { input: 'email', required: true },
239
+ password: { input: 'password', required: true },
240
+ clients: { input: 'multi-select' },
241
+ roles: { input: 'multi-select' },
242
+ permissions: { input: 'multi-select' },
243
+ avatar: { input: 'text' }
244
+ }
245
+ },
246
+ patch: {
247
+ schemaName: 'UserPatchRequest',
248
+ fields: {
249
+ name: { input: 'text', required: true },
250
+ email: { input: 'email', required: true },
251
+ password: { input: 'password' },
252
+ clients: { input: 'multi-select' },
253
+ roles: { input: 'multi-select' },
254
+ permissions: { input: 'multi-select' },
255
+ avatar: { input: 'text' }
256
+ }
257
+ }
258
+ } as const
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Grid column metadata — auto-generated from OpenAPI spec.
3
+ * Do not edit manually. Run `npm run sync:api` to regenerate.
4
+ */
5
+
6
+ export const aISystemPromptMeta = {
7
+ schemaName: 'AISystemPromptResource',
8
+ fields: {
9
+ id: { type: 'integer', renderer: 'number', hideable: false },
10
+ name: { type: 'string', sortable: true, hideable: false },
11
+ prompt: { type: 'string' },
12
+ client: { type: 'ref', renderer: 'text', ref: 'ClientResource', labelKey: 'name' },
13
+ client_id: { type: 'integer', renderer: 'number' },
14
+ created_at: { type: 'string' },
15
+ updated_at: { type: 'string' }
16
+ }
17
+ } as const
18
+
19
+ export const clientMeta = {
20
+ schemaName: 'ClientResource',
21
+ fields: {
22
+ id: { type: 'integer', renderer: 'number', hideable: false },
23
+ name: { type: 'string', sortable: true, hideable: false },
24
+ slug: { type: 'string' },
25
+ address: { type: 'string' },
26
+ zip: { type: 'string' },
27
+ city: { type: 'string' },
28
+ country_iso_3166_1: { type: 'string' },
29
+ website: { type: 'string', renderer: 'link' },
30
+ description: { type: 'string' },
31
+ is_active: { type: 'boolean', renderer: 'boolean' },
32
+ contact_name: { type: 'string' },
33
+ contact_phone: { type: 'string' },
34
+ contact_email: { type: 'string', renderer: 'link' },
35
+ created_at: { type: 'string' },
36
+ updated_at: { type: 'string' }
37
+ }
38
+ } as const
39
+
40
+ export const configVariableMeta = {
41
+ schemaName: 'ConfigVariableResource',
42
+ fields: {
43
+ id: { type: 'integer', renderer: 'number', hideable: false },
44
+ package: { type: 'string' },
45
+ group: { type: 'string' },
46
+ name: { type: 'string', sortable: true, hideable: false },
47
+ value: { type: 'string' },
48
+ is_invisible: { type: 'boolean', renderer: 'boolean' },
49
+ created_at: { type: 'string' },
50
+ updated_at: { type: 'string' }
51
+ }
52
+ } as const
53
+
54
+ export const domainMeta = {
55
+ schemaName: 'DomainResource',
56
+ fields: {
57
+ id: { type: 'integer', renderer: 'number', hideable: false },
58
+ name: { type: 'string', sortable: true, hideable: false },
59
+ client: { type: 'ref', renderer: 'text', ref: 'ClientResource', labelKey: 'name' },
60
+ client_id: { type: 'string' },
61
+ is_active: { type: 'boolean', renderer: 'boolean' },
62
+ protocol: { type: 'string' },
63
+ host: { type: 'string' },
64
+ port: { type: 'integer', renderer: 'number' },
65
+ path: { type: 'string' },
66
+ created_at: { type: 'string' },
67
+ updated_at: { type: 'string' }
68
+ }
69
+ } as const
70
+
71
+ export const emailTemplateMeta = {
72
+ schemaName: 'EmailTemplateResource',
73
+ fields: {
74
+ id: { type: 'integer', renderer: 'number', hideable: false },
75
+ name: { type: 'string', sortable: true, hideable: false },
76
+ slug: { type: 'string' },
77
+ client: { type: 'ref', renderer: 'text', ref: 'ClientResource', labelKey: 'name' },
78
+ client_id: { type: 'integer', renderer: 'number' },
79
+ language: { type: 'ref', renderer: 'text', ref: 'LanguageResource', labelKey: 'name' },
80
+ language_id: { type: 'integer', renderer: 'number' },
81
+ subject: { type: 'string' },
82
+ body_text: { type: 'string' },
83
+ body_html: { type: 'string' },
84
+ has_body_html: { type: 'boolean', renderer: 'boolean' },
85
+ default_sender_name: { type: 'string' },
86
+ default_sender_email: { type: 'string', renderer: 'link' },
87
+ default_recipient_name: { type: 'string' },
88
+ default_recipient_email: { type: 'string', renderer: 'link' },
89
+ default_cc_email: { type: 'string', renderer: 'link' },
90
+ default_bcc_email: { type: 'string', renderer: 'link' },
91
+ default_replyto_email: { type: 'string', renderer: 'link' },
92
+ default_replyto_name: { type: 'string' },
93
+ created_at: { type: 'string' },
94
+ updated_at: { type: 'string' }
95
+ }
96
+ } as const
97
+
98
+ export const emailTemplateUsageMeta = {
99
+ schemaName: 'EmailTemplateUsageResource',
100
+ fields: {
101
+ form_config_id: { type: 'integer', renderer: 'number' },
102
+ form_component_uuid: { type: 'string' },
103
+ form_name: { type: 'string' },
104
+ custom_content_type_id: { type: 'integer', renderer: 'number' },
105
+ usage_type: { type: 'string' },
106
+ builder_page: { type: 'string' }
107
+ }
108
+ } as const
109
+
110
+ export const languageMeta = {
111
+ schemaName: 'LanguageResource',
112
+ fields: {
113
+ id: { type: 'integer', renderer: 'number', hideable: false },
114
+ iso_639_1: { type: 'string' },
115
+ english_name: { type: 'string' },
116
+ native_name: { type: 'string' },
117
+ created_at: { type: 'string' },
118
+ updated_at: { type: 'string' }
119
+ }
120
+ } as const
121
+
122
+ export const permissionGroupMeta = {
123
+ schemaName: 'PermissionGroupResource',
124
+ fields: {
125
+ id: { type: 'integer', renderer: 'number', hideable: false },
126
+ name: { type: 'string', sortable: true, hideable: false },
127
+ sort_position: { type: 'string' },
128
+ permission_names: { type: 'string' },
129
+ permissions: { type: 'ref[]', renderer: 'list', ref: 'PermissionResource', labelKey: 'name' },
130
+ created_at: { type: 'string' },
131
+ updated_at: { type: 'string' }
132
+ }
133
+ } as const
134
+
135
+ export const permissionMeta = {
136
+ schemaName: 'PermissionResource',
137
+ fields: {
138
+ id: { type: 'integer', renderer: 'number', hideable: false },
139
+ name: { type: 'string', sortable: true, hideable: false },
140
+ guard_name: { type: 'string' },
141
+ permission_group: { type: 'ref', renderer: 'text', ref: 'PermissionGroupResource', labelKey: 'name' },
142
+ created_at: { type: 'string' },
143
+ updated_at: { type: 'string' }
144
+ }
145
+ } as const
146
+
147
+ export const roleMeta = {
148
+ schemaName: 'RoleResource',
149
+ fields: {
150
+ id: { type: 'integer', renderer: 'number', hideable: false },
151
+ name: { type: 'string', sortable: true, hideable: false },
152
+ guard_name: { type: 'string' },
153
+ permissions: { type: 'ref[]', renderer: 'list', ref: 'PermissionResource', labelKey: 'name' },
154
+ created_at: { type: 'string' },
155
+ updated_at: { type: 'string' }
156
+ }
157
+ } as const
158
+
159
+ export const userMeta = {
160
+ schemaName: 'UserResource',
161
+ fields: {
162
+ id: { type: 'integer', renderer: 'number', hideable: false },
163
+ name: { type: 'string', sortable: true, hideable: false },
164
+ email: { type: 'string', renderer: 'link' },
165
+ avatar: { type: 'ref', renderer: 'avatar', ref: 'MediaResource' },
166
+ clients: { type: 'ref[]', renderer: 'list', ref: 'ClientResource', labelKey: 'name' },
167
+ roles: { type: 'ref[]', renderer: 'list', ref: 'RoleResource', labelKey: 'name' },
168
+ permissions: { type: 'ref[]', renderer: 'list', ref: 'PermissionResource', labelKey: 'name' },
169
+ created_at: { type: 'string' },
170
+ updated_at: { type: 'string' }
171
+ }
172
+ } as const
package/nuxt.config.ts ADDED
@@ -0,0 +1 @@
1
+ export default defineNuxtConfig({})
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@motor-cms/ui-admin",
3
+ "version": "1.0.1-alpha.0",
4
+ "type": "module",
5
+ "main": "./nuxt.config.ts",
6
+ "files": [
7
+ "app",
8
+ "server",
9
+ "public",
10
+ "nuxt.config.ts"
11
+ ],
12
+ "dependencies": {
13
+ "@tiptap/extension-link": "^3.0.0",
14
+ "@tiptap/extension-underline": "^3.0.0",
15
+ "@tiptap/starter-kit": "^3.0.0",
16
+ "@tiptap/vue-3": "^3.0.0",
17
+ "@vueuse/core": "^14.0.0",
18
+ "sortablejs": "^1.15.0",
19
+ "zod": "^4.0.0",
20
+ "@motor-cms/ui-core": "1.0.1-alpha.0"
21
+ },
22
+ "peerDependencies": {
23
+ "nuxt": "^4.0.0",
24
+ "vue": "^3.5.0"
25
+ }
26
+ }