@uxf/cms 2.3.0 → 2.3.4

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.
@@ -1,5 +1,2 @@
1
- import React from "react";
2
1
  import { Content, ContentBuilderConfig } from "./types";
3
- export declare const ContentBuilder: <T extends Content<string, any>>(config: ContentBuilderConfig<T>) => React.FunctionComponent<any> & {
4
- getInitialProps?(context: import("next").NextPageContext): any;
5
- };
2
+ export declare const ContentBuilder: <T extends Content<string, any>>(config: ContentBuilderConfig<T>) => import("next").NextComponentType<import("../../deprecated/types/App").IAppContext, object, object>;
@@ -53,6 +53,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.ContentBuilder = void 0;
54
54
  var react_1 = __importDefault(require("react"));
55
55
  var Form_1 = require("./components/Form");
56
+ var withAuthenticate_1 = require("../../deprecated/hoc/withAuthenticate");
56
57
  var DefaultLayout = function (props) { return react_1.default.createElement("div", __assign({}, props)); };
57
58
  var ContentBuilderComponent = function (props) {
58
59
  var _a;
@@ -87,7 +88,7 @@ var ContentBuilder = function (config) {
87
88
  }
88
89
  });
89
90
  }); };
90
- return Page;
91
+ return (0, withAuthenticate_1.withAuthenticate)({ allowedRoles: config.allowedRoles || ["ROLE_ROOT"] })(Page);
91
92
  };
92
93
  exports.ContentBuilder = ContentBuilder;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS9Db250ZW50QnVpbGRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBMEI7QUFFMUIsMENBQXlDO0FBRXpDLElBQU0sYUFBYSxHQUFhLFVBQUMsS0FBSyxJQUFLLE9BQUEsa0RBQVMsS0FBSyxFQUFJLEVBQWxCLENBQWtCLENBQUM7QUFFOUQsSUFBTSx1QkFBdUIsR0FBd0UsVUFBQyxLQUFLOztJQUMvRixJQUFBLE1BQU0sR0FBb0IsS0FBSyxPQUF6QixFQUFFLGFBQWEsR0FBSyxLQUFLLGNBQVYsQ0FBVztJQUNoQyxJQUFBLEVBQUUsR0FBSyxNQUFNLEdBQVgsQ0FBWTtJQUV0QixJQUFNLE1BQU0sR0FBRyxNQUFBLEVBQUUsQ0FBQyxNQUFNLG1DQUFJLGFBQWEsQ0FBQztJQUUxQyxPQUFPLENBQ0gsOEJBQUMsTUFBTTtRQUNILDhCQUFDLFdBQUksSUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxhQUFhLEdBQUksQ0FDNUUsQ0FDWixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBQ0YsdUJBQXVCLENBQUMsV0FBVyxHQUFHLHlCQUF5QixDQUFDO0FBRXpELElBQU0sY0FBYyxHQUFHLFVBQWlDLE1BQStCO0lBQzFGLElBQU0sSUFBSSxHQUFrQixVQUFDLEVBQWlCO1lBQWYsYUFBYSxtQkFBQTtRQUN4QyxPQUFPLDhCQUFDLHVCQUF1QixJQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsR0FBSSxDQUFDO0lBQ3JGLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBTyxHQUFHOzs7Ozt5QkFFekIsQ0FBQSxPQUFPLE1BQU0sQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUFBLEVBQTFDLHdCQUEwQztvQkFBRyxxQkFBTSxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFBOztvQkFBL0IsS0FBQSxTQUErQixDQUFBOzs7b0JBQUcsS0FBQSxNQUFNLENBQUMsYUFBYSxDQUFBOzs7b0JBRGpHLGFBQWEsS0FDb0Y7b0JBRXZHLHNCQUFPLEVBQUUsYUFBYSxlQUFBLEVBQUUsRUFBQzs7O1NBQzVCLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFiVyxRQUFBLGNBQWMsa0JBYXpCIn0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS9Db250ZW50QnVpbGRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBMEI7QUFFMUIsMENBQXlDO0FBQ3pDLDBFQUF5RTtBQUV6RSxJQUFNLGFBQWEsR0FBYSxVQUFDLEtBQUssSUFBSyxPQUFBLGtEQUFTLEtBQUssRUFBSSxFQUFsQixDQUFrQixDQUFDO0FBRTlELElBQU0sdUJBQXVCLEdBQXdFLFVBQUMsS0FBSzs7SUFDL0YsSUFBQSxNQUFNLEdBQW9CLEtBQUssT0FBekIsRUFBRSxhQUFhLEdBQUssS0FBSyxjQUFWLENBQVc7SUFDaEMsSUFBQSxFQUFFLEdBQUssTUFBTSxHQUFYLENBQVk7SUFFdEIsSUFBTSxNQUFNLEdBQUcsTUFBQSxFQUFFLENBQUMsTUFBTSxtQ0FBSSxhQUFhLENBQUM7SUFFMUMsT0FBTyxDQUNILDhCQUFDLE1BQU07UUFDSCw4QkFBQyxXQUFJLElBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsYUFBYSxHQUFJLENBQzVFLENBQ1osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUNGLHVCQUF1QixDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztBQUV6RCxJQUFNLGNBQWMsR0FBRyxVQUFpQyxNQUErQjtJQUMxRixJQUFNLElBQUksR0FBa0IsVUFBQyxFQUFpQjtZQUFmLGFBQWEsbUJBQUE7UUFDeEMsT0FBTyw4QkFBQyx1QkFBdUIsSUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxhQUFhLEdBQUksQ0FBQztJQUNyRixDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQU8sR0FBRzs7Ozs7eUJBRXpCLENBQUEsT0FBTyxNQUFNLENBQUMsYUFBYSxLQUFLLFVBQVUsQ0FBQSxFQUExQyx3QkFBMEM7b0JBQUcscUJBQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBQTs7b0JBQS9CLEtBQUEsU0FBK0IsQ0FBQTs7O29CQUFHLEtBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQTs7O29CQURqRyxhQUFhLEtBQ29GO29CQUV2RyxzQkFBTyxFQUFFLGFBQWEsZUFBQSxFQUFFLEVBQUM7OztTQUM1QixDQUFDO0lBRUYsT0FBTyxJQUFBLG1DQUFnQixFQUFDLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUYsQ0FBQyxDQUFDO0FBYlcsUUFBQSxjQUFjLGtCQWF6QiJ9
