@uxf/ui 1.0.0-beta.4 → 1.0.0-beta.41

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 (188) hide show
  1. package/avatar-file-input/avatar-file-input.d.ts +32 -0
  2. package/avatar-file-input/avatar-file-input.js +69 -0
  3. package/avatar-file-input/avatar-file-input.stories.d.ts +7 -0
  4. package/avatar-file-input/avatar-file-input.stories.js +30 -0
  5. package/avatar-file-input/index.d.ts +1 -0
  6. package/avatar-file-input/index.js +8 -0
  7. package/button/button.d.ts +13 -13
  8. package/button/button.js +15 -12
  9. package/button/button.stories.d.ts +7 -0
  10. package/button/button.stories.js +52 -0
  11. package/button/index.d.ts +1 -1
  12. package/button/index.js +1 -2
  13. package/button/theme.d.ts +7 -4
  14. package/button/theme.js +0 -1
  15. package/checkbox/checkbox.d.ts +12 -0
  16. package/checkbox/checkbox.js +23 -0
  17. package/checkbox/checkbox.stories.d.ts +8 -0
  18. package/checkbox/checkbox.stories.js +40 -0
  19. package/checkbox/index.d.ts +1 -0
  20. package/checkbox/index.js +8 -0
  21. package/checkbox-input/checkbox-input.d.ts +3 -0
  22. package/checkbox-input/checkbox-input.js +10 -0
  23. package/checkbox-input/checkbox-input.stories.d.ts +8 -0
  24. package/checkbox-input/checkbox-input.stories.js +17 -0
  25. package/checkbox-input/index.d.ts +1 -0
  26. package/checkbox-input/index.js +8 -0
  27. package/combobox/combobox.d.ts +21 -0
  28. package/combobox/combobox.js +57 -0
  29. package/combobox/combobox.stories.d.ts +9 -0
  30. package/combobox/combobox.stories.js +63 -0
  31. package/combobox/index.d.ts +1 -0
  32. package/combobox/index.js +8 -0
  33. package/dropdown/dropdown.d.ts +10 -0
  34. package/dropdown/dropdown.js +27 -0
  35. package/dropdown/index.d.ts +1 -0
  36. package/dropdown/index.js +5 -0
  37. package/error-message/error-message.d.ts +7 -0
  38. package/error-message/error-message.js +10 -0
  39. package/error-message/error-message.stories.d.ts +8 -0
  40. package/error-message/error-message.stories.js +17 -0
  41. package/error-message/index.d.ts +1 -0
  42. package/error-message/index.js +8 -0
  43. package/form-control/form-control.d.ts +13 -0
  44. package/form-control/form-control.js +19 -0
  45. package/form-control/form-control.stories.d.ts +13 -0
  46. package/form-control/form-control.stories.js +23 -0
  47. package/form-control/index.d.ts +1 -0
  48. package/{theme → form-control}/index.js +1 -3
  49. package/hooks/use-dropdown.d.ts +7 -0
  50. package/hooks/use-dropdown.js +37 -0
  51. package/hooks/use-fix-android-on-focus.d.ts +2 -0
  52. package/hooks/use-fix-android-on-focus.js +31 -0
  53. package/hooks/use-input-submit.d.ts +4 -0
  54. package/hooks/use-input-submit.js +44 -0
  55. package/hooks/use-latest.d.ts +2 -0
  56. package/hooks/use-latest.js +12 -0
  57. package/icon/camera-icon.d.ts +3 -0
  58. package/icon/camera-icon.js +11 -0
  59. package/icon/chevron-down-icon.d.ts +3 -0
  60. package/icon/chevron-down-icon.js +11 -0
  61. package/icon/chevron-up-icon.d.ts +3 -0
  62. package/icon/chevron-up-icon.js +11 -0
  63. package/icon/icon.d.ts +17 -0
  64. package/icon/icon.js +25 -0
  65. package/icon/icon.stories.d.ts +7 -0
  66. package/icon/icon.stories.js +70 -0
  67. package/icon/index.d.ts +5 -0
  68. package/icon/index.js +16 -0
  69. package/icon/pin-icon.d.ts +3 -0
  70. package/icon/pin-icon.js +11 -0
  71. package/icon/theme.d.ts +3 -0
  72. package/icon/theme.js +2 -0
  73. package/image-gallery/components/close-button.d.ts +6 -0
  74. package/image-gallery/components/close-button.js +12 -0
  75. package/image-gallery/components/dot.d.ts +6 -0
  76. package/image-gallery/components/dot.js +12 -0
  77. package/image-gallery/components/gallery.d.ts +11 -0
  78. package/image-gallery/components/gallery.js +71 -0
  79. package/image-gallery/components/icon-chevron-left.d.ts +3 -0
  80. package/image-gallery/components/icon-chevron-left.js +11 -0
  81. package/image-gallery/components/icon-chevron-right.d.ts +3 -0
  82. package/image-gallery/components/icon-chevron-right.js +11 -0
  83. package/image-gallery/components/icon-close.d.ts +3 -0
  84. package/image-gallery/components/icon-close.js +11 -0
  85. package/image-gallery/components/next-button.d.ts +6 -0
  86. package/image-gallery/components/next-button.js +12 -0
  87. package/image-gallery/components/previous-button.d.ts +6 -0
  88. package/image-gallery/components/previous-button.js +12 -0
  89. package/image-gallery/context.d.ts +10 -0
  90. package/image-gallery/context.js +12 -0
  91. package/image-gallery/image-gallery.d.ts +6 -0
  92. package/image-gallery/image-gallery.js +55 -0
  93. package/image-gallery/image-gallery.stories.d.ts +13 -0
  94. package/image-gallery/image-gallery.stories.js +26 -0
  95. package/image-gallery/image.d.ts +4 -0
  96. package/image-gallery/image.js +14 -0
  97. package/image-gallery/index.d.ts +4 -0
  98. package/image-gallery/index.js +26 -0
  99. package/image-gallery/types.d.ts +7 -0
  100. package/image-gallery/types.js +2 -0
  101. package/image-gallery/use-image.d.ts +2 -0
  102. package/image-gallery/use-image.js +16 -0
  103. package/input/index.d.ts +13 -0
  104. package/input/index.js +19 -0
  105. package/input/input-element.d.ts +11 -0
  106. package/input/input-element.js +11 -0
  107. package/input/input-left-addon.d.ts +6 -0
  108. package/input/input-left-addon.js +10 -0
  109. package/input/input-left-element.d.ts +6 -0
  110. package/input/input-left-element.js +10 -0
  111. package/input/input-right-addon.d.ts +6 -0
  112. package/input/input-right-addon.js +10 -0
  113. package/input/input-right-element.d.ts +6 -0
  114. package/input/input-right-element.js +10 -0
  115. package/input/input.d.ts +8 -0
  116. package/input/input.js +63 -0
  117. package/input/input.stories.d.ts +14 -0
  118. package/input/input.stories.js +71 -0
  119. package/input/theme.d.ts +6 -0
  120. package/input/theme.js +2 -0
  121. package/label/index.d.ts +1 -0
  122. package/label/index.js +8 -0
  123. package/label/label.d.ts +11 -0
  124. package/label/label.js +13 -0
  125. package/label/label.stories.d.ts +7 -0
  126. package/label/label.stories.js +17 -0
  127. package/package.json +16 -34
  128. package/radio/index.d.ts +1 -0
  129. package/radio/index.js +8 -0
  130. package/radio/radio.d.ts +5 -0
  131. package/radio/radio.js +14 -0
  132. package/radio/radio.stories.d.ts +7 -0
  133. package/radio/radio.stories.js +28 -0
  134. package/radio-group/index.d.ts +1 -0
  135. package/radio-group/index.js +8 -0
  136. package/radio-group/radio-group.d.ts +25 -0
  137. package/radio-group/radio-group.js +45 -0
  138. package/radio-group/radio-group.stories.d.ts +7 -0
  139. package/radio-group/radio-group.stories.js +52 -0
  140. package/raster-image/index.d.ts +1 -0
  141. package/raster-image/index.js +8 -0
  142. package/raster-image/raster-image.d.ts +16 -0
  143. package/raster-image/raster-image.js +19 -0
  144. package/raster-image/raster-image.stories.d.ts +8 -0
  145. package/raster-image/raster-image.stories.js +17 -0
  146. package/select/index.d.ts +1 -0
  147. package/select/index.js +8 -0
  148. package/select/select.d.ts +20 -0
  149. package/select/select.js +57 -0
  150. package/select/select.stories.d.ts +9 -0
  151. package/select/select.stories.js +67 -0
  152. package/text-input/index.d.ts +1 -0
  153. package/text-input/index.js +17 -0
  154. package/text-input/text-input.d.ts +23 -0
  155. package/text-input/text-input.js +57 -0
  156. package/text-input/text-input.stories.d.ts +9 -0
  157. package/text-input/text-input.stories.js +51 -0
  158. package/textarea/index.d.ts +1 -0
  159. package/textarea/index.js +8 -0
  160. package/textarea/textarea.d.ts +26 -0
  161. package/textarea/textarea.js +75 -0
  162. package/textarea/textarea.stories.d.ts +7 -0
  163. package/textarea/textarea.stories.js +32 -0
  164. package/types/form-control-props.d.ts +24 -0
  165. package/types/form-control-props.js +2 -0
  166. package/types/index.d.ts +1 -0
  167. package/types/index.js +17 -0
  168. package/utils/action.d.ts +2 -0
  169. package/utils/action.js +11 -0
  170. package/utils/component-structure-analyzer.d.ts +6 -0
  171. package/utils/component-structure-analyzer.js +10 -0
  172. package/utils/cx.d.ts +3 -0
  173. package/utils/cx.js +54 -0
  174. package/utils/forwardRef.d.ts +12 -0
  175. package/utils/forwardRef.js +10 -0
  176. package/utils/image.d.ts +9 -0
  177. package/utils/image.js +30 -0
  178. package/utils/rem.d.ts +1 -0
  179. package/utils/rem.js +5 -0
  180. package/utils/storybook-config.d.ts +19 -0
  181. package/utils/storybook-config.js +47 -0
  182. package/theme/index.d.ts +0 -2
  183. package/theme/theme-context.d.ts +0 -10
  184. package/theme/theme-context.js +0 -59
  185. package/theme/theme.d.ts +0 -14
  186. package/theme/theme.js +0 -3
  187. package/types.d.ts +0 -3
  188. package/types.js +0 -3
