react-better-html 1.1.38 → 1.1.39
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/dist/components/FormRow.d.ts +20 -0
- package/dist/components/FormRow.js +26 -0
- package/dist/components/Modal.js +22 -2
- package/dist/components/PageHeader.d.ts +16 -0
- package/dist/components/PageHeader.js +18 -0
- package/dist/components/Text.d.ts +2 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +5 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IconName } from "../types/icon";
|
|
2
|
+
import { AnyOtherString } from "../types/app";
|
|
3
|
+
import { ComponentMarginProps, ComponentPropWithRef } from "../types/components";
|
|
4
|
+
type FormRowProps = {
|
|
5
|
+
gap?: React.CSSProperties["gap"];
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
} & ComponentMarginProps;
|
|
8
|
+
type FormRowComponentType = {
|
|
9
|
+
(props: ComponentPropWithRef<HTMLDivElement, FormRowProps>): React.ReactElement;
|
|
10
|
+
withTitle: (props: ComponentPropWithRef<HTMLDivElement, FormRowProps & {
|
|
11
|
+
icon?: IconName | AnyOtherString;
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
}>) => React.ReactElement;
|
|
15
|
+
};
|
|
16
|
+
declare const FormRowComponent: FormRowComponentType;
|
|
17
|
+
declare const FormRow: typeof FormRowComponent & {
|
|
18
|
+
withTitle: typeof FormRowComponent.withTitle;
|
|
19
|
+
};
|
|
20
|
+
export default FormRow;
|
|
@@ -0,0 +1,26 @@
|
|
|
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 jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const hooks_1 = require("../utils/hooks");
|
|
9
|
+
const Div_1 = __importDefault(require("./Div"));
|
|
10
|
+
const Icon_1 = __importDefault(require("./Icon"));
|
|
11
|
+
const Text_1 = __importDefault(require("./Text"));
|
|
12
|
+
const BetterHtmlProvider_1 = require("./BetterHtmlProvider");
|
|
13
|
+
const FormRowComponent = (0, react_1.forwardRef)(function FormRow({ gap, children, ...props }, ref) {
|
|
14
|
+
const theme = (0, BetterHtmlProvider_1.useTheme)();
|
|
15
|
+
const mediaQuery = (0, hooks_1.useMediaQuery)();
|
|
16
|
+
const breakingPoint = mediaQuery.size900;
|
|
17
|
+
const readyGap = breakingPoint ? theme.styles.gap : theme.styles.space * 2;
|
|
18
|
+
return ((0, jsx_runtime_1.jsx)(Div_1.default.row, { alignItems: "center", gap: gap ?? readyGap, invertFlexDirection: breakingPoint, ...props, ref: ref, children: children }));
|
|
19
|
+
});
|
|
20
|
+
FormRowComponent.withTitle = (0, react_1.forwardRef)(function WithTitle({ icon, title, description, children, ...props }, ref) {
|
|
21
|
+
const theme = (0, BetterHtmlProvider_1.useTheme)();
|
|
22
|
+
return ((0, jsx_runtime_1.jsxs)(FormRowComponent, { ...props, ref: ref, children: [(0, jsx_runtime_1.jsxs)(Div_1.default.row, { width: "100%", alignItems: "center", gap: theme.styles.space, children: [icon && (0, jsx_runtime_1.jsx)(Icon_1.default, { name: icon }), (0, jsx_runtime_1.jsxs)(Div_1.default.column, { flex: 1, gap: theme.styles.gap / 2, children: [(0, jsx_runtime_1.jsx)(Text_1.default, { as: "h3", children: title }), description && (0, jsx_runtime_1.jsx)(Text_1.default, { color: theme.colors.textSecondary, children: description })] })] }), (0, jsx_runtime_1.jsx)(Div_1.default, { width: "100%", children: children })] }));
|
|
23
|
+
});
|
|
24
|
+
const FormRow = (0, react_1.memo)(FormRowComponent);
|
|
25
|
+
FormRow.withTitle = FormRowComponent.withTitle;
|
|
26
|
+
exports.default = FormRow;
|
package/dist/components/Modal.js
CHANGED
|
@@ -90,11 +90,31 @@ const ModalComponent = (0, react_1.forwardRef)(function Modal({ maxWidth, title,
|
|
|
90
90
|
});
|
|
91
91
|
ModalComponent.confirmation = (0, react_1.forwardRef)(function Confirmation({ continueButtonLoaderName, onContinue, onCancel, ...props }, ref) {
|
|
92
92
|
const theme = (0, BetterHtmlProvider_1.useTheme)();
|
|
93
|
-
|
|
93
|
+
const modalRef = (0, react_1.useRef)(null);
|
|
94
|
+
const onCancelElement = (0, react_1.useCallback)(() => {
|
|
95
|
+
onCancel?.();
|
|
96
|
+
modalRef.current?.close();
|
|
97
|
+
}, [onCancel]);
|
|
98
|
+
const onContinueElement = (0, react_1.useCallback)(() => {
|
|
99
|
+
onContinue?.();
|
|
100
|
+
modalRef.current?.close();
|
|
101
|
+
}, [onContinue]);
|
|
102
|
+
(0, react_1.useImperativeHandle)(ref, () => modalRef.current, []);
|
|
103
|
+
return ((0, jsx_runtime_1.jsxs)(Modal, { title: "Are you sure?", maxWidth: 660, ...props, ref: modalRef, children: [(0, jsx_runtime_1.jsx)(Text_1.default, { color: theme.colors.textSecondary, children: "Do you really want to continue? This action may be irreversible." }), (0, jsx_runtime_1.jsxs)(Div_1.default.row, { alignItems: "center", justifyContent: "flex-end", gap: theme.styles.gap, marginTop: theme.styles.space * 2, children: [(0, jsx_runtime_1.jsx)(Button_1.default.secondary, { text: "Cancel", onClick: onCancelElement }), (0, jsx_runtime_1.jsx)(Button_1.default, { text: "Continue", loaderName: continueButtonLoaderName, onClick: onContinueElement })] })] }));
|
|
94
104
|
});
|
|
95
105
|
ModalComponent.destructive = (0, react_1.forwardRef)(function Destructive({ deleteButtonLoaderName, onDelete, onCancel, ...props }, ref) {
|
|
96
106
|
const theme = (0, BetterHtmlProvider_1.useTheme)();
|
|
97
|
-
|
|
107
|
+
const modalRef = (0, react_1.useRef)(null);
|
|
108
|
+
const onCancelElement = (0, react_1.useCallback)(() => {
|
|
109
|
+
onCancel?.();
|
|
110
|
+
modalRef.current?.close();
|
|
111
|
+
}, [onCancel]);
|
|
112
|
+
const onDeleteElement = (0, react_1.useCallback)(() => {
|
|
113
|
+
onDelete?.();
|
|
114
|
+
modalRef.current?.close();
|
|
115
|
+
}, [onDelete]);
|
|
116
|
+
(0, react_1.useImperativeHandle)(ref, () => modalRef.current, []);
|
|
117
|
+
return ((0, jsx_runtime_1.jsxs)(Modal, { title: "Are you sure?", maxWidth: 660, ...props, ref: modalRef, children: [(0, jsx_runtime_1.jsx)(Text_1.default, { color: theme.colors.textSecondary, children: "Do you really want to continue with the deleting of the item? This action may be irreversible." }), (0, jsx_runtime_1.jsxs)(Div_1.default.row, { alignItems: "center", justifyContent: "flex-end", gap: theme.styles.gap, marginTop: theme.styles.space * 2, children: [(0, jsx_runtime_1.jsx)(Button_1.default.secondary, { text: "Cancel", onClick: onCancelElement }), (0, jsx_runtime_1.jsx)(Button_1.default.destructive, { icon: "trash", text: "Delete", loaderName: deleteButtonLoaderName, onClick: onDeleteElement })] })] }));
|
|
98
118
|
});
|
|
99
119
|
const Modal = (0, react_1.memo)(ModalComponent);
|
|
100
120
|
Modal.confirmation = ModalComponent.confirmation;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ComponentMarginProps } from "../types/components";
|
|
3
|
+
import { TextAs } from "./Text";
|
|
4
|
+
type PageHeaderProps = {
|
|
5
|
+
imageUrl?: string;
|
|
6
|
+
imageSize?: number;
|
|
7
|
+
title?: string;
|
|
8
|
+
titleAs?: TextAs;
|
|
9
|
+
description?: string;
|
|
10
|
+
textAlign?: React.CSSProperties["textAlign"];
|
|
11
|
+
rightElement?: React.ReactNode;
|
|
12
|
+
lightMode?: boolean;
|
|
13
|
+
} & Pick<ComponentMarginProps, "marginBottom">;
|
|
14
|
+
declare function PageHeader({ imageUrl, imageSize, title, titleAs, description, textAlign, rightElement, lightMode, marginBottom, }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
declare const _default: React.MemoExoticComponent<typeof PageHeader>;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
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 jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const hooks_1 = require("../utils/hooks");
|
|
9
|
+
const Div_1 = __importDefault(require("./Div"));
|
|
10
|
+
const Text_1 = __importDefault(require("./Text"));
|
|
11
|
+
const Image_1 = __importDefault(require("./Image"));
|
|
12
|
+
const BetterHtmlProvider_1 = require("./BetterHtmlProvider");
|
|
13
|
+
function PageHeader({ imageUrl, imageSize = 60, title, titleAs, description, textAlign, rightElement, lightMode, marginBottom, }) {
|
|
14
|
+
const theme = (0, BetterHtmlProvider_1.useTheme)();
|
|
15
|
+
const mediaQuery = (0, hooks_1.useMediaQuery)();
|
|
16
|
+
return ((0, jsx_runtime_1.jsxs)(Div_1.default.row, { alignItems: "center", gap: theme.styles.space, marginBottom: marginBottom ?? theme.styles.space * 2, children: [imageUrl && (0, jsx_runtime_1.jsx)(Image_1.default.profileImage, { src: imageUrl, size: imageSize ?? (mediaQuery.size600 ? 46 : 60) }), (0, jsx_runtime_1.jsxs)(Div_1.default.column, { flex: 1, gap: theme.styles.gap / 2, children: [(0, jsx_runtime_1.jsx)(Text_1.default, { as: titleAs ?? "h1", textAlign: textAlign, color: lightMode ? theme.colors.base : theme.colors.textPrimary, children: title }), (0, jsx_runtime_1.jsx)(Text_1.default, { textAlign: textAlign, color: lightMode ? theme.colors.base : theme.colors.textSecondary, opacity: lightMode ? 0.7 : undefined, children: description })] }), rightElement] }));
|
|
17
|
+
}
|
|
18
|
+
exports.default = (0, react_1.memo)(PageHeader);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from "../types/components";
|
|
2
2
|
import { OmitProps } from "../types/app";
|
|
3
|
+
export type TextAs = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "label";
|
|
3
4
|
export type TextProps = {
|
|
4
5
|
/** @default "p" */
|
|
5
|
-
as?:
|
|
6
|
+
as?: TextAs;
|
|
6
7
|
} & OmitProps<React.ComponentProps<"p">, "style"> & ComponentStyle & ComponentHoverStyle;
|
|
7
8
|
type TextComponentType = {
|
|
8
9
|
(props: ComponentPropWithRef<HTMLParagraphElement, TextProps>): React.ReactElement;
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,14 @@ import Button from "./components/Button";
|
|
|
7
7
|
import Divider from "./components/Divider";
|
|
8
8
|
import Modal, { type ModalRef } from "./components/Modal";
|
|
9
9
|
import PageHolder from "./components/PageHolder";
|
|
10
|
+
import PageHeader from "./components/PageHeader";
|
|
10
11
|
import Chip from "./components/Chip";
|
|
11
12
|
import InputField from "./components/InputField";
|
|
12
13
|
import Dropdown, { type DropdownOption } from "./components/Dropdown";
|
|
13
14
|
import ToggleInput from "./components/ToggleInput";
|
|
14
15
|
import Form from "./components/Form";
|
|
15
16
|
import Label from "./components/Label";
|
|
17
|
+
import FormRow from "./components/FormRow";
|
|
16
18
|
import BetterHtmlProvider, { useBetterHtmlContext, useTheme, useLoader, useLoaderControls } from "./components/BetterHtmlProvider";
|
|
17
19
|
import { usePageResize, useMediaQuery, useBooleanState, useDebounceState, useForm, useUrlQuery } from "./utils/hooks";
|
|
18
20
|
import { generateRandomString, getBrowser, formatPhoneNumber } from "./utils/functions";
|
|
@@ -25,4 +27,4 @@ import { type PluginName, type BetterHtmlPlugin } from "./types/plugin";
|
|
|
25
27
|
import { type Color, type ColorName, type ColorTheme, type Colors, type Styles, type Theme, type ThemeConfig } from "./types/theme";
|
|
26
28
|
import { isMobileDevice } from "./constants";
|
|
27
29
|
export * from "./plugins";
|
|
28
|
-
export { BetterHtmlProvider, Div, Text, Loader, Icon, Image, Button, Divider, Modal, ModalRef, PageHolder, Chip, InputField, Dropdown, DropdownOption, ToggleInput, Form, Label, useBetterHtmlContext, useTheme, useLoader, useLoaderControls, usePageResize, useMediaQuery, useBooleanState, useDebounceState, useForm, useUrlQuery, generateRandomString, getBrowser, formatPhoneNumber, OmitProps, ExcludeOptions, PickValue, PartialRecord, DeepPartialRecord, PickAllRequired, AppConfig, BetterHtmlConfig, AssetName, AssetsConfig, IconName, IconsConfig, LoaderName, PluginName, BetterHtmlPlugin, LoaderConfig, Color, ColorName, ColorTheme, Colors, Styles, Theme, ThemeConfig, isMobileDevice, };
|
|
30
|
+
export { BetterHtmlProvider, Div, Text, Loader, Icon, Image, Button, Divider, Modal, ModalRef, PageHolder, PageHeader, Chip, InputField, Dropdown, DropdownOption, ToggleInput, Form, Label, FormRow, useBetterHtmlContext, useTheme, useLoader, useLoaderControls, usePageResize, useMediaQuery, useBooleanState, useDebounceState, useForm, useUrlQuery, generateRandomString, getBrowser, formatPhoneNumber, OmitProps, ExcludeOptions, PickValue, PartialRecord, DeepPartialRecord, PickAllRequired, AppConfig, BetterHtmlConfig, AssetName, AssetsConfig, IconName, IconsConfig, LoaderName, PluginName, BetterHtmlPlugin, LoaderConfig, Color, ColorName, ColorTheme, Colors, Styles, Theme, ThemeConfig, isMobileDevice, };
|
package/dist/index.js
CHANGED
|
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.isMobileDevice = exports.formatPhoneNumber = exports.getBrowser = exports.generateRandomString = exports.useUrlQuery = exports.useForm = exports.useDebounceState = exports.useBooleanState = exports.useMediaQuery = exports.usePageResize = exports.useLoaderControls = exports.useLoader = exports.useTheme = exports.useBetterHtmlContext = exports.Label = exports.Form = exports.ToggleInput = exports.Dropdown = exports.InputField = exports.Chip = exports.PageHolder = exports.Modal = exports.Divider = exports.Button = exports.Image = exports.Icon = exports.Loader = exports.Text = exports.Div = exports.BetterHtmlProvider = void 0;
|
|
42
|
+
exports.isMobileDevice = exports.formatPhoneNumber = exports.getBrowser = exports.generateRandomString = exports.useUrlQuery = exports.useForm = exports.useDebounceState = exports.useBooleanState = exports.useMediaQuery = exports.usePageResize = exports.useLoaderControls = exports.useLoader = exports.useTheme = exports.useBetterHtmlContext = exports.FormRow = exports.Label = exports.Form = exports.ToggleInput = exports.Dropdown = exports.InputField = exports.Chip = exports.PageHeader = exports.PageHolder = exports.Modal = exports.Divider = exports.Button = exports.Image = exports.Icon = exports.Loader = exports.Text = exports.Div = exports.BetterHtmlProvider = void 0;
|
|
43
43
|
const Div_1 = __importDefault(require("./components/Div"));
|
|
44
44
|
exports.Div = Div_1.default;
|
|
45
45
|
const Text_1 = __importDefault(require("./components/Text"));
|
|
@@ -58,6 +58,8 @@ const Modal_1 = __importDefault(require("./components/Modal"));
|
|
|
58
58
|
exports.Modal = Modal_1.default;
|
|
59
59
|
const PageHolder_1 = __importDefault(require("./components/PageHolder"));
|
|
60
60
|
exports.PageHolder = PageHolder_1.default;
|
|
61
|
+
const PageHeader_1 = __importDefault(require("./components/PageHeader"));
|
|
62
|
+
exports.PageHeader = PageHeader_1.default;
|
|
61
63
|
const Chip_1 = __importDefault(require("./components/Chip"));
|
|
62
64
|
exports.Chip = Chip_1.default;
|
|
63
65
|
const InputField_1 = __importDefault(require("./components/InputField"));
|
|
@@ -70,6 +72,8 @@ const Form_1 = __importDefault(require("./components/Form"));
|
|
|
70
72
|
exports.Form = Form_1.default;
|
|
71
73
|
const Label_1 = __importDefault(require("./components/Label"));
|
|
72
74
|
exports.Label = Label_1.default;
|
|
75
|
+
const FormRow_1 = __importDefault(require("./components/FormRow"));
|
|
76
|
+
exports.FormRow = FormRow_1.default;
|
|
73
77
|
const BetterHtmlProvider_1 = __importStar(require("./components/BetterHtmlProvider"));
|
|
74
78
|
exports.BetterHtmlProvider = BetterHtmlProvider_1.default;
|
|
75
79
|
Object.defineProperty(exports, "useBetterHtmlContext", { enumerable: true, get: function () { return BetterHtmlProvider_1.useBetterHtmlContext; } });
|