@ittinc/strapi-plugin-kanban-board 0.0.1
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/LICENSE +21 -0
- package/README.md +74 -0
- package/admin/custom.d.ts +2 -0
- package/admin/src/components/Initializer.tsx +19 -0
- package/admin/src/components/KanbanInput/index.tsx +605 -0
- package/admin/src/components/PluginIcon.tsx +5 -0
- package/admin/src/index.ts +136 -0
- package/admin/src/pages/App.tsx +15 -0
- package/admin/src/pages/HomePage.tsx +398 -0
- package/admin/src/pluginId.ts +1 -0
- package/admin/src/translations/en.json +5 -0
- package/admin/src/translations/ru.json +5 -0
- package/admin/src/utils/getTranslation.ts +5 -0
- package/admin/tsconfig.build.json +10 -0
- package/admin/tsconfig.json +8 -0
- package/dist/_chunks/App-BEiW65up.js +343 -0
- package/dist/_chunks/App-DXTlN9Fm.mjs +341 -0
- package/dist/_chunks/en-C0sbENwZ.js +8 -0
- package/dist/_chunks/en-CHHvJuav.mjs +8 -0
- package/dist/_chunks/index-9nQMm6ez.js +465 -0
- package/dist/_chunks/index-DI_QN_uF.mjs +463 -0
- package/dist/_chunks/ru-B7uE6tx_.mjs +8 -0
- package/dist/_chunks/ru-Bl2jLOwG.js +8 -0
- package/dist/admin/index.js +156 -0
- package/dist/admin/index.mjs +157 -0
- package/dist/admin/src/components/Initializer.d.ts +5 -0
- package/dist/admin/src/components/KanbanInput/index.d.ts +33 -0
- package/dist/admin/src/components/PluginIcon.d.ts +2 -0
- package/dist/admin/src/index.d.ts +10 -0
- package/dist/admin/src/pages/App.d.ts +2 -0
- package/dist/admin/src/pages/HomePage.d.ts +2 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/utils/getTranslation.d.ts +2 -0
- package/dist/server/index.js +73 -0
- package/dist/server/index.mjs +74 -0
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/config/index.d.ts +5 -0
- package/dist/server/src/content-types/index.d.ts +2 -0
- package/dist/server/src/controllers/controller.d.ts +7 -0
- package/dist/server/src/controllers/index.d.ts +2 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/middlewares/index.d.ts +2 -0
- package/dist/server/src/policies/index.d.ts +2 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/routes/admin/index.d.ts +5 -0
- package/dist/server/src/routes/content-api/index.d.ts +12 -0
- package/dist/server/src/routes/index.d.ts +18 -0
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/service.d.ts +7 -0
- package/package.json +101 -0
- package/server/src/bootstrap.ts +7 -0
- package/server/src/config/index.ts +4 -0
- package/server/src/content-types/index.ts +1 -0
- package/server/src/controllers/controller.ts +13 -0
- package/server/src/controllers/index.ts +5 -0
- package/server/src/destroy.ts +7 -0
- package/server/src/index.ts +30 -0
- package/server/src/middlewares/index.ts +1 -0
- package/server/src/policies/index.ts +1 -0
- package/server/src/register.ts +13 -0
- package/server/src/routes/admin/index.ts +4 -0
- package/server/src/routes/content-api/index.ts +14 -0
- package/server/src/routes/index.ts +9 -0
- package/server/src/services/index.ts +5 -0
- package/server/src/services/service.ts +9 -0
- package/server/tsconfig.build.json +10 -0
- package/server/tsconfig.json +8 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { useRef, useEffect } from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { PuzzlePiece } from "@strapi/icons";
|
|
4
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
|
5
|
+
const v = glob[path];
|
|
6
|
+
if (v) {
|
|
7
|
+
return typeof v === "function" ? v() : Promise.resolve(v);
|
|
8
|
+
}
|
|
9
|
+
return new Promise((_, reject) => {
|
|
10
|
+
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
|
11
|
+
reject.bind(
|
|
12
|
+
null,
|
|
13
|
+
new Error(
|
|
14
|
+
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
|
15
|
+
)
|
|
16
|
+
)
|
|
17
|
+
);
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
const PLUGIN_ID = "kanban-board";
|
|
21
|
+
const Initializer = ({ setPlugin }) => {
|
|
22
|
+
const ref = useRef(setPlugin);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
ref.current(PLUGIN_ID);
|
|
25
|
+
}, []);
|
|
26
|
+
return null;
|
|
27
|
+
};
|
|
28
|
+
const PluginIcon = () => /* @__PURE__ */ jsx(PuzzlePiece, {});
|
|
29
|
+
const index = {
|
|
30
|
+
register(app) {
|
|
31
|
+
app.addMenuLink({
|
|
32
|
+
to: `plugins/${PLUGIN_ID}`,
|
|
33
|
+
icon: PluginIcon,
|
|
34
|
+
intlLabel: {
|
|
35
|
+
id: `${PLUGIN_ID}.plugin.name`,
|
|
36
|
+
defaultMessage: PLUGIN_ID
|
|
37
|
+
},
|
|
38
|
+
Component: async () => {
|
|
39
|
+
const { App } = await import("../_chunks/App-DXTlN9Fm.mjs");
|
|
40
|
+
return App;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
app.registerPlugin({
|
|
44
|
+
id: PLUGIN_ID,
|
|
45
|
+
initializer: Initializer,
|
|
46
|
+
isReady: false,
|
|
47
|
+
name: PLUGIN_ID
|
|
48
|
+
});
|
|
49
|
+
app.customFields.register({
|
|
50
|
+
name: "kanban-board",
|
|
51
|
+
pluginId: PLUGIN_ID,
|
|
52
|
+
type: "json",
|
|
53
|
+
intlLabel: {
|
|
54
|
+
id: `${PLUGIN_ID}.kanban-board.label`,
|
|
55
|
+
defaultMessage: "Kanban Board"
|
|
56
|
+
},
|
|
57
|
+
intlDescription: {
|
|
58
|
+
id: `${PLUGIN_ID}.kanban-board.description`,
|
|
59
|
+
defaultMessage: "Drag and drop items between columns"
|
|
60
|
+
},
|
|
61
|
+
icon: PluginIcon,
|
|
62
|
+
components: {
|
|
63
|
+
Input: async () => import("../_chunks/index-DI_QN_uF.mjs").then((module) => ({
|
|
64
|
+
default: module.KanbanInput
|
|
65
|
+
}))
|
|
66
|
+
},
|
|
67
|
+
options: {
|
|
68
|
+
base: [
|
|
69
|
+
{
|
|
70
|
+
sectionTitle: {
|
|
71
|
+
id: "kanban-plugin.section.settings",
|
|
72
|
+
defaultMessage: "Board Configuration"
|
|
73
|
+
},
|
|
74
|
+
items: [
|
|
75
|
+
{
|
|
76
|
+
intlLabel: {
|
|
77
|
+
id: "kanban-plugin.options.defaultColumns",
|
|
78
|
+
defaultMessage: "Default Columns (JSON Array)"
|
|
79
|
+
},
|
|
80
|
+
intlDescription: {
|
|
81
|
+
id: "kanban-plugin.options.defaultColumns.desc",
|
|
82
|
+
defaultMessage: 'e.g. ["To Do", "In Progress", "Done"]'
|
|
83
|
+
},
|
|
84
|
+
name: "options.defaultColumns",
|
|
85
|
+
type: "text",
|
|
86
|
+
defaultValue: '[{"code": "todo", "name": "To Do"}, {"code": "in-progress", "name": "In Progress"}, {"code": "done", "name": "Done"}]'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
intlLabel: {
|
|
90
|
+
id: "kanban-plugin.options.itemSchema",
|
|
91
|
+
defaultMessage: "Item Schema (JSON Array)"
|
|
92
|
+
},
|
|
93
|
+
intlDescription: {
|
|
94
|
+
id: "kanban-plugin.options.itemSchema.desc",
|
|
95
|
+
defaultMessage: 'Define fields: [{"name": "title", "label": "Title", "type": "text", "required": true}]'
|
|
96
|
+
},
|
|
97
|
+
name: "options.itemSchema",
|
|
98
|
+
type: "text",
|
|
99
|
+
defaultValue: '[{"name": "title", "label": "Title", "type": "text", "required": true}, {"name": "subtitle", "label": "Subtitle", "type": "text"}]'
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
sectionTitle: {
|
|
105
|
+
id: "kanban-plugin.section.permissions",
|
|
106
|
+
defaultMessage: "Permissions"
|
|
107
|
+
},
|
|
108
|
+
items: [
|
|
109
|
+
{
|
|
110
|
+
intlLabel: {
|
|
111
|
+
id: "kanban-plugin.options.canAddColumns",
|
|
112
|
+
defaultMessage: "Allow Adding Columns"
|
|
113
|
+
},
|
|
114
|
+
name: "options.canAddColumns",
|
|
115
|
+
type: "checkbox",
|
|
116
|
+
defaultValue: true
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
intlLabel: {
|
|
120
|
+
id: "kanban-plugin.options.canDeleteColumns",
|
|
121
|
+
defaultMessage: "Allow Deleting Columns"
|
|
122
|
+
},
|
|
123
|
+
name: "options.canDeleteColumns",
|
|
124
|
+
type: "checkbox",
|
|
125
|
+
defaultValue: true
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
intlLabel: {
|
|
129
|
+
id: "kanban-plugin.options.canRenameColumns",
|
|
130
|
+
defaultMessage: "Allow Renaming Columns"
|
|
131
|
+
},
|
|
132
|
+
name: "options.canRenameColumns",
|
|
133
|
+
type: "checkbox",
|
|
134
|
+
defaultValue: true
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
async registerTrads({ locales }) {
|
|
143
|
+
return Promise.all(
|
|
144
|
+
locales.map(async (locale) => {
|
|
145
|
+
try {
|
|
146
|
+
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("../_chunks/en-CHHvJuav.mjs"), "./translations/ru.json": () => import("../_chunks/ru-B7uE6tx_.mjs") }), `./translations/${locale}.json`, 3);
|
|
147
|
+
return { data, locale };
|
|
148
|
+
} catch {
|
|
149
|
+
return { data: {}, locale };
|
|
150
|
+
}
|
|
151
|
+
})
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
export {
|
|
156
|
+
index as default
|
|
157
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface Item extends Record<string, any> {
|
|
2
|
+
id: string;
|
|
3
|
+
}
|
|
4
|
+
interface ColumnData {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
code?: string;
|
|
8
|
+
items: Item[];
|
|
9
|
+
}
|
|
10
|
+
interface KanbanInputProps {
|
|
11
|
+
name: string;
|
|
12
|
+
value?: string | ColumnData[];
|
|
13
|
+
onChange: (event: {
|
|
14
|
+
target: {
|
|
15
|
+
name: string;
|
|
16
|
+
value: string | ColumnData[];
|
|
17
|
+
type?: string;
|
|
18
|
+
};
|
|
19
|
+
}) => void;
|
|
20
|
+
attribute: {
|
|
21
|
+
options?: {
|
|
22
|
+
defaultColumns?: string | string[];
|
|
23
|
+
itemSchema?: string | any[];
|
|
24
|
+
canAddColumns?: boolean;
|
|
25
|
+
canDeleteColumns?: boolean;
|
|
26
|
+
canRenameColumns?: boolean;
|
|
27
|
+
};
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
};
|
|
30
|
+
intlLabel: any;
|
|
31
|
+
}
|
|
32
|
+
export declare const KanbanInput: ({ name, value, onChange, intlLabel, attribute }: KanbanInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PLUGIN_ID = "kanban-board";
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const bootstrap = ({ strapi }) => {
|
|
3
|
+
};
|
|
4
|
+
const destroy = ({ strapi }) => {
|
|
5
|
+
};
|
|
6
|
+
const register = ({ strapi }) => {
|
|
7
|
+
strapi.customFields.register({
|
|
8
|
+
name: "kanban-board",
|
|
9
|
+
plugin: "kanban-board",
|
|
10
|
+
type: "json"
|
|
11
|
+
// Note: Options are primarily handled by the Admin UI during CTB configuration,
|
|
12
|
+
// but registering the field with the correct name and plugin is essential.
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
const config = {
|
|
16
|
+
default: {},
|
|
17
|
+
validator() {
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const contentTypes = {};
|
|
21
|
+
const controller = ({ strapi }) => ({
|
|
22
|
+
index(ctx) {
|
|
23
|
+
ctx.body = strapi.plugin("kanban-board").service("service").getWelcomeMessage();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
const controllers = {
|
|
27
|
+
controller
|
|
28
|
+
};
|
|
29
|
+
const middlewares = {};
|
|
30
|
+
const policies = {};
|
|
31
|
+
const contentAPIRoutes = () => ({
|
|
32
|
+
type: "content-api",
|
|
33
|
+
routes: [
|
|
34
|
+
{
|
|
35
|
+
method: "GET",
|
|
36
|
+
path: "/",
|
|
37
|
+
// name of the controller file & the method.
|
|
38
|
+
handler: "controller.index",
|
|
39
|
+
config: {
|
|
40
|
+
policies: []
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
const adminAPIRoutes = () => ({
|
|
46
|
+
type: "admin",
|
|
47
|
+
routes: []
|
|
48
|
+
});
|
|
49
|
+
const routes = {
|
|
50
|
+
"content-api": contentAPIRoutes,
|
|
51
|
+
admin: adminAPIRoutes
|
|
52
|
+
};
|
|
53
|
+
const service = ({ strapi }) => ({
|
|
54
|
+
getWelcomeMessage() {
|
|
55
|
+
return "Welcome to Strapi 🚀";
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const services = {
|
|
59
|
+
service
|
|
60
|
+
};
|
|
61
|
+
const index = {
|
|
62
|
+
register,
|
|
63
|
+
bootstrap,
|
|
64
|
+
destroy,
|
|
65
|
+
config,
|
|
66
|
+
controllers,
|
|
67
|
+
routes,
|
|
68
|
+
services,
|
|
69
|
+
contentTypes,
|
|
70
|
+
policies,
|
|
71
|
+
middlewares
|
|
72
|
+
};
|
|
73
|
+
module.exports = index;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const bootstrap = ({ strapi }) => {
|
|
2
|
+
};
|
|
3
|
+
const destroy = ({ strapi }) => {
|
|
4
|
+
};
|
|
5
|
+
const register = ({ strapi }) => {
|
|
6
|
+
strapi.customFields.register({
|
|
7
|
+
name: "kanban-board",
|
|
8
|
+
plugin: "kanban-board",
|
|
9
|
+
type: "json"
|
|
10
|
+
// Note: Options are primarily handled by the Admin UI during CTB configuration,
|
|
11
|
+
// but registering the field with the correct name and plugin is essential.
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
const config = {
|
|
15
|
+
default: {},
|
|
16
|
+
validator() {
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const contentTypes = {};
|
|
20
|
+
const controller = ({ strapi }) => ({
|
|
21
|
+
index(ctx) {
|
|
22
|
+
ctx.body = strapi.plugin("kanban-board").service("service").getWelcomeMessage();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const controllers = {
|
|
26
|
+
controller
|
|
27
|
+
};
|
|
28
|
+
const middlewares = {};
|
|
29
|
+
const policies = {};
|
|
30
|
+
const contentAPIRoutes = () => ({
|
|
31
|
+
type: "content-api",
|
|
32
|
+
routes: [
|
|
33
|
+
{
|
|
34
|
+
method: "GET",
|
|
35
|
+
path: "/",
|
|
36
|
+
// name of the controller file & the method.
|
|
37
|
+
handler: "controller.index",
|
|
38
|
+
config: {
|
|
39
|
+
policies: []
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
});
|
|
44
|
+
const adminAPIRoutes = () => ({
|
|
45
|
+
type: "admin",
|
|
46
|
+
routes: []
|
|
47
|
+
});
|
|
48
|
+
const routes = {
|
|
49
|
+
"content-api": contentAPIRoutes,
|
|
50
|
+
admin: adminAPIRoutes
|
|
51
|
+
};
|
|
52
|
+
const service = ({ strapi }) => ({
|
|
53
|
+
getWelcomeMessage() {
|
|
54
|
+
return "Welcome to Strapi 🚀";
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const services = {
|
|
58
|
+
service
|
|
59
|
+
};
|
|
60
|
+
const index = {
|
|
61
|
+
register,
|
|
62
|
+
bootstrap,
|
|
63
|
+
destroy,
|
|
64
|
+
config,
|
|
65
|
+
controllers,
|
|
66
|
+
routes,
|
|
67
|
+
services,
|
|
68
|
+
contentTypes,
|
|
69
|
+
policies,
|
|
70
|
+
middlewares
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
index as default
|
|
74
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const routes: {
|
|
2
|
+
'content-api': () => {
|
|
3
|
+
type: string;
|
|
4
|
+
routes: {
|
|
5
|
+
method: string;
|
|
6
|
+
path: string;
|
|
7
|
+
handler: string;
|
|
8
|
+
config: {
|
|
9
|
+
policies: any[];
|
|
10
|
+
};
|
|
11
|
+
}[];
|
|
12
|
+
};
|
|
13
|
+
admin: () => {
|
|
14
|
+
type: string;
|
|
15
|
+
routes: any[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export default routes;
|
package/package.json
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ittinc/strapi-plugin-kanban-board",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "A Kanban board plugin for Strapi v5",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://code.dev-ittest.ru/it-test-public/strapi-plugin-kanban-board.git"
|
|
9
|
+
},
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public"
|
|
12
|
+
},
|
|
13
|
+
"strapi": {
|
|
14
|
+
"kind": "plugin",
|
|
15
|
+
"name": "kanban-board",
|
|
16
|
+
"displayName": "Kanban Board",
|
|
17
|
+
"description": "Manage your content in a Kanban view"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"strapi",
|
|
21
|
+
"plugin",
|
|
22
|
+
"kanban",
|
|
23
|
+
"board",
|
|
24
|
+
"drag-and-drop"
|
|
25
|
+
],
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"author": "sonich <boldyreva@ittest-team.ru>",
|
|
28
|
+
"type": "commonjs",
|
|
29
|
+
"exports": {
|
|
30
|
+
"./package.json": "./package.json",
|
|
31
|
+
"./strapi-admin": {
|
|
32
|
+
"types": "./dist/admin/src/index.d.ts",
|
|
33
|
+
"source": "./admin/src/index.ts",
|
|
34
|
+
"import": "./dist/admin/index.mjs",
|
|
35
|
+
"require": "./dist/admin/index.js",
|
|
36
|
+
"default": "./dist/admin/index.js"
|
|
37
|
+
},
|
|
38
|
+
"./strapi-server": {
|
|
39
|
+
"types": "./dist/server/src/index.d.ts",
|
|
40
|
+
"source": "./server/src/index.ts",
|
|
41
|
+
"import": "./dist/server/index.mjs",
|
|
42
|
+
"require": "./dist/server/index.js",
|
|
43
|
+
"default": "./dist/server/index.js"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"admin",
|
|
48
|
+
"server",
|
|
49
|
+
"dist"
|
|
50
|
+
],
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "strapi-plugin build",
|
|
53
|
+
"watch": "strapi-plugin watch",
|
|
54
|
+
"verify": "strapi-plugin verify",
|
|
55
|
+
"prepublishOnly": "npm run build",
|
|
56
|
+
"prepare": "npm run build",
|
|
57
|
+
"postinstall": "npm run build"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=18.0.0",
|
|
61
|
+
"npm": ">=6.0.0"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"@strapi/sdk-plugin": "^5.4.0",
|
|
65
|
+
"@strapi/typescript-utils": "5.31.0",
|
|
66
|
+
"typescript": "^5.9.3",
|
|
67
|
+
"@strapi/design-system": "^2.0.0-rc.30",
|
|
68
|
+
"@strapi/icons": "^2.0.0-rc.30",
|
|
69
|
+
"react-intl": "^8.1.1",
|
|
70
|
+
"styled-components": "^6.3.8"
|
|
71
|
+
},
|
|
72
|
+
"devDependencies": {
|
|
73
|
+
"@strapi/design-system": "^2.0.0-rc.30",
|
|
74
|
+
"@strapi/icons": "^2.0.0-rc.30",
|
|
75
|
+
"react-intl": "^8.1.1",
|
|
76
|
+
"@strapi/strapi": "5.31.0",
|
|
77
|
+
"@strapi/sdk-plugin": "^5.4.0",
|
|
78
|
+
"prettier": "^3.8.1",
|
|
79
|
+
"react": "^18.3.1",
|
|
80
|
+
"react-dom": "^18.3.1",
|
|
81
|
+
"react-router-dom": "^6.30.3",
|
|
82
|
+
"styled-components": "^6.3.8",
|
|
83
|
+
"@types/react": "^19.2.9",
|
|
84
|
+
"@types/react-dom": "^19.2.3",
|
|
85
|
+
"@strapi/typescript-utils": "5.31.0",
|
|
86
|
+
"typescript": "^5.9.3"
|
|
87
|
+
},
|
|
88
|
+
"peerDependencies": {
|
|
89
|
+
"@strapi/design-system": "^2.0.0-rc.30",
|
|
90
|
+
"@strapi/icons": "^2.0.0-rc.30",
|
|
91
|
+
"react-intl": "^8.1.1",
|
|
92
|
+
"@strapi/strapi": "5.31.0",
|
|
93
|
+
"@strapi/sdk-plugin": "^5.4.0",
|
|
94
|
+
"react": "^18.3.1",
|
|
95
|
+
"react-dom": "^18.3.1",
|
|
96
|
+
"react-router-dom": "^6.30.3",
|
|
97
|
+
"styled-components": "^6.3.8"
|
|
98
|
+
},
|
|
99
|
+
"main": "./dist/server/index.js",
|
|
100
|
+
"module": "./dist/admin/index.mjs"
|
|
101
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Core } from '@strapi/strapi';
|
|
2
|
+
|
|
3
|
+
const controller = ({ strapi }: { strapi: Core.Strapi }) => ({
|
|
4
|
+
index(ctx) {
|
|
5
|
+
ctx.body = strapi
|
|
6
|
+
.plugin('kanban-board')
|
|
7
|
+
// the name of the service file & the method.
|
|
8
|
+
.service('service')
|
|
9
|
+
.getWelcomeMessage();
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export default controller;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application methods
|
|
3
|
+
*/
|
|
4
|
+
import bootstrap from './bootstrap';
|
|
5
|
+
import destroy from './destroy';
|
|
6
|
+
import register from './register';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Plugin server methods
|
|
10
|
+
*/
|
|
11
|
+
import config from './config';
|
|
12
|
+
import contentTypes from './content-types';
|
|
13
|
+
import controllers from './controllers';
|
|
14
|
+
import middlewares from './middlewares';
|
|
15
|
+
import policies from './policies';
|
|
16
|
+
import routes from './routes';
|
|
17
|
+
import services from './services';
|
|
18
|
+
|
|
19
|
+
export default {
|
|
20
|
+
register,
|
|
21
|
+
bootstrap,
|
|
22
|
+
destroy,
|
|
23
|
+
config,
|
|
24
|
+
controllers,
|
|
25
|
+
routes,
|
|
26
|
+
services,
|
|
27
|
+
contentTypes,
|
|
28
|
+
policies,
|
|
29
|
+
middlewares,
|
|
30
|
+
} as any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|