@@ -36,14 +36,15 @@ export declare type RootContent<T> = {
36
36
  name: string;
37
37
  publishedAt: string;
38
38
  author: string;
39
- image: any;
40
- seo?: {
41
- name?: string;
42
- title?: string;
43
- description?: string;
44
- ogTitle?: string;
45
- ogDescription?: string;
46
- ogImage?: any;
39
+ image: any | null;
40
+ seo: {
41
+ title: string;
42
+ description: string;
43
+ ogTitle: string;
44
+ ogDescription: string;
45
+ name: string | null;
46
+ ogImage: number | null;
47
47
  };
48
48
  content: T[];
49
+ tags?: number[];
49
50
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/cms",
3
- "version": "2.3.0",
3
+ "version": "2.3.4",
4
4
  "description": "UXF Cms",
5
5
  "author": "UXFans <dev@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/cms#readme",
@@ -30,6 +30,7 @@
30
30
  "url": "https://gitlab.com/uxf-npm/cms/issues"
31
31
  },
32
32
  "dependencies": {
33
+ "@uxf/wysiwyg": "^1.0.0-beta.3",
33
34
  "es6-error": "^4.1.1",
34
35
  "path-to-regexp": "^6.1.0",
35
36
  "react-redux": "^7.2.5",
@@ -52,7 +53,6 @@
52
53
  "@uxf/data-grid": "^3.1.1",
53
54
  "@uxf/eslint-config": "^1.1.0",
54
55
  "@uxf/router": "^1.7.0",
55
- "@uxf/wysiwyg": "^1.0.0-beta.3",
56
56
  "axios": "^0.21.1",
57
57
  "axios-hooks": "^2.7.0",
58
58
  "eslint": "^7.32.0",
@@ -54,6 +54,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
54
54
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
55
55
  }
56
56
  };
57
+ var __importDefault = (this && this.__importDefault) || function (mod) {
58
+ return (mod && mod.__esModule) ? mod : { "default": mod };
59
+ };
57
60
  Object.defineProperty(exports, "__esModule", { value: true });
