@uxf/cms 10.0.0-beta.9 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/config/container.d.ts +3 -3
  2. package/deprecated/api/api-client.js +1 -1
  3. package/deprecated/hoc/with-authenticate.js +3 -3
  4. package/deprecated/redux/configure-store.js +2 -2
  5. package/deprecated/redux/entities/actions.d.ts +1 -1
  6. package/deprecated/redux/entities/index.d.ts +1 -1
  7. package/deprecated/redux/entities/index.js +1 -1
  8. package/deprecated/redux/entities/selectors.d.ts +1 -1
  9. package/deprecated/redux/index.d.ts +2 -2
  10. package/deprecated/redux/index.js +4 -4
  11. package/deprecated/redux/types.d.ts +1 -1
  12. package/deprecated/redux/user/index.d.ts +1 -1
  13. package/deprecated/redux/user/index.js +1 -1
  14. package/forms/change-password-form/change-password-form.js +2 -2
  15. package/forms/components/wysiwyg-input/wysiwyg-input.d.ts +2 -2
  16. package/forms/components/wysiwyg-input/wysiwyg-input.js +2 -2
  17. package/forms/forgotten-password-form/forgotten-password-form.js +1 -1
  18. package/forms/invite-user-form/invite-user-form.js +2 -1
  19. package/forms/login-form/login-form.js +1 -1
  20. package/lib/api/create-use-axios-request.js +1 -1
  21. package/lib/layout/breadcrumbs.js +5 -5
  22. package/lib/layout/index.d.ts +1 -1
  23. package/lib/layout/index.js +1 -1
  24. package/lib/layout/layout-container.js +3 -3
  25. package/lib/layout/layout.js +26 -24
  26. package/lib/layout/sidebar.js +35 -21
  27. package/lib/layout/types.d.ts +1 -0
  28. package/lib/login-layout/login-layout.js +7 -9
  29. package/lib/menu/factory.d.ts +5 -5
  30. package/lib/menu/factory.js +6 -4
  31. package/lib/menu/index.d.ts +3 -3
  32. package/lib/menu/index.js +3 -3
  33. package/lib/menu/mobile-bar.d.ts +4 -2
  34. package/lib/menu/mobile-bar.js +12 -14
  35. package/lib/menu/model.d.ts +8 -4
  36. package/lib/menu/model.js +7 -0
  37. package/lib/menu/types.d.ts +1 -1
  38. package/lib/menu/ui/list-item/list-item.js +18 -17
  39. package/lib/menu/ui/list-item/types.d.ts +6 -5
  40. package/lib/menu/ui/menu-custom-item.js +2 -4
  41. package/lib/menu/ui/menu-item.js +11 -12
  42. package/lib/menu/ui/menu-super-section-item.js +4 -6
  43. package/lib/menu/ui/menu.js +2 -2
  44. package/lib/menu/ui/sub-menu/{sub-menuItem.js → sub-menu-item.js} +5 -7
  45. package/lib/menu/ui/sub-menu/sub-menu-mobile.js +7 -7
  46. package/lib/menu/ui/sub-menu/sub-menu.js +7 -7
  47. package/lib/menu/ui/sub-menu/use-sub-menu.d.ts +20 -12
  48. package/lib/menu/ui/sub-menu/use-sub-menu.js +16 -16
  49. package/lib/menu/ui/user-menu.js +13 -13
  50. package/package.json +34 -55
  51. package/pages/change-password-page/change-password-page.js +1 -1
  52. package/pages/change-password-page/types.d.ts +1 -1
  53. package/pages/content-builder/components/form-content.d.ts +1 -1
  54. package/pages/content-builder/components/form-content.js +5 -5
  55. package/pages/content-builder/components/form-root-fields.d.ts +1 -1
  56. package/pages/content-builder/components/form-root-fields.js +2 -2
  57. package/pages/content-builder/components/form.d.ts +2 -2
  58. package/pages/content-builder/components/form.js +4 -4
  59. package/pages/content-builder/components/header.js +2 -2
  60. package/pages/content-builder/content/feature-section.d.ts +1 -1
  61. package/pages/content-builder/content/feature-section.js +6 -6
  62. package/pages/content-builder/content/gallery.d.ts +1 -1
  63. package/pages/content-builder/content/gallery.js +3 -3
  64. package/pages/content-builder/content/hero-section.js +2 -2
  65. package/pages/content-builder/content/people.d.ts +1 -1
  66. package/pages/content-builder/content/people.js +7 -7
  67. package/pages/content-builder/content/wysiwyg.d.ts +2 -2
  68. package/pages/content-builder/content/wysiwyg.js +2 -2
  69. package/pages/content-builder/content-builder-page.js +4 -4
  70. package/pages/content-builder/content-field.d.ts +1 -1
  71. package/pages/content-builder/content-field.js +6 -6
  72. package/pages/content-builder/content-header.d.ts +1 -1
  73. package/pages/content-builder/content-header.js +5 -5
  74. package/pages/content-builder/hooks/use-sortable.js +1 -1
  75. package/pages/content-builder/index.d.ts +2 -2
  76. package/pages/content-builder/index.js +2 -2
  77. package/pages/content-builder/mapper.d.ts +1 -1
  78. package/pages/content-builder/types.d.ts +4 -6
  79. package/pages/form-page/base-field.js +14 -14
  80. package/pages/form-page/field-array.js +2 -2
  81. package/pages/form-page/form-page.d.ts +2 -1
  82. package/pages/form-page/form-page.js +7 -7
  83. package/pages/form-page/form.d.ts +2 -2
  84. package/pages/form-page/form.js +2 -2
  85. package/pages/form-page/index.d.ts +3 -3
  86. package/pages/form-page/index.js +3 -3
  87. package/pages/form-page/types.d.ts +1 -1
  88. package/pages/grid-page/grid-page.js +6 -6
  89. package/pages/grid-page/types.d.ts +2 -2
  90. package/pages/invite-user-page/invite-user-page.js +1 -0
  91. package/pages/invite-user-page/types.d.ts +1 -1
  92. package/pages/login-page/login-page.js +1 -1
  93. package/pages/renew-password-page/types.d.ts +1 -1
  94. package/ui/avatar/avatar.d.ts +11 -0
  95. package/ui/avatar/avatar.js +47 -0
  96. package/ui/avatar/get-avatar-user-letters.d.ts +1 -0
  97. package/ui/avatar/get-avatar-user-letters.js +17 -0
  98. package/ui/avatar/index.d.ts +3 -0
  99. package/ui/avatar/index.js +5 -0
  100. package/ui/avatar/theme.d.ts +11 -0
  101. package/ui/avatar/theme.js +2 -0
  102. package/ui/copy-to-clipboard-button/copy-to-clipboard-button.js +2 -2
  103. package/ui/styles/avatar.css +50 -0
  104. package/ui/styles/breadcrumbs.css +30 -0
  105. package/ui/styles/layout.css +132 -0
  106. package/ui/styles/login-layout.css +52 -0
  107. package/ui/styles/menu.css +217 -0
  108. package/ui/styles/mobile-bar.css +34 -0
  109. package/ui/styles/sidebar.css +108 -0
  110. package/ui/tw-tokens/tw-colors.d.ts +283 -282
  111. package/ui/tw-tokens/tw-colors.js +283 -282
  112. package/ui/tw-tokens/tw-line-height.d.ts +8 -8
  113. package/ui/tw-tokens/tw-line-height.js +8 -8
  114. package/ui/tw-tokens/tw-spacing.d.ts +34 -34
  115. package/ui/tw-tokens/tw-spacing.js +34 -34
  116. package/ui/tw-tokens/tw-z-index.d.ts +8 -7
  117. package/ui/tw-tokens/tw-z-index.js +8 -7
  118. package/ui/widget/index.d.ts +1 -1
  119. package/ui/widget/index.js +1 -1
  120. package/ui/widget/types.d.ts +1 -1
  121. package/ui/widget/widget.js +1 -1
  122. package/utils/styles.css +7 -43
  123. package/utils/tailwind.config.js +5 -0
  124. /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 form_1 = require("./form");
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, _e;
47
+ var _a, _b, _c, _d;
48
48
  const { formSchema, entityAlias, entityId, entityMetaSchema } = props;
