@uxf/ui 11.32.0 → 11.33.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.
@@ -5,14 +5,12 @@ import { NextLink } from "./next-link";
5
5
  export type ButtonVariant = keyof ButtonVariants;
6
6
  export type ButtonSize = keyof ButtonSizes;
7
7
  export type ButtonColor = keyof ButtonColors;
8
- export interface ButtonProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type">, Omit<UseAnchorProps, "disabled" | "loading"> {
8
+ export interface ButtonProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type">, UseAnchorProps {
9
9
  as?: NextLink | "a";
10
10
  color?: ButtonColor;
11
11
  isFullWidth?: boolean;
12
12
  isIconButton?: boolean;
13
13
  size?: ButtonSize;
14
14
  variant?: ButtonVariant;
15
- isLoading?: boolean;
16
- isDisabled?: boolean;
17
15
  }
18
16
  export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLAnchorElement>>;
package/button/button.js CHANGED
@@ -33,8 +33,8 @@ exports.Button = (0, react_1.forwardRef)((props, ref) => {
33
33
  const Component = as;
34
34
  const anchorProps = (0, use_anchor_props_1.useAnchorProps)({
35
35
  ...restProps,
36
- disabled: isDisabled,
37
- loading: isLoading,
36
+ isDisabled,
37
+ isLoading,
38
38
  className: (0, cx_1.cx)("uxf-button", `uxf-button--color-${color !== null && color !== void 0 ? color : "default"}`, `uxf-button--size-${size !== null && size !== void 0 ? size : "default"}`, `uxf-button--variant-${variant !== null && variant !== void 0 ? variant : "default"}`, isDisabled && "uxf-button--is-disabled", isLoading && "uxf-button--is-loading", isIconButton && "uxf-button--icon-button", isFullWidth && "uxf-button--full-width", className),
39
39
  });
40
40
  return (react_1.default.createElement(Component, { ref: ref, ...anchorProps }, typeof props.children === "string" ? (react_1.default.createElement("span", { className: "uxf-button__text" }, props.children)) : (props.children)));
@@ -29,7 +29,10 @@ const button_1 = require("@uxf/ui/button");
29
29
  const icon_1 = require("@uxf/ui/icon");
30
30
  const storybook_config_1 = require("@uxf/ui/utils/storybook-config");
31
31
  const react_1 = __importStar(require("react"));
32
+ const toggle_1 = require("../toggle");
32
33
  function Basic() {
34
+ const [isDisabled, setIsDisabled] = (0, react_1.useState)(false);
35
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
33
36
  const config = (0, storybook_config_1.useStorybookConfig)("Button");
34
37
  // eslint-disable-next-line no-console
35
38
  const onClick = console.log;
@@ -37,7 +40,9 @@ function Basic() {
37
40
  const gridTemplateColumns = `repeat(${gridColumnsCount}, 180px)`;
38
41
  return (react_1.default.createElement("div", { className: "p-4" },
39
42
  react_1.default.createElement("div", { className: "grid gap-3 p-4", style: { gridTemplateColumns } },
40
- react_1.default.createElement("div", null),
43
+ react_1.default.createElement("div", null,
44
+ react_1.default.createElement(toggle_1.Toggle, { className: "p-0", label: "Disabled", name: "is-disabled", onChange: (value) => setIsDisabled(Boolean(value)), size: "sm", value: isDisabled }),
45
+ react_1.default.createElement(toggle_1.Toggle, { className: "p-0 pt-2", label: "Loading", name: "is-loading", onChange: (value) => setIsLoading(Boolean(value)), size: "sm", value: isLoading })),
41
46
  config.variants.map((variant) => (react_1.default.createElement("div", { className: "border-b border-blue-500 pb-2 text-center text-xs text-gray-400", key: variant, style: { gridColumn: "span 4" } },
42
47
  "variant=",
43
48
  variant))),
@@ -51,8 +56,8 @@ function Basic() {
51
56
  "color=",
52
57
  color),
53
58
  config.variants.map((variant) => (react_1.default.createElement(react_1.Fragment, { key: variant }, config.sizes.map((size) => (react_1.default.createElement("div", { className: "flex items-center justify-center gap-2", key: `${size}${color}${variant}` },
54
- react_1.default.createElement(button_1.Button, { color: color, onClick: onClick, size: size, variant: variant }, "Button"),
55
- react_1.default.createElement(button_1.Button, { color: color, isIconButton: true, onClick: onClick, size: size, variant: variant },
59
+ react_1.default.createElement(button_1.Button, { color: color, isDisabled: isDisabled, isLoading: isLoading, onClick: onClick, size: size, variant: variant }, "Button"),
60
+ react_1.default.createElement(button_1.Button, { color: color, isDisabled: isDisabled, isIconButton: true, isLoading: isLoading, onClick: onClick, size: size, variant: variant },
56
61
  react_1.default.createElement(icon_1.Icon, { name: "triangle-exclamation" }))))))))))))));
57
62
  }
58
63
  function Default() {
@@ -9,6 +9,7 @@ export type SingleButtonProps = Omit<ButtonProps, "children"> & {
9
9
  export interface ButtonListProps {
10
10
  buttons: SingleButtonProps[];
11
11
  className?: string;
12
+ classNameDropdown?: string;
12
13
  openButton?: SingleButtonProps;
13
14
  visibleButtonsCount: number;
14
15
  color?: ButtonProps["color"];
@@ -39,7 +39,7 @@ const MenuButton = (0, react_3.forwardRef)((props, ref) => {
39
39
  const { variant, color, isIconButton, isFullWidth, size, icon, label, className, ...restProps } = props;
40
40
  const anchorProps = (0, use_anchor_props_1.useAnchorProps)({
41
41
  ...restProps,
42
- className: (0, cx_1.cx)("uxf-button-list__menu-button", className),
42
+ className: (0, cx_1.cx)("uxf-button-list__menu-button", `uxf-button-list__menu-button--variant-${variant}`, className),
43
43
  });
44
44
  return (react_3.default.createElement("a", { ref: ref, ...anchorProps },
45
45
  icon && react_3.default.createElement(icon_1.Icon, { className: "uxf-button-list__menu-button-icon", name: icon }),
@@ -73,9 +73,9 @@ const ButtonList = (props) => {
73
73
  openButtonIcon && (react_3.default.createElement(icon_1.Icon, { className: "uxf-button-list__open-button-icon", name: openButtonIcon })),
74
74
  openButtonLabel && (react_3.default.createElement("span", { className: "uxf-button-list__open-button-label" }, openButtonLabel))),
75
75
  open && (react_3.default.createElement(react_1.FloatingPortal, null,
76
- react_3.default.createElement(react_2.Menu.Items, { className: "uxf-button-list__menu-items", ref: dropdown.refs.setFloating, style: dropdown.floatingStyles }, restButtons.map((button, index) => {
76
+ react_3.default.createElement(react_2.Menu.Items, { className: (0, cx_1.cx)("uxf-button-list__menu-items", props.classNameDropdown), ref: dropdown.refs.setFloating, style: dropdown.floatingStyles }, restButtons.map((button, index) => {
77
77
  var _a, _b, _c;
78
- return (react_3.default.createElement(react_2.Menu.Item, { key: index },
78
+ return (react_3.default.createElement(react_2.Menu.Item, { disabled: button.isDisabled, key: index },
79
79
  react_3.default.createElement(MenuButton, { ...button, color: (_a = button.color) !== null && _a !== void 0 ? _a : props.color, size: (_b = button.size) !== null && _b !== void 0 ? _b : props.size, variant: (_c = button.variant) !== null && _c !== void 0 ? _c : props.variant })));
80
80
  }))))));
81
81
  }))));
@@ -24,7 +24,7 @@
24
24
  }
25
25
 
26
26
  &__menu-button {
27
- @apply is-hoverable:hover:cursor-pointer flex space-x-3 px-3 py-2 text-sm text-black hover:text-gray-800;
27
+ @apply is-hoverable:cursor-pointer flex space-x-3 px-3 py-2 text-sm text-black hover:text-gray-800;
28
28
 
29
29
  :root .dark & {
30
30
  @apply text-white hover:text-gray-200;
package/css/colors.css CHANGED
@@ -5,6 +5,7 @@
5
5
  --uxf-color-base-border-border: #e5e7eb;
6
6
  --uxf-color-base-surface-main: #fff;
7
7
  --uxf-color-base-surface-main-hover: #f3f4f6;
8
+ --uxf-color-base-surface-background: #f9fafb;
8
9
  --uxf-color-base-surface-input-disabled: #f3f4f6;
9
10
  --uxf-color-base-surface-disabled: #d2d6db;
10
11
  --uxf-color-base-surface-inverted-main: #ffffff14;
@@ -50,8 +51,10 @@
50
51
  /** base */
51
52
  --uxf-color-base-border-inverted: #3842501f;
52
53
  --uxf-color-base-border-input: #384250;
54
+ --uxf-color-base-border-border: #e5e7eb1f;
53
55
  --uxf-color-base-surface-main: #111927;
54
56
  --uxf-color-base-surface-main-hover: #1f2a37;
57
+ --uxf-color-base-surface-background: #1f2a37;
55
58
  --uxf-color-base-surface-input-disabled: #4d5761;
56
59
  --uxf-color-base-surface-disabled: #d2d6db;
57
60
  --uxf-color-base-surface-inverted-main: #20293914;
@@ -84,6 +87,8 @@
84
87
  --uxf-color-warning-border: #dc6803;
85
88
  --uxf-color-warning-surface-default: #fdb022;
86
89
  --uxf-color-warning-surface-default-hover: #fec84b;
90
+ --uxf-color-warning-surface-muted: #93370c;
91
+ --uxf-color-warning-icon-on-muted: #fec84b;
87
92
 
88
93
  /** info */
89
94
  --uxf-color-info-text: #b3b8db;
package/css/dialog.css CHANGED
@@ -61,6 +61,7 @@
61
61
 
62
62
  .uxf-dialog__panel {
63
63
  @screen sm {
64
+ border-left: theme("borderWidth.DEFAULT") solid var(--uxf-color-base-border-border);
64
65
  border-radius: 0;
65
66
  }
66
67
  }
@@ -1,18 +1,18 @@
1
1
  :root {
2
2
  /** modal header variables */
3
- --uxf-modal-header-background-color: var(--uxf-color-base-surface-main);
4
- --uxf-modal-header-border-color: var(--uxf-color-base-border-border);
5
3
  --uxf-modal-header-border-width: theme("borderWidth.DEFAULT");
6
4
  --uxf-modal-header-description-font-size: theme("fontSize.caption");
7
5
  --uxf-modal-header-description-font-weight: theme("fontWeight.normal");
8
- --uxf-modal-header-description-text-color: var(--uxf-color-base-text-low-emphasis);
9
6
  --uxf-modal-header-title-font-size: 18px;
10
7
  --uxf-modal-header-title-font-weight: theme("fontWeight.semibold");
11
8
  --uxf-modal-header-title-line-height: 1.3333;
12
- --uxf-modal-header-title-text-color: var(--uxf-color-base-text-high-emphasis);
13
9
  }
14
10
 
15
11
  .uxf-modal-header {
12
+ --uxf-modal-header-background-color: var(--uxf-color-base-surface-main);
13
+ --uxf-modal-header-border-color: var(--uxf-color-base-border-border);
14
+ --uxf-modal-header-description-text-color: var(--uxf-color-base-text-low-emphasis);
15
+ --uxf-modal-header-title-text-color: var(--uxf-color-base-text-high-emphasis);
16
16
  --uxf-icon-color: var(--uxf-modal-header-title-text-color);
17
17
 
18
18
  background-color: var(--uxf-modal-header-background-color);
@@ -3,10 +3,10 @@ import { CSSProperties, FC, PropsWithChildren, ReactNode } from "react";
3
3
  import { DateRangePickerValueType } from "./types";
4
4
  export interface DateRangePickerProps {
5
5
  bottomContent?: ReactNode;
6
- closePopoverHandler: () => void;
7
6
  datesConfig?: DatesConfig[];
8
7
  numberOfMonths?: number;
9
8
  onChange: (data: DateRangePickerValueType) => void;
9
+ onClosePopover: () => void;
10
10
  selectedDates: DateRangePickerValueType;
11
11
  style?: CSSProperties;
12
12
  /** @deprecated */
@@ -24,6 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Default = Default;
27
+ const noop_1 = require("@uxf/core/utils/noop");
27
28
  const react_1 = __importStar(require("react"));
28
29
  const action_1 = require("../utils/action");
29
30
  const date_range_picker_1 = require("./date-range-picker");
@@ -34,6 +35,6 @@ exports.default = {
34
35
  function Default() {
35
36
  const [value, setValue] = (0, react_1.useState)(null);
36
37
  const onChange = (0, action_1.action)("onChange", setValue);
37
- const testDatePickers = react_1.default.createElement(date_range_picker_1.DateRangePicker, { closePopoverHandler: close, onChange: onChange, selectedDates: value });
38
+ const testDatePickers = react_1.default.createElement(date_range_picker_1.DateRangePicker, { onChange: onChange, onClosePopover: noop_1.noop, selectedDates: value });
38
39
  return react_1.default.createElement("div", { className: "max-w-screen-sm space-y-4 rounded p-8" }, testDatePickers);
39
40
  }
@@ -57,6 +57,6 @@ exports.DateRangePickerInput = (0, react_1.forwardRef)((props, ref) => {
57
57
  const selectedDates = props.value
58
58
  ? { from: parsedFrom.isValid() ? parsedFrom.toDate() : null, to: parsedTo.isValid() ? parsedTo.toDate() : null }
59
59
  : null;
60
- return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...restProps, placeholder: props.placeholder || "Vyberte datum...", ref: ref, triggerElement: (_a = props.triggerElement) !== null && _a !== void 0 ? _a : react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 20 }), value: (_b = props.value) !== null && _b !== void 0 ? _b : "" }, ({ close }) => (react_1.default.createElement(date_range_picker_1.DateRangePicker, { bottomContent: props.bottomContent, closePopoverHandler: close, datesConfig: props.datesConfig, numberOfMonths: numberOfMonths, onChange: onDatePickerChange, selectedDates: selectedDates, style: props.style, unavailableDates: props.unavailableDates }))));
60
+ return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...restProps, placeholder: props.placeholder || "Vyberte datum...", ref: ref, triggerElement: (_a = props.triggerElement) !== null && _a !== void 0 ? _a : react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 20 }), value: (_b = props.value) !== null && _b !== void 0 ? _b : "" }, ({ close }) => (react_1.default.createElement(date_range_picker_1.DateRangePicker, { bottomContent: props.bottomContent, datesConfig: props.datesConfig, numberOfMonths: numberOfMonths, onChange: onDatePickerChange, onClosePopover: close, selectedDates: selectedDates, style: props.style, unavailableDates: props.unavailableDates }))));
61
61
  });