58
61
  exports.LoginPage = void 0;
59
62
  var react_1 = __importStar(require("react"));
@@ -61,6 +64,7 @@ var api_1 = require("../../api");
61
64
  var config_1 = require("../../config");
62
65
  var LoginForm_1 = require("../../forms/LoginForm");
63
66
  var LoginLayout_1 = require("../../lib/LoginLayout");
67
+ var router_1 = __importDefault(require("next/router"));
64
68
  var INITIAL_VALUES = {
65
69
  username: "",
66
70
  password: "",
@@ -93,15 +97,39 @@ var LoginPage = function (config) {
93
97
  react_1.default.createElement(LoginForm_1.LoginForm, { onSubmit: onLogin, initialValues: INITIAL_VALUES, onForgottenPassword: config.onForgottenPassword })));
94
98
  };
95
99
  Component.getInitialProps = function (ctx) { return __awaiter(void 0, void 0, void 0, function () {
96
- var query;
100
+ var query, e_2;
97
101
  return __generator(this, function (_a) {
98
- query = ctx.query;
99
- return [2 /*return*/, {
100
- redirectUrl: query.redirect,
101
- }];
102
+ switch (_a.label) {
103
+ case 0:
104
+ query = ctx.query;
105
+ if (!config.loggedUserRedirectUrl) return [3 /*break*/, 7];
106
+ _a.label = 1;
107
+ case 1:
108
+ _a.trys.push([1, 6, , 7]);
109
+ return [4 /*yield*/, (0, api_1.getLoggedUser)(ctx)];
110
+ case 2:
111
+ _a.sent();
112
+ if (!(typeof window === "undefined")) return [3 /*break*/, 3];
113
+ if (ctx.res && !ctx.res.headersSent) {
114
+ ctx.res.writeHead(302, { Location: config.loggedUserRedirectUrl });
115
+ ctx.res.end();
116
+ }
117
+ return [3 /*break*/, 5];
118
+ case 3: return [4 /*yield*/, router_1.default.push(config.loggedUserRedirectUrl)];
119
+ case 4:
120
+ _a.sent();
121
+ _a.label = 5;
122
+ case 5: return [3 /*break*/, 7];
123
+ case 6:
124
+ e_2 = _a.sent();
125
+ return [3 /*break*/, 7];
126
+ case 7: return [2 /*return*/, {
127
+ redirectUrl: query.redirect,
128
+ }];
129
+ }
102
130
  });
103
131
  }); };
104
132
  return Component;
105
133
  };