package/input/input.js ADDED
@@ -0,0 +1,63 @@
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.Input = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const cx_1 = require("@uxf/core/utils/cx");
29
+ const classes_1 = require("@uxf/core/constants/classes");
30
+ function getChildrenById(children, componentName) {
31
+ return react_1.Children.toArray(children)
32
+ .filter(react_1.isValidElement)
33
+ .find((ch) => ch.type.displayName === componentName);
34
+ }
35
+ function Input(props) {
36
+ const inputWrapperRef = (0, react_1.useRef)(null);
37
+ const inputRef = (0, react_1.useRef)(null);
38
+ const [focused, setFocused] = (0, react_1.useState)(false);
39
+ const mainInput = getChildrenById(props.children, "InputElement");
40
+ const leftAddon = getChildrenById(props.children, "InputLeftAddon");
41
+ const rightAddon = getChildrenById(props.children, "InputRightAddon");
42
+ const leftElement = getChildrenById(props.children, "InputLeftElement");
43
+ const rightElement = getChildrenById(props.children, "InputRightElement");
44
+ const inputGroupClasses = (0, cx_1.cx)("uxf-input", leftAddon && "uxf-input--has-left-addon", leftElement && "uxf-input--has-left-element", rightElement && "uxf-input--has-right-element", rightAddon && "uxf-input--has-right-addon", focused && classes_1.CLASSES.IS_FOCUSED, (mainInput === null || mainInput === void 0 ? void 0 : mainInput.props.isInvalid) && classes_1.CLASSES.IS_INVALID, (mainInput === null || mainInput === void 0 ? void 0 : mainInput.props.isDisabled) && classes_1.CLASSES.IS_DISABLED, (mainInput === null || mainInput === void 0 ? void 0 : mainInput.props.isReadOnly) && classes_1.CLASSES.IS_READONLY);
45
+ const onFocus = (e) => {
46
+ var _a, _b;
47
+ setFocused(true);
48
+ (_b = mainInput === null || mainInput === void 0 ? void 0 : (_a = mainInput.props).onFocus) === null || _b === void 0 ? void 0 : _b.call(_a, e);
49
+ };
50
+ const onBlur = (e) => {
51
+ var _a, _b;
52
+ setFocused(false);
53
+ (_b = mainInput === null || mainInput === void 0 ? void 0 : (_a = mainInput.props).onBlur) === null || _b === void 0 ? void 0 : _b.call(_a, e);
54
+ };
55
+ return (react_1.default.createElement("div", { className: inputGroupClasses },
56
+ leftAddon,
57
+ react_1.default.createElement("div", { className: "uxf-input__wrapper", ref: inputWrapperRef, onClick: () => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); } },
58
+ leftElement,
59
+ mainInput ? (0, react_1.cloneElement)(mainInput, { ref: inputRef, onFocus, onBlur }) : null,
60
+ rightElement),
61
+ rightAddon));
62
+ }
63
+ exports.Input = Input;
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: typeof import("./input").Input & {
5
+ Element: React.ForwardRefExoticComponent<import("./input-element").InputElementProps & React.RefAttributes<HTMLInputElement>>;
6
+ LeftElement: typeof import("./input-left-element").default;
7
+ RightElement: typeof import("./input-right-element").default;
8
+ LeftAddon: typeof import("./input-left-addon").default;
9
+ RightAddon: typeof import("./input-right-addon").default;
10
+ };
11
+ };
12
+ export default _default;
13
+ export declare function Default(): JSX.Element;
14
+ export declare function ComponentStructure(): JSX.Element;
@@ -0,0 +1,71 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ComponentStructure = exports.Default = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const component_structure_analyzer_1 = __importDefault(require("@uxf/ui/utils/component-structure-analyzer"));
32
+ const action_1 = require("@uxf/ui/utils/action");
33
+ const input_1 = require("@uxf/ui/input");
34
+ exports.default = {
35
+ title: "UI/Input",
36
+ component: input_1.Input,
37
+ };
38
+ function Default() {
39
+ const [value, onChange] = (0, react_1.useState)("");
40
+ const [isInvalid, setInvalid] = (0, react_1.useState)(false);
41
+ return (react_1.default.createElement("div", { className: "space-y-2" },
42
+ react_1.default.createElement("input", { type: "checkbox", checked: isInvalid, onChange: (e) => setInvalid(e.target.checked) }),
43
+ react_1.default.createElement(input_1.Input, null,
44
+ react_1.default.createElement(input_1.Input.LeftAddon, null, "InputLeftAddon"),
45
+ react_1.default.createElement(input_1.Input.LeftElement, null, "InputLeftElement"),
46
+ react_1.default.createElement(input_1.Input.Element, { value: value, onChange: (0, action_1.action)("onChange", onChange), placeholder: "Placeholder", isInvalid: isInvalid }),
47
+ react_1.default.createElement(input_1.Input.RightElement, null, "InputRightElement"),
48
+ react_1.default.createElement(input_1.Input.RightAddon, null, "InputRightAddon")),
49
+ react_1.default.createElement(input_1.Input, null,
50
+ react_1.default.createElement(input_1.Input.LeftAddon, null, "https://"),
51
+ react_1.default.createElement(input_1.Input.Element, { value: value, onChange: (0, action_1.action)("onChange", onChange), placeholder: "Placeholder", isInvalid: isInvalid }),
52
+ react_1.default.createElement(input_1.Input.RightAddon, null, ".uxf.cz")),
53
+ react_1.default.createElement(input_1.Input, null,
54
+ react_1.default.createElement(input_1.Input.LeftElement, null, "\uD83C\uDF37"),
55
+ react_1.default.createElement(input_1.Input.Element, { value: value, onChange: (0, action_1.action)("onChange", onChange), placeholder: "Placeholder", isInvalid: isInvalid }),
56
+ react_1.default.createElement(input_1.Input.RightElement, null, "\uD83D\uDD14")),
57
+ react_1.default.createElement(input_1.Input, null,
58
+ react_1.default.createElement(input_1.Input.Element, { value: value, onChange: (0, action_1.action)("onChange", onChange), placeholder: "Placeholder", isInvalid: isInvalid }))));
59
+ }
60
+ exports.Default = Default;
61
+ function ComponentStructure() {
62
+ const [value, onChange] = (0, react_1.useState)("");
63
+ return (react_1.default.createElement(component_structure_analyzer_1.default, null,
64
+ react_1.default.createElement(input_1.Input, null,
65
+ react_1.default.createElement(input_1.Input.LeftAddon, null, "Left addon"),
66
+ react_1.default.createElement(input_1.Input.LeftElement, null, "Left element"),
67
+ react_1.default.createElement(input_1.Input.Element, { value: value, onChange: onChange }),
68
+ react_1.default.createElement(input_1.Input.RightElement, null, "Right element"),
69
+ react_1.default.createElement(input_1.Input.RightAddon, null, "Right addon"))));
70
+ }
71
+ exports.ComponentStructure = ComponentStructure;
@@ -0,0 +1,6 @@
1
+ export interface InputGroupVariants {
2
+ default: true;
3
+ }
4
+ export interface InputGroupSizes {
5
+ default: true;
6
+ }
package/input/theme.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export { default as Label } from "./label";
package/label/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Label = void 0;
7
+ var label_1 = require("./label");
8
+ Object.defineProperty(exports, "Label", { enumerable: true, get: function () { return __importDefault(label_1).default; } });
@@ -0,0 +1,11 @@
1
+ import React, { MouseEventHandler, ReactNode } from "react";
2
+ export interface LabelProps {
3
+ children?: ReactNode;
4
+ className?: string;
5
+ htmlFor?: string;
6
+ form?: string;
7
+ onClick?: MouseEventHandler<HTMLLabelElement>;
8
+ isRequired?: boolean;
9
+ }
10
+ declare const _default: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
11
+ export default _default;
package/label/label.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const forwardRef_1 = require("@uxf/ui/utils/forwardRef");
7
+ const react_1 = __importDefault(require("react"));
8
+ const cx_1 = require("@uxf/core/utils/cx");
9
+ function Label(props, ref) {
10
+ const className = (0, cx_1.cx)("uxf-label", props.isRequired && "is-required", props.className);
11
+ return (react_1.default.createElement("label", { className: className, ref: ref, htmlFor: props.htmlFor, form: props.form, onClick: props.onClick }, props.children));
12
+ }
13
+ exports.default = (0, forwardRef_1.forwardRef)("Label", Label);
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: React.ForwardRefExoticComponent<import("./label").LabelProps & React.RefAttributes<HTMLLabelElement>>;
5
+ };
6
+ export default _default;
7
+ export declare function Default(): JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Default = void 0;
7
+ const index_1 = require("./index");
8
+ const react_1 = __importDefault(require("react"));
9
+ exports.default = {
10
+ title: "UI/Label",
11
+ component: index_1.Label,
12
+ };
13
+ function Default() {
14
+ return (react_1.default.createElement("div", { className: "space-y-2" },
15
+ react_1.default.createElement(index_1.Label, null, "Label")));
16
+ }
17
+ exports.Default = Default;
package/package.json CHANGED
@@ -1,44 +1,26 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "1.0.0-beta.4",
4
- "description": "UXF UI components",
5
- "main": "index.js",
3
+ "version": "1.0.0-beta.41",
4
+ "description": "",
6
5
  "publishConfig": {
7
6
  "access": "public"
8
7
  },