62
62
  exports.DateRangePickerInput.displayName = "UxfUiDatePickerInput";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "11.32.0",
3
+ "version": "11.33.0",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -18,7 +18,7 @@
18
18
  "@floating-ui/react": "0.26.23",
19
19
  "@headlessui/react": "1.7.14",
20
20
  "@uxf/core": "11.32.0",
21
- "@uxf/core-react": "11.32.0",
21
+ "@uxf/core-react": "11.33.0",
22
22
  "@uxf/datepicker": "11.32.0",
23
23
  "@uxf/styles": "11.32.0",
24
24
  "color2k": "2.0.3",
@@ -1,7 +1,7 @@
1
1
  import { OnTimeChangeType, TimeType } from "@uxf/datepicker/hooks/use-time-picker";
2
2
  import { FC } from "react";
3
3
  export interface TimePickerProps {
4
- closePopoverHandler?: () => void;
4
+ onClosePopover?: () => void;
5
5
  onChange: (data: OnTimeChangeType) => void;
6
6
  preventScroll?: boolean;
7
7
  selectedTime: TimeType | null;
@@ -24,6 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Default = Default;
27
+ const noop_1 = require("@uxf/core/utils/noop");
27
28
  const react_1 = __importStar(require("react"));
28
29
  const action_1 = require("../utils/action");
29
30
  const time_picker_1 = require("./time-picker");
@@ -34,7 +35,6 @@ exports.default = {
34
35
  function Default() {
35
36
  const [value, setValue] = (0, react_1.useState)(null);
36
37
  const onChange = (0, action_1.action)("onChange", setValue);
37
- const onClose = () => null;
38
- const testTimePickers = react_1.default.createElement(time_picker_1.TimePicker, { closePopoverHandler: onClose, onChange: onChange, selectedTime: value });
38
+ const testTimePickers = react_1.default.createElement(time_picker_1.TimePicker, { onChange: onChange, onClosePopover: noop_1.noop, selectedTime: value });
39
39
  return react_1.default.createElement("div", { className: "max-w-screen-sm space-y-4 rounded p-8" }, testTimePickers);
40
40
  }
@@ -77,6 +77,6 @@ exports.TimePickerInput = (0, react_1.forwardRef)((props, ref) => {
77
77
  }, [onChange]);
78
78
  const value = getValue(props.value);
79
79
  const selectedTime = getSelectedTime(props.value);
80
- return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...props, className: className, onChange: onInputChange, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : (0, dayjs_1.default)().format(exports.DISPLAY_TIME_FORMAT), ref: ref, triggerElement: (_b = props.triggerElement) !== null && _b !== void 0 ? _b : react_1.default.createElement(icon_1.Icon, { name: "clock", size: 20 }), value: value }, ({ close }) => (0, is_not_nil_1.isNotNil)(props.CustomTimePicker) ? (react_1.default.createElement(props.CustomTimePicker, { onChange: props.onChange, onClose: close, value: (0, is_time_string_1.isTimeString)(props.value) ? props.value : null })) : (react_1.default.createElement(time_picker_1.TimePicker, { closePopoverHandler: close, onChange: onTimePickerChange, preventScroll: true, selectedTime: selectedTime }))));
80
+ return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...props, className: className, onChange: onInputChange, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : (0, dayjs_1.default)().format(exports.DISPLAY_TIME_FORMAT), ref: ref, triggerElement: (_b = props.triggerElement) !== null && _b !== void 0 ? _b : react_1.default.createElement(icon_1.Icon, { name: "clock", size: 20 }), value: value }, ({ close }) => (0, is_not_nil_1.isNotNil)(props.CustomTimePicker) ? (react_1.default.createElement(props.CustomTimePicker, { onChange: props.onChange, onClose: close, value: (0, is_time_string_1.isTimeString)(props.value) ? props.value : null })) : (react_1.default.createElement(time_picker_1.TimePicker, { onChange: onTimePickerChange, onClosePopover: close, preventScroll: true, selectedTime: selectedTime }))));
81
81
  });
82
82
  exports.TimePickerInput.displayName = "UxfUiTimePickerInput";