@gnar-engine/cli 1.0.3 → 1.0.5
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/bootstrap/deploy.localdev.yml +44 -30
- package/bootstrap/secrets.localdev.yml +20 -14
- package/bootstrap/services/control/src/config.js +4 -0
- package/bootstrap/services/{agent → page}/Dockerfile +3 -3
- package/bootstrap/services/page/package.json +16 -0
- package/bootstrap/services/page/src/app.js +50 -0
- package/bootstrap/services/page/src/commands/block.handler.js +94 -0
- package/bootstrap/services/page/src/commands/page.handler.js +167 -0
- package/bootstrap/services/page/src/config.js +62 -0
- package/bootstrap/services/page/src/controllers/block.http.controller.js +87 -0
- package/bootstrap/services/page/src/controllers/message.controller.js +51 -0
- package/bootstrap/services/page/src/controllers/page.http.controller.js +89 -0
- package/bootstrap/services/page/src/policies/block.policy.js +50 -0
- package/bootstrap/services/page/src/policies/page.policy.js +49 -0
- package/bootstrap/services/page/src/schema/page.schema.js +139 -0
- package/bootstrap/services/page/src/services/block.service.js +83 -0
- package/bootstrap/services/page/src/services/page.service.js +83 -0
- package/bootstrap/services/portal/Dockerfile +7 -10
- package/bootstrap/services/portal/README.md +66 -15
- package/bootstrap/services/portal/index.html +13 -0
- package/bootstrap/services/portal/nginx.conf +5 -12
- package/bootstrap/services/portal/package.json +27 -53
- package/bootstrap/services/portal/public/vite.svg +1 -0
- package/bootstrap/services/portal/react-router.config.js +7 -0
- package/bootstrap/services/portal/src/App.jsx +16 -0
- package/bootstrap/services/portal/src/assets/gnar-engine-white-logo.svg +9 -0
- package/bootstrap/services/portal/src/assets/icon-agent.svg +6 -0
- package/bootstrap/services/portal/src/assets/icon-cog.svg +4 -0
- package/bootstrap/services/portal/src/assets/icon-delete.svg +3 -0
- package/bootstrap/services/portal/src/assets/icon-home.svg +3 -0
- package/bootstrap/services/portal/src/assets/icon-padlock.svg +3 -0
- package/bootstrap/services/portal/src/assets/icon-page.svg +6 -0
- package/bootstrap/services/portal/src/assets/icon-reports.svg +3 -0
- package/bootstrap/services/portal/src/assets/icon-user.svg +3 -0
- package/bootstrap/services/portal/src/assets/icon-users.svg +3 -0
- package/bootstrap/services/portal/src/assets/login-green-rad-back-1.jpg +0 -0
- package/bootstrap/services/portal/src/assets/react.svg +1 -0
- package/bootstrap/services/portal/src/components/CrudList/CrudList.jsx +85 -0
- package/bootstrap/services/portal/src/components/CrudList/CrudList.less +59 -0
- package/bootstrap/services/portal/src/{ui/customSelect → components/CustomSelect}/CustomSelect.jsx +21 -3
- package/bootstrap/services/portal/src/components/LoginForm/LoginForm.jsx +58 -0
- package/bootstrap/services/portal/src/components/PageBlockSwitch/PageBlockSwitch.jsx +129 -0
- package/bootstrap/services/portal/src/components/Sidebar/Sidebar.jsx +33 -0
- package/bootstrap/services/portal/src/components/Sidebar/Sidebar.less +37 -0
- package/bootstrap/services/portal/src/components/Topbar/Topbar.jsx +19 -0
- package/bootstrap/services/portal/src/components/Topbar/Topbar.less +22 -0
- package/bootstrap/services/portal/src/components/UserInfo/UserInfo.jsx +33 -0
- package/bootstrap/services/portal/src/components/UserInfo/UserInfo.less +21 -0
- package/bootstrap/services/portal/src/css/style.css +446 -742
- package/bootstrap/services/portal/src/data/pages.data.js +10 -0
- package/bootstrap/services/portal/src/elements/CustomSelect/CustomSelect.jsx +65 -0
- package/bootstrap/services/portal/src/{ui/customSelect/customSelect.less → elements/CustomSelect/CustomSelect.less} +17 -7
- package/bootstrap/services/portal/src/elements/ImageInput/ImageInput.jsx +115 -0
- package/bootstrap/services/portal/src/elements/ImageInput/ImageInput.less +43 -0
- package/bootstrap/services/portal/src/elements/ImageMultiInput/ImageMultiInput.jsx +124 -0
- package/bootstrap/services/portal/src/elements/ImageMultiInput/ImageMultiInput.less +0 -0
- package/bootstrap/services/portal/src/elements/Repeater/Repeater.jsx +52 -0
- package/bootstrap/services/portal/src/elements/Repeater/Repeater.less +70 -0
- package/bootstrap/services/portal/src/elements/RichTextInput/RichTextInput.jsx +18 -0
- package/bootstrap/services/portal/src/elements/RichTextInput/RichTextInput.less +37 -0
- package/bootstrap/services/portal/src/elements/SaveButton/SaveButton.jsx +45 -0
- package/bootstrap/services/portal/src/elements/SelectRepeater/SelectRepeater.jsx +63 -0
- package/bootstrap/services/portal/src/elements/SelectRepeater/SelectRepeater.less +23 -0
- package/bootstrap/services/portal/src/elements/TextInput/TextInput.jsx +17 -0
- package/bootstrap/services/portal/src/layouts/Card/Card.jsx +15 -0
- package/bootstrap/services/portal/src/layouts/PortalLayout/PortalLayout.jsx +29 -0
- package/bootstrap/services/portal/src/layouts/PortalLayout/PortalLayout.less +49 -0
- package/bootstrap/services/portal/src/main.jsx +51 -0
- package/bootstrap/services/portal/src/pages/BlockSinglePage/BlockSinglePage.jsx +277 -0
- package/bootstrap/services/portal/src/pages/BlocksPage/BlocksPage.jsx +23 -0
- package/bootstrap/services/portal/src/pages/DashboardPage/DashboardPage.jsx +11 -0
- package/bootstrap/services/portal/src/pages/DashboardPage/DashboardPage.less +0 -0
- package/bootstrap/services/portal/src/pages/LoginPage/LoginPage.jsx +21 -0
- package/bootstrap/services/portal/src/pages/LoginPage/LoginPage.less +51 -0
- package/bootstrap/services/portal/src/pages/PageSinglePage/PageSinglePage.jsx +338 -0
- package/bootstrap/services/portal/src/pages/PagesPage/PagesPage.jsx +23 -0
- package/bootstrap/services/portal/src/pages/UserSinglePage/UserSinglePage.jsx +9 -0
- package/bootstrap/services/portal/src/pages/UserSinglePage/UserSinglePage.less +0 -0
- package/bootstrap/services/portal/src/pages/UsersPage/UsersPage.jsx +25 -0
- package/bootstrap/services/portal/src/pages/UsersPage/UsersPage.less +0 -0
- package/bootstrap/services/portal/src/services/block.js +28 -0
- package/bootstrap/services/portal/src/services/client.js +67 -0
- package/bootstrap/services/portal/src/services/gravatar.js +14 -0
- package/bootstrap/services/portal/src/services/page.js +28 -0
- package/bootstrap/services/portal/src/services/storage.js +62 -0
- package/bootstrap/services/portal/src/services/user.js +41 -0
- package/bootstrap/services/portal/src/slices/authSlice.js +44 -14
- package/bootstrap/services/portal/src/store/configureStore.js +1 -3
- package/bootstrap/services/portal/src/style/cards.less +57 -0
- package/bootstrap/services/portal/src/{styles → style}/global.less +90 -45
- package/bootstrap/services/portal/src/style/icons.less +21 -0
- package/bootstrap/services/portal/src/style/inputs.less +52 -0
- package/bootstrap/services/portal/src/style/main.less +28 -0
- package/bootstrap/services/portal/src/utils/utils.js +9 -0
- package/bootstrap/services/portal/vite.config.js +12 -0
- package/bootstrap/services/user/Dockerfile +1 -1
- package/bootstrap/services/user/src/app.js +6 -1
- package/bootstrap/services/user/src/commands/user.handler.js +0 -3
- package/bootstrap/services/user/src/config.js +5 -1
- package/bootstrap/services/user/src/policies/user.policy.js +3 -1
- package/bootstrap/services/user/src/tests/commands/user.test.js +22 -0
- package/install-from-clone.sh +30 -0
- package/package.json +1 -1
- package/src/cli.js +8 -0
- package/src/config.js +2 -1
- package/src/dev/commands.js +10 -2
- package/src/dev/dev.service.js +167 -52
- package/src/provisioner/Dockerfile +27 -0
- package/src/provisioner/package.json +19 -0
- package/src/provisioner/src/app.js +56 -0
- package/src/provisioner/src/services/mongodb.js +58 -0
- package/src/provisioner/src/services/mysql.js +51 -0
- package/src/provisioner/src/services/secrets.js +84 -0
- package/src/scaffolder/commands.js +12 -5
- package/src/scaffolder/scaffolder.handler.js +256 -58
- package/templates/service/Dockerfile.hbs +4 -1
- package/templates/service/package.json.hbs +14 -16
- package/templates/service/src/app.js.hbs +53 -0
- package/templates/service/{commands → src/commands}/{{serviceName}}.handler.js.hbs +2 -3
- package/templates/service/src/mongodb.config.js.hbs +49 -0
- package/templates/service/{config.js.hbs → src/mysql.config.js.hbs} +10 -0
- package/{bootstrap/services/agent/src/schema/Agent.schema.js → templates/service/src/schema/{{serviceName}}.schema.js.hbs} +3 -3
- package/templates/service/src/services/mongodb.{{serviceName}}.service.js.hbs +70 -0
- package/bootstrap/services/agent/notes.md +0 -28
- package/bootstrap/services/agent/package.json +0 -16
- package/bootstrap/services/agent/src/app.js +0 -52
- package/bootstrap/services/agent/src/commands/agent.handler.js +0 -104
- package/bootstrap/services/agent/src/config.js +0 -52
- package/bootstrap/services/agent/src/controllers/http.controller.js +0 -44
- package/bootstrap/services/agent/src/controllers/message.controller.js +0 -51
- package/bootstrap/services/agent/src/db/migrations/01-init.js +0 -50
- package/bootstrap/services/agent/src/db/migrations/02-agent-service-init.js +0 -36
- package/bootstrap/services/agent/src/policies/agent.policy.js +0 -13
- package/bootstrap/services/agent/src/services/agent.service.js +0 -259
- package/bootstrap/services/agent/src/services/chatgpt.service.js +0 -46
- package/bootstrap/services/agent/src/services/manifest.service.js +0 -21
- package/bootstrap/services/portal/Dockerfile.remote +0 -40
- package/bootstrap/services/portal/public/favicon.ico +0 -0
- package/bootstrap/services/portal/public/gnar-white.png +0 -0
- package/bootstrap/services/portal/public/gnarengine-logo-black.png +0 -0
- package/bootstrap/services/portal/public/index.html +0 -43
- package/bootstrap/services/portal/public/logo192.png +0 -0
- package/bootstrap/services/portal/public/logo512.png +0 -0
- package/bootstrap/services/portal/public/manifest.json +0 -25
- package/bootstrap/services/portal/public/robots.txt +0 -3
- package/bootstrap/services/portal/src/App.js +0 -56
- package/bootstrap/services/portal/src/assets/Logo_Anchord_Black.svg +0 -1
- package/bootstrap/services/portal/src/assets/Logo_Anchord_Black_Green.svg +0 -1
- package/bootstrap/services/portal/src/assets/Logo_Anchord_White_Green.svg +0 -1
- package/bootstrap/services/portal/src/assets/activity.svg +0 -3
- package/bootstrap/services/portal/src/assets/arrow.svg +0 -3
- package/bootstrap/services/portal/src/assets/bin-white.svg +0 -3
- package/bootstrap/services/portal/src/assets/bin.svg +0 -3
- package/bootstrap/services/portal/src/assets/check.svg +0 -3
- package/bootstrap/services/portal/src/assets/chevron.svg +0 -3
- package/bootstrap/services/portal/src/assets/contact.svg +0 -3
- package/bootstrap/services/portal/src/assets/dots-vertical.svg +0 -5
- package/bootstrap/services/portal/src/assets/eye-off.svg +0 -3
- package/bootstrap/services/portal/src/assets/eye.svg +0 -4
- package/bootstrap/services/portal/src/assets/gnar-engine-black.svg +0 -47
- package/bootstrap/services/portal/src/assets/gnar-engine-white.svg +0 -47
- package/bootstrap/services/portal/src/assets/gnar_engine.svg +0 -3
- package/bootstrap/services/portal/src/assets/gnarengine-logo-black.png +0 -0
- package/bootstrap/services/portal/src/assets/home.svg +0 -3
- package/bootstrap/services/portal/src/assets/link.svg +0 -3
- package/bootstrap/services/portal/src/assets/lock.svg +0 -3
- package/bootstrap/services/portal/src/assets/package.svg +0 -4
- package/bootstrap/services/portal/src/assets/raffle.svg +0 -3
- package/bootstrap/services/portal/src/assets/settings.svg +0 -4
- package/bootstrap/services/portal/src/assets/shopping-bag.svg +0 -3
- package/bootstrap/services/portal/src/assets/user-black.svg +0 -3
- package/bootstrap/services/portal/src/assets/user.svg +0 -3
- package/bootstrap/services/portal/src/assets/users.svg +0 -3
- package/bootstrap/services/portal/src/assets/wallet.svg +0 -3
- package/bootstrap/services/portal/src/data/data.js +0 -70
- package/bootstrap/services/portal/src/features/attributeFormRow/AttributeFormRow.jsx +0 -32
- package/bootstrap/services/portal/src/features/billingShipping/BillingShipping.jsx +0 -160
- package/bootstrap/services/portal/src/features/crud/crudEdit.less +0 -230
- package/bootstrap/services/portal/src/features/crud/crudList.less +0 -134
- package/bootstrap/services/portal/src/features/crud/crudPage.less +0 -31
- package/bootstrap/services/portal/src/features/crudContact/CrudContactList.jsx +0 -108
- package/bootstrap/services/portal/src/features/crudContact/CrudContactSingle.jsx +0 -243
- package/bootstrap/services/portal/src/features/crudOrder/CrudOrderList.jsx +0 -109
- package/bootstrap/services/portal/src/features/crudOrder/CrudOrderSingle.jsx +0 -315
- package/bootstrap/services/portal/src/features/crudProducts/CrudProductList.jsx +0 -104
- package/bootstrap/services/portal/src/features/crudProducts/CrudProductSingle.jsx +0 -388
- package/bootstrap/services/portal/src/features/crudRaffles/CrudRafflesList.jsx +0 -104
- package/bootstrap/services/portal/src/features/crudRaffles/CrudRafflesSingle.jsx +0 -208
- package/bootstrap/services/portal/src/features/crudSubscription/CrudSubscriptionList.jsx +0 -110
- package/bootstrap/services/portal/src/features/crudSubscription/CrudSubscriptionSingle.jsx +0 -261
- package/bootstrap/services/portal/src/features/crudUser/CrudUserList.jsx +0 -107
- package/bootstrap/services/portal/src/features/crudUser/CrudUserSingle.jsx +0 -402
- package/bootstrap/services/portal/src/features/inventoryFormRow/InventoryFormRow.jsx +0 -30
- package/bootstrap/services/portal/src/features/lineItems/LineItems.jsx +0 -113
- package/bootstrap/services/portal/src/features/loginForm/LoginForm.jsx +0 -56
- package/bootstrap/services/portal/src/features/loginForm/loginForm.less +0 -56
- package/bootstrap/services/portal/src/features/notes/Notes.jsx +0 -18
- package/bootstrap/services/portal/src/features/passwordReset/PasswordResetForm.jsx +0 -96
- package/bootstrap/services/portal/src/features/passwordReset/PasswordResetRequestForm.jsx +0 -74
- package/bootstrap/services/portal/src/features/priceFormRow/PriceFormRow.jsx +0 -102
- package/bootstrap/services/portal/src/features/priceFormRow/priceFormRow.less +0 -24
- package/bootstrap/services/portal/src/features/raffleEntriesList/RaffleEntriesList.jsx +0 -99
- package/bootstrap/services/portal/src/features/raffleProductFormRow/RaffleProductFormRow.jsx +0 -46
- package/bootstrap/services/portal/src/features/sidebar/Sidebar.jsx +0 -64
- package/bootstrap/services/portal/src/features/sidebar/sidebar.less +0 -49
- package/bootstrap/services/portal/src/features/skus/Skus.jsx +0 -109
- package/bootstrap/services/portal/src/features/subscriptionSchedule/SubscriptionSchedule.jsx +0 -44
- package/bootstrap/services/portal/src/features/taxonomyFormRow/TaxonomyFormRow.jsx +0 -32
- package/bootstrap/services/portal/src/features/user/User.jsx +0 -54
- package/bootstrap/services/portal/src/features/user/user.less +0 -57
- package/bootstrap/services/portal/src/includes/utilities.js +0 -259
- package/bootstrap/services/portal/src/index.js +0 -14
- package/bootstrap/services/portal/src/layouts/CrudLayout.jsx +0 -50
- package/bootstrap/services/portal/src/layouts/LoginLayout.jsx +0 -17
- package/bootstrap/services/portal/src/layouts/PortalLayout.jsx +0 -48
- package/bootstrap/services/portal/src/layouts/loginLayout.less +0 -33
- package/bootstrap/services/portal/src/layouts/portalLayout.less +0 -67
- package/bootstrap/services/portal/src/pages/contacts/Contacts.jsx +0 -199
- package/bootstrap/services/portal/src/pages/dashboard/Dashboard.jsx +0 -17
- package/bootstrap/services/portal/src/pages/integrations/Integrations.jsx +0 -10
- package/bootstrap/services/portal/src/pages/login/Login.jsx +0 -15
- package/bootstrap/services/portal/src/pages/login/login.less +0 -10
- package/bootstrap/services/portal/src/pages/orders/Orders.jsx +0 -199
- package/bootstrap/services/portal/src/pages/passwordReset/PasswordResetPage.jsx +0 -15
- package/bootstrap/services/portal/src/pages/passwordResetRequest/PasswordResetRequestPage.jsx +0 -15
- package/bootstrap/services/portal/src/pages/payments/Payments.jsx +0 -10
- package/bootstrap/services/portal/src/pages/portal/Portal.jsx +0 -43
- package/bootstrap/services/portal/src/pages/products/Products.jsx +0 -212
- package/bootstrap/services/portal/src/pages/raffleEntries/RaffleEntries.jsx +0 -124
- package/bootstrap/services/portal/src/pages/raffles/Raffles.jsx +0 -186
- package/bootstrap/services/portal/src/pages/reports/Reports.jsx +0 -10
- package/bootstrap/services/portal/src/pages/settings/Settings.jsx +0 -10
- package/bootstrap/services/portal/src/pages/subscriptions/Subscriptions.jsx +0 -199
- package/bootstrap/services/portal/src/pages/users/Users.jsx +0 -193
- package/bootstrap/services/portal/src/pages/users/users.less +0 -25
- package/bootstrap/services/portal/src/styles/inputs.less +0 -157
- package/bootstrap/services/portal/src/styles/main.less +0 -26
- package/bootstrap/services/portal/src/ui/collapsible/Collapsible.jsx +0 -97
- package/bootstrap/services/portal/src/ui/collapsible/collapsible.less +0 -23
- package/bootstrap/services/portal/src/ui/customCheckbox/CustomCheckbox.jsx +0 -17
- package/bootstrap/services/portal/src/ui/customCheckbox/customCheckbox.less +0 -42
- package/bootstrap/services/portal/src/ui/customMultiSelect/CustomMultiSelect.jsx +0 -63
- package/bootstrap/services/portal/src/ui/customMultiSelect/CustomMultiSelectPeriod.jsx +0 -63
- package/bootstrap/services/portal/src/ui/goBack/GoBack.jsx +0 -19
- package/bootstrap/services/portal/src/ui/loader/Loader.jsx +0 -12
- package/bootstrap/services/portal/src/ui/pagination/Pagination.jsx +0 -23
- package/bootstrap/services/portal/src/ui/repeater/Repeater.jsx +0 -29
- package/bootstrap/services/portal/src/ui/saveButton/SaveButton.jsx +0 -69
- package/bootstrap/services/user/src/db/seeders/development/02-portal-admin-user.js +0 -27
- package/bootstrap/services/user/src/tests/user.test.js +0 -126
- package/templates/service/app.js.hbs +0 -38
- package/templates/service/schema/{{serviceName}}.schema.js.hbs +0 -14
- /package/bootstrap/services/portal/src/{ui/saveButton/saveButton.less → components/CustomSelect/CustomSelect.less} +0 -0
- /package/templates/service/{controllers → src/controllers}/http.controller.js.hbs +0 -0
- /package/templates/service/{controllers → src/controllers}/message.controller.js.hbs +0 -0
- /package/templates/service/{db → src/mysql.db}/migrations/01-init.js.hbs +0 -0
- /package/templates/service/{db → src/mysql.db}/migrations/02-{{lowerCase serviceName}}-service-init.js.hbs +0 -0
- /package/templates/service/{policies → src/policies}/{{serviceName}}.policy.js.hbs +0 -0
- /package/templates/service/{services/{{serviceName}}.service.js.hbs → src/services/mysql.{{serviceName}}.service.js.hbs} +0 -0
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
# nginx
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
root /usr/share/nginx/html;
|
|
7
|
-
index index.html;
|
|
8
|
-
|
|
9
|
-
location / {
|
|
10
|
-
try_files $uri /index.html;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
1
|
+
# portal nginx override
|
|
2
|
+
location /portal {
|
|
3
|
+
rewrite ^/portal$ /portal/ break;
|
|
4
|
+
proxy_pass http://portal-service:5173/portal;
|
|
5
|
+
}
|
|
@@ -1,59 +1,33 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"version": "1.0.0",
|
|
2
|
+
"name": "portal",
|
|
4
3
|
"private": true,
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"@reduxjs/toolkit": "^2.2.6",
|
|
8
|
-
"@testing-library/jest-dom": "^5.17.0",
|
|
9
|
-
"@testing-library/react": "^13.4.0",
|
|
10
|
-
"@testing-library/user-event": "^13.5.0",
|
|
11
|
-
"@gnar-engine/js-client": "file:/usr/gnar_engine/app/Lib/js-client",
|
|
12
|
-
"chart.js": "^4.4.3",
|
|
13
|
-
"crypto-js": "^4.2.0",
|
|
14
|
-
"html-to-image": "^1.11.11",
|
|
15
|
-
"react": "^18.3.1",
|
|
16
|
-
"react-axios": "^2.0.6",
|
|
17
|
-
"react-chartjs-2": "^5.2.0",
|
|
18
|
-
"react-datepicker": "^7.3.0",
|
|
19
|
-
"react-dom": "^18.3.1",
|
|
20
|
-
"react-redux": "^9.1.2",
|
|
21
|
-
"react-router-dom": "^6.24.0",
|
|
22
|
-
"react-scripts": "5.0.1",
|
|
23
|
-
"redux-toolkit": "^1.1.2",
|
|
24
|
-
"web-vitals": "^2.1.4"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@babel/plugin-proposal-private-property-in-object": "7.21.11",
|
|
28
|
-
"less": "^4.2.0",
|
|
29
|
-
"lessc": "^1.0.2"
|
|
30
|
-
},
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"type": "module",
|
|
31
6
|
"scripts": {
|
|
32
|
-
"
|
|
33
|
-
"build": "
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"build-style": "lessc src/styles/main.less src/css/style.css"
|
|
37
|
-
},
|
|
38
|
-
"eslintConfig": {
|
|
39
|
-
"extends": [
|
|
40
|
-
"react-app",
|
|
41
|
-
"react-app/jest"
|
|
42
|
-
]
|
|
7
|
+
"dev": "vite --host",
|
|
8
|
+
"build": "vite build",
|
|
9
|
+
"build:style": "lessc --strict-imports src/style/main.less src/css/style.css",
|
|
10
|
+
"preview": "vite preview"
|
|
43
11
|
},
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"last 1 safari version"
|
|
54
|
-
]
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@reduxjs/toolkit": "^2.10.1",
|
|
14
|
+
"react": "^19.2.0",
|
|
15
|
+
"react-dom": "^19.2.0",
|
|
16
|
+
"axios": "^1.13.2",
|
|
17
|
+
"react-redux": "^9.2.0",
|
|
18
|
+
"react-router-dom": "^7.9.6",
|
|
19
|
+
"react-quill-new": "^3.7.0",
|
|
20
|
+
"crypto-js": "^4.2.0"
|
|
55
21
|
},
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "^24.10.0",
|
|
24
|
+
"@types/react": "^19.2.2",
|
|
25
|
+
"@types/react-dom": "^19.2.2",
|
|
26
|
+
"@vitejs/plugin-react": "^5.1.0",
|
|
27
|
+
"globals": "^16.5.0",
|
|
28
|
+
"less": "^4.4.2",
|
|
29
|
+
"lessc": "^1.0.2",
|
|
30
|
+
"vite": "^7.2.2",
|
|
31
|
+
"uuid": "^11.1.0"
|
|
32
|
+
}
|
|
59
33
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
import { Outlet } from "react-router-dom";
|
|
3
|
+
import { Provider } from 'react-redux';
|
|
4
|
+
import store from './store/configureStore';
|
|
5
|
+
|
|
6
|
+
function App() {
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<Provider store={store}>
|
|
10
|
+
<Outlet />
|
|
11
|
+
</Provider>
|
|
12
|
+
</>
|
|
13
|
+
)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default App
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg width="351" height="63" viewBox="0 0 351 63" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
+
<rect width="351" height="63" fill="url(#pattern0_491_897)"/>
|
|
3
|
+
<defs>
|
|
4
|
+
<pattern id="pattern0_491_897" patternContentUnits="objectBoundingBox" width="1" height="1">
|
|
5
|
+
<use xlink:href="#image0_491_897" transform="matrix(0.001 0 0 0.00557143 0 -0.00421429)"/>
|
|
6
|
+
</pattern>
|
|
7
|
+
<image id="image0_491_897" width="1000" height="181" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAC1CAYAAADMW9VQAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7tnQn8ddX0/wslmlMpRY/mpEkalQZS0kCSIVFIIcQflX6ojEmUmUiTMSkRDRo10KyZVE+T5jSiNPzfn6d7c5793ffec+89wz7nftbrtV7f791nn7XX+uy9z9lr77X3mWUWkxEwAkbACBgBI2AEjIARMAJGIILAk08+uSZ8Kvxf+FH49/AqkaxOMgJGwAgYASNgBIyAETACRsAIGAEjYATKQABHfD34P3BID5GwehllWqYRMAJGwAgYASNgBIyAETACRsAIGAEjECCAE35p6Jlnfp9twIyAETACRsAIGAEjYASMgBEwAkbACBiBkhHAEV+0j3OuS0/A85SshsUbgYlD4BkTZ7ENNgJGwAgYASNgBIyAETACRmAQArMPyDAr1wflGSDCl42AETACRsAIGAEjYASMgBEwAkbACBiBvgiwOj4rfHOfVfRr+grwRSNgBIyAETACRsAIGAEjYASMgBEwAkagGARwzt/ew0FXePvriynFUoyAETACRsAIGAEjYASMgBEwAkbACBiBgQjgiL8LvivjqN/G/28ZeKMzGAEjMBIC2jtiMgJGwAgYASNgBIyAETACRsAIRBHAIZ+NCyvBT8BXzDrrrI9FMzrRCBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYARKQ2DW0iTXJPjJJ5+cnaLn7BR/36yzzvpkTaq42JYiQBubC9Nm65j3EG3svy01tfFmUVdzY8SzZAj19M/GG2QDhkaANjB/56YHaQOP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"/>
|
|
8
|
+
</defs>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M7.25141 9.19909C7.22766 9.19909 7.21182 9.19909 7.18807 9.19909C7.14849 9.19117 7.09307 9.19117 7.04557 9.19909C4.74974 9.12784 3.01599 7.32284 3.01599 5.09825C3.01599 2.83409 4.86057 0.989502 7.12474 0.989502C9.38891 0.989502 11.2335 2.83409 11.2335 5.09825C11.2256 7.32284 9.48391 9.12784 7.27516 9.19909C7.26724 9.19909 7.25932 9.19909 7.25141 9.19909ZM7.12474 2.177C5.51766 2.177 4.20349 3.49117 4.20349 5.09825C4.20349 6.68159 5.43849 7.95617 7.01391 8.01159C7.06141 8.00367 7.16432 8.00367 7.26724 8.01159C8.81891 7.94034 10.0381 6.66575 10.046 5.09825C10.046 3.49117 8.73182 2.177 7.12474 2.177Z" fill="#C0C0C0"/>
|
|
3
|
+
<path d="M13.0939 9.30216C13.0701 9.30216 13.0464 9.30216 13.0226 9.29425C12.698 9.32591 12.3655 9.09633 12.3339 8.77175C12.3022 8.44716 12.5001 8.15425 12.8247 8.11466C12.9197 8.10675 13.0226 8.10675 13.1097 8.10675C14.2655 8.04341 15.168 7.09341 15.168 5.92966C15.168 4.72633 14.1943 3.75258 12.991 3.75258C12.6664 3.7605 12.3972 3.49133 12.3972 3.16675C12.3972 2.84216 12.6664 2.573 12.991 2.573C14.8435 2.573 16.3555 4.08508 16.3555 5.93758C16.3555 7.75841 14.9305 9.23091 13.1176 9.30216C13.1097 9.30216 13.1018 9.30216 13.0939 9.30216Z" fill="#C0C0C0"/>
|
|
4
|
+
<path d="M7.25927 17.8522C5.70761 17.8522 4.14802 17.4563 2.96844 16.6647C1.86802 15.9363 1.26636 14.9388 1.26636 13.8542C1.26636 12.7697 1.86802 11.7642 2.96844 11.028C5.34344 9.45258 9.19094 9.45258 11.5501 11.028C12.6426 11.7563 13.2522 12.7538 13.2522 13.8384C13.2522 14.923 12.6505 15.9284 11.5501 16.6647C10.3626 17.4563 8.81094 17.8522 7.25927 17.8522ZM3.62552 12.0255C2.86552 12.5322 2.45386 13.1813 2.45386 13.8622C2.45386 14.5351 2.87344 15.1842 3.62552 15.683C5.59677 17.0051 8.92177 17.0051 10.893 15.683C11.653 15.1763 12.0647 14.5272 12.0647 13.8463C12.0647 13.1734 11.6451 12.5242 10.893 12.0255C8.92177 10.7113 5.59677 10.7113 3.62552 12.0255Z" fill="#C0C0C0"/>
|
|
5
|
+
<path d="M14.5188 16.4271C14.2417 16.4271 13.9963 16.2371 13.9409 15.9521C13.8776 15.6275 14.0834 15.3188 14.4001 15.2475C14.8988 15.1446 15.358 14.9467 15.7142 14.6696C16.1655 14.3292 16.4109 13.9017 16.4109 13.4504C16.4109 12.9992 16.1655 12.5717 15.7221 12.2392C15.3738 11.97 14.9384 11.78 14.4238 11.6613C14.1071 11.59 13.9013 11.2733 13.9726 10.9488C14.0438 10.6321 14.3605 10.4263 14.6851 10.4975C15.3659 10.6479 15.9596 10.9171 16.4426 11.2892C17.1788 11.8433 17.5984 12.6271 17.5984 13.4504C17.5984 14.2738 17.1709 15.0575 16.4346 15.6196C15.9438 15.9996 15.3263 16.2767 14.6455 16.4113C14.598 16.4271 14.5584 16.4271 14.5188 16.4271Z" fill="#C0C0C0"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M17.5 21.8751C19.9163 21.8751 21.875 19.9163 21.875 17.5001C21.875 15.0838 19.9163 13.1251 17.5 13.1251C15.0838 13.1251 13.125 15.0838 13.125 17.5001C13.125 19.9163 15.0838 21.8751 17.5 21.8751Z" stroke="#C0C0C0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M27.3106 21.4774C27.1341 21.8772 27.0815 22.3208 27.1595 22.7509C27.2375 23.1809 27.4425 23.5778 27.7481 23.8902L27.8277 23.9698C28.0742 24.216 28.2698 24.5085 28.4032 24.8304C28.5366 25.1522 28.6053 25.4973 28.6053 25.8457C28.6053 26.1942 28.5366 26.5392 28.4032 26.8611C28.2698 27.183 28.0742 27.4754 27.8277 27.7217C27.5814 27.9682 27.289 28.1638 26.9671 28.2972C26.6452 28.4306 26.3002 28.4993 25.9517 28.4993C25.6033 28.4993 25.2582 28.4306 24.9364 28.2972C24.6145 28.1638 24.322 27.9682 24.0758 27.7217L23.9962 27.6421C23.6838 27.3365 23.2869 27.1315 22.8569 27.0535C22.4268 26.9755 21.9832 27.0281 21.5834 27.2046C21.1912 27.3727 20.8568 27.6517 20.6213 28.0074C20.3857 28.3631 20.2593 28.7799 20.2576 29.2065V29.4319C20.2576 30.1351 19.9782 30.8095 19.481 31.3068C18.9837 31.8041 18.3093 32.0834 17.6061 32.0834C16.9029 32.0834 16.2284 31.8041 15.7312 31.3068C15.2339 30.8095 14.9546 30.1351 14.9546 29.4319V29.3126C14.9443 28.8738 14.8023 28.4482 14.5469 28.0912C14.2916 27.7341 13.9347 27.4622 13.5227 27.3107C13.1229 27.1342 12.6793 27.0816 12.2492 27.1595C11.8192 27.2375 11.4223 27.4426 11.1099 27.7482L11.0303 27.8277C10.7841 28.0743 10.4916 28.2698 10.1697 28.4033C9.84786 28.5367 9.50283 28.6054 9.15438 28.6054C8.80593 28.6054 8.46089 28.5367 8.139 28.4033C7.81712 28.2698 7.52468 28.0743 7.27843 27.8277C7.0319 27.5815 6.83633 27.289 6.70289 26.9672C6.56946 26.6453 6.50078 26.3002 6.50078 25.9518C6.50078 25.6033 6.56946 25.2583 6.70289 24.9364C6.83633 24.6145 7.0319 24.3221 7.27843 24.0758L7.35797 23.9963C7.66361 23.6838 7.86864 23.287 7.94662 22.8569C8.0246 22.4269 7.97195 21.9833 7.79547 21.5834C7.62742 21.1913 7.34837 20.8569 6.99268 20.6213C6.63699 20.3858 6.22019 20.2594 5.79358 20.2577H5.5682C4.86498 20.2577 4.19055 19.9783 3.6933 19.481C3.19604 18.9838 2.91669 18.3094 2.91669 17.6061C2.91669 16.9029 3.19604 16.2285 3.6933 15.7312C4.19055 15.234 4.86498 14.9546 5.5682 14.9546H5.68752C6.12634 14.9444 6.55192 14.8023 6.90894 14.547C7.26596 14.2916 7.5379 13.9348 7.68941 13.5228C7.86589 13.1229 7.91854 12.6794 7.84056 12.2493C7.76258 11.8192 7.55755 11.4224 7.25191 11.1099L7.17237 11.0304C6.92584 10.7841 6.73027 10.4917 6.59683 10.1698C6.4634 9.84792 6.39471 9.50289 6.39471 9.15444C6.39471 8.80599 6.4634 8.46095 6.59683 8.13907C6.73027 7.81718 6.92584 7.52474 7.17237 7.27849C7.41862 7.03196 7.71105 6.83639 8.03294 6.70295C8.35483 6.56952 8.69987 6.50084 9.04832 6.50084C9.39677 6.50084 9.7418 6.56952 10.0637 6.70295C10.3856 6.83639 10.678 7.03196 10.9243 7.27849L11.0038 7.35804C11.3163 7.66367 11.7131 7.8687 12.1432 7.94668C12.5732 8.02466 13.0168 7.97201 13.4167 7.79554H13.5227C13.9149 7.62748 14.2493 7.34843 14.4848 6.99274C14.7204 6.63706 14.8468 6.22025 14.8485 5.79364V5.56826C14.8485 4.86504 15.1279 4.19061 15.6251 3.69336C16.1224 3.1961 16.7968 2.91675 17.5 2.91675C18.2032 2.91675 18.8777 3.1961 19.3749 3.69336C19.8722 4.19061 20.1515 4.86504 20.1515 5.56826V5.68758C20.1532 6.11419 20.2796 6.531 20.5152 6.88668C20.7508 7.24237 21.0852 7.52142 21.4773 7.68948C21.8772 7.86595 22.3207 7.9186 22.7508 7.84062C23.1809 7.76264 23.5777 7.55761 23.8902 7.25198L23.9697 7.17243C24.216 6.9259 24.5084 6.73033 24.8303 6.59689C25.1522 6.46346 25.4972 6.39478 25.8457 6.39478C26.1941 6.39478 26.5391 6.46346 26.861 6.59689C27.1829 6.73033 27.4754 6.9259 27.7216 7.17243C27.9681 7.41868 28.1637 7.71112 28.2971 8.033C28.4306 8.35489 28.4993 8.69993 28.4993 9.04838C28.4993 9.39683 28.4306 9.74186 28.2971 10.0637C28.1637 10.3856 27.9681 10.6781 27.7216 10.9243L27.6421 11.0039C27.3364 11.3163 27.1314 11.7132 27.0534 12.1432C26.9754 12.5733 27.0281 13.0169 27.2046 13.4167V13.5228C27.3726 13.9149 27.6517 14.2493 28.0074 14.4849C28.363 14.7205 28.7798 14.8469 29.2065 14.8486H29.4318C30.1351 14.8486 30.8095 15.1279 31.3067 15.6252C31.804 16.1224 32.0834 16.7969 32.0834 17.5001C32.0834 18.2033 31.804 18.8777 31.3067 19.375C30.8095 19.8722 30.1351 20.1516 29.4318 20.1516H29.3125C28.8859 20.1533 28.4691 20.2797 28.1134 20.5153C27.7577 20.7508 27.4787 21.0852 27.3106 21.4774Z" stroke="#C0C0C0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M17 9L11 15M11 9L17 15M2.72 12.96L7.04 18.72C7.392 19.1893 7.568 19.424 7.79105 19.5932C7.9886 19.7432 8.21232 19.855 8.45077 19.9231C8.72 20 9.01334 20 9.6 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H9.6C9.01334 4 8.72 4 8.45077 4.07689C8.21232 4.14499 7.9886 4.25685 7.79105 4.40675C7.568 4.576 7.392 4.81067 7.04 5.28L2.72 11.04C2.46181 11.3843 2.33271 11.5564 2.28294 11.7454C2.23902 11.9123 2.23902 12.0877 2.28294 12.2546C2.33271 12.4436 2.46181 12.6157 2.72 12.96Z" stroke="#FF4D4F" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M12 28V18.1333C12 17.3866 12 17.0132 12.1454 16.728C12.2732 16.4771 12.4772 16.2732 12.728 16.1453C13.0133 16 13.3866 16 14.1334 16H17.8667C18.6134 16 18.9868 16 19.272 16.1453C19.5229 16.2732 19.7269 16.4771 19.8547 16.728C20 17.0132 20 17.3866 20 18.1333V28M2.66669 12.6667L14.72 3.62667C15.179 3.28241 15.4085 3.11028 15.6606 3.04393C15.8831 2.98536 16.117 2.98536 16.3394 3.04393C16.5915 3.11028 16.821 3.28241 17.28 3.62667L29.3334 12.6667M5.33336 10.6667V23.7333C5.33336 25.2268 5.33336 25.9735 5.62401 26.544C5.87967 27.0457 6.28762 27.4537 6.78938 27.7094C7.35982 28 8.10655 28 9.60003 28H22.4C23.8935 28 24.6402 28 25.2107 27.7094C25.7124 27.4537 26.1204 27.0457 26.376 26.544C26.6667 25.9735 26.6667 25.2268 26.6667 23.7333V10.6667L18.56 4.58667C17.642 3.89815 17.183 3.55389 16.6789 3.42119C16.2339 3.30405 15.7662 3.30405 15.3212 3.42119C14.8171 3.55389 14.358 3.89815 13.44 4.58667L5.33336 10.6667Z" stroke="#C0C0C0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M5.25 7.5V6C5.25 3.92893 6.92893 2.25 9 2.25C10.5377 2.25 11.8593 3.17557 12.438 4.5M9 10.875V12.375M6.6 15.75H11.4C12.6601 15.75 13.2902 15.75 13.7715 15.5048C14.1948 15.289 14.539 14.9448 14.7548 14.5215C15 14.0402 15 13.4101 15 12.15V11.1C15 9.83988 15 9.20982 14.7548 8.72852C14.539 8.30516 14.1948 7.96095 13.7715 7.74524C13.2902 7.5 12.6601 7.5 11.4 7.5H6.6C5.33988 7.5 4.70982 7.5 4.22852 7.74524C3.80516 7.96095 3.46095 8.30516 3.24524 8.72852C3 9.20982 3 9.83988 3 11.1V12.15C3 13.4101 3 14.0402 3.24524 14.5215C3.46095 14.9448 3.80516 15.289 4.22852 15.5048C4.70982 15.75 5.33988 15.75 6.6 15.75Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M22 10V15C22 20 20 22 15 22H9C4 22 2 20 2 15V9C2 4 4 2 9 2H14" stroke="#C0C0C0" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M22 10H18C15 10 14 9 14 6V2L22 10Z" stroke="#C0C0C0" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M7 13H13" stroke="#C0C0C0" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<path d="M7 17H11" stroke="#C0C0C0" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M15 15.75C15 14.7033 15 14.18 14.8708 13.7541C14.58 12.7953 13.8297 12.045 12.8709 11.7542C12.445 11.625 11.9217 11.625 10.875 11.625H7.125C6.07833 11.625 5.55499 11.625 5.12914 11.7542C4.17034 12.045 3.42003 12.7953 3.12918 13.7541C3 14.18 3 14.7033 3 15.75M12.375 5.625C12.375 7.48896 10.864 9 9 9C7.13604 9 5.625 7.48896 5.625 5.625C5.625 3.76104 7.13604 2.25 9 2.25C10.864 2.25 12.375 3.76104 12.375 5.625Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M25.6666 25.375V22.9583C25.6666 20.7062 24.1794 18.8138 22.1666 18.2773M18.0833 3.97633C19.7935 4.69334 21 6.42992 21 8.45833C21 10.4867 19.7935 12.2233 18.0833 12.9403M19.8333 25.375C19.8333 23.1229 19.8333 21.9969 19.4781 21.1087C19.0044 19.9244 18.096 18.9835 16.9525 18.4929C16.0949 18.125 15.0077 18.125 12.8333 18.125H9.33331C7.15892 18.125 6.07172 18.125 5.21412 18.4929C4.07066 18.9835 3.16218 19.9244 2.68854 21.1087C2.33331 21.9969 2.33331 23.1229 2.33331 25.375M15.75 8.45833C15.75 11.1277 13.6606 13.2917 11.0833 13.2917C8.50598 13.2917 6.41665 11.1277 6.41665 8.45833C6.41665 5.78896 8.50598 3.625 11.0833 3.625C13.6606 3.625 15.75 5.78896 15.75 8.45833Z" stroke="#C0C0C0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function CrudList({
|
|
4
|
+
entityKey,
|
|
5
|
+
fetchData,
|
|
6
|
+
entitySingleName,
|
|
7
|
+
entityPluralName,
|
|
8
|
+
columns
|
|
9
|
+
}) {
|
|
10
|
+
|
|
11
|
+
const [page, setPage] = useState(1);
|
|
12
|
+
const [items, setItems] = useState([]);
|
|
13
|
+
const [loading, setLoading] = useState(false);
|
|
14
|
+
const [error, setError] = useState('');
|
|
15
|
+
|
|
16
|
+
// Fetch data
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
(async () => {
|
|
19
|
+
try {
|
|
20
|
+
setLoading(true);
|
|
21
|
+
const newData = await fetchData({page});
|
|
22
|
+
|
|
23
|
+
if (newData.length === 0) {
|
|
24
|
+
setLoading(false);
|
|
25
|
+
setError(`No ${entityPluralName} found.`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
setItems(newData[entityKey]);
|
|
30
|
+
setLoading(false);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.error("Error fetching data:", error);
|
|
33
|
+
setLoading(false);
|
|
34
|
+
}
|
|
35
|
+
})();
|
|
36
|
+
}, [entityKey, page]);
|
|
37
|
+
|
|
38
|
+
const navigateToCrudSingle = (id) => {
|
|
39
|
+
window.location.href = `/portal/${entityKey}/${id}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className="crud-list">
|
|
44
|
+
<div className="top-action-bar">
|
|
45
|
+
<button onClick={() => {window.location.href = `/portal/${entityKey}/new`}}>Create New {entitySingleName}</button>
|
|
46
|
+
</div>
|
|
47
|
+
<div className="list-table">
|
|
48
|
+
<table>
|
|
49
|
+
<thead>
|
|
50
|
+
<tr>
|
|
51
|
+
{columns.map(col => (
|
|
52
|
+
<th key={col.key}>{col.label}</th>
|
|
53
|
+
))}
|
|
54
|
+
</tr>
|
|
55
|
+
</thead>
|
|
56
|
+
<tbody>
|
|
57
|
+
{loading ? (
|
|
58
|
+
<tr>
|
|
59
|
+
<td colSpan={columns.length}>Loading...</td>
|
|
60
|
+
</tr>
|
|
61
|
+
) : error ? (
|
|
62
|
+
<tr>
|
|
63
|
+
<td colSpan={columns.length}>{error}</td>
|
|
64
|
+
</tr>
|
|
65
|
+
) : items && items.length > 0 ? (
|
|
66
|
+
items.map((item, index) => (
|
|
67
|
+
<tr key={index} onClick={() => {navigateToCrudSingle(item.id)}}>
|
|
68
|
+
{columns.map(col => (
|
|
69
|
+
<td key={col.key}>{item[col.key]}</td>
|
|
70
|
+
))}
|
|
71
|
+
</tr>
|
|
72
|
+
))
|
|
73
|
+
) : (
|
|
74
|
+
<tr>
|
|
75
|
+
<td colSpan={columns.length}>No {entityPluralName} available.</td>
|
|
76
|
+
</tr>
|
|
77
|
+
)}
|
|
78
|
+
</tbody>
|
|
79
|
+
</table>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default CrudList;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
.list-table {
|
|
2
|
+
table {
|
|
3
|
+
width: 100%;
|
|
4
|
+
border-collapse: collapse;
|
|
5
|
+
|
|
6
|
+
thead {
|
|
7
|
+
th {
|
|
8
|
+
padding-top: 24px;
|
|
9
|
+
padding-bottom: 24px;
|
|
10
|
+
font-size: 16px;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
text-align: left;
|
|
13
|
+
border: none;
|
|
14
|
+
background: @dark-3;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
|
|
17
|
+
&:first-child {
|
|
18
|
+
border-top-left-radius: 10px;
|
|
19
|
+
padding-left: 30px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&:last-child {
|
|
23
|
+
border-top-right-radius: 10px;
|
|
24
|
+
padding-right: 30px;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
tr {
|
|
30
|
+
td {
|
|
31
|
+
padding-top: 15px;
|
|
32
|
+
padding-bottom: 15px;
|
|
33
|
+
transition: color 0.2s;
|
|
34
|
+
|
|
35
|
+
&:first-child {
|
|
36
|
+
padding-left: 30px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&:last-child {
|
|
40
|
+
padding-right: 30px;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&:nth-child(even) {
|
|
45
|
+
td {
|
|
46
|
+
background: @dark-3;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&:hover {
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
|
|
53
|
+
td {
|
|
54
|
+
color: @green-main;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
package/bootstrap/services/portal/src/{ui/customSelect → components/CustomSelect}/CustomSelect.jsx
RENAMED
|
@@ -1,6 +1,24 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {useState, useEffect, useRef} from "react";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
type CustomSelectProps<T> = {
|
|
4
|
+
placeholder: string;
|
|
5
|
+
name: string;
|
|
6
|
+
options: T[];
|
|
7
|
+
labelKey: keyof T;
|
|
8
|
+
selectedOption: T | null;
|
|
9
|
+
setSelectedOption: (option: T) => void;
|
|
10
|
+
icon?: string | null;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const CustomSelect = ({
|
|
14
|
+
placeholder,
|
|
15
|
+
name,
|
|
16
|
+
options,
|
|
17
|
+
labelKey,
|
|
18
|
+
setSelectedOption,
|
|
19
|
+
selectedOption,
|
|
20
|
+
icon
|
|
21
|
+
}): CustomSelectProps<T> => {
|
|
4
22
|
|
|
5
23
|
const [isOpen, setIsOpen] = useState(false);
|
|
6
24
|
const [isClosing, setIsClosing] = useState(false);
|
|
@@ -60,4 +78,4 @@ const CustomSelect = ({placeholder, name, options, labelKey, icon = null, setSel
|
|
|
60
78
|
)
|
|
61
79
|
}
|
|
62
80
|
|
|
63
|
-
export default CustomSelect;
|
|
81
|
+
export default CustomSelect;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Link } from "react-router-dom";
|
|
3
|
+
import { useDispatch } from "react-redux";
|
|
4
|
+
import { login } from "../../slices/authSlice";
|
|
5
|
+
|
|
6
|
+
function LoginForm() {
|
|
7
|
+
|
|
8
|
+
const dispatch = useDispatch();
|
|
9
|
+
const [username, setUsername] = useState("");
|
|
10
|
+
const [password, setPassword] = useState("");
|
|
11
|
+
const [loginMessage, setLoginMessage] = useState("");
|
|
12
|
+
|
|
13
|
+
const handleLogin = async (e) => {
|
|
14
|
+
e.preventDefault();
|
|
15
|
+
|
|
16
|
+
if (username === "" || password === "") {
|
|
17
|
+
setLoginMessage("Please enter your email and password");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
dispatch(login({username, password}));
|
|
22
|
+
} catch (error) {
|
|
23
|
+
setLoginMessage("Error logging in: " + error.response?.data?.message || "Unknown error");
|
|
24
|
+
console.error('Error logging in:', error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<form className="login-form" onSubmit={handleLogin}>
|
|
30
|
+
<input
|
|
31
|
+
type="text"
|
|
32
|
+
name="username"
|
|
33
|
+
placeholder="username / email"
|
|
34
|
+
className="username"
|
|
35
|
+
value={username}
|
|
36
|
+
onChange={(e) => setUsername(e.target.value)}
|
|
37
|
+
/>
|
|
38
|
+
<input
|
|
39
|
+
type="password"
|
|
40
|
+
name="password"
|
|
41
|
+
placeholder="password"
|
|
42
|
+
className="password"
|
|
43
|
+
value={password}
|
|
44
|
+
onChange={(e) => setPassword(e.target.value)}
|
|
45
|
+
/>
|
|
46
|
+
<button type="submit">Login</button>
|
|
47
|
+
{loginMessage && <div className="login-message">{loginMessage}</div>}
|
|
48
|
+
<Link
|
|
49
|
+
to="/portal/forgotten-password"
|
|
50
|
+
className="text-link forgotten-password"
|
|
51
|
+
>
|
|
52
|
+
Forgotten Password?
|
|
53
|
+
</Link>
|
|
54
|
+
</form>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export default LoginForm;
|