9
8
  "scripts": {
10
- "test": "echo \"Error: no test specified\" && exit 1",
11
- "dev": "concurrently \"tailwindcss -i ./global.css -o ./.storybook/generated.css --watch\" \"start-storybook -p 6006\" ",
12
- "build": "npm run-script clean && npm run-script compile",
13
- "clean": "rm -rf ./dist",
14
- "compile": "tsc -P tsconfig.build.json",
15
- "typecheck": "tsc --noEmit --skipLibCheck"
16
- },
17
- "author": "",
18
- "license": "ISC",
19
- "devDependencies": {
20
- "@babel/core": "^7.18.9",
21
- "@storybook/addon-actions": "^6.5.9",
22
- "@storybook/addon-essentials": "^6.5.9",
23
- "@storybook/addon-interactions": "^6.5.9",
24
- "@storybook/addon-links": "^6.5.9",
25
- "@storybook/builder-webpack4": "^6.5.9",
26
- "@storybook/manager-webpack4": "^6.5.9",
27
- "@storybook/react": "^6.5.9",
28
- "@storybook/testing-library": "^0.0.13",
29
- "@types/react": "^18.0.15",
30
- "autoprefixer": "^10.4.8",
31
- "babel-loader": "^8.2.5",
32
- "concurrently": "^7.3.0",
33
- "postcss": "^8.4.14",
34
- "postcss-nesting": "^10.1.10",
35
- "prettier": "^2.7.1",
36
- "react": "^17.0.2",
37
- "react-dom": "^17.0.2",
38
- "tailwindcss": "^3.1.6",
39
- "typescript": "^4.7.4"
9
+ "build": "npm run compile",
10
+ "compile": "tsc -P tsconfig.json",
11
+ "typecheck": "../../node_modules/.bin/tsc --noEmit --skipLibCheck"
40
12
  },
