@uxf/ui 11.0.0-beta.21 → 11.1.0
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/_file-input-base/file-input-base.d.ts +1 -0
- package/_file-input-base/file-input-base.js +9 -7
- package/_select-base/_select-base.d.ts +1 -0
- package/_select-base/_select-base.js +14 -5
- package/avatar-file-input/avatar-file-input.d.ts +10 -2
- package/avatar-file-input/avatar-file-input.js +27 -11
- package/calendar/calendar-day-cell.js +5 -2
- package/calendar/utils/get-class-names-from-flags.d.ts +2 -0
- package/calendar/utils/get-class-names-from-flags.js +10 -0
- package/checkbox-input/checkbox-input.d.ts +1 -0
- package/checkbox-input/checkbox-input.js +8 -3
- package/combobox/combobox.js +2 -1
- package/create-component-preview-page/ui-components.d.ts +15 -0
- package/create-component-preview-page/ui-components.js +15 -0
- package/create-component-preview-page/ui-readmes.js +68 -62
- package/css/avatar-file-input.css +97 -67
- package/css/checkbox-input.css +9 -1
- package/date-picker/date-picker.d.ts +7 -4
- package/date-picker/date-picker.js +3 -2
- package/date-picker/date-picker.stories.js +38 -1
- package/date-picker-input/date-picker-input.d.ts +8 -3
- package/date-picker-input/date-picker-input.js +9 -7
- package/date-picker-input/date-picker-input.stories.js +2 -1
- package/date-range-picker/date-range-picker.d.ts +4 -1
- package/date-range-picker/date-range-picker.js +1 -0
- package/date-range-picker-input/README.md +9 -1
- package/date-range-picker-input/date-range-picker-input.d.ts +4 -1
- package/date-range-picker-input/date-range-picker-input.js +1 -1
- package/dropzone/dropzone-input.d.ts +1 -0
- package/dropzone/dropzone-input.js +11 -5
- package/dropzone/dropzone-list.d.ts +1 -0
- package/dropzone/dropzone-list.js +2 -2
- package/file-input/file-input.d.ts +2 -2
- package/file-input/file-input.js +11 -2
- package/image-gallery/README.md +8 -0
- package/message/README.md +25 -1
- package/multi-combobox/_multi-combobox-base.js +26 -4
- package/package.json +4 -4
- package/radio-group/radio-group.d.ts +1 -1
- package/tabs/tabs.d.ts +1 -0
- package/tabs/tabs.js +2 -1
- package/utils/validator/validator-exceptions.d.ts +3 -0
- package/utils/validator/validator-exceptions.js +7 -0
|
@@ -25,21 +25,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports._FileInputBase = void 0;
|
|
27
27
|
const react_1 = __importStar(require("react"));
|
|
28
|
+
const validator_exceptions_1 = require("../utils/validator/validator-exceptions");
|
|
28
29
|
exports._FileInputBase = (0, react_1.forwardRef)((props, ref) => {
|
|
29
30
|
const onChange = async (e) => {
|
|
30
|
-
var _a;
|
|
31
|
-
if (e.target.files) {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
if ((_a = e.target.files) === null || _a === void 0 ? void 0 : _a.length) {
|
|
32
33
|
try {
|
|
33
|
-
const
|
|
34
|
+
const file = e.target.files[0];
|
|
35
|
+
if (props.maxFileSize && file.size > props.maxFileSize) {
|
|
36
|
+
throw validator_exceptions_1.ValidatorExceptions.MaxFileSize;
|
|
37
|
+
}
|
|
38
|
+
const response = await props.onUploadFile(file);
|
|
34
39
|
await props.onChange(response, e);
|
|
35
40
|
}
|
|
36
41
|
catch (err) {
|
|
37
|
-
(
|
|
42
|
+
(_b = props.onUploadError) === null || _b === void 0 ? void 0 : _b.call(props, err);
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
|
-
else {
|
|
41
|
-
props.onChange(null, e);
|
|
42
|
-
}
|
|
43
45
|
};
|
|
44
46
|
return (react_1.default.createElement("input", { accept: props.accept, "aria-invalid": props.isInvalid, "aria-describedby": props["aria-describedby"], className: props.className, disabled: props.isDisabled, form: props.form, id: props.id, name: props.name, onBlur: props.onBlur, onChange: onChange, onFocus: props.onFocus, readOnly: props.isReadOnly, ref: ref, required: props.isRequired, tabIndex: props.isDisabled ? -1 : undefined, type: "file" }));
|
|
45
47
|
});
|
|
@@ -28,6 +28,7 @@ export interface SelectBaseProps<Value, Option> extends FormControlProps<Value |
|
|
|
28
28
|
id?: string;
|
|
29
29
|
keyExtractor?: (option: Option) => string | number;
|
|
30
30
|
label: ReactNode;
|
|
31
|
+
onOptionsUnmount?: () => void;
|
|
31
32
|
options?: Option[];
|
|
32
33
|
placeholder?: string;
|
|
33
34
|
renderOption?: (option: Option, isSelected: boolean) => ReactNode;
|
|
@@ -27,6 +27,7 @@ exports._SelectBase = void 0;
|
|
|
27
27
|
const react_1 = require("@floating-ui/react");
|
|
28
28
|
const classes_1 = require("@uxf/core/constants/classes");
|
|
29
29
|
const useInputFocus_1 = require("@uxf/core/hooks/useInputFocus");
|
|
30
|
+
const useOnUnmount_1 = require("@uxf/core/hooks/useOnUnmount");
|
|
30
31
|
const composeRefs_1 = require("@uxf/core/utils/composeRefs");
|
|
31
32
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
32
33
|
const use_dropdown_1 = require("@uxf/ui/hooks/use-dropdown");
|
|
@@ -34,6 +35,11 @@ const icon_1 = require("@uxf/ui/icon");
|
|
|
34
35
|
const input_1 = require("@uxf/ui/input");
|
|
35
36
|
const label_1 = require("@uxf/ui/label");
|
|
36
37
|
const react_2 = __importStar(require("react"));
|
|
38
|
+
const Option = (props) => {
|
|
39
|
+
const HUIComponent = props.HUIComponent;
|
|
40
|
+
return (react_2.default.createElement(HUIComponent.Option, { className: (optionState) => (0, cx_1.cx)("uxf-dropdown__item", optionState.active && classes_1.CLASSES.IS_ACTIVE, optionState.disabled && classes_1.CLASSES.IS_DISABLED, optionState.selected && classes_1.CLASSES.IS_SELECTED), value: props.option }, (optionState) => { var _a, _b; return (_b = (_a = props.renderOption) === null || _a === void 0 ? void 0 : _a.call(props, props.option, optionState.selected)) !== null && _b !== void 0 ? _b : props.option.label; }));
|
|
41
|
+
};
|
|
42
|
+
Option.displayName = "UxfUiSelectBaseOption";
|
|
37
43
|
function isHUICombobox(HUIComponent) {
|
|
38
44
|
return typeof HUIComponent.Input !== "undefined";
|
|
39
45
|
}
|
|
@@ -53,13 +59,16 @@ const InputArrow = (props) => {
|
|
|
53
59
|
const Options = (props) => {
|
|
54
60
|
var _a, _b;
|
|
55
61
|
const HUIComponent = props.HUIComponent;
|
|
62
|
+
(0, useOnUnmount_1.useOnUnmount)(() => {
|
|
63
|
+
var _a;
|
|
64
|
+
(_a = props.onUnmount) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
65
|
+
});
|
|
56
66
|
return (react_2.default.createElement(HUIComponent.Options, { className: (0, cx_1.cx)("uxf-dropdown uxf-select-base__options", `uxf-dropdown--size-${(_a = props.size) !== null && _a !== void 0 ? _a : "default"}`, `uxf-dropdown--variant-${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`, props.matchWidth
|
|
57
67
|
? "uxf-select-base__options--match-width"
|
|
58
68
|
: "uxf-select-base__options--not-match-width", props.placement === "bottom" && "uxf-dropdown--bottom", props.placement === "top" && "uxf-dropdown--top", props.className), ref: props.forwardRef, static: true, style: props.style }, props.options && props.options.length > 0 ? (props.options.map((option) => {
|
|
59
|
-
var _a;
|
|
60
|
-
const optionKey = (_a = props.keyExtractor) === null || _a === void 0 ? void 0 : _a.call(props, option);
|
|
61
|
-
|
|
62
|
-
return (react_2.default.createElement(HUIComponent.Option, { disabled: _option.disabled, className: (optionState) => (0, cx_1.cx)("uxf-dropdown__item", optionState.active && classes_1.CLASSES.IS_ACTIVE, optionState.disabled && classes_1.CLASSES.IS_DISABLED, optionState.selected && classes_1.CLASSES.IS_SELECTED), key: optionKey !== null && optionKey !== void 0 ? optionKey : _option.id, value: option }, (optionState) => { var _a, _b; return (_b = (_a = props.renderOption) === null || _a === void 0 ? void 0 : _a.call(props, option, optionState.selected)) !== null && _b !== void 0 ? _b : option.label; }));
|
|
69
|
+
var _a, _b;
|
|
70
|
+
const optionKey = (_b = (_a = props.keyExtractor) === null || _a === void 0 ? void 0 : _a.call(props, option)) !== null && _b !== void 0 ? _b : option.id;
|
|
71
|
+
return (react_2.default.createElement(Option, { HUIComponent: HUIComponent, key: optionKey, option: option, renderOption: props.renderOption }));
|
|
63
72
|
})) : (react_2.default.createElement("div", { className: "uxf-dropdown__empty-wrapper" }, props.emptyMessage))));
|
|
64
73
|
};
|
|
65
74
|
Options.displayName = "UxfUiSelectBaseOptions";
|
|
@@ -91,7 +100,7 @@ const _SelectBase = (props) => {
|
|
|
91
100
|
react_2.default.createElement(InputArrow, { iconName: props.iconName, open: renderProps.open }))) : (react_2.default.createElement(InputArrow, { iconName: props.iconName, open: renderProps.open }))),
|
|
92
101
|
props.rightAddon && react_2.default.createElement(input_1.Input.RightAddon, null, props.rightAddon)),
|
|
93
102
|
renderProps.open && (react_2.default.createElement(react_1.FloatingPortal, null,
|
|
94
|
-
react_2.default.createElement(Options, { HUIComponent: HUIComponent, className: props.dropdownClassName, emptyMessage: props.emptyMessage, forwardRef: dropdown.refs.setFloating, keyExtractor: props.keyExtractor, matchWidth: props.dropdownMatchesInputWidth, options: props.options, placement: dropdown.placement, renderOption: props.renderOption, size: props.size, style: dropdown.floatingStyles, variant: props.variant }))),
|
|
103
|
+
react_2.default.createElement(Options, { HUIComponent: HUIComponent, className: props.dropdownClassName, emptyMessage: props.emptyMessage, forwardRef: dropdown.refs.setFloating, keyExtractor: props.keyExtractor, matchWidth: props.dropdownMatchesInputWidth, onUnmount: props.onOptionsUnmount, options: props.options, placement: dropdown.placement, renderOption: props.renderOption, size: props.size, style: dropdown.floatingStyles, variant: props.variant }))),
|
|
95
104
|
props.helperText && (react_2.default.createElement("div", { className: (0, cx_1.cx)("uxf-helper-text", props.isInvalid && classes_1.CLASSES.IS_INVALID), id: errorId }, props.helperText)))))));
|
|
96
105
|
};
|
|
97
106
|
exports._SelectBase = _SelectBase;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import React, { ReactNode } from "react";
|
|
1
|
+
import React, { MouseEventHandler, ReactNode } from "react";
|
|
2
2
|
import { FileInputBaseProps } from "../_file-input-base";
|
|
3
|
+
import { IconName } from "../icon/types";
|
|
3
4
|
import { AvatarFileInputVariant } from "./theme";
|
|
4
5
|
export interface AvatarFileInputProps extends FileInputBaseProps {
|
|
6
|
+
customControls?: (args: {
|
|
7
|
+
onSelectFile: MouseEventHandler;
|
|
8
|
+
onRemoveFile: MouseEventHandler;
|
|
9
|
+
}) => ReactNode;
|
|
5
10
|
helperText?: ReactNode;
|
|
11
|
+
hiddenLabel?: boolean;
|
|
12
|
+
icon?: IconName;
|
|
6
13
|
label?: ReactNode;
|
|
7
|
-
|
|
14
|
+
removeFileLabel?: ReactNode;
|
|
15
|
+
selectFileLabel?: ReactNode;
|
|
8
16
|
variant?: AvatarFileInputVariant;
|
|
9
17
|
}
|
|
10
18
|
export declare const AvatarFileInput: React.ForwardRefExoticComponent<AvatarFileInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -26,28 +26,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.AvatarFileInput = void 0;
|
|
27
27
|
const classes_1 = require("@uxf/core/constants/classes");
|
|
28
28
|
const useInputFocus_1 = require("@uxf/core/hooks/useInputFocus");
|
|
29
|
+
const composeRefs_1 = require("@uxf/core/utils/composeRefs");
|
|
29
30
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
30
31
|
const file_1 = require("@uxf/core/utils/file");
|
|
31
32
|
const react_1 = __importStar(require("react"));
|
|
32
33
|
const _file_input_base_1 = require("../_file-input-base");
|
|
33
34
|
const avatar_1 = require("../avatar");
|
|
35
|
+
const button_1 = require("../button");
|
|
36
|
+
const form_component_1 = require("../form-component");
|
|
34
37
|
const icon_1 = require("../icon");
|
|
35
38
|
exports.AvatarFileInput = (0, react_1.forwardRef)((props, ref) => {
|
|
36
|
-
var _a, _b;
|
|
39
|
+
var _a, _b, _c, _d, _e, _f;
|
|
37
40
|
const generatedId = (0, react_1.useId)();
|
|
38
41
|
const id = props.id || generatedId;
|
|
39
42
|
const innerRef = (0, react_1.useRef)(null);
|
|
40
43
|
const input = (0, useInputFocus_1.useInputFocus)(innerRef, props.onBlur, props.onFocus);
|
|
41
44
|
const errorId = props.isInvalid && props.id ? `${props.id}--errormessage` : undefined;
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
const stateClassName = (0, cx_1.cx)(((_a = props.isFocused) !== null && _a !== void 0 ? _a : input.focused) && classes_1.CLASSES.IS_FOCUSED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, props.isInvalid && classes_1.CLASSES.IS_INVALID, props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isRequired && classes_1.CLASSES.IS_REQUIRED);
|
|
46
|
+
const rootClassName = (0, cx_1.cx)(`uxf-avatar-file-input uxf-avatar-file-input--variant-${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`, stateClassName, props.className);
|
|
47
|
+
const onSelectFile = () => { var _a; return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.click(); };
|
|
48
|
+
const onRemoveFile = () => {
|
|
49
|
+
props.onChange(null);
|
|
50
|
+
// this ensures that the file input is cleared on remove, so that the same file can be selected again
|
|
51
|
+
const inputNode = innerRef.current;
|
|
52
|
+
if (inputNode) {
|
|
53
|
+
inputNode.value = "";
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return (react_1.default.createElement(form_component_1.FormComponent, { className: rootClassName, errorId: props.id, helperText: props.helperText, hiddenLabel: props.hiddenLabel, inputId: id, label: props.label },
|
|
57
|
+
react_1.default.createElement("div", { className: "uxf-avatar-file-input__inner-wrapper" },
|
|
58
|
+
react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-avatar-file-input__input", stateClassName), onClick: onSelectFile },
|
|
59
|
+
react_1.default.createElement(_file_input_base_1._FileInputBase, { accept: (_c = props.accept) !== null && _c !== void 0 ? _c : "image/*", "aria-describedby": errorId, "aria-invalid": props.isInvalid, className: "uxf-avatar-file-input__input-element", form: props.form, id: id, isDisabled: props.isDisabled, isFocused: props.isFocused, isInvalid: props.isInvalid, isReadOnly: props.isReadOnly, isRequired: props.isRequired, maxFileSize: props.maxFileSize, name: props.name, onBlur: input.onBlur, onFocus: input.onFocus, onChange: props.onChange, onUploadError: props.onUploadError, onUploadFile: props.onUploadFile, ref: (0, composeRefs_1.composeRefs)(innerRef, ref), value: props.value }),
|
|
60
|
+
props.value ? (react_1.default.createElement(avatar_1.Avatar, { className: "uxf-avatar-file-input__input-avatar", src: (0, file_1.getFileUrl)(props.value) })) : (react_1.default.createElement("div", { className: "uxf-avatar-file-input__input-empty" },
|
|
61
|
+
react_1.default.createElement(icon_1.Icon, { className: "uxf-avatar-file-input__input-empty-icon", name: (_d = props.icon) !== null && _d !== void 0 ? _d : "cloud" })))),
|
|
62
|
+
react_1.default.createElement("div", { className: "uxf-avatar-file-input__controls" }, props.customControls ? (props.customControls({
|
|
63
|
+
onSelectFile,
|
|
64
|
+
onRemoveFile,
|
|
65
|
+
})) : (react_1.default.createElement("div", { className: "uxf-avatar-file-input__controls-buttons" },
|
|
66
|
+
react_1.default.createElement(button_1.Button, { className: "uxf-avatar-file-input__controls-button uxf-avatar-file-input__controls-button--select", disabled: props.isDisabled, onClick: onSelectFile, size: "sm", variant: "white" }, (_e = props.selectFileLabel) !== null && _e !== void 0 ? _e : "Upload image"),
|
|
67
|
+
!!props.value && !props.isDisabled && (react_1.default.createElement(button_1.Button, { className: "uxf-avatar-file-input__controls-button uxf-avatar-file-input__controls-button--remove", color: "error", disabled: props.isDisabled, onClick: onRemoveFile, size: "sm", variant: "white" }, (_f = props.removeFileLabel) !== null && _f !== void 0 ? _f : "Remove avatar"))))))));
|
|
52
68
|
});
|
|
53
69
|
exports.AvatarFileInput.displayName = "UxfUiAvatarFileInput";
|
|
@@ -30,11 +30,13 @@ const composeRefs_1 = require("@uxf/core/utils/composeRefs");
|
|
|
30
30
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
31
31
|
const use_day_1 = require("@uxf/datepicker/hooks/use-day");
|
|
32
32
|
const react_1 = __importStar(require("react"));
|
|
33
|
+
const get_class_names_from_flags_1 = require("./utils/get-class-names-from-flags");
|
|
33
34
|
exports.CalendarDayCell = (0, react_1.memo)((props) => {
|
|
34
35
|
const dayCellRef = (0, react_1.useRef)(null);
|
|
35
36
|
const innerRef = (0, react_1.useRef)(null);
|
|
36
|
-
const { disabledDate,
|
|
37
|
+
const { disabledDate, flags, isFirstDisabled, isHovered, isInsideRange, isLastDisabled, isSelected, isToday, isWithinHoverRange, onClick, onKeyDown, onMouseEnter, tabIndex, } = (0, use_day_1.useDay)({
|
|
37
38
|
date: props.day.date,
|
|
39
|
+
datesConfig: props.datePickerProps.datesConfig,
|
|
38
40
|
focusedDate: props.datePickerProps.focusedDate,
|
|
39
41
|
isDateBlocked: props.datePickerProps.isDateBlocked,
|
|
40
42
|
isDateFocused: props.datePickerProps.isDateFocused,
|
|
@@ -46,6 +48,7 @@ exports.CalendarDayCell = (0, react_1.memo)((props) => {
|
|
|
46
48
|
onDateSelect: props.datePickerProps.onDateSelect,
|
|
47
49
|
dayRef: dayCellRef,
|
|
48
50
|
preventScroll: props.datePickerProps.preventScroll,
|
|
51
|
+
unavailableDates: props.datePickerProps.unavailableDates,
|
|
49
52
|
});
|
|
50
53
|
(0, useOnMount_1.useOnMount)(() => {
|
|
51
54
|
const node = innerRef.current;
|
|
@@ -56,7 +59,7 @@ exports.CalendarDayCell = (0, react_1.memo)((props) => {
|
|
|
56
59
|
if (!props.day.dayLabel) {
|
|
57
60
|
return react_1.default.createElement("div", null);
|
|
58
61
|
}
|
|
59
|
-
return (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-calendar__cell uxf-calendar__cell-day", disabledDate && classes_1.CLASSES.IS_DISABLED, isToday && "uxf-calendar__cell--today", isSelected && "uxf-calendar__cell--selected", isInsideRange && "uxf-calendar__cell--inside-range", isWithinHoverRange && "uxf-calendar__cell--is-within-hover-range", isHovered && "uxf-calendar__cell--is-hovered", !props.day.currentMonth && "uxf-calendar__cell--not-current-month"), ref: disabledDate ? undefined : (0, composeRefs_1.composeRefs)(dayCellRef, innerRef), onClick: onClick, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, tabIndex: tabIndex, type: "button" },
|
|
62
|
+
return (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-calendar__cell uxf-calendar__cell-day", isFirstDisabled && props.day.currentMonth && "is-disabled-start", isLastDisabled && props.day.currentMonth && "is-disabled-end", disabledDate && classes_1.CLASSES.IS_DISABLED, isToday && "uxf-calendar__cell--today", isSelected && "uxf-calendar__cell--selected", isInsideRange && "uxf-calendar__cell--inside-range", isWithinHoverRange && "uxf-calendar__cell--is-within-hover-range", isHovered && "uxf-calendar__cell--is-hovered", !props.day.currentMonth && "uxf-calendar__cell--not-current-month", (0, get_class_names_from_flags_1.getClassNamesFromFlags)(flags)), ref: disabledDate ? undefined : (0, composeRefs_1.composeRefs)(dayCellRef, innerRef), onClick: onClick, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, tabIndex: tabIndex, type: "button" },
|
|
60
63
|
react_1.default.createElement("span", { className: "uxf-calendar__cell__inner" }, props.day.dayLabel)));
|
|
61
64
|
});
|
|
62
65
|
exports.CalendarDayCell.displayName = "UxfUiCalendarDayCell";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getClassNamesFromFlags = void 0;
|
|
4
|
+
const getClassNamesFromFlags = (flags) => flags.reduce((acc, curr) => [
|
|
5
|
+
...acc,
|
|
6
|
+
curr.flag,
|
|
7
|
+
...(curr.isFirst ? [`${curr.flag}--first`] : []),
|
|
8
|
+
...(curr.isLast ? [`${curr.flag}--last`] : []),
|
|
9
|
+
], []);
|
|
10
|
+
exports.getClassNamesFromFlags = getClassNamesFromFlags;
|
|
@@ -8,5 +8,6 @@ export interface CheckboxInputProps extends FormControlProps<boolean | undefined
|
|
|
8
8
|
label: ReactNode;
|
|
9
9
|
size?: CheckboxSize;
|
|
10
10
|
style?: CSSProperties;
|
|
11
|
+
helperText?: ReactNode;
|
|
11
12
|
}
|
|
12
13
|
export declare const CheckboxInput: React.ForwardRefExoticComponent<CheckboxInputProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -28,10 +28,15 @@ const react_1 = require("@headlessui/react");
|
|
|
28
28
|
const react_2 = __importStar(require("react"));
|
|
29
29
|
const checkbox_1 = require("../checkbox");
|
|
30
30
|
exports.CheckboxInput = (0, react_2.forwardRef)((props, ref) => {
|
|
31
|
-
var _a;
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const generatedId = (0, react_2.useId)();
|
|
33
|
+
const id = (_a = props.id) !== null && _a !== void 0 ? _a : generatedId;
|
|
34
|
+
const errorId = props.isInvalid ? `${id}--error-message` : undefined;
|
|
32
35
|
return (react_2.default.createElement(react_1.Switch.Group, null,
|
|
33
|
-
react_2.default.createElement("div", { className: `uxf-checkbox-input__wrapper ${(
|
|
36
|
+
react_2.default.createElement("div", { className: `uxf-checkbox-input__wrapper ${(_b = props.className) !== null && _b !== void 0 ? _b : ""}` },
|
|
34
37
|
react_2.default.createElement(react_1.Switch, { as: react_2.Fragment, checked: props.value, name: props.name, onChange: props.onChange }, ({ checked }) => (react_2.default.createElement(checkbox_1.Checkbox, { className: "uxf-checkbox-input", id: props.id, indeterminate: props.indeterminate, isDisabled: props.isDisabled, isFocused: props.isFocused, isInvalid: props.isInvalid, isReadOnly: props.isReadOnly, isRequired: props.isRequired, onChange: props.onChange, ref: ref, size: props.size, style: props.style, value: checked }))),
|
|
35
|
-
react_2.default.createElement(react_1.Switch.Label, { className: "uxf-checkbox-input__label" },
|
|
38
|
+
react_2.default.createElement(react_1.Switch.Label, { className: "uxf-checkbox-input__label" },
|
|
39
|
+
react_2.default.createElement("span", { className: "uxf-checkbox-input__label--text" }, props.label),
|
|
40
|
+
react_2.default.createElement("span", { id: errorId, className: "uxf-checkbox-input__label--subtitle" }, props.helperText)))));
|
|
36
41
|
});
|
|
37
42
|
exports.CheckboxInput.displayName = "UxfUiCheckboxInput";
|
package/combobox/combobox.js
CHANGED
|
@@ -38,11 +38,12 @@ const Combobox = (props) => {
|
|
|
38
38
|
const emptyMessage = query.length === 0
|
|
39
39
|
? (_b = props.noQueryMessage) !== null && _b !== void 0 ? _b : "Pro zobrazení možností začněte psát"
|
|
40
40
|
: (_c = props.notFoundMessage) !== null && _c !== void 0 ? _c : "Nic nenalezeno";
|
|
41
|
+
const clearQuery = () => setQuery("");
|
|
41
42
|
const onChange = (v) => props.onChange(v);
|
|
42
43
|
const onInputChange = (event) => setQuery(event.target.value);
|
|
43
44
|
const displayValue = (item) => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : ""; };
|
|
44
45
|
const selectedOption = (_d = props.value) !== null && _d !== void 0 ? _d : null;
|
|
45
|
-
return (react_2.default.createElement(_select_base_1._SelectBase, { HUIComponent: react_1.Combobox, className: props.className, customInputElementDisplayName: react_1.Combobox.Input.displayName, dropdownClassName: props.dropdownClassName, dropdownMatchesInputWidth: props.dropdownMatchesInputWidth, dropdownPlacement: props.dropdownPlacement, dropdownStrategy: props.dropdownStrategy, emptyMessage: emptyMessage, forwardRef: props.forwardRef, helperText: props.helperText, hiddenLabel: props.hiddenLabel, iconName: props.iconName, id: props.id, isClearable: props.isClearable, isDisabled: props.isDisabled, isFocused: props.isFocused, isInvalid: props.isInvalid, isReadOnly: props.isReadOnly, isRequired: props.isRequired, keyExtractor: props.keyExtractor, label: props.label, leftAddon: props.leftAddon, leftElement: props.leftElement, name: props.name, onBlur: props.onBlur, onChange: onChange, onFocus: props.onFocus, options: filteredData, placeholder: props.placeholder, renderOption: props.renderOption, rightAddon: props.rightAddon, rightElement: props.rightElement, size: props.size, value: selectedOption, variant: props.variant },
|
|
46
|
+
return (react_2.default.createElement(_select_base_1._SelectBase, { HUIComponent: react_1.Combobox, className: props.className, customInputElementDisplayName: react_1.Combobox.Input.displayName, dropdownClassName: props.dropdownClassName, dropdownMatchesInputWidth: props.dropdownMatchesInputWidth, dropdownPlacement: props.dropdownPlacement, dropdownStrategy: props.dropdownStrategy, emptyMessage: emptyMessage, forwardRef: props.forwardRef, helperText: props.helperText, hiddenLabel: props.hiddenLabel, iconName: props.iconName, id: props.id, isClearable: props.isClearable, isDisabled: props.isDisabled, isFocused: props.isFocused, isInvalid: props.isInvalid, isReadOnly: props.isReadOnly, isRequired: props.isRequired, keyExtractor: props.keyExtractor, label: props.label, leftAddon: props.leftAddon, leftElement: props.leftElement, name: props.name, onBlur: props.onBlur, onChange: onChange, onFocus: props.onFocus, onOptionsUnmount: clearQuery, options: filteredData, placeholder: props.placeholder, renderOption: props.renderOption, rightAddon: props.rightAddon, rightElement: props.rightElement, size: props.size, value: selectedOption, variant: props.variant },
|
|
46
47
|
react_2.default.createElement(react_1.Combobox.Input, { autoComplete: "off", className: "uxf-input__element", displayValue: displayValue, onBlur: props.onBlur, onChange: onInputChange, placeholder: props.placeholder, type: "text" })));
|
|
47
48
|
};
|
|
48
49
|
exports.Combobox = Combobox;
|
|
@@ -14,6 +14,7 @@ import * as ColorRadioStories from "@uxf/ui/color-radio/color-radio.stories";
|
|
|
14
14
|
import * as ComboboxStories from "@uxf/ui/combobox/combobox.stories";
|
|
15
15
|
import * as DatePickerInputStories from "@uxf/ui/date-picker-input/date-picker-input.stories";
|
|
16
16
|
import * as DatePickerStories from "@uxf/ui/date-picker/date-picker.stories";
|
|
17
|
+
import * as DateRangePickerInputStories from "@uxf/ui/date-range-picker-input/date-range-picker-input.stories";
|
|
17
18
|
import * as DatetimePickerInputStories from "@uxf/ui/datetime-picker-input/datetime-picker-input.stories";
|
|
18
19
|
import * as DatetimePickerStories from "@uxf/ui/datetime-picker/datetime-picker.stories";
|
|
19
20
|
import * as DropdownStories from "@uxf/ui/dropdown/dropdown.stories";
|
|
@@ -27,6 +28,7 @@ import * as InputStories from "@uxf/ui/input/input.stories";
|
|
|
27
28
|
import * as LabelStories from "@uxf/ui/label/label.stories";
|
|
28
29
|
import * as ListItemStories from "@uxf/ui/list-item/list-item.stories";
|
|
29
30
|
import * as LoaderStories from "@uxf/ui/loader/loader.stories";
|
|
31
|
+
import * as MessageStories from "@uxf/ui/message/message.stories";
|
|
30
32
|
import * as ModalStories from "@uxf/ui/modal/modal.stories";
|
|
31
33
|
import * as MultiComboboxStories from "@uxf/ui/multi-combobox/multi-combobox.stories";
|
|
32
34
|
import * as MultiSelectStories from "@uxf/ui/multi-select/multi-select.stories";
|
|
@@ -45,6 +47,7 @@ import * as TimePickerStories from "@uxf/ui/time-picker/time-picker-input.storie
|
|
|
45
47
|
import * as ToggleStories from "@uxf/ui/toggle/toggle.stories";
|
|
46
48
|
import * as TooltipStories from "@uxf/ui/tooltip/tooltip.stories";
|
|
47
49
|
import * as TypographyStories from "@uxf/ui/typography/typography.stories";
|
|
50
|
+
import * as ImageGalleryStories from "../image-gallery/image-gallery.stories";
|
|
48
51
|
export declare const uiComponents: {
|
|
49
52
|
readonly avatar: {
|
|
50
53
|
readonly title: "Avatar";
|
|
@@ -110,6 +113,10 @@ export declare const uiComponents: {
|
|
|
110
113
|
readonly title: "DatePickerInput";
|
|
111
114
|
readonly stories: typeof DatePickerInputStories;
|
|
112
115
|
};
|
|
116
|
+
readonly "date-range-picker-input": {
|
|
117
|
+
readonly title: "DateRangePickerInput";
|
|
118
|
+
readonly stories: typeof DateRangePickerInputStories;
|
|
119
|
+
};
|
|
113
120
|
readonly "datetime-picker": {
|
|
114
121
|
readonly title: "DatetimePicker";
|
|
115
122
|
readonly stories: typeof DatetimePickerStories;
|
|
@@ -146,6 +153,10 @@ export declare const uiComponents: {
|
|
|
146
153
|
readonly title: "Icon";
|
|
147
154
|
readonly stories: typeof IconStories;
|
|
148
155
|
};
|
|
156
|
+
readonly "image-gallery": {
|
|
157
|
+
readonly title: "ImageGallery";
|
|
158
|
+
readonly stories: typeof ImageGalleryStories;
|
|
159
|
+
};
|
|
149
160
|
readonly input: {
|
|
150
161
|
readonly title: "Input";
|
|
151
162
|
readonly stories: typeof InputStories;
|
|
@@ -162,6 +173,10 @@ export declare const uiComponents: {
|
|
|
162
173
|
readonly title: "Loader";
|
|
163
174
|
readonly stories: typeof LoaderStories;
|
|
164
175
|
};
|
|
176
|
+
readonly message: {
|
|
177
|
+
readonly title: "Message";
|
|
178
|
+
readonly stories: typeof MessageStories;
|
|
179
|
+
};
|
|
165
180
|
readonly modal: {
|
|
166
181
|
readonly title: "Modal";
|
|
167
182
|
readonly stories: typeof ModalStories;
|
|
@@ -40,6 +40,7 @@ const ColorRadioStories = __importStar(require("@uxf/ui/color-radio/color-radio.
|
|
|
40
40
|
const ComboboxStories = __importStar(require("@uxf/ui/combobox/combobox.stories"));
|
|
41
41
|
const DatePickerInputStories = __importStar(require("@uxf/ui/date-picker-input/date-picker-input.stories"));
|
|
42
42
|
const DatePickerStories = __importStar(require("@uxf/ui/date-picker/date-picker.stories"));
|
|
43
|
+
const DateRangePickerInputStories = __importStar(require("@uxf/ui/date-range-picker-input/date-range-picker-input.stories"));
|
|
43
44
|
const DatetimePickerInputStories = __importStar(require("@uxf/ui/datetime-picker-input/datetime-picker-input.stories"));
|
|
44
45
|
const DatetimePickerStories = __importStar(require("@uxf/ui/datetime-picker/datetime-picker.stories"));
|
|
45
46
|
const DropdownStories = __importStar(require("@uxf/ui/dropdown/dropdown.stories"));
|
|
@@ -53,6 +54,7 @@ const InputStories = __importStar(require("@uxf/ui/input/input.stories"));
|
|
|
53
54
|
const LabelStories = __importStar(require("@uxf/ui/label/label.stories"));
|
|
54
55
|
const ListItemStories = __importStar(require("@uxf/ui/list-item/list-item.stories"));
|
|
55
56
|
const LoaderStories = __importStar(require("@uxf/ui/loader/loader.stories"));
|
|
57
|
+
const MessageStories = __importStar(require("@uxf/ui/message/message.stories"));
|
|
56
58
|
const ModalStories = __importStar(require("@uxf/ui/modal/modal.stories"));
|
|
57
59
|
const MultiComboboxStories = __importStar(require("@uxf/ui/multi-combobox/multi-combobox.stories"));
|
|
58
60
|
const MultiSelectStories = __importStar(require("@uxf/ui/multi-select/multi-select.stories"));
|
|
@@ -71,6 +73,7 @@ const TimePickerStories = __importStar(require("@uxf/ui/time-picker/time-picker-
|
|
|
71
73
|
const ToggleStories = __importStar(require("@uxf/ui/toggle/toggle.stories"));
|
|
72
74
|
const TooltipStories = __importStar(require("@uxf/ui/tooltip/tooltip.stories"));
|
|
73
75
|
const TypographyStories = __importStar(require("@uxf/ui/typography/typography.stories"));
|
|
76
|
+
const ImageGalleryStories = __importStar(require("../image-gallery/image-gallery.stories"));
|
|
74
77
|
exports.uiComponents = {
|
|
75
78
|
avatar: {
|
|
76
79
|
title: "Avatar",
|
|
@@ -136,6 +139,10 @@ exports.uiComponents = {
|
|
|
136
139
|
title: "DatePickerInput",
|
|
137
140
|
stories: DatePickerInputStories,
|
|
138
141
|
},
|
|
142
|
+
"date-range-picker-input": {
|
|
143
|
+
title: "DateRangePickerInput",
|
|
144
|
+
stories: DateRangePickerInputStories,
|
|
145
|
+
},
|
|
139
146
|
"datetime-picker": {
|
|
140
147
|
title: "DatetimePicker",
|
|
141
148
|
stories: DatetimePickerStories,
|
|
@@ -172,6 +179,10 @@ exports.uiComponents = {
|
|
|
172
179
|
title: "Icon",
|
|
173
180
|
stories: IconStories,
|
|
174
181
|
},
|
|
182
|
+
"image-gallery": {
|
|
183
|
+
title: "ImageGallery",
|
|
184
|
+
stories: ImageGalleryStories,
|
|
185
|
+
},
|
|
175
186
|
input: {
|
|
176
187
|
title: "Input",
|
|
177
188
|
stories: InputStories,
|
|
@@ -188,6 +199,10 @@ exports.uiComponents = {
|
|
|
188
199
|
title: "Loader",
|
|
189
200
|
stories: LoaderStories,
|
|
190
201
|
},
|
|
202
|
+
message: {
|
|
203
|
+
title: "Message",
|
|
204
|
+
stories: MessageStories,
|
|
205
|
+
},
|
|
191
206
|
modal: {
|
|
192
207
|
title: "Modal",
|
|
193
208
|
stories: ModalStories,
|
|
@@ -20,37 +20,40 @@ const README_md_13 = __importDefault(require("@uxf/ui/color-radio/README.md"));
|
|
|
20
20
|
const README_md_14 = __importDefault(require("@uxf/ui/combobox/README.md"));
|
|
21
21
|
const README_md_15 = __importDefault(require("@uxf/ui/date-picker-input/README.md"));
|
|
22
22
|
const README_md_16 = __importDefault(require("@uxf/ui/date-picker/README.md"));
|
|
23
|
-
const README_md_17 = __importDefault(require("@uxf/ui/
|
|
24
|
-
const README_md_18 = __importDefault(require("@uxf/ui/datetime-picker/README.md"));
|
|
25
|
-
const README_md_19 = __importDefault(require("@uxf/ui/
|
|
26
|
-
const README_md_20 = __importDefault(require("@uxf/ui/
|
|
27
|
-
const README_md_21 = __importDefault(require("@uxf/ui/
|
|
28
|
-
const README_md_22 = __importDefault(require("@uxf/ui/
|
|
29
|
-
const README_md_23 = __importDefault(require("@uxf/ui/
|
|
30
|
-
const README_md_24 = __importDefault(require("@uxf/ui/
|
|
31
|
-
const README_md_25 = __importDefault(require("@uxf/ui/
|
|
32
|
-
const README_md_26 = __importDefault(require("@uxf/ui/
|
|
33
|
-
const README_md_27 = __importDefault(require("@uxf/ui/
|
|
34
|
-
const README_md_28 = __importDefault(require("@uxf/ui/
|
|
35
|
-
const README_md_29 = __importDefault(require("@uxf/ui/
|
|
36
|
-
const README_md_30 = __importDefault(require("@uxf/ui/
|
|
37
|
-
const README_md_31 = __importDefault(require("@uxf/ui/
|
|
38
|
-
const README_md_32 = __importDefault(require("@uxf/ui/
|
|
39
|
-
const README_md_33 = __importDefault(require("@uxf/ui/
|
|
40
|
-
const README_md_34 = __importDefault(require("@uxf/ui/
|
|
41
|
-
const README_md_35 = __importDefault(require("@uxf/ui/
|
|
42
|
-
const README_md_36 = __importDefault(require("@uxf/ui/
|
|
43
|
-
const README_md_37 = __importDefault(require("@uxf/ui/
|
|
44
|
-
const README_md_38 = __importDefault(require("@uxf/ui/
|
|
45
|
-
const README_md_39 = __importDefault(require("@uxf/ui/
|
|
46
|
-
const README_md_40 = __importDefault(require("@uxf/ui/
|
|
47
|
-
const README_md_41 = __importDefault(require("@uxf/ui/
|
|
48
|
-
const README_md_42 = __importDefault(require("@uxf/ui/
|
|
49
|
-
const README_md_43 = __importDefault(require("@uxf/ui/
|
|
50
|
-
const README_md_44 = __importDefault(require("@uxf/ui/
|
|
51
|
-
const README_md_45 = __importDefault(require("@uxf/ui/
|
|
52
|
-
const README_md_46 = __importDefault(require("@uxf/ui/
|
|
53
|
-
const README_md_47 = __importDefault(require("@uxf/ui/
|
|
23
|
+
const README_md_17 = __importDefault(require("@uxf/ui/date-range-picker-input/README.md"));
|
|
24
|
+
const README_md_18 = __importDefault(require("@uxf/ui/datetime-picker-input/README.md"));
|
|
25
|
+
const README_md_19 = __importDefault(require("@uxf/ui/datetime-picker/README.md"));
|
|
26
|
+
const README_md_20 = __importDefault(require("@uxf/ui/dropdown/README.md"));
|
|
27
|
+
const README_md_21 = __importDefault(require("@uxf/ui/dropzone/README.md"));
|
|
28
|
+
const README_md_22 = __importDefault(require("@uxf/ui/error-message/README.md"));
|
|
29
|
+
const README_md_23 = __importDefault(require("@uxf/ui/file-input/README.md"));
|
|
30
|
+
const README_md_24 = __importDefault(require("@uxf/ui/flash-messages/README.md"));
|
|
31
|
+
const README_md_25 = __importDefault(require("@uxf/ui/form-component/README.md"));
|
|
32
|
+
const README_md_26 = __importDefault(require("@uxf/ui/icon/README.md"));
|
|
33
|
+
const README_md_27 = __importDefault(require("@uxf/ui/image-gallery/README.md"));
|
|
34
|
+
const README_md_28 = __importDefault(require("@uxf/ui/input/README.md"));
|
|
35
|
+
const README_md_29 = __importDefault(require("@uxf/ui/label/README.md"));
|
|
36
|
+
const README_md_30 = __importDefault(require("@uxf/ui/list-item/README.md"));
|
|
37
|
+
const README_md_31 = __importDefault(require("@uxf/ui/loader/README.md"));
|
|
38
|
+
const README_md_32 = __importDefault(require("@uxf/ui/message/README.md"));
|
|
39
|
+
const README_md_33 = __importDefault(require("@uxf/ui/modal/README.md"));
|
|
40
|
+
const README_md_34 = __importDefault(require("@uxf/ui/multi-combobox/README.md"));
|
|
41
|
+
const README_md_35 = __importDefault(require("@uxf/ui/multi-select/README.md"));
|
|
42
|
+
const README_md_36 = __importDefault(require("@uxf/ui/pagination/README.md"));
|
|
43
|
+
const README_md_37 = __importDefault(require("@uxf/ui/paper/README.md"));
|
|
44
|
+
const README_md_38 = __importDefault(require("@uxf/ui/radio-group/README.md"));
|
|
45
|
+
const README_md_39 = __importDefault(require("@uxf/ui/radio/README.md"));
|
|
46
|
+
const README_md_40 = __importDefault(require("@uxf/ui/raster-image/README.md"));
|
|
47
|
+
const README_md_41 = __importDefault(require("@uxf/ui/select/README.md"));
|
|
48
|
+
const README_md_42 = __importDefault(require("@uxf/ui/tabs/README.md"));
|
|
49
|
+
const README_md_43 = __importDefault(require("@uxf/ui/text-input/README.md"));
|
|
50
|
+
const README_md_44 = __importDefault(require("@uxf/ui/text-link/README.md"));
|
|
51
|
+
const README_md_45 = __importDefault(require("@uxf/ui/textarea/README.md"));
|
|
52
|
+
const README_md_46 = __importDefault(require("@uxf/ui/time-picker-input/README.md"));
|
|
53
|
+
const README_md_47 = __importDefault(require("@uxf/ui/time-picker/README.md"));
|
|
54
|
+
const README_md_48 = __importDefault(require("@uxf/ui/toggle/README.md"));
|
|
55
|
+
const README_md_49 = __importDefault(require("@uxf/ui/tooltip/README.md"));
|
|
56
|
+
const README_md_50 = __importDefault(require("@uxf/ui/typography/README.md"));
|
|
54
57
|
exports.uiReadmes = {
|
|
55
58
|
avatar: README_md_2.default,
|
|
56
59
|
"avatar-file-input": README_md_1.default,
|
|
@@ -68,35 +71,38 @@ exports.uiReadmes = {
|
|
|
68
71
|
combobox: README_md_14.default,
|
|
69
72
|
"date-picker": README_md_16.default,
|
|
70
73
|
"date-picker-input": README_md_15.default,
|
|
71
|
-
"
|
|
72
|
-
"datetime-picker
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
74
|
+
"date-range-picker-input": README_md_17.default,
|
|
75
|
+
"datetime-picker": README_md_19.default,
|
|
76
|
+
"datetime-picker-input": README_md_18.default,
|
|
77
|
+
dropdown: README_md_20.default,
|
|
78
|
+
dropzone: README_md_21.default,
|
|
79
|
+
"error-message": README_md_22.default,
|
|
80
|
+
"file-input": README_md_23.default,
|
|
81
|
+
"flash-messages": README_md_24.default,
|
|
82
|
+
"form-component": README_md_25.default,
|
|
83
|
+
icon: README_md_26.default,
|
|
84
|
+
"image-gallery": README_md_27.default,
|
|
85
|
+
input: README_md_28.default,
|
|
86
|
+
label: README_md_29.default,
|
|
87
|
+
"list-item": README_md_30.default,
|
|
88
|
+
loader: README_md_31.default,
|
|
89
|
+
message: README_md_32.default,
|
|
90
|
+
modal: README_md_33.default,
|
|
91
|
+
"multi-combobox": README_md_34.default,
|
|
92
|
+
"multi-select": README_md_35.default,
|
|
93
|
+
pagination: README_md_36.default,
|
|
94
|
+
paper: README_md_37.default,
|
|
95
|
+
radio: README_md_39.default,
|
|
96
|
+
"radio-group": README_md_38.default,
|
|
97
|
+
"raster-image": README_md_40.default,
|
|
98
|
+
select: README_md_41.default,
|
|
99
|
+
tabs: README_md_42.default,
|
|
100
|
+
"text-input": README_md_43.default,
|
|
101
|
+
"text-link": README_md_44.default,
|
|
102
|
+
textarea: README_md_45.default,
|
|
103
|
+
"time-picker": README_md_47.default,
|
|
104
|
+
"time-picker-input": README_md_46.default,
|
|
105
|
+
toggle: README_md_48.default,
|
|
106
|
+
tooltip: README_md_49.default,
|
|
107
|
+
typography: README_md_50.default,
|
|
102
108
|
};
|