react-miui 0.0.3 → 0.4.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/CHANGELOG.md +41 -0
- package/assets/back.svg +1 -0
- package/assets/forward.svg +1 -0
- package/assets/sources/back.fla +0 -0
- package/dist/components/form/Checkbox.module.scss +13 -6
- package/dist/components/form/Toggle.d.ts +8 -0
- package/dist/components/form/Toggle.d.ts.map +1 -0
- package/dist/{demo/components/form/Checkbox.js → components/form/Toggle.js} +17 -8
- package/dist/components/form/Toggle.js.map +1 -0
- package/dist/components/form/Toggle.module.scss +46 -0
- package/dist/components/icons/Back.d.ts +7 -0
- package/dist/components/icons/Back.d.ts.map +1 -0
- package/dist/components/icons/Back.js +13 -0
- package/dist/components/icons/Back.js.map +1 -0
- package/dist/components/icons/Forward.d.ts +7 -0
- package/dist/components/icons/Forward.d.ts.map +1 -0
- package/dist/components/icons/Forward.js +13 -0
- package/dist/components/icons/Forward.js.map +1 -0
- package/dist/components/icons/Icon.d.ts +13 -0
- package/dist/components/icons/Icon.d.ts.map +1 -0
- package/dist/components/icons/Icon.js +43 -0
- package/dist/components/icons/Icon.js.map +1 -0
- package/dist/components/layout/header/Header.d.ts +4 -0
- package/dist/components/layout/header/Header.d.ts.map +1 -1
- package/dist/components/layout/header/Header.js +26 -2
- package/dist/components/layout/header/Header.js.map +1 -1
- package/dist/components/layout/header/Header.module.scss +46 -2
- package/dist/components/layout/header/HeaderIconAction.d.ts +17 -0
- package/dist/components/layout/header/HeaderIconAction.d.ts.map +1 -0
- package/dist/components/layout/header/HeaderIconAction.js +40 -0
- package/dist/components/layout/header/HeaderIconAction.js.map +1 -0
- package/dist/components/layout/header/HeaderIconAction.module.scss +22 -0
- package/dist/components/layout/header/StickyHeader.js +1 -1
- package/dist/components/layout/header/StickyHeader.js.map +1 -1
- package/dist/components/layout/list/Header.d.ts +4 -0
- package/dist/components/layout/list/Header.d.ts.map +1 -0
- package/dist/components/layout/list/Header.js +16 -0
- package/dist/components/layout/list/Header.js.map +1 -0
- package/dist/components/layout/list/Header.module.scss +8 -0
- package/dist/components/layout/list/Item.d.ts +1 -0
- package/dist/components/layout/list/Item.d.ts.map +1 -1
- package/dist/components/layout/list/Item.js +18 -5
- package/dist/components/layout/list/Item.js.map +1 -1
- package/dist/components/layout/list/Item.module.scss +10 -2
- package/dist/components/layout/list/Label.d.ts +8 -0
- package/dist/components/layout/list/Label.d.ts.map +1 -0
- package/dist/components/layout/list/Label.js +16 -0
- package/dist/components/layout/list/Label.js.map +1 -0
- package/dist/components/layout/list/Label.module.scss +9 -0
- package/dist/components/layout/list/Value.d.ts +4 -0
- package/dist/components/layout/list/Value.d.ts.map +1 -0
- package/dist/components/layout/list/Value.js +13 -0
- package/dist/components/layout/list/Value.js.map +1 -0
- package/dist/components/layout/list/Value.module.scss +7 -0
- package/dist/components/ui/action/Action.d.ts +17 -0
- package/dist/components/ui/action/Action.d.ts.map +1 -0
- package/dist/components/ui/action/Action.js +44 -0
- package/dist/components/ui/action/Action.js.map +1 -0
- package/dist/components/ui/action/Action.module.scss +26 -0
- package/dist/components/ui/action/EqualActions.d.ts +7 -0
- package/dist/components/ui/action/EqualActions.d.ts.map +1 -0
- package/dist/components/ui/action/EqualActions.js +23 -0
- package/dist/components/ui/action/EqualActions.js.map +1 -0
- package/dist/components/ui/action/EqualActions.module.scss +6 -0
- package/dist/components/ui/button/Button.d.ts +8 -0
- package/dist/components/ui/button/Button.d.ts.map +1 -0
- package/dist/components/ui/button/Button.js +20 -0
- package/dist/components/ui/button/Button.js.map +1 -0
- package/dist/components/ui/button/Button.module.scss +25 -0
- package/dist/global.scss +35 -11
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/docs/assets/js/search.js +1 -1
- package/docs/assets/js/search.json +1 -1
- package/docs/enums/ICON.html +196 -0
- package/docs/index.html +13 -4
- package/docs/modules/StickyHeader.html +4 -4
- package/docs/modules.html +47 -10
- package/docs/pages/Tutorials/Test.html +3 -3
- package/esm/components/form/Checkbox.module.scss +13 -6
- package/esm/components/form/Toggle.d.ts +8 -0
- package/esm/components/form/Toggle.d.ts.map +1 -0
- package/esm/components/form/Toggle.js +15 -0
- package/esm/components/form/Toggle.js.map +1 -0
- package/esm/components/form/Toggle.module.scss +46 -0
- package/esm/components/icons/Back.d.ts +7 -0
- package/esm/components/icons/Back.d.ts.map +1 -0
- package/esm/components/icons/Back.js +7 -0
- package/esm/components/icons/Back.js.map +1 -0
- package/esm/components/icons/Forward.d.ts +7 -0
- package/esm/components/icons/Forward.d.ts.map +1 -0
- package/esm/components/icons/Forward.js +7 -0
- package/esm/components/icons/Forward.js.map +1 -0
- package/esm/components/icons/Icon.d.ts +13 -0
- package/esm/components/icons/Icon.d.ts.map +1 -0
- package/esm/components/icons/Icon.js +24 -0
- package/esm/components/icons/Icon.js.map +1 -0
- package/esm/components/layout/header/Header.d.ts +4 -0
- package/esm/components/layout/header/Header.d.ts.map +1 -1
- package/esm/components/layout/header/Header.js +26 -2
- package/esm/components/layout/header/Header.js.map +1 -1
- package/esm/components/layout/header/Header.module.scss +46 -2
- package/esm/components/layout/header/HeaderIconAction.d.ts +17 -0
- package/esm/components/layout/header/HeaderIconAction.d.ts.map +1 -0
- package/esm/components/layout/header/HeaderIconAction.js +23 -0
- package/esm/components/layout/header/HeaderIconAction.js.map +1 -0
- package/esm/components/layout/header/HeaderIconAction.module.scss +22 -0
- package/esm/components/layout/header/StickyHeader.js +1 -1
- package/esm/components/layout/header/StickyHeader.js.map +1 -1
- package/esm/components/layout/list/Header.d.ts +4 -0
- package/esm/components/layout/list/Header.d.ts.map +1 -0
- package/esm/components/layout/list/Header.js +10 -0
- package/esm/components/layout/list/Header.js.map +1 -0
- package/esm/components/layout/list/Header.module.scss +8 -0
- package/esm/components/layout/list/Item.d.ts +1 -0
- package/esm/components/layout/list/Item.d.ts.map +1 -1
- package/esm/components/layout/list/Item.js +18 -5
- package/esm/components/layout/list/Item.js.map +1 -1
- package/esm/components/layout/list/Item.module.scss +10 -2
- package/esm/components/layout/list/Label.d.ts +8 -0
- package/esm/components/layout/list/Label.d.ts.map +1 -0
- package/esm/components/layout/list/Label.js +10 -0
- package/esm/components/layout/list/Label.js.map +1 -0
- package/esm/components/layout/list/Label.module.scss +9 -0
- package/esm/components/layout/list/Value.d.ts +4 -0
- package/esm/components/layout/list/Value.d.ts.map +1 -0
- package/esm/components/layout/list/Value.js +7 -0
- package/esm/components/layout/list/Value.js.map +1 -0
- package/esm/components/layout/list/Value.module.scss +7 -0
- package/esm/components/ui/action/Action.d.ts +17 -0
- package/esm/components/ui/action/Action.d.ts.map +1 -0
- package/esm/components/ui/action/Action.js +27 -0
- package/esm/components/ui/action/Action.js.map +1 -0
- package/esm/components/ui/action/Action.module.scss +26 -0
- package/esm/components/ui/action/EqualActions.d.ts +7 -0
- package/esm/components/ui/action/EqualActions.d.ts.map +1 -0
- package/esm/components/ui/action/EqualActions.js +17 -0
- package/esm/components/ui/action/EqualActions.js.map +1 -0
- package/esm/components/ui/action/EqualActions.module.scss +6 -0
- package/esm/components/ui/button/Button.d.ts +8 -0
- package/esm/components/ui/button/Button.d.ts.map +1 -0
- package/esm/components/ui/button/Button.js +14 -0
- package/esm/components/ui/button/Button.js.map +1 -0
- package/esm/components/ui/button/Button.module.scss +25 -0
- package/esm/global.scss +35 -11
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/types.d.ts +4 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/package.json +6 -6
- package/src/components/form/Checkbox.module.scss +13 -6
- package/src/components/form/Toggle.module.scss +46 -0
- package/src/components/form/Toggle.tsx +33 -0
- package/src/components/icons/Back.tsx +21 -0
- package/src/components/icons/Forward.tsx +21 -0
- package/src/components/icons/Icon.tsx +33 -0
- package/src/components/layout/header/Header.module.scss +46 -2
- package/src/components/layout/header/Header.tsx +41 -3
- package/src/components/layout/header/HeaderIconAction.module.scss +22 -0
- package/src/components/layout/header/HeaderIconAction.tsx +49 -0
- package/src/components/layout/header/StickyHeader.tsx +1 -1
- package/src/components/layout/list/Header.module.scss +8 -0
- package/src/components/layout/list/Header.tsx +16 -0
- package/src/components/layout/list/Item.module.scss +10 -2
- package/src/components/layout/list/Item.tsx +23 -5
- package/src/components/layout/list/Label.module.scss +9 -0
- package/src/components/layout/list/Label.tsx +21 -0
- package/src/components/layout/list/Value.module.scss +7 -0
- package/src/components/layout/list/Value.tsx +11 -0
- package/src/components/ui/action/Action.module.scss +26 -0
- package/src/components/ui/action/Action.tsx +58 -0
- package/src/components/ui/action/EqualActions.module.scss +6 -0
- package/src/components/ui/action/EqualActions.tsx +30 -0
- package/src/components/ui/button/Button.module.scss +25 -0
- package/src/components/ui/button/Button.tsx +25 -0
- package/src/demo/Main.tsx +3 -2
- package/src/demo/Menu.module.scss +2 -0
- package/src/demo/components/form/Toggle.tsx +49 -0
- package/src/demo/components/layout/header/Header.tsx +104 -2
- package/src/demo/components/layout/list/Header.tsx +24 -0
- package/src/demo/components/layout/list/ItemRatio.tsx +21 -0
- package/src/demo/components/layout/list/Label.tsx +30 -0
- package/src/demo/components/layout/list/List.Item.module.scss +4 -0
- package/src/demo/components/layout/list/Value.module.scss +4 -0
- package/src/demo/components/layout/list/Value.tsx +26 -0
- package/src/demo/components/ui/action/Action.tsx +112 -0
- package/src/demo/components/ui/action/ActionDemo.module.scss +3 -0
- package/src/demo/components/ui/button/ButtonDemo.tsx +18 -0
- package/src/demo/components/ui/icons/Icons.tsx +21 -0
- package/src/demo/componentsMap.ts +110 -21
- package/src/demo/utils/makeVariants.ts +13 -0
- package/src/global.scss +35 -11
- package/src/index.ts +5 -0
- package/src/pages/react-miui.tsx +12 -0
- package/src/types.ts +7 -0
- package/.postcssrc +0 -9
- package/dist/demo/Demo.d.ts +0 -4
- package/dist/demo/Demo.d.ts.map +0 -1
- package/dist/demo/Demo.js +0 -18
- package/dist/demo/Demo.js.map +0 -1
- package/dist/demo/Demo.module.scss +0 -4
- package/dist/demo/Main.d.ts +0 -4
- package/dist/demo/Main.d.ts.map +0 -1
- package/dist/demo/Main.js +0 -83
- package/dist/demo/Main.js.map +0 -1
- package/dist/demo/Main.module.scss +0 -30
- package/dist/demo/Menu.d.ts +0 -9
- package/dist/demo/Menu.d.ts.map +0 -1
- package/dist/demo/Menu.js +0 -31
- package/dist/demo/Menu.js.map +0 -1
- package/dist/demo/Menu.module.scss +0 -39
- package/dist/demo/components/form/Checkbox.d.ts +0 -4
- package/dist/demo/components/form/Checkbox.d.ts.map +0 -1
- package/dist/demo/components/form/Checkbox.js.map +0 -1
- package/dist/demo/components/layout/header/Header.d.ts +0 -4
- package/dist/demo/components/layout/header/Header.d.ts.map +0 -1
- package/dist/demo/components/layout/header/Header.js +0 -16
- package/dist/demo/components/layout/header/Header.js.map +0 -1
- package/dist/demo/components/layout/header/StickyHeader.d.ts +0 -9
- package/dist/demo/components/layout/header/StickyHeader.d.ts.map +0 -1
- package/dist/demo/components/layout/header/StickyHeader.js +0 -73
- package/dist/demo/components/layout/header/StickyHeader.js.map +0 -1
- package/dist/demo/components/layout/list/List.Item.d.ts +0 -4
- package/dist/demo/components/layout/list/List.Item.d.ts.map +0 -1
- package/dist/demo/components/layout/list/List.Item.js +0 -42
- package/dist/demo/components/layout/list/List.Item.js.map +0 -1
- package/dist/demo/components/layout/list/List.Item.module.scss +0 -3
- package/dist/demo/components/ui/directionPad/Pad.d.ts +0 -4
- package/dist/demo/components/ui/directionPad/Pad.d.ts.map +0 -1
- package/dist/demo/components/ui/directionPad/Pad.js +0 -49
- package/dist/demo/components/ui/directionPad/Pad.js.map +0 -1
- package/dist/demo/componentsMap.d.ts +0 -14
- package/dist/demo/componentsMap.d.ts.map +0 -1
- package/dist/demo/componentsMap.js +0 -54
- package/dist/demo/componentsMap.js.map +0 -1
- package/dist/demo/utils/safeUseHash.d.ts +0 -3
- package/dist/demo/utils/safeUseHash.d.ts.map +0 -1
- package/dist/demo/utils/safeUseHash.js +0 -13
- package/dist/demo/utils/safeUseHash.js.map +0 -1
- package/dist/demo-global.scss +0 -9
- package/dist/pages/_app.d.ts +0 -7
- package/dist/pages/_app.d.ts.map +0 -1
- package/dist/pages/_app.js +0 -15
- package/dist/pages/_app.js.map +0 -1
- package/dist/pages/index.d.ts +0 -4
- package/dist/pages/index.d.ts.map +0 -1
- package/dist/pages/index.js +0 -10
- package/dist/pages/index.js.map +0 -1
- package/esm/demo/Demo.d.ts +0 -4
- package/esm/demo/Demo.d.ts.map +0 -1
- package/esm/demo/Demo.js +0 -12
- package/esm/demo/Demo.js.map +0 -1
- package/esm/demo/Demo.module.scss +0 -4
- package/esm/demo/Main.d.ts +0 -4
- package/esm/demo/Main.d.ts.map +0 -1
- package/esm/demo/Main.js +0 -58
- package/esm/demo/Main.js.map +0 -1
- package/esm/demo/Main.module.scss +0 -30
- package/esm/demo/Menu.d.ts +0 -9
- package/esm/demo/Menu.d.ts.map +0 -1
- package/esm/demo/Menu.js +0 -25
- package/esm/demo/Menu.js.map +0 -1
- package/esm/demo/Menu.module.scss +0 -39
- package/esm/demo/components/form/Checkbox.d.ts +0 -4
- package/esm/demo/components/form/Checkbox.d.ts.map +0 -1
- package/esm/demo/components/form/Checkbox.js +0 -9
- package/esm/demo/components/form/Checkbox.js.map +0 -1
- package/esm/demo/components/layout/header/Header.d.ts +0 -4
- package/esm/demo/components/layout/header/Header.d.ts.map +0 -1
- package/esm/demo/components/layout/header/Header.js +0 -10
- package/esm/demo/components/layout/header/Header.js.map +0 -1
- package/esm/demo/components/layout/header/StickyHeader.d.ts +0 -9
- package/esm/demo/components/layout/header/StickyHeader.d.ts.map +0 -1
- package/esm/demo/components/layout/header/StickyHeader.js +0 -62
- package/esm/demo/components/layout/header/StickyHeader.js.map +0 -1
- package/esm/demo/components/layout/list/List.Item.d.ts +0 -4
- package/esm/demo/components/layout/list/List.Item.d.ts.map +0 -1
- package/esm/demo/components/layout/list/List.Item.js +0 -17
- package/esm/demo/components/layout/list/List.Item.js.map +0 -1
- package/esm/demo/components/layout/list/List.Item.module.scss +0 -3
- package/esm/demo/components/ui/directionPad/Pad.d.ts +0 -4
- package/esm/demo/components/ui/directionPad/Pad.d.ts.map +0 -1
- package/esm/demo/components/ui/directionPad/Pad.js +0 -27
- package/esm/demo/components/ui/directionPad/Pad.js.map +0 -1
- package/esm/demo/componentsMap.d.ts +0 -14
- package/esm/demo/componentsMap.d.ts.map +0 -1
- package/esm/demo/componentsMap.js +0 -51
- package/esm/demo/componentsMap.js.map +0 -1
- package/esm/demo/utils/safeUseHash.d.ts +0 -3
- package/esm/demo/utils/safeUseHash.d.ts.map +0 -1
- package/esm/demo/utils/safeUseHash.js +0 -10
- package/esm/demo/utils/safeUseHash.js.map +0 -1
- package/esm/demo-global.scss +0 -9
- package/esm/pages/_app.d.ts +0 -7
- package/esm/pages/_app.d.ts.map +0 -1
- package/esm/pages/_app.js +0 -10
- package/esm/pages/_app.js.map +0 -1
- package/esm/pages/index.d.ts +0 -4
- package/esm/pages/index.d.ts.map +0 -1
- package/esm/pages/index.js +0 -5
- package/esm/pages/index.js.map +0 -1
- package/src/pages/index.html +0 -14
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
list-style-type: none;
|
|
3
3
|
margin: 0;
|
|
4
4
|
padding: 0;
|
|
5
|
-
font-size:
|
|
5
|
+
font-size: calc(34px / var(--ratio-font));
|
|
6
6
|
|
|
7
7
|
&:not(:first-child) > * {
|
|
8
8
|
border-top: 0.37px solid var(--header-border);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
> * {
|
|
12
12
|
display: block;
|
|
13
|
-
padding:
|
|
13
|
+
padding: 0;
|
|
14
14
|
text-decoration: none;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -20,4 +20,12 @@
|
|
|
20
20
|
background: none;
|
|
21
21
|
width: 100%;
|
|
22
22
|
text-align: left;
|
|
23
|
+
font-family: inherit;
|
|
24
|
+
font-size: inherit;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.content {
|
|
28
|
+
display: flex;
|
|
29
|
+
min-height: calc(174px / var(--ratio-dimensions));
|
|
30
|
+
align-items: center;
|
|
23
31
|
}
|
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import classnames from "classnames";
|
|
3
3
|
|
|
4
4
|
import styles from "./Item.module.scss";
|
|
5
|
+
import { Value } from "./Value";
|
|
5
6
|
|
|
6
7
|
interface LinkProps {
|
|
7
8
|
href: string;
|
|
@@ -13,38 +14,55 @@ interface Props {
|
|
|
13
14
|
onClick?: () => void;
|
|
14
15
|
className?: string;
|
|
15
16
|
Link?: React.ComponentClass<LinkProps> | React.FC<LinkProps>;
|
|
17
|
+
ratio?: string; // @TODO number/number/number/.. type?
|
|
16
18
|
}
|
|
17
19
|
|
|
20
|
+
// eslint-disable-next-line max-statements
|
|
18
21
|
const Item: React.FC<Props> = (props) => {
|
|
19
|
-
const { className, children, href, to, onClick, Link, ...restProps } = props;
|
|
22
|
+
const { className, children, href, to, onClick, Link, ratio, ...restProps } = props;
|
|
20
23
|
const cls = classnames(styles.item, className);
|
|
21
24
|
|
|
22
25
|
const liProps = {
|
|
23
26
|
className: cls,
|
|
24
27
|
};
|
|
25
28
|
|
|
29
|
+
const r = ratio ? ratio.split("/") : [];
|
|
30
|
+
|
|
31
|
+
const ren = React.Children.map(props.children, (child, index) => {
|
|
32
|
+
let flex = undefined;
|
|
33
|
+
if (!r.length && child && typeof child === "object" && "type" in child && child.type === Value) {
|
|
34
|
+
return child;
|
|
35
|
+
}
|
|
36
|
+
if (index in r) {
|
|
37
|
+
flex = r[index];
|
|
38
|
+
}
|
|
39
|
+
return <div style={{ flex }}>{child}</div>;
|
|
40
|
+
});
|
|
41
|
+
|
|
26
42
|
if (to) {
|
|
27
43
|
if (!Link) {
|
|
28
44
|
throw new TypeError("`to` prop given without `Link` component");
|
|
29
45
|
}
|
|
30
46
|
|
|
31
|
-
return <li {...liProps}><Link href={to} {...restProps}>{
|
|
47
|
+
return <li {...liProps}><Link href={to} {...restProps}><a className={styles.content}>{ren}</a></Link></li>;
|
|
32
48
|
}
|
|
33
49
|
if (href) {
|
|
34
50
|
const aProps: typeof restProps & { onClick?: Props["onClick"]} = { ...restProps };
|
|
35
51
|
if (onClick) {
|
|
36
52
|
aProps.onClick = onClick;
|
|
37
53
|
}
|
|
38
|
-
return <li {...liProps}><a href={href} {...aProps}>{
|
|
54
|
+
return <li {...liProps}><a href={href} {...aProps} className={styles.content}>{ren}</a></li>;
|
|
39
55
|
}
|
|
40
56
|
if (onClick) {
|
|
41
57
|
return (
|
|
42
58
|
<li {...liProps}>
|
|
43
|
-
<button className={styles.button} onClick={props.onClick}
|
|
59
|
+
<button className={classnames(styles.button, styles.content)} onClick={props.onClick}{...restProps}>
|
|
60
|
+
{ren}
|
|
61
|
+
</button>
|
|
44
62
|
</li>
|
|
45
63
|
);
|
|
46
64
|
}
|
|
47
|
-
return <li {...liProps}><div {...restProps}>{
|
|
65
|
+
return <li {...liProps}><div {...restProps} className={styles.content}>{ren}</div></li>;
|
|
48
66
|
};
|
|
49
67
|
|
|
50
68
|
export { Item };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
import styles from "./Label.module.scss";
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
sub?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const Label: React.FC<Props> = (props) => {
|
|
11
|
+
const sub = props.sub ? <div className={styles.sub}>{props.sub}</div> : null;
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<div className={styles.root}>
|
|
15
|
+
<div>{props.children}</div>
|
|
16
|
+
{sub}
|
|
17
|
+
</div>
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { Label };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.action {
|
|
2
|
+
height: calc(102px / var(--ratio-dimensions));
|
|
3
|
+
width: calc(102px / var(--ratio-dimensions));
|
|
4
|
+
border-radius: 100px;
|
|
5
|
+
border: calc(1px / var(--ratio-border)) solid var(--button-border);
|
|
6
|
+
background: white;
|
|
7
|
+
padding: 0;
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.a {
|
|
14
|
+
display: inline-block;
|
|
15
|
+
vertical-align: middle;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.button {
|
|
19
|
+
border: none;
|
|
20
|
+
padding: 0;
|
|
21
|
+
background: none;
|
|
22
|
+
display: inline-flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
align-items: center;
|
|
25
|
+
gap: calc(18px / var(--ratio-dimensions));
|
|
26
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
import type { ICON } from "../../icons/Icon";
|
|
5
|
+
import { Icon } from "../../icons/Icon";
|
|
6
|
+
import styles from "./Action.module.scss";
|
|
7
|
+
|
|
8
|
+
interface LinkProps { // @TODO extract? - same on list item
|
|
9
|
+
href: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
href?: string;
|
|
14
|
+
to?: string;
|
|
15
|
+
onClick?: () => void;
|
|
16
|
+
icon?: ICON | Exclude<ReactNode, string>;
|
|
17
|
+
Link?: React.ComponentClass<LinkProps> | React.FC<LinkProps>;
|
|
18
|
+
label?: ReactNode;
|
|
19
|
+
// if className ever goes here make sure that `a` gets classnames merged
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const Action: React.VFC<Props> = (props) => {
|
|
23
|
+
const { icon, label, href, to, Link, ...restProps } = props;
|
|
24
|
+
|
|
25
|
+
let iconElem: ReactNode = icon;
|
|
26
|
+
if (typeof icon === "string") {
|
|
27
|
+
iconElem = <Icon name={icon as ICON} />;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const labelElem = label ? <div className={styles.label}>{label}</div> : null;
|
|
31
|
+
|
|
32
|
+
const content = (
|
|
33
|
+
<>
|
|
34
|
+
<div className={styles.action}>{iconElem}</div>
|
|
35
|
+
{labelElem}
|
|
36
|
+
</>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
if (to) {
|
|
40
|
+
if (!Link) {
|
|
41
|
+
throw new TypeError("`to` prop given without `Link` component");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return <Link href={to} {...restProps}><a className={styles.a}>{content}</a></Link>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (href) {
|
|
48
|
+
return <a href={href} className={styles.a} {...restProps}>{content}</a>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<button onClick={props.onClick} className={styles.button}>
|
|
53
|
+
{content}
|
|
54
|
+
</button>
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { Action };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Action } from "./Action";
|
|
3
|
+
|
|
4
|
+
import styles from "./EqualActions.module.scss";
|
|
5
|
+
import classnames from "classnames";
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const EqualActions: React.FC<Props> = (props) => {
|
|
12
|
+
React.Children.forEach(props.children, (child) => {
|
|
13
|
+
if (!child || typeof child !== "object" || !("type" in child) || child.type !== Action) {
|
|
14
|
+
throw new TypeError("Every child of EqualActions must be an Action component");
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
19
|
+
const style = {
|
|
20
|
+
"--actions-count": React.Children.count(props.children),
|
|
21
|
+
} as React.CSSProperties;
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<div className={classnames(styles.actions, props.className)} style={style}>
|
|
25
|
+
{props.children}
|
|
26
|
+
</div>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { EqualActions };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.btn {
|
|
2
|
+
height: calc(118px / var(--ratio-dimensions));
|
|
3
|
+
background: var(--green1);
|
|
4
|
+
border: calc(1px / var(--ratio-border)) solid var(--green1-darker);
|
|
5
|
+
color: white;
|
|
6
|
+
border-radius: 1000px;
|
|
7
|
+
display: block;
|
|
8
|
+
width: 100%;
|
|
9
|
+
font-size: calc(26px / var(--ratio-font));
|
|
10
|
+
padding: 0 1em;
|
|
11
|
+
|
|
12
|
+
&:disabled {
|
|
13
|
+
opacity: 0.5;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.btn--inline {
|
|
18
|
+
width: auto;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.btn--outline {
|
|
22
|
+
background: white;
|
|
23
|
+
border-color: var(--button-border);
|
|
24
|
+
color: var(--grey1);
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
import styles from "./Button.module.scss";
|
|
4
|
+
import classnames from "classnames";
|
|
5
|
+
import { makeVariants } from "../../../demo/utils/makeVariants";
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
variant?: "inline" | "outline";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const Button: React.FC<Props> = (props) => {
|
|
13
|
+
const variants = makeVariants(props.variant);
|
|
14
|
+
|
|
15
|
+
const cls = classnames(styles.btn, {
|
|
16
|
+
[styles["btn--inline"]]: variants.includes("inline"),
|
|
17
|
+
[styles["btn--outline"]]: variants.includes("outline"),
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<button className={cls} disabled={props.disabled}>{props.children}</button>
|
|
22
|
+
);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { Button };
|
package/src/demo/Main.tsx
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import React, { useCallback, useState } from "react";
|
|
2
2
|
import classnames from "classnames";
|
|
3
3
|
|
|
4
|
+
import type { AnyComponent } from "../types";
|
|
5
|
+
import type { TheMap, TheMapItem } from "./componentsMap";
|
|
6
|
+
|
|
4
7
|
import styles from "./Main.module.scss";
|
|
5
8
|
|
|
6
9
|
import { safeUseHash } from "./utils/safeUseHash";
|
|
7
|
-
import type { TheMap, TheMapItem } from "./componentsMap";
|
|
8
10
|
import { componentsMap } from "./componentsMap";
|
|
9
11
|
|
|
10
12
|
type BG = "white" | "transparent" | "mobile";
|
|
11
|
-
type AnyComponent = React.ComponentClass | React.FC;
|
|
12
13
|
|
|
13
14
|
interface ComponentInfo {
|
|
14
15
|
Component: AnyComponent;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { Toggle } from "../../../components/form/Toggle";
|
|
3
|
+
import { List } from "../../../components/layout/list/List";
|
|
4
|
+
import { Item } from "../../../components/layout/list/Item";
|
|
5
|
+
|
|
6
|
+
const handleNoop = () => undefined;
|
|
7
|
+
|
|
8
|
+
const ToggleDemo: React.VFC = () => {
|
|
9
|
+
const [state, ss] = useState<boolean | null>(null);
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
13
|
+
setTimeout(() => { ss(true); }, 1000);
|
|
14
|
+
}, []);
|
|
15
|
+
|
|
16
|
+
const handleToggle = useCallback(() => {
|
|
17
|
+
if (state == null) {
|
|
18
|
+
return; // shouldn't happen, but ...
|
|
19
|
+
}
|
|
20
|
+
ss(null);
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
ss(!state);
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
24
|
+
}, 1000);
|
|
25
|
+
}, [state]);
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<List>
|
|
29
|
+
<Item ratio={"1/"}>
|
|
30
|
+
<span>Off</span>
|
|
31
|
+
<Toggle onChange={handleNoop} state={false} />
|
|
32
|
+
</Item>
|
|
33
|
+
<Item ratio={"1/"}>
|
|
34
|
+
<span>On</span>
|
|
35
|
+
<Toggle onChange={handleNoop} state={true} />
|
|
36
|
+
</Item>
|
|
37
|
+
<Item ratio={"1/"}>
|
|
38
|
+
<span>Undetermined</span>
|
|
39
|
+
<Toggle onChange={handleNoop} state={null} />
|
|
40
|
+
</Item>
|
|
41
|
+
<Item ratio={"1/"}>
|
|
42
|
+
<span>Dynamic</span>
|
|
43
|
+
<Toggle onChange={handleToggle} state={state} />
|
|
44
|
+
</Item>
|
|
45
|
+
</List>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export { ToggleDemo };
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import Link from "next/link";
|
|
2
3
|
|
|
3
|
-
import { Header } from "../../../../index.js";
|
|
4
|
+
import { Header, ICON, StickyHeader } from "../../../../index.js";
|
|
5
|
+
import { HeaderIconAction } from "../../../../components/layout/header/HeaderIconAction";
|
|
4
6
|
|
|
5
7
|
const HeaderDemo = () => {
|
|
6
8
|
// eslint-disable-next-line @typescript-eslint/no-magic-numbers,react/no-array-index-key
|
|
@@ -14,4 +16,104 @@ const HeaderDemo = () => {
|
|
|
14
16
|
);
|
|
15
17
|
};
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
const CenteredHeaderDemo = () => {
|
|
20
|
+
return (
|
|
21
|
+
<>
|
|
22
|
+
<Header center={true}>Messages</Header>
|
|
23
|
+
<div>
|
|
24
|
+
Header text is centered
|
|
25
|
+
</div>
|
|
26
|
+
</>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const ToolbarVariantDemo = () => {
|
|
31
|
+
return (
|
|
32
|
+
<>
|
|
33
|
+
<Header center={true} variant={"toolbar"}>Toolbar version</Header>
|
|
34
|
+
</>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const handleClick = () => { alert(1); };
|
|
39
|
+
|
|
40
|
+
// eslint-disable-next-line max-lines-per-function
|
|
41
|
+
const HeaderWithButtonsDemo = () => {
|
|
42
|
+
const demo = (
|
|
43
|
+
<>
|
|
44
|
+
<HeaderIconAction icon={ICON.back} onClick={handleClick} />
|
|
45
|
+
<HeaderIconAction icon={ICON.checkmark} onClick={handleClick} />
|
|
46
|
+
</>
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<>
|
|
51
|
+
<Header center={true} before={"A text"}>Messages</Header>
|
|
52
|
+
<div>
|
|
53
|
+
Header text is centered
|
|
54
|
+
</div>
|
|
55
|
+
<Header before={"A text"}>Messages</Header>
|
|
56
|
+
<div>
|
|
57
|
+
Header text is start aligned
|
|
58
|
+
</div>
|
|
59
|
+
<Header before={demo}>Messages</Header>
|
|
60
|
+
<div>
|
|
61
|
+
Some button icons are added on the left to left aligned title
|
|
62
|
+
</div>
|
|
63
|
+
<Header before={demo} center={true}>Messages</Header>
|
|
64
|
+
<div>
|
|
65
|
+
Some button icons are added on the left to centered aligned title
|
|
66
|
+
</div>
|
|
67
|
+
<Header
|
|
68
|
+
before={<HeaderIconAction icon={ICON.back} to={"/react-miui"} Link={Link} />}
|
|
69
|
+
center={true}
|
|
70
|
+
>Messages
|
|
71
|
+
</Header>
|
|
72
|
+
<div>
|
|
73
|
+
Some internal link icons are added on the left to centered aligned title
|
|
74
|
+
</div>
|
|
75
|
+
<Header
|
|
76
|
+
before={<HeaderIconAction icon={ICON.back} href={"https://www.npmjs.com/package/react-miui"} />}
|
|
77
|
+
center={true}
|
|
78
|
+
>Messages
|
|
79
|
+
</Header>
|
|
80
|
+
<div>
|
|
81
|
+
Some external link icons are added on the left to centered aligned title
|
|
82
|
+
</div>
|
|
83
|
+
<Header
|
|
84
|
+
before={<HeaderIconAction icon={ICON.back} href={"https://www.npmjs.com/package/react-miui"} />}
|
|
85
|
+
after={<HeaderIconAction icon={ICON.checkmark} href={"https://www.npmjs.com/package/react-miui"} />}
|
|
86
|
+
center={true}
|
|
87
|
+
>Messages
|
|
88
|
+
</Header>
|
|
89
|
+
<div>
|
|
90
|
+
Some external link icons are added on both sides to centered aligned title
|
|
91
|
+
</div>
|
|
92
|
+
</>
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const HeaderWithButtonsOnSideDemo = () => {
|
|
97
|
+
const demo = (
|
|
98
|
+
<>
|
|
99
|
+
<HeaderIconAction icon={ICON.back} onClick={handleClick} />
|
|
100
|
+
<HeaderIconAction icon={ICON.checkmark} onClick={handleClick} />
|
|
101
|
+
</>
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
return (
|
|
105
|
+
<StickyHeader position={"left"}>
|
|
106
|
+
<Header
|
|
107
|
+
center={true}
|
|
108
|
+
before={demo}
|
|
109
|
+
after={demo}
|
|
110
|
+
>M
|
|
111
|
+
</Header>
|
|
112
|
+
<StickyHeader.Content>
|
|
113
|
+
Header is on the side
|
|
114
|
+
</StickyHeader.Content>
|
|
115
|
+
</StickyHeader>
|
|
116
|
+
);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export { HeaderDemo, CenteredHeaderDemo, ToolbarVariantDemo, HeaderWithButtonsDemo, HeaderWithButtonsOnSideDemo };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { List } from "../../../../components/layout/list/List";
|
|
3
|
+
import { Item } from "../../../../components/layout/list/Item";
|
|
4
|
+
import { Header } from "../../../../components/layout/list/Header";
|
|
5
|
+
|
|
6
|
+
const ListHeaderDemo = () => {
|
|
7
|
+
return (
|
|
8
|
+
<List>
|
|
9
|
+
<Header>Section name</Header>
|
|
10
|
+
<Item>Item</Item>
|
|
11
|
+
<Item>Another item</Item>
|
|
12
|
+
<Item>One more</Item>
|
|
13
|
+
<Header>Status section</Header>
|
|
14
|
+
<Item>Item</Item>
|
|
15
|
+
<Item>One more</Item>
|
|
16
|
+
<Header>Advanced</Header>
|
|
17
|
+
<Item>Item</Item>
|
|
18
|
+
<Item>Another item</Item>
|
|
19
|
+
<Item>One more</Item>
|
|
20
|
+
</List>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { ListHeaderDemo };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { List } from "../../../../components/layout/list/List";
|
|
3
|
+
import { Item } from "../../../../components/layout/list/Item";
|
|
4
|
+
import { ICON, Icon } from "../../../../components/icons/Icon";
|
|
5
|
+
|
|
6
|
+
const ItemRatioDemo = () => {
|
|
7
|
+
return (
|
|
8
|
+
<List>
|
|
9
|
+
<Item ratio={"1/"}>
|
|
10
|
+
<span>Label</span>
|
|
11
|
+
<>Value</>
|
|
12
|
+
</Item>
|
|
13
|
+
<Item ratio={"1/"}>
|
|
14
|
+
<span>Label</span>
|
|
15
|
+
<Icon name={ICON.forward} />
|
|
16
|
+
</Item>
|
|
17
|
+
</List>
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { ItemRatioDemo };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { List } from "../../../../components/layout/list/List";
|
|
3
|
+
import { Item } from "../../../../components/layout/list/Item";
|
|
4
|
+
import { Label } from "../../../../components/layout/list/Label";
|
|
5
|
+
|
|
6
|
+
const ItemLabelDemo = () => {
|
|
7
|
+
return (
|
|
8
|
+
<List>
|
|
9
|
+
<Item>
|
|
10
|
+
<Label sub={"Here is a little text explaining things. Don't go too long, but make it non-ambiguous."}>
|
|
11
|
+
Transmit power
|
|
12
|
+
</Label>
|
|
13
|
+
</Item>
|
|
14
|
+
<Item ratio={"6/4/"}>
|
|
15
|
+
<Label sub={"Here is a little text explaining things. Don't go too long, but make it non-ambiguous."}>
|
|
16
|
+
Transmit power
|
|
17
|
+
</Label>
|
|
18
|
+
<></>
|
|
19
|
+
<>Value</>
|
|
20
|
+
</Item>
|
|
21
|
+
<Item>
|
|
22
|
+
<Label sub={"Just one sentence."}>
|
|
23
|
+
Complicated name
|
|
24
|
+
</Label>
|
|
25
|
+
</Item>
|
|
26
|
+
</List>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { ItemLabelDemo };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { List } from "../../../../components/layout/list/List";
|
|
3
|
+
import { Item } from "../../../../components/layout/list/Item";
|
|
4
|
+
import { Value } from "../../../../components/layout/list/Value";
|
|
5
|
+
import { Label } from "../../../../components/layout/list/Label";
|
|
6
|
+
import { ICON, Icon } from "../../../../components/icons/Icon";
|
|
7
|
+
|
|
8
|
+
import styles from "./Value.module.scss";
|
|
9
|
+
|
|
10
|
+
const ValueDemo = () => {
|
|
11
|
+
return (
|
|
12
|
+
<List>
|
|
13
|
+
<Item>
|
|
14
|
+
<Label>Name</Label>
|
|
15
|
+
<Value>Jack The 23rd</Value>
|
|
16
|
+
</Item>
|
|
17
|
+
<Item>
|
|
18
|
+
<Label>Start at</Label>
|
|
19
|
+
<Value>18:00</Value>
|
|
20
|
+
<Icon name={ICON.forward} className={styles.icon} />
|
|
21
|
+
</Item>
|
|
22
|
+
</List>
|
|
23
|
+
);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { ValueDemo };
|