@uxf/cms 10.0.0-beta.8 → 10.0.0-beta.80
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/config/container.d.ts +3 -3
- package/deprecated/api/api-client.js +1 -1
- package/deprecated/hoc/with-authenticate.js +3 -3
- package/deprecated/redux/configure-store.js +2 -2
- package/deprecated/redux/entities/actions.d.ts +1 -1
- package/deprecated/redux/entities/index.d.ts +1 -1
- package/deprecated/redux/entities/index.js +1 -1
- package/deprecated/redux/entities/selectors.d.ts +1 -1
- package/deprecated/redux/index.d.ts +2 -2
- package/deprecated/redux/index.js +4 -4
- package/deprecated/redux/types.d.ts +1 -1
- package/deprecated/redux/user/index.d.ts +1 -1
- package/deprecated/redux/user/index.js +1 -1
- package/forms/change-password-form/change-password-form.js +2 -2
- package/forms/components/wysiwyg-input/wysiwyg-input.d.ts +2 -2
- package/forms/components/wysiwyg-input/wysiwyg-input.js +2 -2
- package/forms/forgotten-password-form/forgotten-password-form.js +1 -1
- package/forms/invite-user-form/invite-user-form.js +2 -1
- package/forms/login-form/login-form.js +1 -1
- package/lib/api/create-use-axios-request.js +1 -1
- package/lib/layout/breadcrumbs.js +5 -5
- package/lib/layout/index.d.ts +1 -1
- package/lib/layout/index.js +1 -1
- package/lib/layout/layout-container.js +3 -3
- package/lib/layout/layout.js +26 -24
- package/lib/layout/sidebar.js +35 -21
- package/lib/layout/types.d.ts +1 -0
- package/lib/login-layout/login-layout.js +7 -9
- package/lib/menu/factory.d.ts +5 -5
- package/lib/menu/factory.js +6 -4
- package/lib/menu/index.d.ts +3 -3
- package/lib/menu/index.js +3 -3
- package/lib/menu/mobile-bar.d.ts +4 -2
- package/lib/menu/mobile-bar.js +12 -14
- package/lib/menu/model.d.ts +8 -4
- package/lib/menu/model.js +7 -0
- package/lib/menu/types.d.ts +1 -1
- package/lib/menu/ui/list-item/list-item.js +18 -17
- package/lib/menu/ui/list-item/types.d.ts +6 -5
- package/lib/menu/ui/menu-custom-item.js +2 -4
- package/lib/menu/ui/menu-item.js +11 -12
- package/lib/menu/ui/menu-super-section-item.js +4 -6
- package/lib/menu/ui/menu.js +2 -2
- package/lib/menu/ui/sub-menu/{sub-menuItem.js → sub-menu-item.js} +5 -7
- package/lib/menu/ui/sub-menu/sub-menu-mobile.js +7 -7
- package/lib/menu/ui/sub-menu/sub-menu.js +7 -7
- package/lib/menu/ui/sub-menu/use-sub-menu.d.ts +20 -12
- package/lib/menu/ui/sub-menu/use-sub-menu.js +16 -16
- package/lib/menu/ui/user-menu.js +13 -13
- package/package.json +34 -55
- package/pages/change-password-page/change-password-page.js +1 -1
- package/pages/change-password-page/types.d.ts +1 -1
- package/pages/content-builder/components/form-content.d.ts +1 -1
- package/pages/content-builder/components/form-content.js +5 -5
- package/pages/content-builder/components/form-root-fields.d.ts +1 -1
- package/pages/content-builder/components/form-root-fields.js +2 -2
- package/pages/content-builder/components/form.d.ts +2 -2
- package/pages/content-builder/components/form.js +4 -4
- package/pages/content-builder/components/header.js +2 -2
- package/pages/content-builder/content/feature-section.d.ts +1 -1
- package/pages/content-builder/content/feature-section.js +6 -6
- package/pages/content-builder/content/gallery.d.ts +1 -1
- package/pages/content-builder/content/gallery.js +3 -3
- package/pages/content-builder/content/hero-section.js +2 -2
- package/pages/content-builder/content/people.d.ts +1 -1
- package/pages/content-builder/content/people.js +7 -7
- package/pages/content-builder/content/wysiwyg.d.ts +2 -2
- package/pages/content-builder/content/wysiwyg.js +2 -2
- package/pages/content-builder/content-builder-page.js +4 -4
- package/pages/content-builder/content-field.d.ts +1 -1
- package/pages/content-builder/content-field.js +6 -6
- package/pages/content-builder/content-header.d.ts +1 -1
- package/pages/content-builder/content-header.js +5 -5
- package/pages/content-builder/hooks/use-sortable.js +1 -1
- package/pages/content-builder/index.d.ts +2 -2
- package/pages/content-builder/index.js +2 -2
- package/pages/content-builder/mapper.d.ts +1 -1
- package/pages/content-builder/types.d.ts +4 -6
- package/pages/form-page/base-field.js +14 -14
- package/pages/form-page/field-array.js +2 -2
- package/pages/form-page/form-page.d.ts +2 -1
- package/pages/form-page/form-page.js +7 -7
- package/pages/form-page/form.d.ts +2 -2
- package/pages/form-page/form.js +2 -2
- package/pages/form-page/index.d.ts +3 -3
- package/pages/form-page/index.js +3 -3
- package/pages/form-page/types.d.ts +1 -1
- package/pages/grid-page/grid-page.js +6 -6
- package/pages/grid-page/types.d.ts +2 -2
- package/pages/invite-user-page/invite-user-page.js +1 -0
- package/pages/invite-user-page/types.d.ts +1 -1
- package/pages/login-page/login-page.js +1 -1
- package/pages/renew-password-page/types.d.ts +1 -1
- package/ui/avatar/avatar.d.ts +11 -0
- package/ui/avatar/avatar.js +47 -0
- package/ui/avatar/get-avatar-user-letters.d.ts +1 -0
- package/ui/avatar/get-avatar-user-letters.js +17 -0
- package/ui/avatar/index.d.ts +3 -0
- package/ui/avatar/index.js +5 -0
- package/ui/avatar/theme.d.ts +11 -0
- package/ui/avatar/theme.js +2 -0
- package/ui/copy-to-clipboard-button/copy-to-clipboard-button.js +2 -2
- package/ui/styles/avatar.css +50 -0
- package/ui/styles/breadcrumbs.css +30 -0
- package/ui/styles/layout.css +132 -0
- package/ui/styles/login-layout.css +52 -0
- package/ui/styles/menu.css +217 -0
- package/ui/styles/mobile-bar.css +34 -0
- package/ui/styles/sidebar.css +108 -0
- package/ui/tw-tokens/tw-colors.d.ts +283 -282
- package/ui/tw-tokens/tw-colors.js +283 -282
- package/ui/tw-tokens/tw-line-height.d.ts +8 -8
- package/ui/tw-tokens/tw-line-height.js +8 -8
- package/ui/tw-tokens/tw-spacing.d.ts +34 -34
- package/ui/tw-tokens/tw-spacing.js +34 -34
- package/ui/tw-tokens/tw-z-index.d.ts +8 -7
- package/ui/tw-tokens/tw-z-index.js +8 -7
- package/ui/widget/index.d.ts +1 -1
- package/ui/widget/index.js +1 -1
- package/ui/widget/types.d.ts +1 -1
- package/ui/widget/widget.js +1 -1
- package/utils/styles.css +7 -43
- package/utils/tailwind.config.js +5 -0
- /package/lib/menu/ui/sub-menu/{sub-menuItem.d.ts → sub-menu-item.d.ts} +0 -0
@@ -29,14 +29,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.FormPage = void 0;
|
30
30
|
const router_1 = __importDefault(require("next/router"));
|
31
31
|
const react_1 = __importStar(require("react"));
|
32
|
-
const
|
32
|
+
const react_hook_form_1 = require("react-hook-form");
|
33
33
|
const api_1 = require("../../api");
|
34
34
|
const config_1 = require("../../config");
|
35
35
|
const with_authenticate_1 = require("../../deprecated/hoc/with-authenticate");
|
36
36
|
const ValidationError_1 = require("../../errors/ValidationError");
|
37
37
|
const base_field_1 = require("./base-field");
|
38
|
+
const form_1 = require("./form");
|
38
39
|
const mapper_1 = require("./mapper");
|
39
|
-
const react_hook_form_1 = require("react-hook-form");
|
40
40
|
const resolve = (value, ctx) => (typeof value === "function" ? value(ctx) : value !== null && value !== void 0 ? value : null);
|
41
41
|
const FormPage = (config) => {
|
42
42
|
var _a, _b, _c;
|
@@ -44,9 +44,9 @@ const FormPage = (config) => {
|
|
44
44
|
const entityAliasResolver = (_b = config.entityAlias) !== null && _b !== void 0 ? _b : (({ query }) => (query.entityAlias ? `${query.entityAlias}` : null));
|
45
45
|
const onSaveDone = (_c = config.onSaveDone) !== null && _c !== void 0 ? _c : router_1.default.back;
|
46
46
|
const Component = (props) => {
|
47
|
-
var _a, _b, _c, _d
|
47
|
+
var _a, _b, _c, _d;
|
48
48
|
const { formSchema, entityAlias, entityId, entityMetaSchema } = props;
|
49
|
-
const formApi = (0, react_hook_form_1.useForm)({ defaultValues:
|
49
|
+
const formApi = (0, react_hook_form_1.useForm)({ defaultValues: props.initialValues });
|
50
50
|
const onSubmit = (0, react_1.useCallback)(async (values) => {
|
51
51
|
try {
|
52
52
|
const newInitialValues = config.onSave
|
@@ -65,8 +65,8 @@ const FormPage = (config) => {
|
|
65
65
|
return { ["ERROR"]: "Error" }; // TODO
|
66
66
|
}
|
67
67
|
}, [entityAlias, entityId, formSchema, formApi]);
|
68
|
-
const FieldComponentElement = (
|
69
|
-
const Layout = (
|
68
|
+
const FieldComponentElement = (_b = (_a = config.ui) === null || _a === void 0 ? void 0 : _a.Field) !== null && _b !== void 0 ? _b : base_field_1.BaseField;
|
69
|
+
const Layout = (_d = (_c = config.ui) === null || _c === void 0 ? void 0 : _c.Layout) !== null && _d !== void 0 ? _d : react_1.default.createElement("div", null);
|
70
70
|
const Content = (react_1.default.createElement(form_1.Form, { Field: FieldComponentElement, entityAlias: entityAlias, formApi: formApi, id: `${entityAlias}-form`, isEditing: !!entityId, onSubmit: onSubmit, schema: formSchema }));
|
71
71
|
return (0, react_1.cloneElement)(typeof Layout === "function" ? Layout(entityMetaSchema) : Layout, {
|
72
72
|
children: Content,
|
@@ -82,7 +82,7 @@ const FormPage = (config) => {
|
|
82
82
|
throw new Error(`Entity meta schema for alias ${entityAlias} does not exist.`);
|
83
83
|
}
|
84
84
|
const formSchema = await (0, api_1.getFormSchema)(ctx, { entityAlias }).then((r) => r.data);
|
85
|
-
let initialValues
|
85
|
+
let initialValues; // TODO vejvis
|
86
86
|
if (typeof config.initialValues === "function") {
|
87
87
|
initialValues = await config.initialValues(ctx);
|
88
88
|
}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import React, { FC } from "react";
|
2
1
|
import { FormProps as UXFFormProps } from "@uxf/form/form";
|
2
|
+
import React, { FC } from "react";
|
3
|
+
import { FieldValues, FormState } from "react-hook-form";
|
3
4
|
import { FormSchemaResponse } from "../../api";
|
4
5
|
import { FieldComponent } from "./types";
|
5
|
-
import { FieldValues, FormState } from "react-hook-form";
|
6
6
|
type SubmitButtonComponent<TFieldValues extends FieldValues = FieldValues> = FC<{
|
7
7
|
formState: FormState<TFieldValues>;
|
8
8
|
}>;
|
package/pages/form-page/form.js
CHANGED
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.Form = void 0;
|
7
|
-
const react_1 = __importDefault(require("react"));
|
8
7
|
const form_1 = require("@uxf/form/form");
|
9
|
-
const base_field_1 = require("./base-field");
|
10
8
|
const button_1 = require("@uxf/ui/button");
|
9
|
+
const react_1 = __importDefault(require("react"));
|
11
10
|
const widget_1 = require("../../ui/widget");
|
11
|
+
const base_field_1 = require("./base-field");
|
12
12
|
const BaseSubmitButton = (props) => {
|
13
13
|
const { isSubmitting } = props.formState;
|
14
14
|
return (react_1.default.createElement(button_1.Button, { type: "submit", disabled: isSubmitting }, "Ulo\u017Eit"));
|
package/pages/form-page/index.js
CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
__exportStar(require("./form-page"), exports);
|
18
17
|
__exportStar(require("./base-field"), exports);
|
19
|
-
__exportStar(require("./types"), exports);
|
20
|
-
__exportStar(require("./mapper"), exports);
|
21
18
|
__exportStar(require("./form"), exports);
|
19
|
+
__exportStar(require("./form-page"), exports);
|
20
|
+
__exportStar(require("./mapper"), exports);
|
21
|
+
__exportStar(require("./types"), exports);
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { EntityMetaSchema, FieldSchemaResponse, FormSchemaResponse } from "../../api";
|
2
1
|
import { FC, ReactElement } from "react";
|
3
2
|
import { Control } from "react-hook-form";
|
3
|
+
import { EntityMetaSchema, FieldSchemaResponse, FormSchemaResponse } from "../../api";
|
4
4
|
export interface FieldProps {
|
5
5
|
fieldSchema: FieldSchemaResponse;
|
6
6
|
entityAlias: string;
|
@@ -27,21 +27,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
27
|
};
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
29
|
exports.GridPage = exports.dataGridLoader = void 0;
|
30
|
-
const tailwindui_1 = require("@uxf/data-grid/tailwindui");
|
31
30
|
const data_grid_1 = require("@uxf/data-grid");
|
31
|
+
const tailwindui_1 = require("@uxf/data-grid/tailwindui");
|
32
32
|
const router_1 = require("@uxf/router");
|
33
|
+
const context_1 = require("@uxf/ui/context");
|
34
|
+
const icon_1 = require("@uxf/ui/icon");
|
33
35
|
const router_2 = __importDefault(require("next/router"));
|
34
36
|
const qs_1 = require("qs");
|
35
37
|
const react_1 = __importStar(require("react"));
|
36
38
|
const url_1 = require("url");
|
37
39
|
const api_1 = require("../../api");
|
40
|
+
const config_1 = require("../../config");
|
38
41
|
const with_authenticate_1 = require("../../deprecated/hoc/with-authenticate");
|
39
42
|
const api_2 = require("../../lib/api");
|
40
43
|
const get_initial_props_helper_1 = require("./get-initial-props-helper");
|
41
44
|
const use_hidden_columns_1 = require("./use-hidden-columns");
|
42
|
-
const config_1 = require("../../config");
|
43
|
-
const icon_1 = require("@uxf/ui/icon");
|
44
|
-
const context_1 = require("@uxf/ui/context");
|
45
45
|
const { axiosRequest } = (0, api_2.createAxiosInstance)();
|
46
46
|
const dataGridLoader = (gridName, request) => {
|
47
47
|
return axiosRequest(null, `/api/cms/datagrid/${gridName}`, "get", null, request).then((r) => r.data);
|
@@ -84,12 +84,12 @@ const GridPageComponent = (props) => {
|
|
84
84
|
].filter(Boolean);
|
85
85
|
return (react_1.default.createElement(Layout, { key: entityAlias, title: (_a = title !== null && title !== void 0 ? title : metaSchema === null || metaSchema === void 0 ? void 0 : metaSchema.title) !== null && _a !== void 0 ? _a : "" },
|
86
86
|
react_1.default.createElement("div", { className: "mb-10" },
|
87
|
-
react_1.default.createElement(tailwindui_1.DataGrid, { noBorder: true, callbackRef: callbackRef, schema: gridSchema, initialState: query.filter ? (0, router_1.queryParamToString)(query.filter) : undefined, title: title !== null && title !== void 0 ? title : metaSchema === null || metaSchema === void 0 ? void 0 : metaSchema.title, gridName: entityAlias, loader: loader !== null && loader !== void 0 ? loader : universalLoader, ...hiddenColumnProps, onOpen: onOpen && ((row) => onOpen(entityAlias, row, actionsBag)), getOpenUrl: getOpenUrl && ((row) => getOpenUrl(entityAlias, row)), onEdit: onEdit && ((row) => onEdit(entityAlias, row, actionsBag)), getEditUrl: getEditUrl && ((row) => getEditUrl(entityAlias, row)), onRemove: onRemove && ((row) => onRemove(entityAlias, row, actionsBag)), rowHeight: rowHeight, defaultConfig: defaultConfig, ui: dataGridUi, selectedRows: selectable ? selectedRows : undefined, onChangeSelectedRows: selectable ? setSelectedRows : undefined, customActions: cActions, mode: (_b = uiContextValues === null || uiContextValues === void 0 ? void 0 : uiContextValues.colorScheme.getUserSettings()) !== null && _b !== void 0 ? _b : "light" }))));
|
87
|
+
react_1.default.createElement(tailwindui_1.DataGrid, { noBorder: true, callbackRef: callbackRef, schema: gridSchema, initialState: query.filter ? (0, router_1.queryParamToString)(query.filter) : undefined, title: title !== null && title !== void 0 ? title : metaSchema === null || metaSchema === void 0 ? void 0 : metaSchema.title, gridName: entityAlias, loader: loader !== null && loader !== void 0 ? loader : universalLoader, ...hiddenColumnProps, onOpen: onOpen && ((row) => onOpen(entityAlias, row, actionsBag)), getOpenUrl: getOpenUrl && ((row) => getOpenUrl(entityAlias, row)), onEdit: onEdit && ((row) => onEdit(entityAlias, row, actionsBag)), getEditUrl: getEditUrl && ((row) => getEditUrl(entityAlias, row)), onRemove: onRemove && ((row) => onRemove(entityAlias, row, actionsBag)), rowHeight: rowHeight, defaultConfig: defaultConfig, ui: dataGridUi, selectedRows: selectable ? selectedRows : undefined, onChangeSelectedRows: selectable ? setSelectedRows : undefined, customActions: cActions, mode: (_b = uiContextValues === null || uiContextValues === void 0 ? void 0 : uiContextValues.colorScheme.getUserSettings()) !== null && _b !== void 0 ? _b : "light", onCsvDownload: (r) => window.open(`/api/cms/datagrid/export/${entityAlias}?${(0, qs_1.stringify)(r)}`) }))));
|
88
88
|
};
|
89
89
|
GridPageComponent.displayName = "GridPageComponent";
|
90
90
|
const GridPage = (config) => {
|
91
91
|
const Component = (props) => {
|
92
|
-
return (react_1.default.createElement(GridPageComponent, { ...props,
|
92
|
+
return (react_1.default.createElement(GridPageComponent, { ...props, AddIcon: config.AddIcon, customActions: config.customActions, defaultConfig: config.defaultConfig, getEditUrl: config.getEditUrl, getOpenUrl: config.getOpenUrl, loader: config.loader, onAdd: config.onAdd, onAddTitle: config.onAddTitle, onEdit: config.onEdit, onOpen: config.onOpen, onRemove: config.onRemove, rowHeight: config.rowHeight, selectable: config.selectable, title: config.title, ui: config.ui }));
|
93
93
|
};
|
94
94
|
Component.getInitialProps = async (ctx) => {
|
95
95
|
const entityAlias = typeof config.entityAlias === "function" ? config.entityAlias(ctx) : config.entityAlias;
|
@@ -1,10 +1,10 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
import { DataGridProps,
|
2
|
+
import { DataGridProps, UIComponents as DataGridUIComponents, Loader, Schema } from "@uxf/data-grid";
|
3
3
|
import { NextPageContext } from "next";
|
4
4
|
import { ParsedUrlQuery } from "querystring";
|
5
|
+
import { FC, ReactElement } from "react";
|
5
6
|
import { EntityMetaSchema } from "../../api";
|
6
7
|
import { LayoutProps } from "../../lib/layout";
|
7
|
-
import { FC, ReactElement } from "react";
|
8
8
|
export type LayoutComponent = FC<LayoutProps>;
|
9
9
|
export type ActionsBag = {
|
10
10
|
reload: () => void;
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import { MultiComboboxOption } from "@uxf/ui/multi-combobox";
|
1
2
|
import { ReactElement } from "react";
|
2
3
|
import { InviteUserFormData } from "../../forms/invite-user-form";
|
3
|
-
import { MultiComboboxOption } from "@uxf/ui/multi-combobox";
|
4
4
|
export interface InviteUserPageConfig {
|
5
5
|
allowedRoles?: string[];
|
6
6
|
onSubmit: (values: InviteUserFormData) => Promise<void>;
|
@@ -27,12 +27,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
27
|
};
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
29
|
exports.LoginPage = void 0;
|
30
|
+
const router_1 = __importDefault(require("next/router"));
|
30
31
|
const react_1 = __importStar(require("react"));
|
31
32
|
const api_1 = require("../../api");
|
32
33
|
const config_1 = require("../../config");
|
33
34
|
const login_form_1 = require("../../forms/login-form");
|
34
35
|
const login_layout_1 = require("../../lib/login-layout");
|
35
|
-
const router_1 = __importDefault(require("next/router"));
|
36
36
|
const INITIAL_VALUES = {
|
37
37
|
username: "",
|
38
38
|
password: "",
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { NextPageContext } from "next";
|
2
2
|
import { ReactNode } from "react";
|
3
|
-
import { RenewPasswordFormData } from "../../forms/renew-password-form";
|
4
3
|
import { SubmitErrorHandler, UseControllerProps } from "react-hook-form";
|
4
|
+
import { RenewPasswordFormData } from "../../forms/renew-password-form";
|
5
5
|
export interface RenewPasswordPageConfig {
|
6
6
|
pageTitle?: string;
|
7
7
|
title: ReactNode;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { ImageSource } from "@uxf/core/utils/resizer";
|
2
|
+
import React, { HTMLAttributes } from "react";
|
3
|
+
import { AvatarSize, AvatarVariant } from "./theme";
|
4
|
+
export interface AvatarProps extends Omit<HTMLAttributes<HTMLDivElement>, "src"> {
|
5
|
+
alt?: string;
|
6
|
+
size?: AvatarSize;
|
7
|
+
src?: ImageSource | null;
|
8
|
+
letters?: string;
|
9
|
+
variant?: AvatarVariant;
|
10
|
+
}
|
11
|
+
export declare const Avatar: React.MemoExoticComponent<React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>>;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.Avatar = void 0;
|
27
|
+
const cx_1 = require("@uxf/core/utils/cx");
|
28
|
+
const raster_image_1 = require("@uxf/ui/raster-image");
|
29
|
+
const react_1 = __importStar(require("react"));
|
30
|
+
const AVATAR_SIZES = {
|
31
|
+
sm: 40,
|
32
|
+
default: 88,
|
33
|
+
lg: 120,
|
34
|
+
};
|
35
|
+
const Component = (props, ref) => {
|
36
|
+
// eslint-disable-next-line react/destructuring-assignment
|
37
|
+
const { alt, className, size = "default", src, letters, variant = "default", ...restProps } = props;
|
38
|
+
const avatarClassName = (0, cx_1.cx)("cms-avatar", `cms-avatar--size-${size}`, `cms-avatar--variant-${variant}`, className);
|
39
|
+
const imgAlt = alt !== null && alt !== void 0 ? alt : "";
|
40
|
+
if (src) {
|
41
|
+
return (react_1.default.createElement("span", { className: avatarClassName, ref: ref, ...restProps },
|
42
|
+
react_1.default.createElement(raster_image_1.RasterImage, { alt: imgAlt, className: "cms-avatar__image", height: AVATAR_SIZES[size], loading: "lazy", mode: "cover", src: src, width: AVATAR_SIZES[size] })));
|
43
|
+
}
|
44
|
+
return (react_1.default.createElement("div", { className: avatarClassName, ...restProps }, letters));
|
45
|
+
};
|
46
|
+
exports.Avatar = (0, react_1.memo)((0, react_1.forwardRef)(Component));
|
47
|
+
exports.Avatar.displayName = "CmsAvatar";
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getAvatarUserLetters(name: string): string;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getAvatarUserLetters = void 0;
|
4
|
+
function getAvatarUserLetters(name) {
|
5
|
+
let letters = name
|
6
|
+
.split(" ")
|
7
|
+
.slice(0, 2)
|
8
|
+
.filter((i) => i);
|
9
|
+
if (letters.length === 1) {
|
10
|
+
letters = letters[0].slice(0, 2);
|
11
|
+
}
|
12
|
+
else {
|
13
|
+
letters = letters.map((i) => i.slice(0, 1)).join("");
|
14
|
+
}
|
15
|
+
return letters.toUpperCase();
|
16
|
+
}
|
17
|
+
exports.getAvatarUserLetters = getAvatarUserLetters;
|
@@ -25,10 +25,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
26
|
exports.CopyToClipboardButton = void 0;
|
27
27
|
const copy_to_clipboard_1 = require("@uxf/core/utils/copy-to-clipboard");
|
28
|
-
const react_1 = __importStar(require("react"));
|
29
|
-
const flash_messages_service_1 = require("@uxf/ui/flash-messages/flash-messages-service");
|
30
28
|
const button_1 = require("@uxf/ui/button");
|
29
|
+
const flash_messages_service_1 = require("@uxf/ui/flash-messages/flash-messages-service");
|
31
30
|
const icon_1 = require("@uxf/ui/icon");
|
31
|
+
const react_1 = __importStar(require("react"));
|
32
32
|
// eslint-disable-next-line react/destructuring-assignment
|
33
33
|
const CopyToClipboardButton = ({ color = "default", size = "sm", textToCopy }) => {
|
34
34
|
const onCopy = (0, react_1.useCallback)(async () => {
|
@@ -0,0 +1,50 @@
|
|
1
|
+
.cms-avatar {
|
2
|
+
--bg-color: theme("colors.primary.DEFAULT");
|
3
|
+
|
4
|
+
align-items: center;
|
5
|
+
background-color: var(--bg-color);
|
6
|
+
background-position: center;
|
7
|
+
background-repeat: no-repeat;
|
8
|
+
background-size: cover;
|
9
|
+
border-radius: var(--border-radius);
|
10
|
+
color: theme("colors.white");
|
11
|
+
display: inline-flex;
|
12
|
+
flex-shrink: 0;
|
13
|
+
height: var(--size);
|
14
|
+
justify-content: center;
|
15
|
+
position: relative;
|
16
|
+
text-transform: uppercase;
|
17
|
+
width: var(--size);
|
18
|
+
|
19
|
+
&__image {
|
20
|
+
border-radius: inherit;
|
21
|
+
height: 100%;
|
22
|
+
width: 100%;
|
23
|
+
}
|
24
|
+
|
25
|
+
.uxf-raster-image__img {
|
26
|
+
border-radius: inherit;
|
27
|
+
}
|
28
|
+
|
29
|
+
&--variant-rounded {
|
30
|
+
--border-radius: 999px;
|
31
|
+
}
|
32
|
+
|
33
|
+
&--size-sm {
|
34
|
+
--size: theme("avatarSize.sm");
|
35
|
+
|
36
|
+
font-size: theme("fontSize.body");
|
37
|
+
}
|
38
|
+
|
39
|
+
&--size-default {
|
40
|
+
--size: theme("avatarSize.default");
|
41
|
+
|
42
|
+
font-size: 20px;
|
43
|
+
}
|
44
|
+
|
45
|
+
&--size-lg {
|
46
|
+
--size: theme("avatarSize.lg");
|
47
|
+
|
48
|
+
font-size: theme("fontSize.desktopH3");
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
.uxf-cms-breadcrumbs {
|
2
|
+
@apply uxf-typo-body;
|
3
|
+
|
4
|
+
align-items: center;
|
5
|
+
color: theme("colors.lightLow");
|
6
|
+
display: flex;
|
7
|
+
flex-wrap: wrap;
|
8
|
+
margin-bottom: theme("spacing.4");
|
9
|
+
|
10
|
+
&__item {
|
11
|
+
margin-right: theme("spacing.2");
|
12
|
+
|
13
|
+
&:last-child {
|
14
|
+
margin-right: 0;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
&__divide-icon {
|
19
|
+
display: inline;
|
20
|
+
margin-right: theme("spacing.2");
|
21
|
+
}
|
22
|
+
|
23
|
+
&__link {
|
24
|
+
@apply transition-colors;
|
25
|
+
|
26
|
+
&:hover {
|
27
|
+
color: theme("colors.lightHigh");
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
@@ -0,0 +1,132 @@
|
|
1
|
+
.uxf-cms-layout {
|
2
|
+
display: flex;
|
3
|
+
|
4
|
+
&__wrapper {
|
5
|
+
display: flex;
|
6
|
+
width: 100%;
|
7
|
+
|
8
|
+
:root .light & {
|
9
|
+
background-color: theme("colors.gray.100");
|
10
|
+
}
|
11
|
+
|
12
|
+
:root .dark & {
|
13
|
+
background-color: theme("colors.gray.900");
|
14
|
+
color: theme("colors.darkHigh");
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
&__main {
|
19
|
+
--drawer-width: 264px;
|
20
|
+
|
21
|
+
min-height: 100vh;
|
22
|
+
padding-bottom: theme("spacing.16");
|
23
|
+
width: 100%;
|
24
|
+
|
25
|
+
@screen md {
|
26
|
+
margin-left: var(--drawer-width);
|
27
|
+
padding-bottom: 0;
|
28
|
+
width: calc(100% - var(--drawer-width));
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
&__loading {
|
33
|
+
align-items: center;
|
34
|
+
display: flex;
|
35
|
+
flex-direction: column;
|
36
|
+
height: theme("spacing.96");
|
37
|
+
justify-content: center;
|
38
|
+
|
39
|
+
&-inner {
|
40
|
+
text-align: center;
|
41
|
+
}
|
42
|
+
|
43
|
+
&-text {
|
44
|
+
margin-top: theme("spacing.2");
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
&__header {
|
49
|
+
:root .light & {
|
50
|
+
background-color: theme("colors.white");
|
51
|
+
}
|
52
|
+
|
53
|
+
:root .dark & {
|
54
|
+
background-color: theme("colors.gray.950");
|
55
|
+
}
|
56
|
+
|
57
|
+
&--sticky {
|
58
|
+
box-shadow: theme("boxShadow.md");
|
59
|
+
position: sticky;
|
60
|
+
top: 0;
|
61
|
+
z-index: 10;
|
62
|
+
|
63
|
+
:root .light & {
|
64
|
+
background-color: theme("colors.white");
|
65
|
+
}
|
66
|
+
|
67
|
+
:root .dark & {
|
68
|
+
background-color: theme("colors.gray.950");
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
&__toolbar {
|
74
|
+
align-items: center;
|
75
|
+
background-color: theme("colors.sidebar.background");
|
76
|
+
display: flex;
|
77
|
+
height: theme("spacing.12");
|
78
|
+
justify-content: flex-end;
|
79
|
+
padding: 0 theme("spacing.6");
|
80
|
+
|
81
|
+
:root .light & {
|
82
|
+
color: theme("colors.darkMedium");
|
83
|
+
}
|
84
|
+
|
85
|
+
:root .dark & {
|
86
|
+
color: theme("colors.lightMedium");
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
&__container {
|
91
|
+
margin: 0 auto;
|
92
|
+
padding: 0 theme("spacing.4");
|
93
|
+
|
94
|
+
@screen md {
|
95
|
+
padding-left: theme("spacing.10");
|
96
|
+
padding-right: theme("spacing.10");
|
97
|
+
}
|
98
|
+
|
99
|
+
&--basic {
|
100
|
+
padding-bottom: theme("spacing.9");
|
101
|
+
padding-top: theme("spacing.12");
|
102
|
+
}
|
103
|
+
|
104
|
+
&--narrow {
|
105
|
+
max-width: 49.25rem;
|
106
|
+
}
|
107
|
+
|
108
|
+
&--wide {
|
109
|
+
max-width: 64rem;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
&__title-wrapper {
|
114
|
+
align-items: center;
|
115
|
+
display: flex;
|
116
|
+
justify-content: space-between;
|
117
|
+
}
|
118
|
+
|
119
|
+
&__avatar-title-wrapper {
|
120
|
+
align-items: center;
|
121
|
+
display: flex;
|
122
|
+
gap: 20px;
|
123
|
+
}
|
124
|
+
|
125
|
+
&__breadcrumbs-title-wrapper {
|
126
|
+
width: 100%;
|
127
|
+
}
|
128
|
+
|
129
|
+
&__title {
|
130
|
+
@apply uxf-typo-h4;
|
131
|
+
}
|
132
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
.uxf-cms-login-layout {
|
2
|
+
align-items: center;
|
3
|
+
display: flex;
|
4
|
+
flex-direction: column;
|
5
|
+
justify-content: center;
|
6
|
+
min-height: 100vh;
|
7
|
+
padding: theme("spacing.4");
|
8
|
+
|
9
|
+
:root .light & {
|
10
|
+
background-color: theme("colors.gray.100");
|
11
|
+
}
|
12
|
+
|
13
|
+
:root .dark & {
|
14
|
+
background-color: theme("colors.gray.900");
|
15
|
+
color: theme("colors.darkHigh");
|
16
|
+
}
|
17
|
+
|
18
|
+
&__logo-wrapper {
|
19
|
+
margin-bottom: theme("spacing.8");
|
20
|
+
}
|
21
|
+
|
22
|
+
&__title {
|
23
|
+
@apply uxf-typo-h4;
|
24
|
+
|
25
|
+
&--hidden {
|
26
|
+
@apply sr-only;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
&__subtitle {
|
31
|
+
margin-top: theme("spacing.2");
|
32
|
+
|
33
|
+
:root .light & {
|
34
|
+
color: theme("colors.lightMedium");
|
35
|
+
}
|
36
|
+
|
37
|
+
:root .dark & {
|
38
|
+
color: theme("colors.darkMedium");
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
&__body {
|
43
|
+
margin-top: theme("spacing.8");
|
44
|
+
max-width: 100%;
|
45
|
+
padding: theme("spacing.6");
|
46
|
+
width: 28rem;
|
47
|
+
|
48
|
+
:root .dark & {
|
49
|
+
background-color: theme("colors.gray.950");
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|