react-miui 0.1.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/assets/back.svg +1 -0
  3. package/assets/forward.svg +1 -0
  4. package/assets/sources/back.fla +0 -0
  5. package/dist/components/form/Toggle.d.ts +8 -0
  6. package/dist/components/form/Toggle.d.ts.map +1 -0
  7. package/dist/{demo/components/form/Checkbox.js → components/form/Toggle.js} +17 -8
  8. package/dist/components/form/Toggle.js.map +1 -0
  9. package/dist/components/form/Toggle.module.scss +46 -0
  10. package/dist/components/icons/Back.d.ts +7 -0
  11. package/dist/components/icons/Back.d.ts.map +1 -0
  12. package/dist/components/icons/Back.js +13 -0
  13. package/dist/components/icons/Back.js.map +1 -0
  14. package/dist/components/icons/Forward.d.ts +7 -0
  15. package/dist/components/icons/Forward.d.ts.map +1 -0
  16. package/dist/components/icons/Forward.js +13 -0
  17. package/dist/components/icons/Forward.js.map +1 -0
  18. package/dist/components/icons/Icon.d.ts +4 -1
  19. package/dist/components/icons/Icon.d.ts.map +1 -1
  20. package/dist/components/icons/Icon.js +7 -3
  21. package/dist/components/icons/Icon.js.map +1 -1
  22. package/dist/components/layout/header/Header.d.ts +3 -0
  23. package/dist/components/layout/header/Header.d.ts.map +1 -1
  24. package/dist/components/layout/header/Header.js +13 -2
  25. package/dist/components/layout/header/Header.js.map +1 -1
  26. package/dist/components/layout/header/Header.module.scss +47 -3
  27. package/dist/components/layout/header/HeaderIconAction.d.ts +17 -0
  28. package/dist/components/layout/header/HeaderIconAction.d.ts.map +1 -0
  29. package/dist/components/layout/header/HeaderIconAction.js +40 -0
  30. package/dist/components/layout/header/HeaderIconAction.js.map +1 -0
  31. package/dist/components/layout/header/HeaderIconAction.module.scss +22 -0
  32. package/dist/components/layout/list/Header.d.ts +4 -0
  33. package/dist/components/layout/list/Header.d.ts.map +1 -0
  34. package/dist/components/layout/list/Header.js +16 -0
  35. package/dist/components/layout/list/Header.js.map +1 -0
  36. package/dist/components/layout/list/Header.module.scss +8 -0
  37. package/dist/components/layout/list/Item.d.ts +8 -1
  38. package/dist/components/layout/list/Item.d.ts.map +1 -1
  39. package/dist/components/layout/list/Item.js +21 -5
  40. package/dist/components/layout/list/Item.js.map +1 -1
  41. package/dist/components/layout/list/Item.module.scss +10 -2
  42. package/dist/components/layout/list/Label.d.ts +8 -0
  43. package/dist/components/layout/list/Label.d.ts.map +1 -0
  44. package/dist/components/layout/list/Label.js +16 -0
  45. package/dist/components/layout/list/Label.js.map +1 -0
  46. package/dist/components/layout/list/Label.module.scss +9 -0
  47. package/dist/components/layout/list/List.d.ts +5 -1
  48. package/dist/components/layout/list/List.d.ts.map +1 -1
  49. package/dist/components/layout/list/List.js +2 -0
  50. package/dist/components/layout/list/List.js.map +1 -1
  51. package/dist/components/layout/list/Value.d.ts +4 -0
  52. package/dist/components/layout/list/Value.d.ts.map +1 -0
  53. package/dist/components/layout/list/Value.js +13 -0
  54. package/dist/components/layout/list/Value.js.map +1 -0
  55. package/dist/components/layout/list/Value.module.scss +7 -0
  56. package/dist/components/ui/action/EqualActions.d.ts +4 -1
  57. package/dist/components/ui/action/EqualActions.d.ts.map +1 -1
  58. package/dist/components/ui/action/EqualActions.js +3 -2
  59. package/dist/components/ui/action/EqualActions.js.map +1 -1
  60. package/dist/global.scss +18 -2
  61. package/dist/index.d.ts +4 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +4 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/types.d.ts +1 -1
  66. package/dist/types.d.ts.map +1 -1
  67. package/docs/assets/js/search.js +1 -1
  68. package/docs/assets/js/search.json +1 -1
  69. package/docs/enums/ICON.html +44 -4
  70. package/docs/index.html +22 -4
  71. package/docs/modules/Item.html +155 -0
  72. package/docs/modules/List.html +144 -0
  73. package/docs/modules/StickyHeader.html +10 -4
  74. package/docs/modules.html +78 -14
  75. package/docs/pages/Tutorials/Test.html +9 -3
  76. package/esm/components/form/Toggle.d.ts +8 -0
  77. package/esm/components/form/Toggle.d.ts.map +1 -0
  78. package/esm/components/form/Toggle.js +15 -0
  79. package/esm/components/form/Toggle.js.map +1 -0
  80. package/esm/components/form/Toggle.module.scss +46 -0
  81. package/esm/components/icons/Back.d.ts +7 -0
  82. package/esm/components/icons/Back.d.ts.map +1 -0
  83. package/esm/components/icons/Back.js +7 -0
  84. package/esm/components/icons/Back.js.map +1 -0
  85. package/esm/components/icons/Forward.d.ts +7 -0
  86. package/esm/components/icons/Forward.d.ts.map +1 -0
  87. package/esm/components/icons/Forward.js +7 -0
  88. package/esm/components/icons/Forward.js.map +1 -0
  89. package/esm/components/icons/Icon.d.ts +4 -1
  90. package/esm/components/icons/Icon.d.ts.map +1 -1
  91. package/esm/components/icons/Icon.js +7 -3
  92. package/esm/components/icons/Icon.js.map +1 -1
  93. package/esm/components/layout/header/Header.d.ts +3 -0
  94. package/esm/components/layout/header/Header.d.ts.map +1 -1
  95. package/esm/components/layout/header/Header.js +13 -2
  96. package/esm/components/layout/header/Header.js.map +1 -1
  97. package/esm/components/layout/header/Header.module.scss +47 -3
  98. package/esm/components/layout/header/HeaderIconAction.d.ts +17 -0
  99. package/esm/components/layout/header/HeaderIconAction.d.ts.map +1 -0
  100. package/esm/components/layout/header/HeaderIconAction.js +23 -0
  101. package/esm/components/layout/header/HeaderIconAction.js.map +1 -0
  102. package/esm/components/layout/header/HeaderIconAction.module.scss +22 -0
  103. package/esm/components/layout/list/Header.d.ts +4 -0
  104. package/esm/components/layout/list/Header.d.ts.map +1 -0
  105. package/esm/components/layout/list/Header.js +10 -0
  106. package/esm/components/layout/list/Header.js.map +1 -0
  107. package/esm/components/layout/list/Header.module.scss +8 -0
  108. package/esm/components/layout/list/Item.d.ts +8 -1
  109. package/esm/components/layout/list/Item.d.ts.map +1 -1
  110. package/esm/components/layout/list/Item.js +21 -5
  111. package/esm/components/layout/list/Item.js.map +1 -1
  112. package/esm/components/layout/list/Item.module.scss +10 -2
  113. package/esm/components/layout/list/Label.d.ts +8 -0
  114. package/esm/components/layout/list/Label.d.ts.map +1 -0
  115. package/esm/components/layout/list/Label.js +10 -0
  116. package/esm/components/layout/list/Label.js.map +1 -0
  117. package/esm/components/layout/list/Label.module.scss +9 -0
  118. package/esm/components/layout/list/List.d.ts +5 -1
  119. package/esm/components/layout/list/List.d.ts.map +1 -1
  120. package/esm/components/layout/list/List.js +2 -0
  121. package/esm/components/layout/list/List.js.map +1 -1
  122. package/esm/components/layout/list/Value.d.ts +4 -0
  123. package/esm/components/layout/list/Value.d.ts.map +1 -0
  124. package/esm/components/layout/list/Value.js +7 -0
  125. package/esm/components/layout/list/Value.js.map +1 -0
  126. package/esm/components/layout/list/Value.module.scss +7 -0
  127. package/esm/components/ui/action/EqualActions.d.ts +4 -1
  128. package/esm/components/ui/action/EqualActions.d.ts.map +1 -1
  129. package/esm/components/ui/action/EqualActions.js +3 -2
  130. package/esm/components/ui/action/EqualActions.js.map +1 -1
  131. package/esm/global.scss +18 -2
  132. package/esm/index.d.ts +4 -0
  133. package/esm/index.d.ts.map +1 -1
  134. package/esm/index.js +4 -0
  135. package/esm/index.js.map +1 -1
  136. package/esm/types.d.ts +1 -1
  137. package/esm/types.d.ts.map +1 -1
  138. package/package.json +1 -1
  139. package/src/components/form/Toggle.module.scss +46 -0
  140. package/src/components/form/Toggle.tsx +33 -0
  141. package/src/components/icons/Back.tsx +21 -0
  142. package/src/components/icons/Forward.tsx +21 -0
  143. package/src/components/icons/Icon.tsx +10 -5
  144. package/src/components/layout/header/Header.module.scss +47 -3
  145. package/src/components/layout/header/Header.tsx +25 -3
  146. package/src/components/layout/header/HeaderIconAction.module.scss +22 -0
  147. package/src/components/layout/header/HeaderIconAction.tsx +49 -0
  148. package/src/components/layout/list/Header.module.scss +8 -0
  149. package/src/components/layout/list/Header.tsx +16 -0
  150. package/src/components/layout/list/Item.module.scss +10 -2
  151. package/src/components/layout/list/Item.tsx +33 -6
  152. package/src/components/layout/list/Label.module.scss +9 -0
  153. package/src/components/layout/list/Label.tsx +21 -0
  154. package/src/components/layout/list/List.tsx +8 -1
  155. package/src/components/layout/list/Value.module.scss +7 -0
  156. package/src/components/layout/list/Value.tsx +11 -0
  157. package/src/components/ui/action/EqualActions.tsx +8 -3
  158. package/src/demo/Menu.module.scss +2 -0
  159. package/src/demo/components/form/Toggle.tsx +49 -0
  160. package/src/demo/components/layout/header/Header.tsx +104 -2
  161. package/src/demo/components/layout/list/Header.tsx +24 -0
  162. package/src/demo/components/layout/list/ItemRatio.tsx +21 -0
  163. package/src/demo/components/layout/list/Label.tsx +31 -0
  164. package/src/demo/components/layout/list/List.Item.module.scss +4 -0
  165. package/src/demo/components/layout/list/Value.module.scss +4 -0
  166. package/src/demo/components/layout/list/Value.tsx +26 -0
  167. package/src/demo/components/ui/action/Action.tsx +4 -4
  168. package/src/demo/components/ui/icons/Icons.tsx +7 -10
  169. package/src/demo/componentsMap.ts +75 -23
  170. package/src/global.scss +18 -2
  171. package/src/index.ts +4 -0
  172. package/src/pages/react-miui.tsx +12 -0
  173. package/src/types.ts +1 -1
  174. package/dist/demo/Demo.d.ts +0 -4
  175. package/dist/demo/Demo.d.ts.map +0 -1
  176. package/dist/demo/Demo.js +0 -18
  177. package/dist/demo/Demo.js.map +0 -1
  178. package/dist/demo/Demo.module.scss +0 -4
  179. package/dist/demo/Main.d.ts +0 -4
  180. package/dist/demo/Main.d.ts.map +0 -1
  181. package/dist/demo/Main.js +0 -83
  182. package/dist/demo/Main.js.map +0 -1
  183. package/dist/demo/Main.module.scss +0 -30
  184. package/dist/demo/Menu.d.ts +0 -9
  185. package/dist/demo/Menu.d.ts.map +0 -1
  186. package/dist/demo/Menu.js +0 -31
  187. package/dist/demo/Menu.js.map +0 -1
  188. package/dist/demo/Menu.module.scss +0 -39
  189. package/dist/demo/components/form/Checkbox.d.ts +0 -4
  190. package/dist/demo/components/form/Checkbox.d.ts.map +0 -1
  191. package/dist/demo/components/form/Checkbox.js.map +0 -1
  192. package/dist/demo/components/layout/header/Header.d.ts +0 -4
  193. package/dist/demo/components/layout/header/Header.d.ts.map +0 -1
  194. package/dist/demo/components/layout/header/Header.js +0 -16
  195. package/dist/demo/components/layout/header/Header.js.map +0 -1
  196. package/dist/demo/components/layout/header/StickyHeader.d.ts +0 -9
  197. package/dist/demo/components/layout/header/StickyHeader.d.ts.map +0 -1
  198. package/dist/demo/components/layout/header/StickyHeader.js +0 -73
  199. package/dist/demo/components/layout/header/StickyHeader.js.map +0 -1
  200. package/dist/demo/components/layout/list/List.Item.d.ts +0 -4
  201. package/dist/demo/components/layout/list/List.Item.d.ts.map +0 -1
  202. package/dist/demo/components/layout/list/List.Item.js +0 -42
  203. package/dist/demo/components/layout/list/List.Item.js.map +0 -1
  204. package/dist/demo/components/layout/list/List.Item.module.scss +0 -3
  205. package/dist/demo/components/ui/action/Action.d.ts +0 -8
  206. package/dist/demo/components/ui/action/Action.d.ts.map +0 -1
  207. package/dist/demo/components/ui/action/Action.js +0 -83
  208. package/dist/demo/components/ui/action/Action.js.map +0 -1
  209. package/dist/demo/components/ui/action/ActionDemo.module.scss +0 -3
  210. package/dist/demo/components/ui/button/ButtonDemo.d.ts +0 -4
  211. package/dist/demo/components/ui/button/ButtonDemo.d.ts.map +0 -1
  212. package/dist/demo/components/ui/button/ButtonDemo.js +0 -20
  213. package/dist/demo/components/ui/button/ButtonDemo.js.map +0 -1
  214. package/dist/demo/components/ui/directionPad/Pad.d.ts +0 -4
  215. package/dist/demo/components/ui/directionPad/Pad.d.ts.map +0 -1
  216. package/dist/demo/components/ui/directionPad/Pad.js +0 -49
  217. package/dist/demo/components/ui/directionPad/Pad.js.map +0 -1
  218. package/dist/demo/components/ui/icons/Icons.d.ts +0 -4
  219. package/dist/demo/components/ui/icons/Icons.d.ts.map +0 -1
  220. package/dist/demo/components/ui/icons/Icons.js +0 -20
  221. package/dist/demo/components/ui/icons/Icons.js.map +0 -1
  222. package/dist/demo/componentsMap.d.ts +0 -13
  223. package/dist/demo/componentsMap.d.ts.map +0 -1
  224. package/dist/demo/componentsMap.js +0 -87
  225. package/dist/demo/componentsMap.js.map +0 -1
  226. package/dist/demo/utils/makeVariants.d.ts +0 -3
  227. package/dist/demo/utils/makeVariants.d.ts.map +0 -1
  228. package/dist/demo/utils/makeVariants.js +0 -14
  229. package/dist/demo/utils/makeVariants.js.map +0 -1
  230. package/dist/demo/utils/safeUseHash.d.ts +0 -3
  231. package/dist/demo/utils/safeUseHash.d.ts.map +0 -1
  232. package/dist/demo/utils/safeUseHash.js +0 -13
  233. package/dist/demo/utils/safeUseHash.js.map +0 -1
  234. package/dist/demo-global.scss +0 -9
  235. package/dist/pages/_app.d.ts +0 -7
  236. package/dist/pages/_app.d.ts.map +0 -1
  237. package/dist/pages/_app.js +0 -15
  238. package/dist/pages/_app.js.map +0 -1
  239. package/dist/pages/index.d.ts +0 -4
  240. package/dist/pages/index.d.ts.map +0 -1
  241. package/dist/pages/index.js +0 -10
  242. package/dist/pages/index.js.map +0 -1
  243. package/esm/demo/Demo.d.ts +0 -4
  244. package/esm/demo/Demo.d.ts.map +0 -1
  245. package/esm/demo/Demo.js +0 -12
  246. package/esm/demo/Demo.js.map +0 -1
  247. package/esm/demo/Demo.module.scss +0 -4
  248. package/esm/demo/Main.d.ts +0 -4
  249. package/esm/demo/Main.d.ts.map +0 -1
  250. package/esm/demo/Main.js +0 -58
  251. package/esm/demo/Main.js.map +0 -1
  252. package/esm/demo/Main.module.scss +0 -30
  253. package/esm/demo/Menu.d.ts +0 -9
  254. package/esm/demo/Menu.d.ts.map +0 -1
  255. package/esm/demo/Menu.js +0 -25
  256. package/esm/demo/Menu.js.map +0 -1
  257. package/esm/demo/Menu.module.scss +0 -39
  258. package/esm/demo/components/form/Checkbox.d.ts +0 -4
  259. package/esm/demo/components/form/Checkbox.d.ts.map +0 -1
  260. package/esm/demo/components/form/Checkbox.js +0 -9
  261. package/esm/demo/components/form/Checkbox.js.map +0 -1
  262. package/esm/demo/components/layout/header/Header.d.ts +0 -4
  263. package/esm/demo/components/layout/header/Header.d.ts.map +0 -1
  264. package/esm/demo/components/layout/header/Header.js +0 -10
  265. package/esm/demo/components/layout/header/Header.js.map +0 -1
  266. package/esm/demo/components/layout/header/StickyHeader.d.ts +0 -9
  267. package/esm/demo/components/layout/header/StickyHeader.d.ts.map +0 -1
  268. package/esm/demo/components/layout/header/StickyHeader.js +0 -62
  269. package/esm/demo/components/layout/header/StickyHeader.js.map +0 -1
  270. package/esm/demo/components/layout/list/List.Item.d.ts +0 -4
  271. package/esm/demo/components/layout/list/List.Item.d.ts.map +0 -1
  272. package/esm/demo/components/layout/list/List.Item.js +0 -17
  273. package/esm/demo/components/layout/list/List.Item.js.map +0 -1
  274. package/esm/demo/components/layout/list/List.Item.module.scss +0 -3
  275. package/esm/demo/components/ui/action/Action.d.ts +0 -8
  276. package/esm/demo/components/ui/action/Action.d.ts.map +0 -1
  277. package/esm/demo/components/ui/action/Action.js +0 -73
  278. package/esm/demo/components/ui/action/Action.js.map +0 -1
  279. package/esm/demo/components/ui/action/ActionDemo.module.scss +0 -3
  280. package/esm/demo/components/ui/button/ButtonDemo.d.ts +0 -4
  281. package/esm/demo/components/ui/button/ButtonDemo.d.ts.map +0 -1
  282. package/esm/demo/components/ui/button/ButtonDemo.js +0 -14
  283. package/esm/demo/components/ui/button/ButtonDemo.js.map +0 -1
  284. package/esm/demo/components/ui/directionPad/Pad.d.ts +0 -4
  285. package/esm/demo/components/ui/directionPad/Pad.d.ts.map +0 -1
  286. package/esm/demo/components/ui/directionPad/Pad.js +0 -27
  287. package/esm/demo/components/ui/directionPad/Pad.js.map +0 -1
  288. package/esm/demo/components/ui/icons/Icons.d.ts +0 -4
  289. package/esm/demo/components/ui/icons/Icons.d.ts.map +0 -1
  290. package/esm/demo/components/ui/icons/Icons.js +0 -14
  291. package/esm/demo/components/ui/icons/Icons.js.map +0 -1
  292. package/esm/demo/componentsMap.d.ts +0 -13
  293. package/esm/demo/componentsMap.d.ts.map +0 -1
  294. package/esm/demo/componentsMap.js +0 -84
  295. package/esm/demo/componentsMap.js.map +0 -1
  296. package/esm/demo/utils/makeVariants.d.ts +0 -3
  297. package/esm/demo/utils/makeVariants.d.ts.map +0 -1
  298. package/esm/demo/utils/makeVariants.js +0 -11
  299. package/esm/demo/utils/makeVariants.js.map +0 -1
  300. package/esm/demo/utils/safeUseHash.d.ts +0 -3
  301. package/esm/demo/utils/safeUseHash.d.ts.map +0 -1
  302. package/esm/demo/utils/safeUseHash.js +0 -10
  303. package/esm/demo/utils/safeUseHash.js.map +0 -1
  304. package/esm/demo-global.scss +0 -9
  305. package/esm/pages/_app.d.ts +0 -7
  306. package/esm/pages/_app.d.ts.map +0 -1
  307. package/esm/pages/_app.js +0 -10
  308. package/esm/pages/_app.js.map +0 -1
  309. package/esm/pages/index.d.ts +0 -4
  310. package/esm/pages/index.d.ts.map +0 -1
  311. package/esm/pages/index.js +0 -5
  312. package/esm/pages/index.js.map +0 -1