49
- const formApi = (0, react_hook_form_1.useForm)({ defaultValues: ((_a = props.initialValues) !== null && _a !== void 0 ? _a : {}) });
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 = (_c = (_b = config.ui) === null || _b === void 0 ? void 0 : _b.Field) !== null && _c !== void 0 ? _c : base_field_1.BaseField;
69
- const Layout = (_e = (_d = config.ui) === null || _d === void 0 ? void 0 : _d.Layout) !== null && _e !== void 0 ? _e : react_1.default.createElement("div", null);
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 = null;
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
  }>;
@@ -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"));
@@ -1,5 +1,5 @@
1
- export * from "./form-page";
2
1
  export * from "./base-field";
3
- export * from "./types";
4
- export * from "./mapper";
5
2
  export * from "./form";
3
+ export * from "./form-page";
4
+ export * from "./mapper";
5
+ export * from "./types";
@@ -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, title: config.title, loader: config.loader, onEdit: config.onEdit, getEditUrl: config.getEditUrl, onAdd: config.onAdd, onRemove: config.onRemove, onOpen: config.onOpen, getOpenUrl: config.getOpenUrl, rowHeight: config.rowHeight, defaultConfig: config.defaultConfig, AddIcon: config.AddIcon, onAddTitle: config.onAddTitle, ui: config.ui, selectable: config.selectable }));
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, Loader, Schema, UIComponents as DataGridUIComponents } from "@uxf/data-grid";
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,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -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;
@@ -0,0 +1,3 @@
1
+ export { Avatar } from "./avatar";
2
+ export type { AvatarProps } from "./avatar";
3
+ export type { AvatarSize, AvatarVariant } from "./theme";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Avatar = void 0;
4
+ var avatar_1 = require("./avatar");
5
+ Object.defineProperty(exports, "Avatar", { enumerable: true, get: function () { return avatar_1.Avatar; } });
@@ -0,0 +1,11 @@
1
+ export interface AvatarVariants {
2
+ default: true;
3
+ rounded: true;
4
+ }
5
+ export type AvatarVariant = keyof AvatarVariants;
6
+ export interface AvatarSizes {
7
+ sm: true;
8
+ default: true;
9
+ lg: true;
10
+ }
11
+ export type AvatarSize = keyof AvatarSizes;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
+ }