@zuzjs/ui 0.4.9 → 0.5.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/dist/comps/checkbox.d.ts +14 -2
- package/dist/comps/checkbox.js +26 -4
- package/dist/comps/cover.d.ts +1 -0
- package/dist/comps/cover.js +2 -2
- package/dist/comps/drawer.d.ts +1 -1
- package/dist/comps/drawer.js +5 -3
- package/dist/comps/editor.d.ts +12 -0
- package/dist/comps/editor.js +85 -0
- package/dist/comps/input.d.ts +1 -0
- package/dist/comps/input.js +3 -2
- package/dist/comps/select.js +1 -1
- package/dist/comps/sheet.d.ts +8 -6
- package/dist/comps/sheet.js +99 -26
- package/dist/comps/tabview.d.ts +17 -0
- package/dist/comps/tabview.js +47 -0
- package/dist/comps/textwheel.js +6 -3
- package/dist/funs/css.d.ts +4 -1
- package/dist/funs/css.js +20 -24
- package/dist/funs/events.d.ts +3 -2
- package/dist/funs/events.js +6 -6
- package/dist/funs/index.js +1 -1
- package/dist/funs/lexer.d.ts +3 -0
- package/dist/funs/lexer.js +37 -0
- package/dist/funs/stylesheet.js +5 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useCompEditor.d.ts +2 -0
- package/dist/hooks/useCompEditor.js +5 -0
- package/dist/hooks/useInteractionObserver.d.ts +8 -0
- package/dist/hooks/useInteractionObserver.js +21 -0
- package/dist/hooks/useIntersectionObserver.d.ts +8 -0
- package/dist/hooks/useIntersectionObserver.js +21 -0
- package/dist/hooks/usePubSub.d.ts +1 -1
- package/dist/hooks/usePubSub.js +2 -2
- package/dist/hooks/useResizeObserver.d.ts +7 -0
- package/dist/hooks/useResizeObserver.js +23 -0
- package/dist/hooks/useToast.d.ts +2 -0
- package/dist/hooks/useToast.js +10 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/media/edit-ui.d.ts +2 -0
- package/dist/media/edit-ui.js +2 -0
- package/dist/mixins.css +1 -0
- package/dist/styles.css +1 -1
- package/dist/types/enums.d.ts +19 -0
- package/dist/types/enums.js +22 -0
- package/dist/types/interfaces.d.ts +6 -0
- package/package.json +1 -1
package/dist/comps/checkbox.d.ts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { animationProps } from "./base";
|
|
2
|
-
|
|
2
|
+
import { CHECKBOX } from "../types/enums";
|
|
3
|
+
export interface CheckboxProps {
|
|
3
4
|
as?: string;
|
|
5
|
+
type?: CHECKBOX;
|
|
6
|
+
required?: boolean;
|
|
7
|
+
name?: string;
|
|
8
|
+
value?: string;
|
|
9
|
+
checked?: boolean;
|
|
10
|
+
onChange?: (checked: boolean, value: string | string[]) => void;
|
|
4
11
|
animate?: animationProps;
|
|
5
|
-
}
|
|
12
|
+
}
|
|
13
|
+
export interface CheckboxHandler {
|
|
14
|
+
setChecked: (mode: boolean, triggerChange?: boolean) => void;
|
|
15
|
+
toggle: (triggerChange?: boolean) => void;
|
|
16
|
+
}
|
|
17
|
+
declare const CheckBox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<CheckboxHandler>>;
|
|
6
18
|
export default CheckBox;
|
package/dist/comps/checkbox.js
CHANGED
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { forwardRef, useState } from "react";
|
|
3
|
+
import { forwardRef, useImperativeHandle, useRef, useState } from "react";
|
|
4
4
|
import With from "./base";
|
|
5
|
+
import { CHECKBOX } from "../types/enums";
|
|
5
6
|
const CheckBox = forwardRef((props, ref) => {
|
|
6
|
-
const { as, name, required, ...rest } = props;
|
|
7
|
-
const [checked,
|
|
8
|
-
|
|
7
|
+
const { as, name, required, type, value, onChange, ...rest } = props;
|
|
8
|
+
const [checked, _setChecked] = useState(props.checked || false);
|
|
9
|
+
const bRef = useRef(null);
|
|
10
|
+
useImperativeHandle(ref, () => ({
|
|
11
|
+
setChecked(mod, triggerChange = true) {
|
|
12
|
+
_setChecked(mod);
|
|
13
|
+
if (bRef.current) {
|
|
14
|
+
bRef.current.checked = mod;
|
|
15
|
+
}
|
|
16
|
+
if (triggerChange && onChange)
|
|
17
|
+
onChange(mod, value || `cb`);
|
|
18
|
+
},
|
|
19
|
+
toggle(triggerChange = true) {
|
|
20
|
+
if (bRef.current)
|
|
21
|
+
bRef.current.checked = !checked;
|
|
22
|
+
if (triggerChange && onChange)
|
|
23
|
+
onChange && onChange(!checked, value || `cb`);
|
|
24
|
+
_setChecked(!checked);
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
return _jsx(With, { tag: `label`, className: `${type == CHECKBOX.Default ? `checkbox icon-check` : `zuz-checkbox`} flex aic jcc ${checked ? `is-checked` : ``} rel`.trim(), as: as, ...rest, children: _jsx(With, { tag: `input`, ref: bRef, value: value || `cb`, type: `checkbox`, className: `abs`, name: name, required: required || false, onChange: (e) => {
|
|
28
|
+
onChange && onChange(e.target.checked, value || `cb`);
|
|
29
|
+
_setChecked(e.target.checked);
|
|
30
|
+
} }) });
|
|
9
31
|
});
|
|
10
32
|
export default CheckBox;
|
package/dist/comps/cover.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export interface CoverProps extends ComponentPropsWithoutRef<`div`> {
|
|
|
9
9
|
as?: string;
|
|
10
10
|
animate?: animationProps;
|
|
11
11
|
when?: boolean;
|
|
12
|
+
hideMessage?: boolean;
|
|
12
13
|
}
|
|
13
14
|
declare const Cover: import("react").ForwardRefExoticComponent<CoverProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
14
15
|
export default Cover;
|
package/dist/comps/cover.js
CHANGED
|
@@ -3,7 +3,7 @@ import { forwardRef } from "react";
|
|
|
3
3
|
import With from "./base";
|
|
4
4
|
import Spinner from "./spinner";
|
|
5
5
|
const Cover = forwardRef((props, ref) => {
|
|
6
|
-
const { spinner, message, color, as, when, ...rest } = props;
|
|
6
|
+
const { spinner, message, color, as, when, hideMessage, ...rest } = props;
|
|
7
7
|
if (`when` in props && props.when == false) {
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
@@ -11,6 +11,6 @@ const Cover = forwardRef((props, ref) => {
|
|
|
11
11
|
backgroundColor: `var(--cover-bg)`
|
|
12
12
|
}, as: as, ...rest, children: [_jsx(Spinner, { ...{
|
|
13
13
|
...spinner
|
|
14
|
-
} }), _jsx(With, { tag: `h1`, className: `label`, style: { color: `var(--cover-label)` }, children: message || `loading` })] }));
|
|
14
|
+
} }), !hideMessage && _jsx(With, { tag: `h1`, className: `label`, style: { color: `var(--cover-label)` }, children: message || `loading` })] }));
|
|
15
15
|
});
|
|
16
16
|
export default Cover;
|
package/dist/comps/drawer.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export interface DrawerProps {
|
|
|
8
8
|
prerender?: boolean;
|
|
9
9
|
}
|
|
10
10
|
export interface DrawerHandler {
|
|
11
|
-
open: () => void;
|
|
11
|
+
open: (child?: string | ReactNode | ReactNode[]) => void;
|
|
12
12
|
close: () => void;
|
|
13
13
|
}
|
|
14
14
|
declare const Drawer: import("react").ForwardRefExoticComponent<DrawerProps & import("react").RefAttributes<DrawerHandler>>;
|
package/dist/comps/drawer.js
CHANGED
|
@@ -6,7 +6,7 @@ const Drawer = forwardRef((props, ref) => {
|
|
|
6
6
|
const { as, from, speed, children, prerender, ...rest } = props;
|
|
7
7
|
const [visible, setVisible] = useState(false);
|
|
8
8
|
const divRef = useRef(null);
|
|
9
|
-
const
|
|
9
|
+
const [content, setContent] = useState(children);
|
|
10
10
|
const style = useMemo(() => {
|
|
11
11
|
switch (from) {
|
|
12
12
|
case DRAWER_SIDE.Left:
|
|
@@ -22,7 +22,9 @@ const Drawer = forwardRef((props, ref) => {
|
|
|
22
22
|
}
|
|
23
23
|
}, []);
|
|
24
24
|
useImperativeHandle(ref, () => ({
|
|
25
|
-
open() {
|
|
25
|
+
open(child) {
|
|
26
|
+
if (child)
|
|
27
|
+
setContent(child);
|
|
26
28
|
setVisible(true);
|
|
27
29
|
},
|
|
28
30
|
close() {
|
|
@@ -42,6 +44,6 @@ const Drawer = forwardRef((props, ref) => {
|
|
|
42
44
|
when: visible,
|
|
43
45
|
curve: TRANSITION_CURVES.EaseInOut,
|
|
44
46
|
duration: speed || .5,
|
|
45
|
-
}, ...rest, children: [from == DRAWER_SIDE.Top || from == DRAWER_SIDE.Bottom ? _jsx(With, { className: "drawer-handle" }) : null, visible &&
|
|
47
|
+
}, ...rest, children: [from == DRAWER_SIDE.Top || from == DRAWER_SIDE.Bottom ? _jsx(With, { className: "drawer-handle" }) : null, visible && content] })] });
|
|
46
48
|
});
|
|
47
49
|
export default Drawer;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseProps } from "../types/interfaces";
|
|
2
|
+
import { dynamicObject } from "../types";
|
|
3
|
+
export interface EditorProps {
|
|
4
|
+
title: string;
|
|
5
|
+
attrs: dynamicObject;
|
|
6
|
+
element: string;
|
|
7
|
+
}
|
|
8
|
+
export interface EditorHandler {
|
|
9
|
+
show: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare const ComponentEditor: import("react").ForwardRefExoticComponent<EditorProps & BaseProps & import("react").RefAttributes<EditorHandler>>;
|
|
12
|
+
export default ComponentEditor;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useState } from "react";
|
|
3
|
+
import With from "./base";
|
|
4
|
+
import Pencil from "../media/edit-ui";
|
|
5
|
+
import { TRANSITIONS } from "../types/enums";
|
|
6
|
+
import Lexer from "../funs/lexer";
|
|
7
|
+
import { copyToClipboard } from "../funs";
|
|
8
|
+
import { useMounted } from "../hooks";
|
|
9
|
+
const ComponentEditor = forwardRef((props, ref) => {
|
|
10
|
+
const [visible, setVisible] = useState(false);
|
|
11
|
+
const [code, setCode] = useState(false);
|
|
12
|
+
const { title, attrs, element } = props;
|
|
13
|
+
const mounted = useMounted(500);
|
|
14
|
+
const getVariable = (v) => {
|
|
15
|
+
const a = getComputedStyle(document.querySelector(element)).getPropertyValue(`--${v}`).trim();
|
|
16
|
+
const b = getComputedStyle(document.body).getPropertyValue(`--${v}`).trim();
|
|
17
|
+
const d = getComputedStyle(document.documentElement).getPropertyValue(`--${v}`).trim();
|
|
18
|
+
return a || b || d;
|
|
19
|
+
};
|
|
20
|
+
const expandHex = (hex) => {
|
|
21
|
+
if (hex.length === 4) {
|
|
22
|
+
return `#${hex[1]}${hex[1]}${hex[2]}${hex[2]}${hex[3]}${hex[3]}`;
|
|
23
|
+
}
|
|
24
|
+
return hex;
|
|
25
|
+
};
|
|
26
|
+
const rangeSlider = (k, value, min, max, step, unit) => {
|
|
27
|
+
return _jsxs(_Fragment, { children: [_jsx(With, { tag: `input`, type: `range`, defaultValue: value, min: min, max: max, step: step, name: `editor-prop-range-${k}`, onChange: (e) => {
|
|
28
|
+
document.querySelector(element).style.setProperty(`--${k}`, `${e.currentTarget.value}${unit || ``}`);
|
|
29
|
+
document.querySelector(`input[name="editor-prop-num-${k}"]`).value = e.currentTarget.value;
|
|
30
|
+
} }), _jsx(With, { tag: `input`, type: `number`, name: `editor-prop-num-${k}`, defaultValue: value, min: min, max: max, onChange: (e) => {
|
|
31
|
+
document.querySelector(element).style.setProperty(`--${k}`, `${e.currentTarget.value}${unit || ``}`);
|
|
32
|
+
document.querySelector(`input[name="editor-prop-range-${k}"]`).value = e.currentTarget.value;
|
|
33
|
+
} })] });
|
|
34
|
+
};
|
|
35
|
+
const colorPicker = (k, value) => {
|
|
36
|
+
return _jsxs(_Fragment, { children: [_jsx(With, { tag: `input`, type: `color`, defaultValue: expandHex(value.toString()), name: `editor-prop-color-${k}`, onChange: (e) => {
|
|
37
|
+
document.querySelector(element).style.setProperty(`--${k}`, e.currentTarget.value);
|
|
38
|
+
document.querySelector(`input[name="editor-prop-num-${k}"]`).value = e.currentTarget.value;
|
|
39
|
+
} }), _jsx(With, { tag: `input`, name: `editor-prop-num-${k}`, defaultValue: expandHex(value.toString()), onChange: (e) => {
|
|
40
|
+
document.querySelector(element).style.setProperty(`--${k}`, `${e.currentTarget.value}`);
|
|
41
|
+
document.querySelector(`input[name="editor-prop-color-${k}"]`).value = e.currentTarget.value;
|
|
42
|
+
} })] });
|
|
43
|
+
};
|
|
44
|
+
const build = (at) => {
|
|
45
|
+
const comps = [];
|
|
46
|
+
Object.keys(at)
|
|
47
|
+
.forEach((k) => {
|
|
48
|
+
if (k.startsWith('@group')) {
|
|
49
|
+
comps.push(_jsxs(With, { className: `group flex cols`, children: [_jsx(With, { tag: `h1`, as: `glabel`, children: at[k].label }), _jsx(With, { className: `gprops flex cols`, children: build(at[k].pops) })] }, `egroup-${k}`));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const { label, value, min, max, type, step, unit } = Lexer(at[k]);
|
|
53
|
+
comps.push(_jsxs(With, { className: `prop flex aic`, children: [_jsxs(With, { className: `pop flex cols`, children: [_jsx(With, { tag: `h1`, as: `label`, children: label.split(`,`).join(` `) }), _jsx(With, { tag: `h1`, as: `l-k`, children: k })] }), _jsxs(With, { className: `pop flex aic`, children: [type == `range` && rangeSlider(k, value == `auto` ? parseFloat(getVariable(k)) : value, min, max, step || 1, unit), type == `color` && colorPicker(k, value == `auto` ? getVariable(k) : value)] })] }, `el-${k}-${label}`));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return comps;
|
|
57
|
+
};
|
|
58
|
+
const getCode = (at) => {
|
|
59
|
+
const c = [];
|
|
60
|
+
Object.keys(at)
|
|
61
|
+
.forEach((k) => {
|
|
62
|
+
if (k.startsWith('@group')) {
|
|
63
|
+
c.push(...getCode(at[k].pops));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const { label, value, min, max, type, step, unit } = Lexer(at[k]);
|
|
67
|
+
c.push(`--${k}: ${value == `auto` ? type == `range` ? parseFloat(getVariable(k)) : getVariable(k) : value}${unit || ``};`);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return c;
|
|
71
|
+
};
|
|
72
|
+
if (!mounted)
|
|
73
|
+
return null;
|
|
74
|
+
return _jsxs(With, { as: `comp-editor fixed`, children: [_jsx(With, { tag: `button`, as: `pencil`, onClick: (e) => setVisible(!visible), children: !visible ?
|
|
75
|
+
_jsx(With, { tag: `img`, src: `data:image/png;base64,${Pencil}` })
|
|
76
|
+
: _jsx(With, { tag: `span`, children: "\u00D7" }) }), _jsxs(With, { as: `editor-props fixed`, "aria-hidden": !visible, animate: {
|
|
77
|
+
transition: TRANSITIONS.SlideInRight,
|
|
78
|
+
when: visible,
|
|
79
|
+
duration: 0.1,
|
|
80
|
+
}, children: [_jsxs(With, { as: `editor-head flex aic`, children: [_jsxs(With, { tag: `h1`, className: `head-label`, children: [title, " Editor"] }), _jsx(With, { className: `head-action`, children: _jsx(With, { tag: `button`, onClick: (e) => setCode(!code), children: code ? `Edit` : `Get Code` }) })] }), _jsx(With, { as: `editor-body flex cols rel`, children: code ? _jsxs(_Fragment, { children: [_jsx(With, { tag: `textarea`, children: getCode(attrs).join(`\n`) }), _jsx(With, { tag: `button`, className: `copy abs`, onClick: (e) => copyToClipboard(getCode(attrs).join(`\n`)).then(() => {
|
|
81
|
+
document.querySelector(`.comp-editor .editor-props .editor-body .copy`).textContent = `Copied`;
|
|
82
|
+
setTimeout(() => document.querySelector(`.comp-editor .editor-props .editor-body .copy`).textContent = `Copy`, 3000);
|
|
83
|
+
}), children: "Copy" })] }) : build(attrs) })] })] });
|
|
84
|
+
});
|
|
85
|
+
export default ComponentEditor;
|
package/dist/comps/input.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { animationProps } from "./base";
|
|
|
2
2
|
import { FORMVALIDATION } from "../types/enums";
|
|
3
3
|
declare const Input: import("react").ForwardRefExoticComponent<{
|
|
4
4
|
required?: FORMVALIDATION;
|
|
5
|
+
textarea?: any;
|
|
5
6
|
as?: string;
|
|
6
7
|
animate?: animationProps;
|
|
7
8
|
} & Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
package/dist/comps/input.js
CHANGED
|
@@ -2,7 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import With from "./base";
|
|
4
4
|
const Input = forwardRef((props, ref) => {
|
|
5
|
-
const { as, ...rest } = props;
|
|
6
|
-
return _jsx(With, { tag: `
|
|
5
|
+
const { as, textarea, value, ...rest } = props;
|
|
6
|
+
return textarea ? _jsx(With, { tag: `textarea`, as: as, ...rest, value: value, ref: ref })
|
|
7
|
+
: _jsx(With, { tag: `input`, as: as, value: value, ...rest, ref: ref });
|
|
7
8
|
});
|
|
8
9
|
export default Input;
|
package/dist/comps/select.js
CHANGED
|
@@ -19,7 +19,7 @@ const Select = forwardRef((props, ref) => {
|
|
|
19
19
|
setChoosing(false);
|
|
20
20
|
});
|
|
21
21
|
}, []);
|
|
22
|
-
return _jsxs(With, { className: `zuz-select-wrap rel`, children: [_jsxs(With, { popovertarget: _id, tag: `button`, as: as, className: `zuz-select rel flex aic`, ref: _ref, onClick: (e) => setChoosing(true), ...rest, children: [_jsx(With, { tag: `h2`, className: `zuz-selected`, children: value ? `string` == typeof value ? value : value.label : label || `Choose` }), chevronExpand()] }), _jsx(With, { popover: true, id: _id, className: `zuz-select-options abs flex cols`, style: {
|
|
22
|
+
return _jsxs(With, { className: `zuz-select-wrap rel`, children: [_jsxs(With, { popovertarget: _id, tag: `button`, as: as, className: `zuz-select rel flex aic`, ref: _ref, onClick: (e) => setChoosing(true), ...rest, children: [_jsx(With, { tag: `h2`, className: `zuz-selected`, children: value ? `string` == typeof value ? value : value.label : label || `Choose` }), chevronExpand()] }), _jsx(With, { popover: "true", id: _id, className: `zuz-select-options abs flex cols`, style: {
|
|
23
23
|
pointerEvents: choosing ? `auto` : `none`,
|
|
24
24
|
}, animate: {
|
|
25
25
|
from: { height: 0, opacity: 0 },
|
package/dist/comps/sheet.d.ts
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { SHEET, TRANSITION_CURVES, TRANSITIONS } from "../types/enums";
|
|
3
|
+
import { BaseProps } from "../types/interfaces";
|
|
4
4
|
export interface SheetProps {
|
|
5
|
-
as?: string;
|
|
6
|
-
animate?: animationProps;
|
|
7
5
|
title?: string;
|
|
8
6
|
message?: string | ReactNode;
|
|
7
|
+
transition?: TRANSITIONS;
|
|
8
|
+
curve?: TRANSITION_CURVES;
|
|
9
|
+
speed?: Number;
|
|
10
|
+
type?: SHEET;
|
|
9
11
|
}
|
|
10
12
|
export interface SheetActionHandler {
|
|
11
13
|
label: string;
|
|
12
14
|
handler: () => void;
|
|
13
15
|
}
|
|
14
16
|
export interface SheetHandler {
|
|
15
|
-
showDialog: (title: string | ReactNode, message: string | ReactNode, action?: SheetActionHandler, onShow?: () => void) => void;
|
|
17
|
+
showDialog: (title: string | ReactNode, message: string | ReactNode, action?: SheetActionHandler[], onShow?: () => void) => void;
|
|
16
18
|
show: (message: string | ReactNode, duration?: number, type?: SHEET) => void;
|
|
17
19
|
hide: () => void;
|
|
18
20
|
}
|
|
19
|
-
declare const Sheet: import("react").ForwardRefExoticComponent<SheetProps & import("react").RefAttributes<SheetHandler>>;
|
|
21
|
+
declare const Sheet: import("react").ForwardRefExoticComponent<SheetProps & BaseProps & import("react").RefAttributes<SheetHandler>>;
|
|
20
22
|
export default Sheet;
|
package/dist/comps/sheet.js
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
3
|
+
import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
4
4
|
import With from "./base";
|
|
5
|
-
import { SHEET } from "../types/enums";
|
|
5
|
+
import { SHEET, TRANSITION_CURVES, TRANSITIONS } from "../types/enums";
|
|
6
6
|
import Cover from "./cover";
|
|
7
|
+
import { animationTransition } from "../funs/css";
|
|
8
|
+
import useComponentEditor from "../hooks/useCompEditor";
|
|
9
|
+
import ComponentEditor from "./editor";
|
|
7
10
|
let _sheetTimeout = null;
|
|
8
11
|
let _sheetWobbleTimeout = null;
|
|
9
12
|
const Sheet = forwardRef((props, ref) => {
|
|
10
|
-
const { as, ...rest } = props;
|
|
13
|
+
const { as, transition, curve, speed, editor, type, ...rest } = props;
|
|
14
|
+
const _editor = useComponentEditor();
|
|
11
15
|
const [visible, setVisible] = useState(false);
|
|
12
16
|
const [title, setTitle] = useState(``);
|
|
13
17
|
const [msg, setMsg] = useState(``);
|
|
14
18
|
const [action, setAction] = useState(null);
|
|
15
|
-
const [_errorType, setErrorType] = useState(SHEET.Default);
|
|
19
|
+
const [_errorType, setErrorType] = useState(type || SHEET.Default);
|
|
16
20
|
const [loading, setLoading] = useState(false);
|
|
17
21
|
const divRef = useRef(null);
|
|
18
22
|
const lastTransform = useRef(null);
|
|
@@ -82,29 +86,98 @@ const Sheet = forwardRef((props, ref) => {
|
|
|
82
86
|
setVisible(false);
|
|
83
87
|
}
|
|
84
88
|
}));
|
|
89
|
+
const buildAnimation = () => {
|
|
90
|
+
const base = {
|
|
91
|
+
when: visible,
|
|
92
|
+
duration: speed || 0.3,
|
|
93
|
+
delay: 0.1,
|
|
94
|
+
};
|
|
95
|
+
if (_errorType == SHEET.Dialog) {
|
|
96
|
+
if (transition) {
|
|
97
|
+
const { from, to } = animationTransition(transition);
|
|
98
|
+
return {
|
|
99
|
+
from: { ...from, x: `-50%`, y: `-50%` },
|
|
100
|
+
to: { ...to, x: `-50%`, y: `-50%` },
|
|
101
|
+
curve: curve || TRANSITION_CURVES.EaseInOut,
|
|
102
|
+
...base
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
from: { scale: 0, x: `-50%`, y: `-50%`, opacity: 0 },
|
|
107
|
+
to: { scale: 1, x: `-50%`, y: `-50%`, opacity: 1 },
|
|
108
|
+
curve: TRANSITION_CURVES.Spring,
|
|
109
|
+
...base
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
return {
|
|
114
|
+
from: { scale: 0, x: `-50%`, y: `-10vh`, opacity: 0 },
|
|
115
|
+
to: { scale: 1, x: `-50%`, y: 0, opacity: 1 },
|
|
116
|
+
curve: TRANSITION_CURVES.Spring,
|
|
117
|
+
...base
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const sheetProps = useMemo(() => ({
|
|
122
|
+
"sheet-radius": `label:Radius type:range value:auto min:0 max:50 unit:px`,
|
|
123
|
+
}), []);
|
|
124
|
+
const toastProps = useMemo(() => ({
|
|
125
|
+
"sheet-padding": `label:Padding type:range value:auto min:0 max:50 unit:px`,
|
|
126
|
+
"sheet-font-size": `label:Font,Size type:range value:auto min:12 max:72 unit:px`,
|
|
127
|
+
}), []);
|
|
128
|
+
const dialogProps = useMemo(() => ({
|
|
129
|
+
"sheet-bg": `label:Background type:color value:auto`,
|
|
130
|
+
"@group-Head": {
|
|
131
|
+
label: "Head",
|
|
132
|
+
pops: {
|
|
133
|
+
"sheet-title-opacity": `label:Opacity type:range value:auto min:0 max:1 step:0.1`,
|
|
134
|
+
"sheet-head-padding": `label:Padding type:range value:auto min:0 max:50 unit:px`,
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"@group-Body": {
|
|
138
|
+
label: "Body",
|
|
139
|
+
pops: {
|
|
140
|
+
"sheet-body-padding": `label:Padding type:range value:auto min:0 max:50 unit:px`,
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"@group-Footer": {
|
|
144
|
+
label: "Footer",
|
|
145
|
+
pops: {
|
|
146
|
+
"sheet-footer": `label:Background type:color value:auto`,
|
|
147
|
+
"sheet-footer-padding": `label:Padding type:range value:auto min:0 max:50 unit:px`,
|
|
148
|
+
"@group-Action": {
|
|
149
|
+
label: "Footer Action",
|
|
150
|
+
pops: {
|
|
151
|
+
"sheet-action": `label:Background type:color value:auto`,
|
|
152
|
+
"sheet-action-color": `label:Text,Color type:color value:auto`,
|
|
153
|
+
"sheet-action-hover": `label:Hover,Color type:color value:auto`,
|
|
154
|
+
"sheet-action-radius": `label:Radius type:range value:auto min:0 max:50 unit:px`,
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"@group-Close": {
|
|
160
|
+
label: "Close Button",
|
|
161
|
+
pops: {
|
|
162
|
+
"sheet-closer-font-size": `label:Size type:range value:auto min:8 max:72 step:2 unit:px`,
|
|
163
|
+
"sheet-closer-color": `label:Color type:color value:auto`,
|
|
164
|
+
"sheet-closer-opacity": `label:Opacity type:range value:auto min:0 max:1 step:0.1`,
|
|
165
|
+
"sheet-closer-hover-opacity": `label:Hover,Opacity type:range value:auto min:0 max:1 step:0.1`,
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}), []);
|
|
85
169
|
useEffect(() => {
|
|
86
170
|
}, []);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
curve: `spring`
|
|
99
|
-
} : {
|
|
100
|
-
from: { scale: 0, x: `-50%`, y: `-10vh`, opacity: 0 },
|
|
101
|
-
to: { scale: 1, x: `-50%`, y: 0, opacity: 1 },
|
|
102
|
-
when: visible,
|
|
103
|
-
duration: 0.3,
|
|
104
|
-
delay: 0.1,
|
|
105
|
-
curve: `spring`
|
|
106
|
-
}, as: as, className: `zuz-sheet toast-${_errorType.toLowerCase()} fixed`.trim(), ...rest, ref: divRef, children: [_errorType == SHEET.Dialog && _jsx(Cover, { ...({
|
|
107
|
-
when: loading,
|
|
108
|
-
}) }), _errorType == SHEET.Dialog && _jsxs(With, { className: `zuz-sheet-head flex aic rel`, children: [_jsx(With, { className: `zuz-sheet-${title ? `title` : `dot`}`, children: title || `` }), _jsx(With, { tag: `button`, onClick: (e) => setVisible(false), className: `zuz-sheet-closer abs`, children: "\u00D7" })] }), visible && msg == `` ? `Lorem ipsum dolor sit amet, consectetur adipiscing...` : msg] })] });
|
|
171
|
+
if (_errorType == SHEET.Dialog) {
|
|
172
|
+
return _jsxs(_Fragment, { children: [_jsx(With, { "aria-hidden": !visible, className: `zuz-overlay fixed fill`, animate: {
|
|
173
|
+
transition: TRANSITIONS.FadeIn,
|
|
174
|
+
when: visible,
|
|
175
|
+
duration: 0.1,
|
|
176
|
+
} }), _jsxs(With, { animate: buildAnimation(), as: as, className: `zuz-sheet toast-${_errorType.toLowerCase()} fixed`.trim(), ...rest, ref: divRef, children: [_jsx(Cover, { ...({ when: loading }) }), _jsxs(With, { className: `sheet-head flex aic rel`, children: [_jsx(With, { className: `sheet-${title ? `title` : `dot`}`, children: title || `` }), _jsx(With, { tag: `button`, onClick: (e) => setVisible(false), className: `sheet-closer abs`, children: "\u00D7" })] }), _jsx(With, { className: `sheet-body flex aic rel`, children: msg }), action && _jsx(With, { className: `sheet-footer flex aic rel`, children: action.map((a, i) => _jsx(With, { onClick: a.handler, tag: `button`, as: `sheet-action-btn`, children: a.label })) })] }), props.editor && visible && _jsx(ComponentEditor, { element: `.zuz-sheet`, title: `Sheet`, attrs: {
|
|
177
|
+
...sheetProps,
|
|
178
|
+
...(_errorType == SHEET.Dialog ? dialogProps : toastProps)
|
|
179
|
+
} })] });
|
|
180
|
+
}
|
|
181
|
+
return _jsx(With, { animate: buildAnimation(), as: as, className: `zuz-sheet toast-${_errorType.toLowerCase()} fixed`.trim(), ...rest, ref: divRef, children: visible ? msg : null });
|
|
109
182
|
});
|
|
110
183
|
export default Sheet;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseProps } from "../types/interfaces";
|
|
3
|
+
export interface Tab {
|
|
4
|
+
onSelect: (index: number) => void;
|
|
5
|
+
label: string;
|
|
6
|
+
body: string | ReactNode | ReactNode[];
|
|
7
|
+
render?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface TabViewProps {
|
|
10
|
+
speed?: number;
|
|
11
|
+
tabs: Tab[];
|
|
12
|
+
}
|
|
13
|
+
export interface TabViewHandler {
|
|
14
|
+
setTab: (index: number) => void;
|
|
15
|
+
}
|
|
16
|
+
declare const TabView: import("react").ForwardRefExoticComponent<TabViewProps & BaseProps & import("react").RefAttributes<TabViewHandler>>;
|
|
17
|
+
export default TabView;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import With from "./base";
|
|
4
|
+
import { uuid } from "../funs";
|
|
5
|
+
import { useResizeObserver } from "../hooks";
|
|
6
|
+
import ComponentEditor from "./editor";
|
|
7
|
+
const TabView = forwardRef((props, ref) => {
|
|
8
|
+
const { as, tabs, speed, ...rest } = props;
|
|
9
|
+
const tabview = useRef(null);
|
|
10
|
+
const tabViewID = useMemo(() => uuid(), []);
|
|
11
|
+
const [activeTab, setActiveTab] = useState(0);
|
|
12
|
+
const size = useResizeObserver(tabview);
|
|
13
|
+
const handleTabClick = (index) => {
|
|
14
|
+
setActiveTab(index);
|
|
15
|
+
};
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
}, []);
|
|
18
|
+
return _jsxs(_Fragment, { children: [_jsxs(With, { ref: tabview, className: `tabview flex cols`, ...rest, children: [_jsx(With, { className: `tab-head flex aic`, children: tabs.map((tab, index) => _jsx(With, { tag: `button`, className: `tab-label rel ${index === activeTab ? 'active' : ''}`.trim(), onClick: () => {
|
|
19
|
+
handleTabClick(index);
|
|
20
|
+
tab.onSelect && tab.onSelect(index);
|
|
21
|
+
}, children: tab.label }, `tab-label-${tabViewID}-${index}`)) }), _jsx(With, { className: `tab-content rel`, children: _jsx(With, { className: `tabs-track flex aic`, style: { transition: `all ${speed || 0.3}s ease-in-out 0s`, transform: `translate(-${activeTab * size.width}px, 0)` }, children: tabs.map((tab, index) => {
|
|
22
|
+
return _jsx(With, { className: `tab-body rel`, style: {
|
|
23
|
+
width: size.width,
|
|
24
|
+
minWidth: size.width,
|
|
25
|
+
maxWidth: size.width,
|
|
26
|
+
opacity: index === activeTab ? 1 : 0,
|
|
27
|
+
transition: 'opacity 0.5s ease',
|
|
28
|
+
}, children: tab.body }, `tab-body-${tabViewID}-${index}`);
|
|
29
|
+
}) }) })] }), props.editor && _jsx(ComponentEditor, { element: `.tabview`, title: `TabView`, attrs: {
|
|
30
|
+
"@group-Head": {
|
|
31
|
+
label: "Head",
|
|
32
|
+
pops: {
|
|
33
|
+
"tab-head": `label:Color type:color value:auto`,
|
|
34
|
+
"tab-head-padding": `label:Padding type:range value:auto min:0 max:50 unit:px`,
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"@group-Tabs": {
|
|
38
|
+
label: "Tabs",
|
|
39
|
+
pops: {
|
|
40
|
+
"tab": `label:Tab type:color value:auto`,
|
|
41
|
+
"tab-active": `label:Active type:color value:auto`,
|
|
42
|
+
"tab-hover": `label:Hover type:color value:auto`,
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
} })] });
|
|
46
|
+
});
|
|
47
|
+
export default TabView;
|
package/dist/comps/textwheel.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useImperativeHandle, useRef, useState } from 'react';
|
|
2
|
+
import { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
import With from "./base";
|
|
5
5
|
const TextWheel = forwardRef((props, ref) => {
|
|
@@ -29,7 +29,10 @@ const TextWheel = forwardRef((props, ref) => {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}));
|
|
32
|
-
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
_setValue(value || 0);
|
|
34
|
+
}, [value]);
|
|
35
|
+
return _jsxs(With, { className: `text-wheel flex aic jcc rel`, "aria-hidden": true, as: as, ref: divRef, ...rest, children: [(_value || 0).toString().split('').map((char, index) => {
|
|
33
36
|
if (isNaN(parseInt(char, 10))) {
|
|
34
37
|
return _jsx(With, { tag: `span`, className: "wheel-char wheel-char-symbol grid", children: char }, `wheel-char-${index}`);
|
|
35
38
|
}
|
|
@@ -40,7 +43,7 @@ const TextWheel = forwardRef((props, ref) => {
|
|
|
40
43
|
: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]).map((val, indx) => {
|
|
41
44
|
return _jsx(With, { tag: `span`, children: val }, `${index}--${indx}`);
|
|
42
45
|
}), _jsx(With, { tag: `span`, children: !direction || direction == `down` ? 9 : 0 })] }) }, `wheel-char-${index}`);
|
|
43
|
-
}), color && _jsx(With, { className: `abs
|
|
46
|
+
}), color && _jsx(With, { className: `abs fillx`, style: {
|
|
44
47
|
zIndex: 1,
|
|
45
48
|
background: `linear-gradient(0deg, ${color}, transparent, transparent, transparent, ${color})`,
|
|
46
49
|
} })] });
|
package/dist/funs/css.d.ts
CHANGED
|
@@ -33,7 +33,6 @@ declare class CSS {
|
|
|
33
33
|
makeUnit(k: string, v: any): any;
|
|
34
34
|
makeValue(k: string, v: any): string;
|
|
35
35
|
calcIndexes(str: string): string;
|
|
36
|
-
makeID2(k: string, v: string, _out: string): string;
|
|
37
36
|
makeID(k: string, v: string, _out: string): string;
|
|
38
37
|
lexer(line: string): dynamicObject;
|
|
39
38
|
processLine(line: string): void;
|
|
@@ -46,4 +45,8 @@ declare class CSS {
|
|
|
46
45
|
export default CSS;
|
|
47
46
|
export declare const buildWithStyles: (source: dynamicObject) => dynamicObject;
|
|
48
47
|
export declare const getAnimationCurve: (curve?: string | TRANSITION_CURVES) => string;
|
|
48
|
+
export declare const animationTransition: (transition: TRANSITIONS) => {
|
|
49
|
+
from: {};
|
|
50
|
+
to: {};
|
|
51
|
+
};
|
|
49
52
|
export declare const getAnimationTransition: (transition: TRANSITIONS, to?: boolean, from?: boolean) => dynamicObject;
|
package/dist/funs/css.js
CHANGED
|
@@ -335,9 +335,20 @@ class CSS {
|
|
|
335
335
|
if (v.includes(`,`)) {
|
|
336
336
|
let __v = [];
|
|
337
337
|
v.split(`,`).map((_) => {
|
|
338
|
+
if (_.charAt(0) == `#`) {
|
|
339
|
+
_ = _.substring(1);
|
|
340
|
+
}
|
|
338
341
|
if (_.startsWith(`$`)) {
|
|
339
342
|
__v.push(`var(--${_.substring(1)})`);
|
|
340
343
|
}
|
|
344
|
+
else if (isColor(`#${_}`)) {
|
|
345
|
+
if (_.includes(`rgb`) || _.includes(`rgba`)) {
|
|
346
|
+
__v.push(_.replace(`[`, `(`).replace(`]`, `)`));
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
__v.push(isHexColor(`#${_}`) ? `#${_}` : _);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
341
352
|
else {
|
|
342
353
|
__v.push(`${_}${this.makeUnit(key, _)}`);
|
|
343
354
|
}
|
|
@@ -363,7 +374,7 @@ class CSS {
|
|
|
363
374
|
}
|
|
364
375
|
return _indices.join(``);
|
|
365
376
|
}
|
|
366
|
-
|
|
377
|
+
makeID(k, v, _out) {
|
|
367
378
|
const self = this;
|
|
368
379
|
const md = md5(_out);
|
|
369
380
|
let _ = [];
|
|
@@ -387,7 +398,7 @@ class CSS {
|
|
|
387
398
|
const out = _out.replace(/\s+/g, ``).trim();
|
|
388
399
|
const [_ok, _ov] = out.split(`:`);
|
|
389
400
|
const ok = _ok.trim();
|
|
390
|
-
const ov = _ov.trim();
|
|
401
|
+
const ov = _ov ? _ov.trim() : v;
|
|
391
402
|
if (ov == ``) {
|
|
392
403
|
throw new TypeError(`${ok} value is empty.`);
|
|
393
404
|
}
|
|
@@ -400,26 +411,6 @@ class CSS {
|
|
|
400
411
|
const ai = md.split(``).reduce((acc, char) => acc + self.chars.indexOf(char), 0);
|
|
401
412
|
return `${_cp}${self.hashids.encode(io, ai)}`;
|
|
402
413
|
}
|
|
403
|
-
makeID(k, v, _out) {
|
|
404
|
-
const self = this;
|
|
405
|
-
return self.makeID2(k, v, _out);
|
|
406
|
-
const _css = _out.toString().replace(/;|:|\s/g, "");
|
|
407
|
-
let _indices = 0;
|
|
408
|
-
for (let i = 0; i < _css.length; i++) {
|
|
409
|
-
_indices += self.chars.indexOf(_out.charAt(i));
|
|
410
|
-
}
|
|
411
|
-
let _cp = k.substring(0, 1);
|
|
412
|
-
if (self.PROPS[k]?.indexOf("-") > -1) {
|
|
413
|
-
_cp = "";
|
|
414
|
-
self.PROPS[k].split("-").map((c) => _cp += c.substring(0, 1));
|
|
415
|
-
}
|
|
416
|
-
if (v.toString().indexOf("-") > -1) {
|
|
417
|
-
v.toString().split("-").map(c => _cp += c.substring(0, 1));
|
|
418
|
-
}
|
|
419
|
-
const _id = `${_cp}${self.hashids.encode((self.PROPS[k] ? self.PROPS[k].length : 0) + _indices + (isNaN(parseInt(v)) ? 0 : parseInt(v)))}`.replace(/\s|\$/g, '-');
|
|
420
|
-
const _kw = _id in self.propCounter ? ++self.propCounter[_id] : self.propCounter[_id] = 1;
|
|
421
|
-
return _id;
|
|
422
|
-
}
|
|
423
414
|
lexer(line) {
|
|
424
415
|
const self = this;
|
|
425
416
|
let word = ``;
|
|
@@ -673,8 +664,9 @@ export const getAnimationCurve = (curve) => {
|
|
|
673
664
|
return `linear`;
|
|
674
665
|
}
|
|
675
666
|
};
|
|
676
|
-
export const
|
|
677
|
-
let _from
|
|
667
|
+
export const animationTransition = (transition) => {
|
|
668
|
+
let _from = {};
|
|
669
|
+
let _to = {};
|
|
678
670
|
switch (transition) {
|
|
679
671
|
case TRANSITIONS.SlideInLeft:
|
|
680
672
|
case TRANSITIONS.SlideInRight:
|
|
@@ -695,5 +687,9 @@ export const getAnimationTransition = (transition, to, from) => {
|
|
|
695
687
|
_to = { opacity: 1 };
|
|
696
688
|
break;
|
|
697
689
|
}
|
|
690
|
+
return { from: _from, to: _to };
|
|
691
|
+
};
|
|
692
|
+
export const getAnimationTransition = (transition, to, from) => {
|
|
693
|
+
const { from: _from, to: _to } = animationTransition(transition);
|
|
698
694
|
return to ? { ..._from, ..._to } : from ? _from : _to;
|
|
699
695
|
};
|
package/dist/funs/events.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
export interface Event {
|
|
2
2
|
event: String | Symbol;
|
|
3
3
|
listeners: (() => void)[];
|
|
4
|
+
context?: any;
|
|
4
5
|
}
|
|
5
6
|
declare class Events {
|
|
6
7
|
_events: Event[];
|
|
7
8
|
constructor();
|
|
8
|
-
addEvent(event: String | Symbol, fun: (...args: any[]) => void): number | undefined;
|
|
9
|
+
addEvent(event: String | Symbol, fun: (...args: any[]) => void, context?: any): number | undefined;
|
|
9
10
|
removeEvent(event: String | Symbol, fun: (...args: any[]) => void): void;
|
|
10
|
-
on(event: String | Symbol, fun: (...args: any[]) => void): number | undefined;
|
|
11
|
+
on(event: String | Symbol, fun: (...args: any[]) => void, context?: any): number | undefined;
|
|
11
12
|
off(event: String | Symbol, fun: (...args: any[]) => void): void;
|
|
12
13
|
emit(event: String | Symbol, ...args: any[]): void;
|
|
13
14
|
}
|
package/dist/funs/events.js
CHANGED
|
@@ -3,10 +3,10 @@ class Events {
|
|
|
3
3
|
constructor() {
|
|
4
4
|
this._events = [];
|
|
5
5
|
}
|
|
6
|
-
addEvent(event, fun) {
|
|
6
|
+
addEvent(event, fun, context) {
|
|
7
7
|
const evt = this._events.find(x => x.event == event);
|
|
8
8
|
if (!evt) {
|
|
9
|
-
return this._events.push({ event: event, listeners: [fun] });
|
|
9
|
+
return this._events.push({ event: event, listeners: [fun], context });
|
|
10
10
|
}
|
|
11
11
|
if (!evt.listeners.find(x => x == fun)) {
|
|
12
12
|
evt.listeners.push(fun);
|
|
@@ -18,21 +18,21 @@ class Events {
|
|
|
18
18
|
evt.listeners = evt.listeners.filter(x => x != fun);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
on(event, fun) {
|
|
22
|
-
return this.addEvent(event, fun);
|
|
21
|
+
on(event, fun, context) {
|
|
22
|
+
return this.addEvent(event, fun, context);
|
|
23
23
|
}
|
|
24
24
|
off(event, fun) {
|
|
25
25
|
this.removeEvent(event, fun);
|
|
26
26
|
}
|
|
27
27
|
emit(event, ...args) {
|
|
28
|
-
const self = this;
|
|
29
28
|
const evt = this._events.find(x => x.event == event);
|
|
30
29
|
if (evt) {
|
|
31
30
|
evt.listeners.forEach((f) => {
|
|
32
31
|
try {
|
|
33
|
-
f.apply(self, args);
|
|
32
|
+
f.apply(evt.context || self, args);
|
|
34
33
|
}
|
|
35
34
|
catch (e) {
|
|
35
|
+
console.error(e);
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
package/dist/funs/index.js
CHANGED
|
@@ -52,7 +52,7 @@ export const hexToRgba = (hex, alpha = 1) => {
|
|
|
52
52
|
};
|
|
53
53
|
export const ucfirst = (str) => `${str.charAt(0).toUpperCase()}${str.substring(1, str.length)}`;
|
|
54
54
|
export const cleanProps = (props, withProps = []) => {
|
|
55
|
-
let _extras = [`as`, ...withProps];
|
|
55
|
+
let _extras = [`as`, `editor`, ...withProps];
|
|
56
56
|
let _props = { ...props };
|
|
57
57
|
Object.keys(_props).map(k => {
|
|
58
58
|
if (k in cssProps) {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const Lexer = (line) => {
|
|
2
|
+
let word = ``;
|
|
3
|
+
let hasBracket = false;
|
|
4
|
+
let classes = {};
|
|
5
|
+
const processWord = () => {
|
|
6
|
+
word = word.trim();
|
|
7
|
+
if (!word.includes(`[`))
|
|
8
|
+
word = word.replace(/\s+/g, ``);
|
|
9
|
+
if (word == ``)
|
|
10
|
+
return;
|
|
11
|
+
const [key, value] = word.split(`:`);
|
|
12
|
+
classes[key] = value;
|
|
13
|
+
word = ``;
|
|
14
|
+
};
|
|
15
|
+
line
|
|
16
|
+
.replace(/\`|\}|\{/g, ``)
|
|
17
|
+
.trim()
|
|
18
|
+
.replace(/\s+/g, ` `)
|
|
19
|
+
.split(``)
|
|
20
|
+
.map((char, i, arr) => {
|
|
21
|
+
const nextChar = arr[i + 1];
|
|
22
|
+
if (char == ` ` && word != ``) {
|
|
23
|
+
processWord();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
word += char;
|
|
27
|
+
if (char == `[`)
|
|
28
|
+
hasBracket = true;
|
|
29
|
+
if (char == `]` && hasBracket)
|
|
30
|
+
hasBracket = false;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
if (word != ``)
|
|
34
|
+
processWord();
|
|
35
|
+
return classes;
|
|
36
|
+
};
|
|
37
|
+
export default Lexer;
|
package/dist/funs/stylesheet.js
CHANGED
|
@@ -132,8 +132,11 @@ export const cssProps = {
|
|
|
132
132
|
"gridRowStart": "grid-row-start",
|
|
133
133
|
"gridTemplate": "grid-template",
|
|
134
134
|
"gridTemplateAreas": "grid-template-areas",
|
|
135
|
+
"grid-areas": "grid-template-areas",
|
|
135
136
|
"gridTemplateColumns": "grid-template-columns",
|
|
137
|
+
"grid-cols": "grid-template-columns",
|
|
136
138
|
"gridTemplateRows": "grid-template-rows",
|
|
139
|
+
"grid-rows": "grid-template-rows",
|
|
137
140
|
"hangingPunctuation": "hanging-punctuation",
|
|
138
141
|
"hyphens": "hyphens",
|
|
139
142
|
"isolation": "isolation",
|
|
@@ -280,6 +283,8 @@ export const cssDirect = {
|
|
|
280
283
|
"translate": "transform: translate(__VALUE__);",
|
|
281
284
|
"translateX": "transform: translateX(__VALUE__);",
|
|
282
285
|
"translateY": "transform: translateY(__VALUE__);",
|
|
286
|
+
"x": "transform: translateX(__VALUE__);",
|
|
287
|
+
"y": "transform: translateY(__VALUE__);",
|
|
283
288
|
"rotate": "transform: rotate(__VALUE__);",
|
|
284
289
|
"scale": "transform: scale(__VALUE__);",
|
|
285
290
|
"anim": "transition: all __VALUE__ __CURVE__ __DELAY__;",
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -2,4 +2,6 @@ export { default as useDevice } from './useDevice';
|
|
|
2
2
|
export { default as useDimensions } from './useDimensions';
|
|
3
3
|
export { default as useMounted } from './useMounted';
|
|
4
4
|
export { default as useWindowFocus } from './useWindowFocus';
|
|
5
|
+
export { default as useResizeObserver } from './useResizeObserver';
|
|
6
|
+
export { default as useIntersectionObserver } from './useIntersectionObserver';
|
|
5
7
|
export * from './usePubSub';
|
package/dist/hooks/index.js
CHANGED
|
@@ -2,4 +2,6 @@ export { default as useDevice } from './useDevice';
|
|
|
2
2
|
export { default as useDimensions } from './useDimensions';
|
|
3
3
|
export { default as useMounted } from './useMounted';
|
|
4
4
|
export { default as useWindowFocus } from './useWindowFocus';
|
|
5
|
+
export { default as useResizeObserver } from './useResizeObserver';
|
|
6
|
+
export { default as useIntersectionObserver } from './useIntersectionObserver';
|
|
5
7
|
export * from './usePubSub';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
interface IntersectionObserverOptions {
|
|
3
|
+
root?: Element | null;
|
|
4
|
+
rootMargin?: string;
|
|
5
|
+
threshold?: number | number[];
|
|
6
|
+
}
|
|
7
|
+
declare const useIntersectionObserver: (ref: RefObject<HTMLElement | null>, options?: IntersectionObserverOptions) => number;
|
|
8
|
+
export default useIntersectionObserver;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
const useIntersectionObserver = (ref, options = {}) => {
|
|
3
|
+
const [intersectionRatio, setIntersectionRatio] = useState(0);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const observer = new IntersectionObserver((entries) => {
|
|
6
|
+
entries.forEach(entry => {
|
|
7
|
+
setIntersectionRatio(entry.intersectionRatio);
|
|
8
|
+
});
|
|
9
|
+
}, options);
|
|
10
|
+
if (ref.current) {
|
|
11
|
+
observer.observe(ref.current);
|
|
12
|
+
}
|
|
13
|
+
return () => {
|
|
14
|
+
if (ref.current) {
|
|
15
|
+
observer.unobserve(ref.current);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}, [ref, options]);
|
|
19
|
+
return intersectionRatio;
|
|
20
|
+
};
|
|
21
|
+
export default useIntersectionObserver;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
interface IntersectionObserverOptions {
|
|
3
|
+
root?: Element | null;
|
|
4
|
+
rootMargin?: string;
|
|
5
|
+
threshold?: number | number[];
|
|
6
|
+
}
|
|
7
|
+
declare const useIntersectionObserver: (ref: RefObject<HTMLElement | null>, options?: IntersectionObserverOptions) => number;
|
|
8
|
+
export default useIntersectionObserver;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
const useIntersectionObserver = (ref, options = {}) => {
|
|
3
|
+
const [intersectionRatio, setIntersectionRatio] = useState(0);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const observer = new IntersectionObserver((entries) => {
|
|
6
|
+
entries.forEach(entry => {
|
|
7
|
+
setIntersectionRatio(entry.intersectionRatio);
|
|
8
|
+
});
|
|
9
|
+
}, options);
|
|
10
|
+
if (ref.current) {
|
|
11
|
+
observer.observe(ref.current);
|
|
12
|
+
}
|
|
13
|
+
return () => {
|
|
14
|
+
if (ref.current) {
|
|
15
|
+
observer.unobserve(ref.current);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}, [ref, options]);
|
|
19
|
+
return intersectionRatio;
|
|
20
|
+
};
|
|
21
|
+
export default useIntersectionObserver;
|
package/dist/hooks/usePubSub.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
import Events from "../funs/events";
|
|
3
3
|
const events = new Events();
|
|
4
|
-
const useSub = (event, fun) => {
|
|
4
|
+
const useSub = (event, fun, context) => {
|
|
5
5
|
const unsubscribe = () => {
|
|
6
6
|
events.off(event, fun);
|
|
7
7
|
};
|
|
8
8
|
useEffect(() => {
|
|
9
|
-
events.on(event, fun);
|
|
9
|
+
events.on(event, fun, context);
|
|
10
10
|
return;
|
|
11
11
|
}, []);
|
|
12
12
|
return unsubscribe;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
const useResizeObserver = (ref) => {
|
|
3
|
+
const [size, setSize] = useState({ width: 0, height: 0 });
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const handleResize = (entries) => {
|
|
6
|
+
for (let entry of entries) {
|
|
7
|
+
const { width, height } = entry.contentRect;
|
|
8
|
+
setSize({ width, height });
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
const resizeObserver = new ResizeObserver(handleResize);
|
|
12
|
+
if (ref.current) {
|
|
13
|
+
resizeObserver.observe(ref.current);
|
|
14
|
+
}
|
|
15
|
+
return () => {
|
|
16
|
+
if (ref.current) {
|
|
17
|
+
resizeObserver.unobserve(ref.current);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}, [ref]);
|
|
21
|
+
return size;
|
|
22
|
+
};
|
|
23
|
+
export default useResizeObserver;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import Sheet from "../comps/sheet";
|
|
4
|
+
const useToast = () => {
|
|
5
|
+
const sheet = useRef(null);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
}, []);
|
|
8
|
+
return _jsx(Sheet, { ref: sheet });
|
|
9
|
+
};
|
|
10
|
+
export default useToast;
|
package/dist/index.d.ts
CHANGED
|
@@ -17,5 +17,6 @@ export { default as Input } from "./comps/input";
|
|
|
17
17
|
export { default as Select } from "./comps/select";
|
|
18
18
|
export { default as Sheet } from "./comps/sheet";
|
|
19
19
|
export { default as Spinner } from "./comps/spinner";
|
|
20
|
+
export { default as TabView } from "./comps/tabview";
|
|
20
21
|
export { default as TextWheel } from "./comps/textwheel";
|
|
21
|
-
export { DRAWER_SIDE, SHEET, FORMVALIDATION, FORMVALIDATION_STYLE, SPINNER, TRANSITIONS, TRANSITION_CURVES } from "./types/enums";
|
|
22
|
+
export { CHECKBOX, DRAWER_SIDE, SHEET, FORMVALIDATION, FORMVALIDATION_STYLE, SPINNER, TRANSITIONS, TRANSITION_CURVES } from "./types/enums";
|
package/dist/index.js
CHANGED
|
@@ -17,5 +17,6 @@ export { default as Input } from "./comps/input";
|
|
|
17
17
|
export { default as Select } from "./comps/select";
|
|
18
18
|
export { default as Sheet } from "./comps/sheet";
|
|
19
19
|
export { default as Spinner } from "./comps/spinner";
|
|
20
|
+
export { default as TabView } from "./comps/tabview";
|
|
20
21
|
export { default as TextWheel } from "./comps/textwheel";
|
|
21
|
-
export { DRAWER_SIDE, SHEET, FORMVALIDATION, FORMVALIDATION_STYLE, SPINNER, TRANSITIONS, TRANSITION_CURVES } from "./types/enums";
|
|
22
|
+
export { CHECKBOX, DRAWER_SIDE, SHEET, FORMVALIDATION, FORMVALIDATION_STYLE, SPINNER, TRANSITIONS, TRANSITION_CURVES } from "./types/enums";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const Pencil = "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";
|
|
2
|
+
export default Pencil;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const Pencil = "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";
|
|
2
|
+
export default Pencil;
|
package/dist/mixins.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
*,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}button{user-select:none;cursor:pointer}input{user-select:none}input:-webkit-autofill{background-color:rgba(0,0,0,0) !important;-webkit-box-shadow:0 0 0px 1000px rgba(0,0,0,0) inset;box-shadow:0 0 0px 1000px rgba(0,0,0,0) inset}[aria-hidden=true]{user-select:none;pointer-events:none}[popover]{margin:0;padding:0;border:0}:root{--basic: ease;--back: linear( 0, -0.0077 5.2%, -0.0452 16.98%, -0.0493 22.35%, -0.0418 25.57%, -0.0258 28.57%, -0.0007 31.42%, 0.0335 34.15%, 0.1242 39.03%, 0.2505 43.65%, 0.3844 47.35%, 0.656 53.68%, 0.81 58.37%, 0.9282 63.52%, 0.9719 66.23%, 1.0055 69.04%, 1.0255 71.4%, 1.0396 73.87%, 1.0477 76.48%, 1.05 79.27%, 1.0419 84.36%, 1.0059 95.49%, 1 );--expo: linear( 0, 0.0053 17.18%, 0.0195 26.59%, 0.0326 30.31%, 0.0506 33.48%, 0.0744 36.25%, 0.1046 38.71%, 0.1798 42.62%, 0.2846 45.93%, 0.3991 48.37%, 0.6358 52.29%, 0.765 55.45%, 0.8622 59.3%, 0.8986 61.51%, 0.9279 63.97%, 0.9481 66.34%, 0.9641 69.01%, 0.9856 75.57%, 0.9957 84.37%, 1 );--sine: linear( 0, 0.007 5.35%, 0.0282 10.75%, 0.0638 16.26%, 0.1144 21.96%, 0.1833 28.16%, 0.2717 34.9%, 0.6868 62.19%, 0.775 68.54%, 0.8457 74.3%, 0.9141 81.07%, 0.9621 87.52%, 0.9905 93.8%, 1 );--power: linear( 0, 0.0012 14.95%, 0.0089 22.36%, 0.0297 28.43%, 0.0668 33.43%, 0.0979 36.08%, 0.1363 38.55%, 0.2373 43.07%, 0.3675 47.01%, 0.5984 52.15%, 0.7121 55.23%, 0.8192 59.21%, 0.898 63.62%, 0.9297 66.23%, 0.9546 69.06%, 0.9733 72.17%, 0.9864 75.67%, 0.9982 83.73%, 1 );--circ: linear( -0, 0.0033 5.75%, 0.0132 11.43%, 0.0296 16.95%, 0.0522 22.25%, 0.0808 27.25%, 0.1149 31.89%, 0.1542 36.11%, 0.1981 39.85%, 0.2779 44.79%, 0.3654 48.15%, 0.4422 49.66%, 0.5807 50.66%, 0.6769 53.24%, 0.7253 55.37%, 0.7714 58.01%, 0.8142 61.11%, 0.8536 64.65%, 0.9158 72.23%, 0.9619 80.87%, 0.9904 90.25%, 1 );--bounce: linear( 0, 0.0039, 0.0157, 0.0352, 0.0625 9.09%, 0.1407, 0.25, 0.3908, 0.5625, 0.7654, 1, 0.8907, 0.8125 45.45%, 0.7852, 0.7657, 0.7539, 0.75, 0.7539, 0.7657, 0.7852, 0.8125 63.64%, 0.8905, 1 72.73%, 0.9727, 0.9532, 0.9414, 0.9375, 0.9414, 0.9531, 0.9726, 1, 0.9883, 0.9844, 0.9883, 1 );--elastic: linear( 0, 0.0009 8.51%, -0.0047 19.22%, 0.0016 22.39%, 0.023 27.81%, 0.0237 30.08%, 0.0144 31.81%, -0.0051 33.48%, -0.1116 39.25%, -0.1181 40.59%, -0.1058 41.79%, -0.0455, 0.0701 45.34%, 0.9702 55.19%, 1.0696 56.97%, 1.0987 57.88%, 1.1146 58.82%, 1.1181 59.83%, 1.1092 60.95%, 1.0057 66.48%, 0.986 68.14%, 0.9765 69.84%, 0.9769 72.16%, 0.9984 77.61%, 1.0047 80.79%, 0.9991 91.48%, 1 );--ease: var(--back);--text-wheel-speed: 2;--text-wheel-transition: translate calc(var(--text-wheel-speed) * 1s) var(--ease);--checkbox-checked: rgb(46, 161, 42);--checkbox-unchecked: rgb(203, 203, 203);--checkbox-thumb: #fff;--checkbox-thumb-shadow: #000;--checkbox-thumb-shadow-size: 2px;--select: #fff;--select-options: #fff;--select-option-font-size: 16px;--select-hover: #eee;--select-selected: #ddd;--select-padding: 6px 8px;--select-radius: 5px;--cover-bg: rgba(255,255,255,0.8);--cover-label: #111;--dialog-bg: #fff;--dialog-radius: 10px;--dialog-padding: 10px;--dialog-title-font-size: 16px;--dialog-closer-font-size: 36px;--dialog-closer-hover: rgba(255,255,255,0.2);--sheet-error: #ff4747;--sheet-warn: #ffba00;--sheet-success: #23ac28;--zuz-overlay: rgba(0, 0, 0, 0.7);--zuz-overlay-blur: 0;--drawer-color: #fff;--drawer-handle-color: #ccc;--drawer-radius-v: 0px;--drawer-radius-h: 0px}.flex{display:flex}.flex.cols{flex-direction:column}.flex.aic{align-items:center}.flex.jcc{justify-content:center}.abs{position:absolute}.fixed{position:fixed}.fill{top:0px;left:0px;bottom:0px;right:0px}.fillx{top:-10px;left:-10px;bottom:-10px;right:-10px}.grid{display:grid}.nope{pointer-events:none}.nous{user-select:none}.rel{position:relative}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-with-error{box-shadow:inset 0px 0px 0px 1px #ff8b8b}button .ico-btn{gap:5px}button .b-label{flex:1}.zuz-checkbox{height:25px;width:45px;cursor:pointer}.zuz-checkbox input[type=checkbox]{z-index:0;left:10px;top:10px;opacity:0}.zuz-checkbox:before{content:"";position:absolute;width:45px;height:25px;background:var(--checkbox-unchecked);border-radius:50px;z-index:1;transition:all .3s linear 0s}.zuz-checkbox:after{content:"";position:absolute;width:21px;height:21px;background:var(--checkbox-thumb);border-radius:50px;z-index:2;top:2px;left:2px;box-shadow:0px 0px --checkbox-thumb-shadow-size --checkbox-thumb-shadow;transition:all .2s linear 0s}.zuz-checkbox.is-checked:before{box-shadow:inset 0px 0px 0px 15px var(--checkbox-checked)}.zuz-checkbox.is-checked:after{transform:translateX(20px)}.zuz-spinner{animation:spin infinite}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.zuz-cover{backdrop-filter:blur(4px);z-index:99999;gap:15px}.zuz-cover .label{font-size:14px;animation:breath 1s linear infinite}@keyframes breath{0%{opacity:.5}50%{opacity:1}100%{opacity:.5}}.zuz-toast,.zuz-sheet.toast-warn,.zuz-sheet.toast-success,.zuz-sheet.toast-error,.zuz-sheet.toast-default{border-radius:6px;padding:6px 12px;font-size:14px;white-space:pre}.zuz-sheet{top:50%;left:50%;transform:translate(-50%, -50%);z-index:214748364;transform-origin:top left;transition:all .5s cubic-bezier(0.2, -0.36, 0, 1.46) 0s}.zuz-sheet.wobble{transform-origin:inherit !important}.zuz-sheet.toast-default{background:#333;color:#fff;top:10px !important}.zuz-sheet.toast-error{background:var(--sheet-error);color:#fff;top:10px}.zuz-sheet.toast-success{background:var(--sheet-success);color:#fff;top:10px}.zuz-sheet.toast-warn{background:var(--sheet-warn);color:#111;top:10px}.zuz-sheet.toast-dialog{background:var(--dialog-bg);border-radius:var(--dialog-radius);padding:var(--dialog-padding);overflow:hidden}.zuz-sheet .zuz-sheet-head{margin-bottom:20px}.zuz-sheet .zuz-sheet-head .zuz-sheet-title{flex:1;font-size:var(--dialog-title-font-size);opacity:.5;text-align:center;padding:0px 45px}.zuz-sheet .zuz-sheet-head .zuz-sheet-dot{flex:1}.zuz-sheet .zuz-sheet-head .zuz-sheet-closer{width:32px;height:32px;cursor:pointer;font-size:var(--dialog-closer-font-size);background:rgba(0,0,0,0);border:0px;line-height:0;padding:0px;font-weight:normal;border-radius:20px;opacity:.35;top:50%;right:0px;transform:translateY(-50%)}.zuz-sheet .zuz-sheet-head .zuz-sheet-closer:hover{background:var(--dialog-closer-hover);opacity:1}.zuz-sheet-overlay{background:rgba(0,0,0,.7);z-index:111;backdrop-filter:blur(10px)}.zuz-context-menu{z-index:99;background:var(--context-background);border-radius:var(--context-radius);padding:10px;box-shadow:var(--context-shadow)}.zuz-context-menu .context-line{height:1px;background:var(--context-seperator);margin:3px 6px}.zuz-context-menu .context-menu-item{width:220px;padding:6px 10px;gap:10px;cursor:pointer;font-size:var(--context-label-size);border-radius:var(--context-radius)}.zuz-context-menu .context-menu-item .ico{font-size:var(--context-icon-size)}.zuz-context-menu .context-menu-item:hover{background:var(--context-hover)}@position-try --zuz-select-bottom{top:anchor(bottom);bottom:unset;margin-block:calc(var(--zuz-select-height) + var(--zuz-select-gap)) 0}.zuz-selectk-wrap{width:100%}.zuz-select{width:100%;gap:5px;background:var(--select);border-radius:var(--select-radius);border:0px;padding:12px 15px;anchor-name:--zuz-select-anchor}.zuz-select:hover{background:var(--select-hover)}.zuz-select .zuz-selected{flex:1;text-align:left}.zuz-select-options{--zuz-select-height: 30px;--zuz-select-gap: 0px;position-anchor:--zuz-select-anchor;position-try:most-height --zuz-select-bottom;width:100%;max-height:400px;overflow-x:hidden;gap:2px;background:var(--select-options);border-radius:var(--select-radius);padding:4px 0px}.zuz-select-options button{background:rgba(0,0,0,0);border:0px;text-align:left;padding:var(--select-padding);border-radius:var(--select-radius);font-size:var(--select-option-font-size)}.zuz-select-options button:hover{background:var(--select-hover)}.zuz-select-options button.selected{background:var(--select-selected)}.zuz-overlay{background:var(--zuz-overlay);z-index:2147483645;backdrop-filter:blur(var(--zuz-overlay-blur))}.drawer-h,.zuz-drawer.drawer-right,.zuz-drawer.drawer-left{min-width:320px;max-width:90vw;top:0px;bottom:0px;border-radius:var(--drawer-radius-h)}.drawer-v,.zuz-drawer.drawer-bottom,.zuz-drawer.drawer-top{min-height:10vh;max-height:90vh;left:0px;right:0px;border-radius:var(--drawer-radius-v)}.zuz-drawer{background:var(--drawer-color);z-index:2147483646;overflow-x:hidden;overflow-y:auto}.zuz-drawer.drawer-left{left:0px}.zuz-drawer.drawer-right{right:0px}.zuz-drawer.drawer-top{top:0px}.zuz-drawer.drawer-bottom{bottom:0px}.zuz-drawer .drawer-handle{width:100px;height:6px;border-radius:10px;background:var(--drawer-handle-color);margin:12px auto 0px auto}.text-wheel{transform-style:flat}.text-wheel .wheel-char{font-variant:tabular-nums;overflow:hidden;height:1lh}.text-wheel .wheel-char .wheel-char-track{transition:var(--text-wheel-transition)}.text-wheel .wheel-char .wheel-char-track.wheel-track-down{translate:0 calc((10 - var(--v))*-1lh)}.text-wheel .wheel-char .wheel-char-track.wheel-track-up{translate:0 calc((var(--v) + 1)*-1lh)}.text-wheel .wheel-char .wheel-char-track span{height:1lh;transition:opacity .5s}
|
|
1
|
+
*,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}button{user-select:none;cursor:pointer}input{user-select:none}input:-webkit-autofill{background-color:rgba(0,0,0,0) !important;-webkit-box-shadow:0 0 0px 1000px rgba(0,0,0,0) inset;box-shadow:0 0 0px 1000px rgba(0,0,0,0) inset}[aria-hidden=true]{user-select:none;pointer-events:none;cursor:auto}[popover]{margin:0;padding:0;border:0}:root{--basic: ease;--back: linear( 0, -0.0077 5.2%, -0.0452 16.98%, -0.0493 22.35%, -0.0418 25.57%, -0.0258 28.57%, -0.0007 31.42%, 0.0335 34.15%, 0.1242 39.03%, 0.2505 43.65%, 0.3844 47.35%, 0.656 53.68%, 0.81 58.37%, 0.9282 63.52%, 0.9719 66.23%, 1.0055 69.04%, 1.0255 71.4%, 1.0396 73.87%, 1.0477 76.48%, 1.05 79.27%, 1.0419 84.36%, 1.0059 95.49%, 1 );--expo: linear( 0, 0.0053 17.18%, 0.0195 26.59%, 0.0326 30.31%, 0.0506 33.48%, 0.0744 36.25%, 0.1046 38.71%, 0.1798 42.62%, 0.2846 45.93%, 0.3991 48.37%, 0.6358 52.29%, 0.765 55.45%, 0.8622 59.3%, 0.8986 61.51%, 0.9279 63.97%, 0.9481 66.34%, 0.9641 69.01%, 0.9856 75.57%, 0.9957 84.37%, 1 );--sine: linear( 0, 0.007 5.35%, 0.0282 10.75%, 0.0638 16.26%, 0.1144 21.96%, 0.1833 28.16%, 0.2717 34.9%, 0.6868 62.19%, 0.775 68.54%, 0.8457 74.3%, 0.9141 81.07%, 0.9621 87.52%, 0.9905 93.8%, 1 );--power: linear( 0, 0.0012 14.95%, 0.0089 22.36%, 0.0297 28.43%, 0.0668 33.43%, 0.0979 36.08%, 0.1363 38.55%, 0.2373 43.07%, 0.3675 47.01%, 0.5984 52.15%, 0.7121 55.23%, 0.8192 59.21%, 0.898 63.62%, 0.9297 66.23%, 0.9546 69.06%, 0.9733 72.17%, 0.9864 75.67%, 0.9982 83.73%, 1 );--circ: linear( -0, 0.0033 5.75%, 0.0132 11.43%, 0.0296 16.95%, 0.0522 22.25%, 0.0808 27.25%, 0.1149 31.89%, 0.1542 36.11%, 0.1981 39.85%, 0.2779 44.79%, 0.3654 48.15%, 0.4422 49.66%, 0.5807 50.66%, 0.6769 53.24%, 0.7253 55.37%, 0.7714 58.01%, 0.8142 61.11%, 0.8536 64.65%, 0.9158 72.23%, 0.9619 80.87%, 0.9904 90.25%, 1 );--bounce: linear( 0, 0.0039, 0.0157, 0.0352, 0.0625 9.09%, 0.1407, 0.25, 0.3908, 0.5625, 0.7654, 1, 0.8907, 0.8125 45.45%, 0.7852, 0.7657, 0.7539, 0.75, 0.7539, 0.7657, 0.7852, 0.8125 63.64%, 0.8905, 1 72.73%, 0.9727, 0.9532, 0.9414, 0.9375, 0.9414, 0.9531, 0.9726, 1, 0.9883, 0.9844, 0.9883, 1 );--elastic: linear( 0, 0.0009 8.51%, -0.0047 19.22%, 0.0016 22.39%, 0.023 27.81%, 0.0237 30.08%, 0.0144 31.81%, -0.0051 33.48%, -0.1116 39.25%, -0.1181 40.59%, -0.1058 41.79%, -0.0455, 0.0701 45.34%, 0.9702 55.19%, 1.0696 56.97%, 1.0987 57.88%, 1.1146 58.82%, 1.1181 59.83%, 1.1092 60.95%, 1.0057 66.48%, 0.986 68.14%, 0.9765 69.84%, 0.9769 72.16%, 0.9984 77.61%, 1.0047 80.79%, 0.9991 91.48%, 1 );--ease: var(--back);--max-z-index: 2147483647;--text-wheel-speed: 2;--text-wheel-transition: translate calc(var(--text-wheel-speed) * 1s) var(--ease);--checkbox-check-color: #fff;--checkbox-check-size: 13px;--checkbox-size: 17px;--checkbox-radius: 6px;--checkbox-checked: rgb(46, 161, 42);--checkbox-unchecked: rgb(203, 203, 203);--checkbox-thumb: #fff;--checkbox-thumb-shadow: #000;--checkbox-thumb-shadow-size: 2px;--select: #fff;--select-options: #fff;--select-option-font-size: 16px;--select-hover: #eee;--select-selected: #ddd;--select-padding: 6px 8px;--select-radius: 5px;--cover-bg: rgba(255,255,255,0.8);--cover-label: #111;--zuz-overlay: rgba(0, 0, 0, 0.7);--zuz-overlay-blur: 0;--drawer-color: #fff;--drawer-handle-color: #ccc;--drawer-radius-v: 0px;--drawer-radius-h: 0px;--tab-head: #fff;--tab-head-padding: 3px 3px 0px 3px;--tab-head-radius: 6px 6px 0px 0px;--tab: #eee;--tab-active: #ccc;--tab-active-color: #111;--tab-hover: #ddd;--tab-color: #111;--tab-radius: 5px 5px 0px 0px;--tab-padding: 5px 20px;--tab-body: #fff;--tab-body-radius: 0px 5px 5px 5px;--tab-body-padding: 0px;--tab-border: 1px #ddd solid;--sheet-bg: #fff;--sheet-radius: 10px;--sheet-padding: 6px 12px;--sheet-head-padding: 10px;--sheet-body-padding: 10px;--sheet-footer: #ddd;--sheet-footer-padding: 10px;--sheet-action: #222;--sheet-action-color: #fff;--sheet-action-hover: #333;--sheet-action-radius: 7px;--sheet-action-padding: 7px 20px;--sheet-action-font-size: 16px;--sheet-action-font-weight: bold;--sheet-closer-color: #111;--sheet-closer-hover: rgba(255,255,255,0.2);--sheet-closer-opacity: 0.75;--sheet-closer-hover-opacity: 1;--sheet-font-size: 15px;--sheet-title-opacity: 0.75;--sheet-title-font-size: 16px;--sheet-closer-font-size: 36px;--sheet-error: #ff4747;--sheet-warn: #ffba00;--sheet-success: #23ac28}.flex{display:flex}.flex.cols{flex-direction:column}.flex.aic{align-items:center}.flex.jcc{justify-content:center}.abs{position:absolute}.fixed{position:fixed}.fill{top:0px;left:0px;bottom:0px;right:0px}.fillx{top:-10px;left:-10px;bottom:-10px;right:-10px}.grid{display:grid}.nope{pointer-events:none}.nous{user-select:none}.rel{position:relative}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-with-error{box-shadow:inset 0px 0px 0px 1px #ff8b8b}button.ico-btn{gap:5px}button .b-label{flex:1}.checkbox{height:var(--checkbox-size);width:var(--checkbox-size);cursor:pointer;border:1px var(--checkbox-unchecked) solid;border-radius:var(--checkbox-radius);overflow:hidden}.checkbox input[type=checkbox]{z-index:0;opacity:0}.checkbox:before{font-size:var(--checkbox-check-size);color:var(--checkbox-check-color);opacity:0}.checkbox.is-checked{background-color:var(--checkbox-checked);border:1px var(--checkbox-checked) solid}.checkbox.is-checked:before{opacity:1}.zuz-checkbox{height:25px;width:45px;cursor:pointer}.zuz-checkbox input[type=checkbox]{z-index:0;left:10px;top:10px;opacity:0}.zuz-checkbox:before{content:"";position:absolute;width:45px;height:25px;background:var(--checkbox-unchecked);border-radius:50px;z-index:1;transition:all .3s linear 0s}.zuz-checkbox:after{content:"";position:absolute;width:21px;height:21px;background:var(--checkbox-thumb);border-radius:50px;z-index:2;top:2px;left:2px;box-shadow:0px 0px --checkbox-thumb-shadow-size --checkbox-thumb-shadow;transition:all .2s linear 0s}.zuz-checkbox.is-checked:before{box-shadow:inset 0px 0px 0px 15px var(--checkbox-checked)}.zuz-checkbox.is-checked:after{transform:translateX(20px)}.zuz-spinner{animation:spin infinite}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.zuz-cover{backdrop-filter:blur(4px);z-index:99999;gap:15px}.zuz-cover .label{font-size:14px;animation:breath 1s linear infinite}@keyframes breath{0%{opacity:.5}50%{opacity:1}100%{opacity:.5}}.zuz-toast,.zuz-sheet.toast-warn,.zuz-sheet.toast-success,.zuz-sheet.toast-error,.zuz-sheet.toast-default{border-radius:var(--sheet-radius);padding:var(--sheet-padding);font-size:var(--sheet-font-size);white-space:pre}.zuz-sheet{top:50%;left:50%;transform:translate(-50%, -50%);z-index:2147483645;transform-origin:top left;transition:all .5s cubic-bezier(0.2, -0.36, 0, 1.46) 0s}.zuz-sheet.wobble{transform-origin:inherit !important}.zuz-sheet.toast-default{background:#333;color:#fff;top:10px !important}.zuz-sheet.toast-error{background:var(--sheet-error);color:#fff;top:10px}.zuz-sheet.toast-success{background:var(--sheet-success);color:#fff;top:10px}.zuz-sheet.toast-warn{background:var(--sheet-warn);color:#111;top:10px}.zuz-sheet.toast-dialog{background:var(--sheet-bg);border-radius:var(--sheet-radius);overflow:hidden}.zuz-sheet .sheet-head{padding:var(--sheet-head-padding)}.zuz-sheet .sheet-head .sheet-title{flex:1;font-size:var(--sheet-title-font-size);opacity:var(--sheet-title-opacity);text-align:center;padding:0px 45px;display:flex;align-items:center;justify-content:center}.zuz-sheet .sheet-head .sheet-dot{flex:1}.zuz-sheet .sheet-head .sheet-closer{width:32px;height:32px;cursor:pointer;font-size:var(--sheet-closer-font-size);color:var(--sheet-closer-color);background:rgba(0,0,0,0);border:0px;line-height:0;padding:0px;font-weight:normal;border-radius:20px;opacity:var(--sheet-closer-opacity);top:15px;right:5px;transform:translateY(-50%);font-size:var(--sheet-closer-font-size)}.zuz-sheet .sheet-head .sheet-closer:hover{background:var(--sheet-closer-hover);opacity:var(--sheet-closer-hover-opacity)}.zuz-sheet .sheet-body{padding:var(--sheet-body-padding)}.zuz-sheet .sheet-footer{padding:var(--sheet-footer-padding);background:var(--sheet-footer)}.zuz-sheet .sheet-footer .sheet-action-btn{background:var(--sheet-action);color:var(--sheet-action-color);border-radius:var(--sheet-action-radius);padding:var(--sheet-action-padding);font-size:var(--sheet-action-font-size);font-weight:var(--sheet-action-font-weight);border:0px}.zuz-sheet .sheet-footer .sheet-action-btn:hover{background:var(--sheet-action-hover)}.zuz-sheet-overlay{background:rgba(0,0,0,.7);z-index:111;backdrop-filter:blur(10px)}.zuz-context-menu{z-index:99;background:var(--context-background);border-radius:var(--context-radius);padding:10px;box-shadow:var(--context-shadow)}.zuz-context-menu .context-line{height:1px;background:var(--context-seperator);margin:3px 6px}.zuz-context-menu .context-menu-item{width:220px;padding:6px 10px;gap:10px;cursor:pointer;font-size:var(--context-label-size);border-radius:var(--context-radius)}.zuz-context-menu .context-menu-item .ico{font-size:var(--context-icon-size)}.zuz-context-menu .context-menu-item:hover{background:var(--context-hover)}@position-try --zuz-select-bottom{top:anchor(bottom);bottom:unset;margin-block:calc(var(--zuz-select-height) + var(--zuz-select-gap)) 0}.zuz-selectk-wrap{width:100%}.zuz-select{width:100%;gap:5px;background:var(--select);border-radius:var(--select-radius);border:0px;padding:12px 15px;anchor-name:--zuz-select-anchor}.zuz-select:hover{background:var(--select-hover)}.zuz-select .zuz-selected{flex:1;text-align:left}.zuz-select-options{--zuz-select-height: 30px;--zuz-select-gap: 0px;position-anchor:--zuz-select-anchor;position-try:most-height --zuz-select-bottom;width:100%;max-height:400px;overflow-x:hidden;gap:2px;background:var(--select-options);border-radius:var(--select-radius);padding:4px 0px}.zuz-select-options button{background:rgba(0,0,0,0);border:0px;text-align:left;padding:var(--select-padding);border-radius:var(--select-radius);font-size:var(--select-option-font-size)}.zuz-select-options button:hover{background:var(--select-hover)}.zuz-select-options button.selected{background:var(--select-selected)}.zuz-overlay{background:var(--zuz-overlay);z-index:2147483645;backdrop-filter:blur(var(--zuz-overlay-blur))}.drawer-h,.zuz-drawer.drawer-right,.zuz-drawer.drawer-left{min-width:320px;max-width:90vw;top:0px;bottom:0px;border-radius:var(--drawer-radius-h)}.drawer-v,.zuz-drawer.drawer-bottom,.zuz-drawer.drawer-top{min-height:10vh;max-height:90vh;left:0px;right:0px;border-radius:var(--drawer-radius-v)}.zuz-drawer{background:var(--drawer-color);z-index:2147483646;overflow-x:hidden;overflow-y:auto}.zuz-drawer.drawer-left{left:0px}.zuz-drawer.drawer-right{right:0px}.zuz-drawer.drawer-top{top:0px}.zuz-drawer.drawer-bottom{bottom:0px}.zuz-drawer .drawer-handle{width:100px;height:6px;border-radius:10px;background:var(--drawer-handle-color);margin:12px auto 0px auto}.text-wheel{transform-style:flat}.text-wheel .wheel-char{font-variant:tabular-nums;overflow:hidden;height:1lh}.text-wheel .wheel-char .wheel-char-track{transition:var(--text-wheel-transition)}.text-wheel .wheel-char .wheel-char-track.wheel-track-down{translate:0 calc((10 - var(--v))*-1lh)}.text-wheel .wheel-char .wheel-char-track.wheel-track-up{translate:0 calc((var(--v) + 1)*-1lh)}.text-wheel .wheel-char .wheel-char-track span{height:1lh;transition:opacity .5s}.tabview .tab-head{gap:1px;background:var(--tab-head);padding:var(--tab-head-padding);border-radius:var(--tab-head-radius)}.tabview .tab-head .tab-label{flex:1;border:0px;background:var(--tab);border-radius:var(--tab-radius);padding:var(--tab-padding);color:var(--tab-color)}.tabview .tab-head .tab-label.active{color:var(--tab-active-color);background:var(--tab-active);transform:translateY(1px)}.tabview .tab-head .tab-label.active:hover{background:var(--tab-active)}.tabview .tab-head .tab-label:hover{background:var(--tab-hover)}.tabview .tab-content{border:var(--tab-border);overflow:hidden;border-radius:var(--tab-body-radius)}.tabview .tab-content .tabs-track{transform-style:flat}.tabview .tab-content .tab-body{width:100%;background:var(--tab-body);padding:var(--tab-body-padding)}.comp-editor{top:10px;left:10px;border-radius:10px;z-index:var(--max-z-index)}.comp-editor .pencil{width:40px;height:40px;background:#fff;border-radius:50%;border:0px}.comp-editor .pencil img{width:50%}.comp-editor .pencil span{font-size:36px;color:#111;line-height:.8}.comp-editor .editor-props{background:#fff;border-radius:10px;left:60px;top:10px;width:350px;overflow:hidden;box-shadow:0px 0px 0px 1px #ccc,0px 0px 0px 5px #eaeaea}.comp-editor .editor-props .editor-head{background:#ddd;padding:4px 12px;font-size:14px}.comp-editor .editor-props .editor-head .head-label{flex:1}.comp-editor .editor-props .editor-head .head-action{display:flex;flex:1;gap:5px;align-items:flex-end;justify-content:flex-end}.comp-editor .editor-props .editor-head .head-action button{background:#333;border:0px;font-size:12px;color:#fff;font-weight:bold;padding:2px 10px;border-radius:10px}.comp-editor .editor-props .editor-head .head-action button:hover{background:#222}.comp-editor .editor-props .editor-body{padding:12px;max-height:70vh;overflow-x:hidden;overflow-y:auto;gap:5px}.comp-editor .editor-props .editor-body textarea{flex:1 1;width:100%;border:0px;background:#ebebeb;padding:15px;min-height:290px;color:#111;border-radius:10px;resize:none}.comp-editor .editor-props .editor-body .copy{top:20px;right:20px;z-index:2;border-radius:10px;border:0px;padding:3px 10px;background:var(--primary)}.comp-editor .editor-props .editor-body .group{margin-top:10px}.comp-editor .editor-props .editor-body .group .gprops{gap:5px}.comp-editor .editor-props .editor-body .group .glabel{background:#333;align-self:flex-start;font-weight:bold;font-size:12px;border-radius:5px 5px 0px 0px;padding:2px 5px;transform:translateX(5px);color:#f1f1f1}.comp-editor .editor-props .editor-body .gprop,.comp-editor .editor-props .editor-body .prop{flex:1;padding:6px 0px;font-size:13px;background:#f7f7f7;padding:5px 10px;border-radius:5px}.comp-editor .editor-props .editor-body .gprop .pop,.comp-editor .editor-props .editor-body .prop .pop{flex:1;white-space:pre}.comp-editor .editor-props .editor-body .gprop .pop:nth-child(2),.comp-editor .editor-props .editor-body .prop .pop:nth-child(2){align-items:flex-end;justify-content:flex-end}.comp-editor .editor-props .editor-body .gprop .pop input,.comp-editor .editor-props .editor-body .prop .pop input{flex:1;width:70px;max-width:70px;min-width:70px;border:0px;background:#777;padding:4px;border-radius:4px;margin-left:5px}.comp-editor .editor-props .editor-body .gprop .pop input[type=color],.comp-editor .editor-props .editor-body .prop .pop input[type=color]{background:rgba(0,0,0,0);border-radius:5px;padding:0px;appearance:none}.comp-editor .editor-props .editor-body .gprop .pop .l-k,.comp-editor .editor-props .editor-body .prop .pop .l-k{font-size:10px;color:#777}
|
package/dist/types/enums.d.ts
CHANGED
|
@@ -36,3 +36,22 @@ export declare enum DRAWER_SIDE {
|
|
|
36
36
|
Top = "TOP",
|
|
37
37
|
Bottom = "BOTTOM"
|
|
38
38
|
}
|
|
39
|
+
export declare enum CHECKBOX {
|
|
40
|
+
Default = "DEFAULT",
|
|
41
|
+
Switch = "SWITCH"
|
|
42
|
+
}
|
|
43
|
+
export declare enum EDIT_TYPE {
|
|
44
|
+
Slider = "SLIDER",
|
|
45
|
+
Checkbox = "CHECKBOX"
|
|
46
|
+
}
|
|
47
|
+
export declare enum DATATYPE {
|
|
48
|
+
String = "STRING",
|
|
49
|
+
Number = "NUMBER",
|
|
50
|
+
Boolean = "BOOLEAN",
|
|
51
|
+
Array = "ARRAY",
|
|
52
|
+
Object = "OBJECT",
|
|
53
|
+
Date = "DATE",
|
|
54
|
+
Time = "TIME",
|
|
55
|
+
DateTime = "DATETIME",
|
|
56
|
+
File = "FILE"
|
|
57
|
+
}
|
package/dist/types/enums.js
CHANGED
|
@@ -43,3 +43,25 @@ export var DRAWER_SIDE;
|
|
|
43
43
|
DRAWER_SIDE["Top"] = "TOP";
|
|
44
44
|
DRAWER_SIDE["Bottom"] = "BOTTOM";
|
|
45
45
|
})(DRAWER_SIDE || (DRAWER_SIDE = {}));
|
|
46
|
+
export var CHECKBOX;
|
|
47
|
+
(function (CHECKBOX) {
|
|
48
|
+
CHECKBOX["Default"] = "DEFAULT";
|
|
49
|
+
CHECKBOX["Switch"] = "SWITCH";
|
|
50
|
+
})(CHECKBOX || (CHECKBOX = {}));
|
|
51
|
+
export var EDIT_TYPE;
|
|
52
|
+
(function (EDIT_TYPE) {
|
|
53
|
+
EDIT_TYPE["Slider"] = "SLIDER";
|
|
54
|
+
EDIT_TYPE["Checkbox"] = "CHECKBOX";
|
|
55
|
+
})(EDIT_TYPE || (EDIT_TYPE = {}));
|
|
56
|
+
export var DATATYPE;
|
|
57
|
+
(function (DATATYPE) {
|
|
58
|
+
DATATYPE["String"] = "STRING";
|
|
59
|
+
DATATYPE["Number"] = "NUMBER";
|
|
60
|
+
DATATYPE["Boolean"] = "BOOLEAN";
|
|
61
|
+
DATATYPE["Array"] = "ARRAY";
|
|
62
|
+
DATATYPE["Object"] = "OBJECT";
|
|
63
|
+
DATATYPE["Date"] = "DATE";
|
|
64
|
+
DATATYPE["Time"] = "TIME";
|
|
65
|
+
DATATYPE["DateTime"] = "DATETIME";
|
|
66
|
+
DATATYPE["File"] = "FILE";
|
|
67
|
+
})(DATATYPE || (DATATYPE = {}));
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { DetailedHTMLProps, HTMLAttributes } from "react";
|
|
2
|
+
import { animationProps } from "../comps/base";
|
|
3
|
+
export interface BaseProps {
|
|
4
|
+
as?: string;
|
|
5
|
+
animate?: animationProps;
|
|
6
|
+
editor?: boolean;
|
|
7
|
+
}
|
|
2
8
|
export interface FormatNumberParams {
|
|
3
9
|
number: number | string;
|
|
4
10
|
locale: string;
|