@@ -1,11 +1,18 @@
1
1
  import React from "react";
2
+ import { Header } from "./Header";
2
3
 
3
4
  import styles from "./List.module.scss";
4
5
 
5
- const List: React.FC = (props) => {
6
+ interface SubComponents {
7
+ Header: typeof Header;
8
+ }
9
+
10
+ const List: React.FC & SubComponents = (props) => {
6
11
  return (
7
12
  <ul className={styles.list}>{props.children}</ul>
8
13
  );
9
14
  };
10
15
 
16
+ List.Header = Header;
17
+
11
18
  export { List };
@@ -0,0 +1,7 @@
1
+ .value {
2
+ color: var(--icon);
3
+ font-size: calc(26px / var(--ratio-font));
4
+ display: flex;
5
+ justify-content: flex-end;
6
+ flex: 1;
7
+ }
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+
3
+ import styles from "./Value.module.scss";
4
+
5
+ const Value: React.FC = (props) => {
6
+ return (
7
+ <div className={styles.value}>{props.children}</div>
8
+ );
9
+ };
10
+
11
+ export { Value };
@@ -2,11 +2,16 @@ import React from "react";
2
2
  import { Action } from "./Action";
3
3
 
4
4
  import styles from "./EqualActions.module.scss";
5
+ import classnames from "classnames";
5
6
 
6
- const EqualActions: React.FC = (props) => {
7
+ interface Props {
8
+ className?: string;
9
+ }
10
+
11
+ const EqualActions: React.FC<Props> = (props) => {
7
12
  React.Children.forEach(props.children, (child) => {
8
13
  if (!child || typeof child !== "object" || !("type" in child) || child.type !== Action) {
9
- throw new TypeError("Every child of Actions must be an Action component");
14
+ throw new TypeError("Every child of EqualActions must be an Action component");
10
15
  }
11
16
  });
12
17
 
@@ -16,7 +21,7 @@ const EqualActions: React.FC = (props) => {
16
21
  } as React.CSSProperties;
17
22
 
18
23
  return (
19
- <div className={styles.actions} style={style}>
24
+ <div className={classnames(styles.actions, props.className)} style={style}>
20
25
  {props.children}
21
26
  </div>
22
27
  );
@@ -35,5 +35,7 @@
35
35
  &:hover {
36
36
  background: var(--active-bg);
37
37
  }
38
+
39
+ --focus-bg-set: var(--focus-color);
38
40
  }
39
41
  }
@@ -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
- export { HeaderDemo };
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,31 @@
1
+ import React from "react";
2
+ import { List } from "../../../../components/layout/list/List";
3
+ import { Item } from "../../../../components/layout/list/Item";
4
+
5
+ const Label = Item.Label;
6
+
7
+ const ItemLabelDemo = () => {
8
+ return (
9
+ <List>
10
+ <Item>
11
+ <Label sub={"Here is a little text explaining things. Don't go too long, but make it non-ambiguous."}>
12
+ Transmit power
13
+ </Label>
14
+ </Item>
15
+ <Item ratio={"6/4/"}>
16
+ <Label sub={"Here is a little text explaining things. Don't go too long, but make it non-ambiguous."}>
17
+ Transmit power
18
+ </Label>
19
+ <></>
20
+ <>Value</>
21
+ </Item>
22
+ <Item>
23
+ <Label sub={"Just one sentence."}>
24
+ Complicated name
25
+ </Label>
26
+ </Item>
27
+ </List>
28
+ );
29
+ };
30
+
31
+ export { ItemLabelDemo };
@@ -1,3 +1,7 @@
1
1
  .custom {
2
2
  border-left: 3px solid green;
3
3
  }
4
+
5
+ .item {
6
+ display: flex;
7
+ }
@@ -0,0 +1,4 @@
1
+ .icon {
2
+ color: var(--toolbar-border);
3
+ margin-left: calc(40px / var(--ratio-dimensions));
4
+ }
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+
3
+ import { List } from "../../../../components/layout/list/List";
4
+ import { Item } from "../../../../components/layout/list/Item";
5
+ import { ICON, Icon } from "../../../../components/icons/Icon";
6
+ import styles from "./Value.module.scss";
7
+
8
+ const { Label, Value } = Item;
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 };
@@ -26,7 +26,7 @@ const ActionDemo: React.FC = () => {
26
26
  <Action icon={ICON.checkmark} onClick={handleClick} /> - onClick action
27
27
  </div>
28
28
  <div>
29
- <Action icon={ICON.checkmark} onClick={handleClick} label={"Pineapple"} /> - onClick action
29
+ <Action icon={ICON.checkmark} onClick={handleClick} label={"Pineapple"} /> - onClick action with label
30
30
  </div>
31
31
  </>
32
32
  );