106
134
  exports.LoginPage = LoginPage;
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5QYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL0xvZ2luUGFnZS9Mb2dpblBhZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw2Q0FBMkM7QUFDM0MsaUNBQWtDO0FBQ2xDLHVDQUF5QztBQUN6QyxtREFBaUY7QUFDakYscURBQW9EO0FBR3BELElBQU0sY0FBYyxHQUFrQjtJQUNsQyxRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBRSxFQUFFO0NBQ2YsQ0FBQztBQUVLLElBQU0sU0FBUyxHQUFHLFVBQUMsTUFBdUI7SUFDN0MsSUFBTSxTQUFTLEdBQTJCLFVBQUMsS0FBSzs7UUFDNUMsSUFBTSxPQUFPLEdBQUcsSUFBQSxtQkFBVyxFQUN2QixVQUFPLE1BQU07Ozs7Ozt3QkFFWSxxQkFBTSxJQUFBLFdBQUssRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksRUFBTixDQUFNLENBQUMsRUFBQTs7d0JBQXhELFFBQVEsR0FBRyxTQUE2Qzt3QkFDOUQscUJBQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFBOzt3QkFBckQsU0FBcUQsQ0FBQzs7Ozt3QkFFdEQsa0JBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUMsQ0FBQyxDQUFDOzs7OzthQUVyRCxFQUNELENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUN0QixDQUFDO1FBRUYsT0FBTyxDQUNILDhCQUFDLHlCQUFXLElBQ1IsU0FBUyxFQUFFLE1BQUEsTUFBTSxDQUFDLEVBQUUsMENBQUUsU0FBUyxFQUMvQixJQUFJLEVBQUUsTUFBQSxNQUFNLENBQUMsRUFBRSwwQ0FBRSxJQUFJLEVBQ3JCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUMzQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFFbkIsOEJBQUMscUJBQVMsSUFDTixRQUFRLEVBQUUsT0FBTyxFQUNqQixhQUFhLEVBQUUsY0FBYyxFQUM3QixtQkFBbUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLEdBQ2pELENBQ1EsQ0FDakIsQ0FBQztJQUNOLENBQUMsQ0FBQztJQUVGLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBTyxHQUFHOzs7WUFDNUIsS0FBSyxHQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzlDLHNCQUFPO29CQUNILFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUTtpQkFDOUIsRUFBQzs7U0FDTCxDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBdENXLFFBQUEsU0FBUyxhQXNDcEIifQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5QYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL0xvZ2luUGFnZS9Mb2dpblBhZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw2Q0FBMkM7QUFDM0MsaUNBQWlEO0FBQ2pELHVDQUF5QztBQUN6QyxtREFBaUY7QUFDakYscURBQW9EO0FBRXBELHVEQUFpQztBQUVqQyxJQUFNLGNBQWMsR0FBa0I7SUFDbEMsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsRUFBRTtDQUNmLENBQUM7QUFFSyxJQUFNLFNBQVMsR0FBRyxVQUFDLE1BQXVCO0lBQzdDLElBQU0sU0FBUyxHQUEyQixVQUFDLEtBQUs7O1FBQzVDLElBQU0sT0FBTyxHQUFHLElBQUEsbUJBQVcsRUFDdkIsVUFBTyxNQUFNOzs7Ozs7d0JBRVkscUJBQU0sSUFBQSxXQUFLLEVBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxJQUFJLEVBQU4sQ0FBTSxDQUFDLEVBQUE7O3dCQUF4RCxRQUFRLEdBQUcsU0FBNkM7d0JBQzlELHFCQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBQTs7d0JBQXJELFNBQXFELENBQUM7Ozs7d0JBRXRELGtCQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFDLENBQUMsQ0FBQzs7Ozs7YUFFckQsRUFDRCxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FDdEIsQ0FBQztRQUVGLE9BQU8sQ0FDSCw4QkFBQyx5QkFBVyxJQUNSLFNBQVMsRUFBRSxNQUFBLE1BQU0sQ0FBQyxFQUFFLDBDQUFFLFNBQVMsRUFDL0IsSUFBSSxFQUFFLE1BQUEsTUFBTSxDQUFDLEVBQUUsMENBQUUsSUFBSSxFQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFDM0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBRW5CLDhCQUFDLHFCQUFTLElBQ04sUUFBUSxFQUFFLE9BQU8sRUFDakIsYUFBYSxFQUFFLGNBQWMsRUFDN0IsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixHQUNqRCxDQUNRLENBQ2pCLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixTQUFTLENBQUMsZUFBZSxHQUFHLFVBQU8sR0FBRzs7Ozs7b0JBQzVCLEtBQUssR0FBeUIsR0FBRyxDQUFDLEtBQUssQ0FBQzt5QkFFMUMsTUFBTSxDQUFDLHFCQUFxQixFQUE1Qix3QkFBNEI7Ozs7b0JBRXhCLHFCQUFNLElBQUEsbUJBQWEsRUFBQyxHQUFHLENBQUMsRUFBQTs7b0JBQXhCLFNBQXdCLENBQUM7eUJBRXJCLENBQUEsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFBLEVBQTdCLHdCQUE2QjtvQkFDN0IsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7d0JBQ2pDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO3FCQUNqQjs7d0JBRUQscUJBQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQUE7O29CQUEvQyxTQUErQyxDQUFDOzs7Ozs7d0JBTzVELHNCQUFPO3dCQUNILFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUTtxQkFDOUIsRUFBQzs7O1NBQ0wsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQXhEVyxRQUFBLFNBQVMsYUF3RHBCIn0=
@@ -8,6 +8,7 @@ export interface LoginPageConfig {
8
8
  title: ReactNode;
9
9
  onForgottenPassword?: () => void;
10
10
  onLoginDone: (loginResponse: LoginResponse, redirectUrl?: string) => Promise<void>;
11
+ loggedUserRedirectUrl?: string;
11
12
  ui?: {
12
13
  hideTitle?: boolean;
13
14
  Logo?: ReactNode;