13
+ "author": "UX Fans s.r.o",
14
+ "license": "MIT",
41
15
  "dependencies": {
42
- "@uxf/core": "^2.2.4"
16
+ "@floating-ui/react-dom": "^0.6.0",
17
+ "@headlessui/react": "^1.6.6",
18
+ "@uxf/core": "^2.2.5",
19
+ "jump.js": "^1.0.2",
20
+ "ua-parser-js": "^1.0.2"
21
+ },
22
+ "devDependencies": {
23
+ "@types/jump.js": "^1.0.4",
24
+ "@types/ua-parser-js": "^0.7.36"
43
25
  }
44
26
  }
@@ -0,0 +1 @@
1
+ export { default as Radio } from "./radio";
package/radio/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Radio = void 0;
7
+ var radio_1 = require("./radio");
8
+ Object.defineProperty(exports, "Radio", { enumerable: true, get: function () { return __importDefault(radio_1).default; } });
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { FormControlProps } from "../types";
3
+ export declare type RadioProps = FormControlProps<boolean>;
4
+ declare const _default: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLDivElement>>;
5
+ export default _default;
package/radio/radio.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const classes_1 = require("@uxf/core/constants/classes");
7
+ const cx_1 = require("@uxf/core/utils/cx");
8
+ const react_1 = __importDefault(require("react"));
9
+ const forwardRef_1 = require("../utils/forwardRef");
10
+ function Radio(props, ref) {
11
+ return (react_1.default.createElement("div", { ref: ref, className: (0, cx_1.cx)("uxf-radio", props.value && classes_1.CLASSES.IS_SELECTED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, props.isInvalid && classes_1.CLASSES.IS_INVALID, props.isReadOnly && classes_1.CLASSES.IS_READONLY), onClick: () => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, !props.value); } },
12
+ react_1.default.createElement("div", { className: "uxf-radio__inner" })));
13
+ }
14
+ exports.default = (0, forwardRef_1.forwardRef)("Radio", Radio);
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: React.ForwardRefExoticComponent<import("./radio").RadioProps & React.RefAttributes<HTMLDivElement>>;
5
+ };
6
+ export default _default;
7
+ export declare function Default(): JSX.Element;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Default = void 0;
7
+ const index_1 = require("./index");
8
+ const react_1 = __importDefault(require("react"));
9
+ exports.default = {
10
+ title: "UI/Radio",
11
+ component: index_1.Radio,
12
+ };
13
+ function Default() {
14
+ return (react_1.default.createElement("div", null,
15
+ react_1.default.createElement("div", { className: "mt-4 mb-2 font-semibold" }, "Default"),
16
+ react_1.default.createElement("div", { className: "flex flex-row gap-4" },
17
+ react_1.default.createElement(index_1.Radio, { value: false }),
18
+ react_1.default.createElement(index_1.Radio, { value: true })),
19
+ react_1.default.createElement("div", { className: "mt-4 mb-2 font-semibold" }, "Invalid"),
20
+ react_1.default.createElement("div", { className: "flex flex-row gap-4" },
21
+ react_1.default.createElement(index_1.Radio, { value: false, isInvalid: true }),
22
+ react_1.default.createElement(index_1.Radio, { value: true, isInvalid: true })),
23
+ react_1.default.createElement("div", { className: "mt-4 mb-2 font-semibold" }, "Disabled"),
24
+ react_1.default.createElement("div", { className: "flex flex-row gap-4" },
25
+ react_1.default.createElement(index_1.Radio, { value: false, isDisabled: true }),
26
+ react_1.default.createElement(index_1.Radio, { value: true, isDisabled: true }))));
27
+ }
28
+ exports.Default = Default;
@@ -0,0 +1 @@
1
+ export { default as RadioGroup } from "./radio-group";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RadioGroup = void 0;
7
+ var radio_group_1 = require("./radio-group");
8
+ Object.defineProperty(exports, "RadioGroup", { enumerable: true, get: function () { return __importDefault(radio_group_1).default; } });
@@ -0,0 +1,25 @@
1
+ import React, { CSSProperties, FocusEventHandler } from "react";
2
+ export declare type RadioGroupOptionValue = string | number;
3
+ export interface RadioGroupOption {
4
+ disabled?: boolean;
5
+ label: string;
6
+ value: RadioGroupOptionValue;
7
+ }
8
+ export interface RadioGroupProps {
9
+ className?: string;
10
+ disabled?: boolean;
11
+ error?: string;
12
+ forceColumn?: boolean;
13
+ hiddenLabel?: boolean;
14
+ id: string;
15
+ invalid?: boolean;
16
+ label: string;
17
+ onBlur?: FocusEventHandler<HTMLDivElement>;
18
+ onChange: (value: RadioGroupOptionValue) => void;
19
+ onFocus?: FocusEventHandler<HTMLDivElement>;
20
+ options: RadioGroupOption[];
21
+ style?: CSSProperties;
22
+ value?: RadioGroupOptionValue | null;
23
+ }
24
+ declare const _default: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default _default;
@@ -0,0 +1,45 @@
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
+ const react_1 = __importStar(require("react"));
27
+ const forwardRef_1 = require("../utils/forwardRef");
28
+ const react_2 = require("@headlessui/react");
29
+ const composeRefs_1 = require("@uxf/core/utils/composeRefs");
30
+ const label_1 = require("../label");
31
+ const radio_1 = require("../radio");
32
+ const error_message_1 = require("../error-message");
33
+ const use_input_submit_1 = require("../hooks/use-input-submit");
34
+ function RadioGroup(props, ref) {
35
+ // eslint-disable-next-line react/destructuring-assignment
36
+ const { className, disabled, error, forceColumn, hiddenLabel, id, invalid, label, onBlur, onChange, onFocus, options, style, value, } = props;
37
+ const innerRef = (0, react_1.useRef)(null);
38
+ (0, use_input_submit_1.useInputSubmit)(innerRef, "radio-group", disabled);
39
+ const errorId = invalid ? `${id}--errormessage` : undefined;
40
+ return (react_1.default.createElement(react_2.RadioGroup, { className: `_form-field ${className || ""}`, disabled: disabled, id: id, value: value, onChange: onChange, style: style },
41
+ !hiddenLabel && (react_1.default.createElement(react_2.RadioGroup.Label, { as: label_1.Label, className: "mb-2" }, label)),
42
+ react_1.default.createElement("div", { className: `flex ${forceColumn ? "flex-col" : "flex-wrap items-center"} focus-visible:ring-gray-dark outline-none focus-visible:ring-2`, onBlur: onBlur, onFocus: onFocus, ref: (0, composeRefs_1.composeRefs)(innerRef, ref), tabIndex: disabled ? -1 : 0 }, options.map((option) => (react_1.default.createElement(react_2.RadioGroup.Option, { as: react_1.Fragment, disabled: option.disabled, key: option.value.toString(), value: option.value }, (o) => react_1.default.createElement(radio_1.Radio, { value: o.checked, isDisabled: disabled || o.disabled, isInvalid: invalid }))))),
43
+ invalid && error && react_1.default.createElement(error_message_1.ErrorMessage, { id: errorId }, error)));
44
+ }
45
+ exports.default = (0, forwardRef_1.forwardRef)("RadioGroup", RadioGroup);
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: React.ForwardRefExoticComponent<import("./radio-group").RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
5
+ };
6
+ export default _default;
7
+ export declare function Default(): JSX.Element;
@@ -0,0 +1,52 @@
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.Default = void 0;
27
+ const index_1 = require("./index");
28
+ const react_1 = __importStar(require("react"));
29
+ exports.default = {
30
+ title: "UI/RadioGroup",
31
+ component: index_1.RadioGroup,
32
+ };
33
+ const options = [
34
+ {
35
+ value: "1",
36
+ label: "Radio one",
37
+ },
38
+ {
39
+ value: "2",
40
+ label: "Radio two",
41
+ },
42
+ {
43
+ value: "3",
44
+ label: "Radio three",
45
+ },
46
+ ];
47
+ function Default() {
48
+ const [value, setValue] = (0, react_1.useState)(options[0].value);
49
+ return (react_1.default.createElement("div", { className: "space-y-2" },
50
+ react_1.default.createElement(index_1.RadioGroup, { id: "radiogroup", options: options, label: "Radio group", value: value, onChange: setValue })));
51
+ }
52
+ exports.Default = Default;
@@ -0,0 +1 @@
1
+ export { default as RasterImage } from "./raster-image";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RasterImage = void 0;
7
+ var raster_image_1 = require("./raster-image");
8
+ Object.defineProperty(exports, "RasterImage", { enumerable: true, get: function () { return __importDefault(raster_image_1).default; } });
@@ -0,0 +1,16 @@
1
+ import { ImgHTMLAttributes } from "react";
2
+ import { FileResponse } from "../utils/image";
3
+ declare type ImgProps = ImgHTMLAttributes<HTMLImageElement>;
4
+ interface Props {
5
+ alt: string;
6
+ className?: string;
7
+ height: number;
8
+ imgClassName?: string;
9
+ loading?: ImgProps["loading"];
10
+ mode?: "contain" | "cover" | "responsive";
11
+ role?: ImgProps["role"];
12
+ src?: FileResponse | null;
13
+ width: number;
14
+ }
15
+ declare function RasterImage(props: Props): JSX.Element;
16
+ export default RasterImage;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const cx_1 = require("@uxf/core/utils/cx");
8
+ const image_1 = require("../utils/image");
9
+ const resizer_1 = require("@uxf/core/utils/resizer");
10
+ function RasterImage(props) {
11
+ var _a, _b;
12
+ // eslint-disable-next-line react/destructuring-assignment
13
+ const { alt, className, height, imgClassName, loading = "lazy", mode = "responsive", src, width, ...restProps } = props;
14
+ const Element = src ? "picture" : "div";
15
+ return (react_1.default.createElement(Element, { className: `uxf-raster-image ${className || ""}` }, src ? (react_1.default.createElement(react_1.default.Fragment, null,
16
+ (0, image_1.getImgSources)(src, width, height),
17
+ react_1.default.createElement("img", { alt: alt, className: (0, cx_1.cx)("uxf-raster-image__img", mode === "contain" && "uxf-raster-image__img--contain", mode === "cover" && "uxf-raster-image__img--cover", imgClassName), loading: loading, src: (_a = (0, resizer_1.resizerImageUrl)(src, width, height, {})) !== null && _a !== void 0 ? _a : undefined, srcSet: (_b = (0, image_1.getImgSrcSet)(src, width, height)) !== null && _b !== void 0 ? _b : undefined, ...restProps }))) : null));
18
+ }
19
+ exports.default = RasterImage;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { RasterImage } from "./index";
3
+ declare const _default: {
4
+ title: string;
5
+ component: typeof RasterImage;
6
+ };
7
+ export default _default;
8
+ export declare function Default(): JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Default = void 0;
7
+ const index_1 = require("./index");
8
+ const react_1 = __importDefault(require("react"));
9
+ exports.default = {
10
+ title: "UI/RasterImage",
11
+ component: index_1.RasterImage,
12
+ };
13
+ function Default() {
14
+ return (react_1.default.createElement("div", { className: "space-y-2" },
15
+ react_1.default.createElement(index_1.RasterImage, { alt: "Alt text", height: 100, width: 300, mode: "cover" })));
16
+ }
17
+ exports.Default = Default;
@@ -0,0 +1 @@
1
+ export { default as Select, SelectProps } from "./select";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Select = void 0;
7
+ var select_1 = require("./select");
8
+ Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return __importDefault(select_1).default; } });
@@ -0,0 +1,20 @@
1
+ import React, { ReactNode } from "react";
2
+ import { FormControlProps } from "../types";
3
+ export declare type SelectValue = number | string;
4
+ export declare type SelectOption<T = SelectValue> = {
5
+ id: T;
6
+ label: ReactNode;
7
+ disabled?: boolean;
8
+ };
9
+ export interface SelectProps<Value = SelectValue, Option = SelectOption<Value>> extends FormControlProps<Value | null> {
10
+ id?: string;
11
+ className?: string;
12
+ helperText?: ReactNode;
13
+ label?: ReactNode;
14
+ placeholder?: ReactNode;
15
+ options: Option[];
16
+ keyExtractor?: (option: Option) => string | number;
17
+ renderOption?: (option: Option) => ReactNode;
18
+ }
19
+ declare const _default: React.ForwardRefExoticComponent<SelectProps<SelectValue, SelectOption<SelectValue>> & React.RefAttributes<HTMLDivElement>>;
20
+ export default _default;