@@ -94,9 +94,9 @@ const ActionLabelsOnBottom = () => {
94
94
  const ActionsDemo = () => {
95
95
  return (
96
96
  <div>
97
- To make every action take the same amount of horizontal space you need to wrap every Action with Actions
98
- wrapper. Some components (like Header) will do that automatically for you. If you need to use Actions
99
- outside of such components - manually wrap them with Actions.
97
+ To make every action take the same amount of horizontal space you need to wrap every Action with
98
+ EqualActions wrapper. Some components (like Header) will do that automatically for you. If you need to use
99
+ Actions outside of such components - manually wrap them with EqualActions.
100
100
 
101
101
  <div>
102
102
  <EqualActions>
@@ -1,23 +1,20 @@
1
1
  import React from "react";
2
- import { Icon, ICON } from "../../../../index.js";
2
+ import { Icon, ICON, Item, List } from "../../../../index.js";
3
3
 
4
4
  const IconsDemo: React.FC = () => {
5
5
  const icons = Object.values(ICON).map((value) => {
6
6
  return (
7
- <li key={value}>
8
- <Icon name={value} />
7
+ <Item key={value} ratio={"1/"}>
9
8
  {value}
10
- </li>
9
+ <Icon name={value} />
10
+ </Item>
11
11
  );
12
12
  });
13
13
 
14
14
  return (
15
- <div>
16
- Icons:
17
- <ul>
18
- {icons}
19
- </ul>
20
- </div>
15
+ <List>
16
+ {icons}
17
+ </List>
21
18
  );
22
19
  };
23
20
 
@@ -1,6 +1,11 @@
1
1
  import type { AnyComponent } from "../types";
2
2
  import { CheckboxDemo } from "./components/form/Checkbox";
3
- import { HeaderDemo } from "./components/layout/header/Header";
3
+ import {
4
+ CenteredHeaderDemo,
5
+ HeaderDemo,
6
+ HeaderWithButtonsDemo,
7
+ HeaderWithButtonsOnSideDemo, ToolbarVariantDemo,
8
+ } from "./components/layout/header/Header";
4
9
  import {
5
10
  StickyHeaderBottomDemo,
6
11
  StickyHeaderDemo, StickyHeaderLeftCenterDemo, StickyHeaderLeftDemo, StickyHeaderRightDemo,
@@ -17,6 +22,11 @@ import {
17
22
  ActionsOnBottom,
18
23
  ActionsOnLeft,
19
24
  } from "./components/ui/action/Action";
25
+ import { ToggleDemo } from "./components/form/Toggle";
26
+ import { ItemRatioDemo } from "./components/layout/list/ItemRatio";
27
+ import { ItemLabelDemo } from "./components/layout/list/Label";
28
+ import { ListHeaderDemo } from "./components/layout/list/Header";
29
+ import { ValueDemo } from "./components/layout/list/Value";
20
30
 
21
31
  interface TheMap {
22
32
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
@@ -38,33 +48,57 @@ const componentsMap: TheMap = {
38
48
  name: "Checkbox",
39
49
  Component: CheckboxDemo,
40
50
  },
51
+ Toggle: {
52
+ name: "Toggle",
53
+ Component: ToggleDemo,
54
+ },
41
55
  Header: {
42
56
  name: "Header",
43
57
  Component: HeaderDemo,
44
58
  children: {
45
- Sticky: {
46
- name: "Sticky header",
47
- Component: StickyHeaderDemo,
59
+ Centered: {
60
+ name: "Centered",
61
+ Component: CenteredHeaderDemo,
48
62
  },
49
- StickyBottom: {
50
- name: "On bottom",
51
- Component: StickyHeaderBottomDemo,
63
+ Toolbar: {
64
+ name: "Toolbar",
65
+ Component: ToolbarVariantDemo,
52
66
  },
53
- StickyTopBottom: {
54
- name: "On top & bottom",
55
- Component: StickyHeaderTopBottomDemo,
67
+ WithButtons: {
68
+ name: "With buttons",
69
+ Component: HeaderWithButtonsDemo,
70
+ children: {
71
+ OnLeft: {
72
+ name: "On the side",
73
+ Component: HeaderWithButtonsOnSideDemo,
74
+ },
75
+ },
56
76
  },
57
- StickyLeft: {
58
- name: "On left",
59
- Component: StickyHeaderLeftDemo,
60
- },
61
- StickyRight: {
62
- name: "On right",
63
- Component: StickyHeaderRightDemo,
64
- },
65
- StickyLeftCentered: {
66
- name: "On left centered",
67
- Component: StickyHeaderLeftCenterDemo,
77
+ Sticky: {
78
+ name: "Sticky",
79
+ Component: StickyHeaderDemo,
80
+ children: {
81
+ StickyBottom: {
82
+ name: "On bottom",
83
+ Component: StickyHeaderBottomDemo,
84
+ },
85
+ StickyTopBottom: {
86
+ name: "On top & bottom",
87
+ Component: StickyHeaderTopBottomDemo,
88
+ },
89
+ StickyLeft: {
90
+ name: "On left",
91
+ Component: StickyHeaderLeftDemo,
92
+ },
93
+ StickyRight: {
94
+ name: "On right",
95
+ Component: StickyHeaderRightDemo,
96
+ },
97
+ StickyLeftCentered: {
98
+ name: "On left centered",
99
+ Component: StickyHeaderLeftCenterDemo,
100
+ },
101
+ },
68
102
  },
69
103
  },
70
104
  },
@@ -84,8 +118,8 @@ const componentsMap: TheMap = {
84
118
  name: "Actions on left header",
85
119
  Component: ActionsOnLeft,
86
120
  },
87
- Actions: {
88
- name: "Actions (wrapper)",
121
+ EqualActions: {
122
+ name: "EqualActions (wrapper)",
89
123
  Component: ActionsDemo,
90
124
  },
91
125
  },
@@ -93,6 +127,24 @@ const componentsMap: TheMap = {
93
127
  ListItem: {
94
128
  name: "List & Item",
95
129
  Component: ListItemDemo,
130
+ children: {
131
+ Ratio: {
132
+ name: "Alignment",
133
+ Component: ItemRatioDemo,
134
+ },
135
+ Header: {
136
+ name: "Header",
137
+ Component: ListHeaderDemo,
138
+ },
139
+ Label: {
140
+ name: "Label",
141
+ Component: ItemLabelDemo,
142
+ },
143
+ Value: {
144
+ name: "Value",
145
+ Component: ValueDemo,
146
+ },
147
+ },
96
148
  },
97
149
  Pad: {
98
150
  name: "Direction pad",
package/src/global.scss CHANGED
@@ -10,6 +10,9 @@
10
10
  --active-bg: #d3d3d3;
11
11
  --inactive-bg: #d3d3d3; // used
12
12
 
13
+ --toggle-handle-bg: #e0e0e0;
14
+ --toggle-handle-border: #cdcdcd;
15
+
13
16
  --icon: #636363;
14
17
  --border: #d5d5d5;
15
18
  --button-border: #bababa;
@@ -17,13 +20,16 @@
17
20
  --header-border: #c8c8c9;
18
21
  --header-bg: #efeff0;
19
22
  --header-text: #484848;
23
+ --text: #323232;
24
+ --sub: #959595;
20
25
 
21
26
  --toolbar-border: #ababab;
22
- --toolbarf-bg: #f8f8f8;
27
+ --toolbar-bg: #f8f8f8;
23
28
 
24
29
  // Shades: https://maketintsandshades.com/#038bf4,ff7200,7357e8,3ec234,3ec234,ff388f,ea2700
25
30
  --blue1: #038bf4;
26
31
  --orange1: #ff7200;
32
+ --orange1-darker: #cc5b00;
27
33
  --purple1: #7357e8;
28
34
  --green1: #3ec234;
29
35
  --green1-darker: #38af2f;
@@ -31,12 +37,22 @@
31
37
  --red1: #ea2700;
32
38
 
33
39
  --grey1: #737373;
40
+
41
+ --focus-color: #dcaf00;
42
+ }
43
+
44
+ *:focus {
45
+ outline: none!important;
34
46
  }
35
47
 
36
- *:focus { // @TODO take care of focus
48
+ *:focus-visible:focus-visible {
37
49
  outline: none!important;
50
+ border-color: var(--focus-color);
51
+ background-color: var(--focus-bg-set);
38
52
  }
39
53
 
54
+
40
55
  body {
41
56
  font-size: 15px;
57
+ color: var(--text);
42
58
  }
package/src/index.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  export * from "./components/form/Checkbox.js";
2
+ export * from "./components/form/Toggle.js";
2
3
 
3
4
  export * from "./components/icons/Icon.js";
4
5
 
5
6
  export * from "./components/layout/header/Header.js";
7
+ export * from "./components/layout/header/HeaderIconAction.js";
6
8
  export * from "./components/layout/header/StickyHeader.js";
7
9
  export * from "./components/layout/list/List.js";
8
10
  export * from "./components/layout/list/Item.js";
9
11
 
12
+ export * from "./components/ui/action/Action.js";
13
+ export * from "./components/ui/action/EqualActions.js";
10
14
  export * from "./components/ui/button/Button.js";
11
15
  export * from "./components/ui/directionPad/Pad.js";
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+
3
+ const ReactMiuiPage = () => {
4
+ // @TODO nicer UI, add back button etc
5
+ return (
6
+ <div>
7
+ Hi. This is an example page to demonstrate application level routing.
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export default ReactMiuiPage;
package/src/types.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type React from "react";
2
2
 
3
- type AnyComponent = React.ComponentClass | React.FC;
3
+ type AnyComponent = React.ComponentClass | React.FC | React.VFC;
4
4
 
5
5
  export type {
6
6
  AnyComponent,
@@ -1,4 +0,0 @@
1
- import React from "react";
2
- declare const Demo: React.FC;
3
- export { Demo };
4
- //# sourceMappingURL=Demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Demo.d.ts","sourceRoot":"","sources":["../../src/demo/Demo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAOjB,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,CAAC"}