react-miui 0.2.0 → 0.4.2

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 (302) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/assets/forward.svg +1 -0
  3. package/assets/sources/back.fla +0 -0
  4. package/dist/components/form/Checkbox.js +2 -2
  5. package/dist/components/form/Checkbox.js.map +1 -1
  6. package/dist/components/form/Toggle.d.ts +8 -0
  7. package/dist/components/form/Toggle.d.ts.map +1 -0
  8. package/dist/{demo/components/form/Checkbox.js → components/form/Toggle.js} +17 -8
  9. package/dist/components/form/Toggle.js.map +1 -0
  10. package/dist/components/form/Toggle.module.scss +46 -0
  11. package/dist/components/icons/Back.d.ts.map +1 -1
  12. package/dist/components/icons/Back.js.map +1 -1
  13. package/dist/components/icons/Forward.d.ts +7 -0
  14. package/dist/components/icons/Forward.d.ts.map +1 -0
  15. package/dist/components/icons/Forward.js +13 -0
  16. package/dist/components/icons/Forward.js.map +1 -0
  17. package/dist/components/icons/Icon.d.ts +2 -1
  18. package/dist/components/icons/Icon.d.ts.map +1 -1
  19. package/dist/components/icons/Icon.js +7 -4
  20. package/dist/components/icons/Icon.js.map +1 -1
  21. package/dist/components/layout/header/Header.js +4 -4
  22. package/dist/components/layout/header/Header.js.map +1 -1
  23. package/dist/components/layout/list/Header.d.ts +4 -0
  24. package/dist/components/layout/list/Header.d.ts.map +1 -0
  25. package/dist/components/layout/list/Header.js +16 -0
  26. package/dist/components/layout/list/Header.js.map +1 -0
  27. package/dist/components/layout/list/Header.module.scss +8 -0
  28. package/dist/components/layout/list/Item.d.ts +8 -1
  29. package/dist/components/layout/list/Item.d.ts.map +1 -1
  30. package/dist/components/layout/list/Item.js +21 -5
  31. package/dist/components/layout/list/Item.js.map +1 -1
  32. package/dist/components/layout/list/Item.module.scss +10 -2
  33. package/dist/components/layout/list/Label.d.ts +8 -0
  34. package/dist/components/layout/list/Label.d.ts.map +1 -0
  35. package/dist/components/layout/list/Label.js +16 -0
  36. package/dist/components/layout/list/Label.js.map +1 -0
  37. package/dist/components/layout/list/Label.module.scss +9 -0
  38. package/dist/components/layout/list/List.d.ts +5 -1
  39. package/dist/components/layout/list/List.d.ts.map +1 -1
  40. package/dist/components/layout/list/List.js +2 -0
  41. package/dist/components/layout/list/List.js.map +1 -1
  42. package/dist/components/layout/list/Value.d.ts +4 -0
  43. package/dist/components/layout/list/Value.d.ts.map +1 -0
  44. package/dist/components/layout/list/Value.js +13 -0
  45. package/dist/components/layout/list/Value.js.map +1 -0
  46. package/dist/components/layout/list/Value.module.scss +7 -0
  47. package/dist/components/ui/action/Action.js +2 -2
  48. package/dist/components/ui/action/Action.js.map +1 -1
  49. package/dist/components/ui/action/EqualActions.js +3 -3
  50. package/dist/components/ui/action/EqualActions.js.map +1 -1
  51. package/dist/components/ui/button/Button.js +3 -3
  52. package/dist/components/ui/button/Button.js.map +1 -1
  53. package/dist/global.scss +8 -1
  54. package/dist/index.d.ts +4 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +4 -0
  57. package/dist/index.js.map +1 -1
  58. package/docs/assets/js/search.js +1 -1
  59. package/docs/assets/js/search.json +1 -1
  60. package/docs/enums/ICON.html +31 -5
  61. package/docs/index.html +22 -4
  62. package/docs/modules/Item.html +155 -0
  63. package/docs/modules/List.html +144 -0
  64. package/docs/modules/StickyHeader.html +10 -4
  65. package/docs/modules.html +78 -14
  66. package/docs/pages/Tutorials/Test.html +9 -3
  67. package/esm/components/form/Checkbox.js +1 -1
  68. package/esm/components/form/Checkbox.js.map +1 -1
  69. package/esm/components/form/Toggle.d.ts +8 -0
  70. package/esm/components/form/Toggle.d.ts.map +1 -0
  71. package/esm/components/form/Toggle.js +15 -0
  72. package/esm/components/form/Toggle.js.map +1 -0
  73. package/esm/components/form/Toggle.module.scss +46 -0
  74. package/esm/components/icons/Back.d.ts.map +1 -1
  75. package/esm/components/icons/Back.js.map +1 -1
  76. package/esm/components/icons/Forward.d.ts +7 -0
  77. package/esm/components/icons/Forward.d.ts.map +1 -0
  78. package/esm/components/icons/Forward.js +7 -0
  79. package/esm/components/icons/Forward.js.map +1 -0
  80. package/esm/components/icons/Icon.d.ts +2 -1
  81. package/esm/components/icons/Icon.d.ts.map +1 -1
  82. package/esm/components/icons/Icon.js +5 -2
  83. package/esm/components/icons/Icon.js.map +1 -1
  84. package/esm/components/layout/header/Header.js +2 -2
  85. package/esm/components/layout/header/Header.js.map +1 -1
  86. package/esm/components/layout/list/Header.d.ts +4 -0
  87. package/esm/components/layout/list/Header.d.ts.map +1 -0
  88. package/esm/components/layout/list/Header.js +10 -0
  89. package/esm/components/layout/list/Header.js.map +1 -0
  90. package/esm/components/layout/list/Header.module.scss +8 -0
  91. package/esm/components/layout/list/Item.d.ts +8 -1
  92. package/esm/components/layout/list/Item.d.ts.map +1 -1
  93. package/esm/components/layout/list/Item.js +21 -5
  94. package/esm/components/layout/list/Item.js.map +1 -1
  95. package/esm/components/layout/list/Item.module.scss +10 -2
  96. package/esm/components/layout/list/Label.d.ts +8 -0
  97. package/esm/components/layout/list/Label.d.ts.map +1 -0
  98. package/esm/components/layout/list/Label.js +10 -0
  99. package/esm/components/layout/list/Label.js.map +1 -0
  100. package/esm/components/layout/list/Label.module.scss +9 -0
  101. package/esm/components/layout/list/List.d.ts +5 -1
  102. package/esm/components/layout/list/List.d.ts.map +1 -1
  103. package/esm/components/layout/list/List.js +2 -0
  104. package/esm/components/layout/list/List.js.map +1 -1
  105. package/esm/components/layout/list/Value.d.ts +4 -0
  106. package/esm/components/layout/list/Value.d.ts.map +1 -0
  107. package/esm/components/layout/list/Value.js +7 -0
  108. package/esm/components/layout/list/Value.js.map +1 -0
  109. package/esm/components/layout/list/Value.module.scss +7 -0
  110. package/esm/components/ui/action/Action.js +1 -1
  111. package/esm/components/ui/action/Action.js.map +1 -1
  112. package/esm/components/ui/action/EqualActions.js +2 -2
  113. package/esm/components/ui/action/EqualActions.js.map +1 -1
  114. package/esm/components/ui/button/Button.js +2 -2
  115. package/esm/components/ui/button/Button.js.map +1 -1
  116. package/esm/global.scss +8 -1
  117. package/esm/index.d.ts +4 -0
  118. package/esm/index.d.ts.map +1 -1
  119. package/esm/index.js +4 -0
  120. package/esm/index.js.map +1 -1
  121. package/package.json +1 -1
  122. package/src/components/form/Checkbox.tsx +1 -1
  123. package/src/components/form/Toggle.module.scss +46 -0
  124. package/src/components/form/Toggle.tsx +33 -0
  125. package/src/components/icons/Back.tsx +7 -1
  126. package/src/components/icons/Forward.tsx +21 -0
  127. package/src/components/icons/Icon.tsx +7 -4
  128. package/src/components/layout/header/Header.tsx +2 -2
  129. package/src/components/layout/list/Header.module.scss +8 -0
  130. package/src/components/layout/list/Header.tsx +16 -0
  131. package/src/components/layout/list/Item.module.scss +10 -2
  132. package/src/components/layout/list/Item.tsx +33 -6
  133. package/src/components/layout/list/Label.module.scss +9 -0
  134. package/src/components/layout/list/Label.tsx +21 -0
  135. package/src/components/layout/list/List.tsx +8 -1
  136. package/src/components/layout/list/Value.module.scss +7 -0
  137. package/src/components/layout/list/Value.tsx +11 -0
  138. package/src/components/ui/action/Action.tsx +1 -1
  139. package/src/components/ui/action/EqualActions.tsx +2 -2
  140. package/src/components/ui/button/Button.tsx +2 -2
  141. package/src/demo/components/form/Toggle.tsx +49 -0
  142. package/src/demo/components/layout/header/Header.tsx +9 -1
  143. package/src/demo/components/layout/list/Header.tsx +24 -0
  144. package/src/demo/components/layout/list/ItemRatio.tsx +21 -0
  145. package/src/demo/components/layout/list/Label.tsx +31 -0
  146. package/src/demo/components/layout/list/List.Item.module.scss +4 -0
  147. package/src/demo/components/layout/list/Value.module.scss +4 -0
  148. package/src/demo/components/layout/list/Value.tsx +26 -0
  149. package/src/demo/components/ui/icons/Icons.tsx +3 -7
  150. package/src/demo/componentsMap.ts +32 -1
  151. package/src/global.scss +8 -1
  152. package/src/index.ts +4 -0
  153. package/dist/demo/Demo.d.ts +0 -4
  154. package/dist/demo/Demo.d.ts.map +0 -1
  155. package/dist/demo/Demo.js +0 -18
  156. package/dist/demo/Demo.js.map +0 -1
  157. package/dist/demo/Demo.module.scss +0 -4
  158. package/dist/demo/Main.d.ts +0 -4
  159. package/dist/demo/Main.d.ts.map +0 -1
  160. package/dist/demo/Main.js +0 -83
  161. package/dist/demo/Main.js.map +0 -1
  162. package/dist/demo/Main.module.scss +0 -30
  163. package/dist/demo/Menu.d.ts +0 -9
  164. package/dist/demo/Menu.d.ts.map +0 -1
  165. package/dist/demo/Menu.js +0 -31
  166. package/dist/demo/Menu.js.map +0 -1
  167. package/dist/demo/Menu.module.scss +0 -41
  168. package/dist/demo/components/form/Checkbox.d.ts +0 -4
  169. package/dist/demo/components/form/Checkbox.d.ts.map +0 -1
  170. package/dist/demo/components/form/Checkbox.js.map +0 -1
  171. package/dist/demo/components/layout/header/Header.d.ts +0 -7
  172. package/dist/demo/components/layout/header/Header.d.ts.map +0 -1
  173. package/dist/demo/components/layout/header/Header.js +0 -55
  174. package/dist/demo/components/layout/header/Header.js.map +0 -1
  175. package/dist/demo/components/layout/header/StickyHeader.d.ts +0 -9
  176. package/dist/demo/components/layout/header/StickyHeader.d.ts.map +0 -1
  177. package/dist/demo/components/layout/header/StickyHeader.js +0 -73
  178. package/dist/demo/components/layout/header/StickyHeader.js.map +0 -1
  179. package/dist/demo/components/layout/list/List.Item.d.ts +0 -4
  180. package/dist/demo/components/layout/list/List.Item.d.ts.map +0 -1
  181. package/dist/demo/components/layout/list/List.Item.js +0 -42
  182. package/dist/demo/components/layout/list/List.Item.js.map +0 -1
  183. package/dist/demo/components/layout/list/List.Item.module.scss +0 -3
  184. package/dist/demo/components/ui/action/Action.d.ts +0 -8
  185. package/dist/demo/components/ui/action/Action.d.ts.map +0 -1
  186. package/dist/demo/components/ui/action/Action.js +0 -83
  187. package/dist/demo/components/ui/action/Action.js.map +0 -1
  188. package/dist/demo/components/ui/action/ActionDemo.module.scss +0 -3
  189. package/dist/demo/components/ui/button/ButtonDemo.d.ts +0 -4
  190. package/dist/demo/components/ui/button/ButtonDemo.d.ts.map +0 -1
  191. package/dist/demo/components/ui/button/ButtonDemo.js +0 -20
  192. package/dist/demo/components/ui/button/ButtonDemo.js.map +0 -1
  193. package/dist/demo/components/ui/directionPad/Pad.d.ts +0 -4
  194. package/dist/demo/components/ui/directionPad/Pad.d.ts.map +0 -1
  195. package/dist/demo/components/ui/directionPad/Pad.js +0 -49
  196. package/dist/demo/components/ui/directionPad/Pad.js.map +0 -1
  197. package/dist/demo/components/ui/icons/Icons.d.ts +0 -4
  198. package/dist/demo/components/ui/icons/Icons.d.ts.map +0 -1
  199. package/dist/demo/components/ui/icons/Icons.js +0 -20
  200. package/dist/demo/components/ui/icons/Icons.js.map +0 -1
  201. package/dist/demo/components/ui/icons/Icons.module.scss +0 -4
  202. package/dist/demo/componentsMap.d.ts +0 -13
  203. package/dist/demo/componentsMap.d.ts.map +0 -1
  204. package/dist/demo/componentsMap.js +0 -103
  205. package/dist/demo/componentsMap.js.map +0 -1
  206. package/dist/demo/utils/makeVariants.d.ts +0 -3
  207. package/dist/demo/utils/makeVariants.d.ts.map +0 -1
  208. package/dist/demo/utils/makeVariants.js +0 -14
  209. package/dist/demo/utils/makeVariants.js.map +0 -1
  210. package/dist/demo/utils/safeUseHash.d.ts +0 -3
  211. package/dist/demo/utils/safeUseHash.d.ts.map +0 -1
  212. package/dist/demo/utils/safeUseHash.js +0 -13
  213. package/dist/demo/utils/safeUseHash.js.map +0 -1
  214. package/dist/demo-global.scss +0 -9
  215. package/dist/pages/_app.d.ts +0 -7
  216. package/dist/pages/_app.d.ts.map +0 -1
  217. package/dist/pages/_app.js +0 -15
  218. package/dist/pages/_app.js.map +0 -1
  219. package/dist/pages/index.d.ts +0 -4
  220. package/dist/pages/index.d.ts.map +0 -1
  221. package/dist/pages/index.js +0 -10
  222. package/dist/pages/index.js.map +0 -1
  223. package/dist/pages/react-miui.d.ts +0 -4
  224. package/dist/pages/react-miui.d.ts.map +0 -1
  225. package/dist/pages/react-miui.js +0 -11
  226. package/dist/pages/react-miui.js.map +0 -1
  227. package/esm/demo/Demo.d.ts +0 -4
  228. package/esm/demo/Demo.d.ts.map +0 -1
  229. package/esm/demo/Demo.js +0 -12
  230. package/esm/demo/Demo.js.map +0 -1
  231. package/esm/demo/Demo.module.scss +0 -4
  232. package/esm/demo/Main.d.ts +0 -4
  233. package/esm/demo/Main.d.ts.map +0 -1
  234. package/esm/demo/Main.js +0 -58
  235. package/esm/demo/Main.js.map +0 -1
  236. package/esm/demo/Main.module.scss +0 -30
  237. package/esm/demo/Menu.d.ts +0 -9
  238. package/esm/demo/Menu.d.ts.map +0 -1
  239. package/esm/demo/Menu.js +0 -25
  240. package/esm/demo/Menu.js.map +0 -1
  241. package/esm/demo/Menu.module.scss +0 -41
  242. package/esm/demo/components/form/Checkbox.d.ts +0 -4
  243. package/esm/demo/components/form/Checkbox.d.ts.map +0 -1
  244. package/esm/demo/components/form/Checkbox.js +0 -9
  245. package/esm/demo/components/form/Checkbox.js.map +0 -1
  246. package/esm/demo/components/layout/header/Header.d.ts +0 -7
  247. package/esm/demo/components/layout/header/Header.d.ts.map +0 -1
  248. package/esm/demo/components/layout/header/Header.js +0 -46
  249. package/esm/demo/components/layout/header/Header.js.map +0 -1
  250. package/esm/demo/components/layout/header/StickyHeader.d.ts +0 -9
  251. package/esm/demo/components/layout/header/StickyHeader.d.ts.map +0 -1
  252. package/esm/demo/components/layout/header/StickyHeader.js +0 -62
  253. package/esm/demo/components/layout/header/StickyHeader.js.map +0 -1
  254. package/esm/demo/components/layout/list/List.Item.d.ts +0 -4
  255. package/esm/demo/components/layout/list/List.Item.d.ts.map +0 -1
  256. package/esm/demo/components/layout/list/List.Item.js +0 -17
  257. package/esm/demo/components/layout/list/List.Item.js.map +0 -1
  258. package/esm/demo/components/layout/list/List.Item.module.scss +0 -3
  259. package/esm/demo/components/ui/action/Action.d.ts +0 -8
  260. package/esm/demo/components/ui/action/Action.d.ts.map +0 -1
  261. package/esm/demo/components/ui/action/Action.js +0 -73
  262. package/esm/demo/components/ui/action/Action.js.map +0 -1
  263. package/esm/demo/components/ui/action/ActionDemo.module.scss +0 -3
  264. package/esm/demo/components/ui/button/ButtonDemo.d.ts +0 -4
  265. package/esm/demo/components/ui/button/ButtonDemo.d.ts.map +0 -1
  266. package/esm/demo/components/ui/button/ButtonDemo.js +0 -14
  267. package/esm/demo/components/ui/button/ButtonDemo.js.map +0 -1
  268. package/esm/demo/components/ui/directionPad/Pad.d.ts +0 -4
  269. package/esm/demo/components/ui/directionPad/Pad.d.ts.map +0 -1
  270. package/esm/demo/components/ui/directionPad/Pad.js +0 -27
  271. package/esm/demo/components/ui/directionPad/Pad.js.map +0 -1
  272. package/esm/demo/components/ui/icons/Icons.d.ts +0 -4
  273. package/esm/demo/components/ui/icons/Icons.d.ts.map +0 -1
  274. package/esm/demo/components/ui/icons/Icons.js +0 -14
  275. package/esm/demo/components/ui/icons/Icons.js.map +0 -1
  276. package/esm/demo/components/ui/icons/Icons.module.scss +0 -4
  277. package/esm/demo/componentsMap.d.ts +0 -13
  278. package/esm/demo/componentsMap.d.ts.map +0 -1
  279. package/esm/demo/componentsMap.js +0 -100
  280. package/esm/demo/componentsMap.js.map +0 -1
  281. package/esm/demo/utils/makeVariants.d.ts +0 -3
  282. package/esm/demo/utils/makeVariants.d.ts.map +0 -1
  283. package/esm/demo/utils/makeVariants.js +0 -11
  284. package/esm/demo/utils/makeVariants.js.map +0 -1
  285. package/esm/demo/utils/safeUseHash.d.ts +0 -3
  286. package/esm/demo/utils/safeUseHash.d.ts.map +0 -1
  287. package/esm/demo/utils/safeUseHash.js +0 -10
  288. package/esm/demo/utils/safeUseHash.js.map +0 -1
  289. package/esm/demo-global.scss +0 -9
  290. package/esm/pages/_app.d.ts +0 -7
  291. package/esm/pages/_app.d.ts.map +0 -1
  292. package/esm/pages/_app.js +0 -10
  293. package/esm/pages/_app.js.map +0 -1
  294. package/esm/pages/index.d.ts +0 -4
  295. package/esm/pages/index.d.ts.map +0 -1
  296. package/esm/pages/index.js +0 -5
  297. package/esm/pages/index.js.map +0 -1
  298. package/esm/pages/react-miui.d.ts +0 -4
  299. package/esm/pages/react-miui.d.ts.map +0 -1
  300. package/esm/pages/react-miui.js +0 -6
  301. package/esm/pages/react-miui.js.map +0 -1
  302. package/src/demo/components/ui/icons/Icons.module.scss +0 -4
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import classnames from "classnames";
3
+
4
+ import styles from "./Item.module.scss";
5
+ import headerStyles from "./Header.module.scss";
6
+
7
+ const Header: React.FC = (props) => {
8
+ // @TODO way to use h1, h2, h3 instead of div
9
+ return (
10
+ <li className={classnames(styles.item, headerStyles.header)}>
11
+ <div>{props.children}</div>
12
+ </li>
13
+ );
14
+ };
15
+
16
+ export { Header };
@@ -2,7 +2,7 @@
2
2
  list-style-type: none;
3
3
  margin: 0;
4
4
  padding: 0;
5
- font-size: 15px;
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: 20px 0;
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,8 @@ 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.js";
6
+ import { Label } from "./Label.js";
5
7
 
6
8
  interface LinkProps {
7
9
  href: string;
@@ -13,38 +15,63 @@ interface Props {
13
15
  onClick?: () => void;
14
16
  className?: string;
15
17
  Link?: React.ComponentClass<LinkProps> | React.FC<LinkProps>;
18
+ ratio?: string; // @TODO number/number/number/.. type?
16
19
  }
17
20
 
18
- const Item: React.FC<Props> = (props) => {
19
- const { className, children, href, to, onClick, Link, ...restProps } = props;
21
+ interface SubComponents {
22
+ Label: typeof Label;
23
+ Value: typeof Value;
24
+ }
25
+
26
+ // eslint-disable-next-line max-statements
27
+ const Item: React.FC<Props> & SubComponents = (props) => {
28
+ const { className, children, href, to, onClick, Link, ratio, ...restProps } = props;
20
29
  const cls = classnames(styles.item, className);
21
30
 
22
31
  const liProps = {
23
32
  className: cls,
24
33
  };
25
34
 
35
+ const r = ratio ? ratio.split("/") : [];
36
+
37
+ const ren = React.Children.map(props.children, (child, index) => {
38
+ let flex = undefined;
39
+ if (!r.length && child && typeof child === "object" && "type" in child && child.type === Value) {
40
+ return child;
41
+ }
42
+ if (index in r) {
43
+ flex = r[index];
44
+ }
45
+ return <div style={{ flex }}>{child}</div>;
46
+ });
47
+
26
48
  if (to) {
27
49
  if (!Link) {
28
50
  throw new TypeError("`to` prop given without `Link` component");
29
51
  }
30
52
 
31
- return <li {...liProps}><Link href={to} {...restProps}>{children}</Link></li>;
53
+ return <li {...liProps}><Link href={to} {...restProps}><a className={styles.content}>{ren}</a></Link></li>;
32
54
  }
33
55
  if (href) {
34
56
  const aProps: typeof restProps & { onClick?: Props["onClick"]} = { ...restProps };
35
57
  if (onClick) {
36
58
  aProps.onClick = onClick;
37
59
  }
38
- return <li {...liProps}><a href={href} {...aProps}>{children}</a></li>;
60
+ return <li {...liProps}><a href={href} {...aProps} className={styles.content}>{ren}</a></li>;
39
61
  }
40
62
  if (onClick) {
41
63
  return (
42
64
  <li {...liProps}>
43
- <button className={styles.button} onClick={props.onClick} {...restProps}>{children}</button>
65
+ <button className={classnames(styles.button, styles.content)} onClick={props.onClick}{...restProps}>
66
+ {ren}
67
+ </button>
44
68
  </li>
45
69
  );
46
70
  }
47
- return <li {...liProps}><div {...restProps}>{children}</div></li>;
71
+ return <li {...liProps}><div {...restProps} className={styles.content}>{ren}</div></li>;
48
72
  };
49
73
 
74
+ Item.Label = Label;
75
+ Item.Value = Value;
76
+
50
77
  export { Item };
@@ -0,0 +1,9 @@
1
+ .sub {
2
+ font-size: calc(27px / var(--ratio-font));
3
+ color: var(--sub);
4
+ margin-top: calc(27px / var(--ratio-font) / 3);
5
+ }
6
+
7
+ .root {
8
+ padding: calc(54px / var(--ratio-dimensions)) 0;
9
+ }
@@ -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 };
@@ -1,11 +1,18 @@
1
1
  import React from "react";
2
2
 
3
+ import { Header } from "./Header.js";
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,7 +2,7 @@ import React from "react";
2
2
  import type { ReactNode } from "react";
3
3
 
4
4
  import type { ICON } from "../../icons/Icon";
5
- import { Icon } from "../../icons/Icon";
5
+ import { Icon } from "../../icons/Icon.js";
6
6
  import styles from "./Action.module.scss";
7
7
 
8
8
  interface LinkProps { // @TODO extract? - same on list item
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
- import { Action } from "./Action";
2
+ import classnames from "classnames";
3
3
 
4
+ import { Action } from "./Action.js";
4
5
  import styles from "./EqualActions.module.scss";
5
- import classnames from "classnames";
6
6
 
7
7
  interface Props {
8
8
  className?: string;
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
+ import classnames from "classnames";
2
3
 
3
4
  import styles from "./Button.module.scss";
4
- import classnames from "classnames";
5
- import { makeVariants } from "../../../demo/utils/makeVariants";
5
+ import { makeVariants } from "../../../demo/utils/makeVariants.js";
6
6
 
7
7
  interface Props {
8
8
  disabled?: boolean;
@@ -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 };
@@ -27,6 +27,14 @@ const CenteredHeaderDemo = () => {
27
27
  );
28
28
  };
29
29
 
30
+ const ToolbarVariantDemo = () => {
31
+ return (
32
+ <>
33
+ <Header center={true} variant={"toolbar"}>Toolbar version</Header>
34
+ </>
35
+ );
36
+ };
37
+
30
38
  const handleClick = () => { alert(1); };
31
39
 
32
40
  // eslint-disable-next-line max-lines-per-function
@@ -108,4 +116,4 @@ const HeaderWithButtonsOnSideDemo = () => {
108
116
  );
109
117
  };
110
118
 
111
- export { HeaderDemo, CenteredHeaderDemo, HeaderWithButtonsDemo, HeaderWithButtonsOnSideDemo };
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 };
@@ -1,16 +1,12 @@
1
1
  import React from "react";
2
2
  import { Icon, ICON, Item, List } from "../../../../index.js";
3
3
 
4
- import styles from "./Icons.module.scss";
5
-
6
4
  const IconsDemo: React.FC = () => {
7
5
  const icons = Object.values(ICON).map((value) => {
8
6
  return (
9
- <Item key={value}>
10
- <div className={styles.row}>
11
- {value}
12
- <Icon name={value} />
13
- </div>
7
+ <Item key={value} ratio={"1/"}>
8
+ {value}
9
+ <Icon name={value} />
14
10
  </Item>
15
11
  );
16
12
  });
@@ -4,7 +4,7 @@ import {
4
4
  CenteredHeaderDemo,
5
5
  HeaderDemo,
6
6
  HeaderWithButtonsDemo,
7
- HeaderWithButtonsOnSideDemo,
7
+ HeaderWithButtonsOnSideDemo, ToolbarVariantDemo,
8
8
  } from "./components/layout/header/Header";
9
9
  import {
10
10
  StickyHeaderBottomDemo,
@@ -22,6 +22,11 @@ import {
22
22
  ActionsOnBottom,
23
23
  ActionsOnLeft,
24
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";
25
30
 
26
31
  interface TheMap {
27
32
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
@@ -43,6 +48,10 @@ const componentsMap: TheMap = {
43
48
  name: "Checkbox",
44
49
  Component: CheckboxDemo,
45
50
  },
51
+ Toggle: {
52
+ name: "Toggle",
53
+ Component: ToggleDemo,
54
+ },
46
55
  Header: {
47
56
  name: "Header",
48
57
  Component: HeaderDemo,
@@ -51,6 +60,10 @@ const componentsMap: TheMap = {
51
60
  name: "Centered",
52
61
  Component: CenteredHeaderDemo,
53
62
  },
63
+ Toolbar: {
64
+ name: "Toolbar",
65
+ Component: ToolbarVariantDemo,
66
+ },
54
67
  WithButtons: {
55
68
  name: "With buttons",
56
69
  Component: HeaderWithButtonsDemo,
@@ -114,6 +127,24 @@ const componentsMap: TheMap = {
114
127
  ListItem: {
115
128
  name: "List & Item",
116
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
+ },
117
148
  },
118
149
  Pad: {
119
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;
@@ -48,4 +54,5 @@
48
54
 
49
55
  body {
50
56
  font-size: 15px;
57
+ color: var(--text);
51
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";
@@ -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"}
package/dist/demo/Demo.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Demo = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const Demo_module_scss_1 = __importDefault(require("./Demo.module.scss"));
9
- const Menu_1 = require("./Menu");
10
- const Main_1 = require("./Main");
11
- const componentsMap_1 = require("./componentsMap");
12
- const Demo = (props) => {
13
- return (react_1.default.createElement("div", { className: Demo_module_scss_1.default.container },
14
- react_1.default.createElement(Menu_1.Menu, { list: componentsMap_1.componentsMap }),
15
- react_1.default.createElement(Main_1.Main, null)));
16
- };
17
- exports.Demo = Demo;
18
- //# sourceMappingURL=Demo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Demo.js","sourceRoot":"","sources":["../../src/demo/Demo.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,0EAAwC;AACxC,iCAA8B;AAC9B,iCAA8B;AAC9B,mDAAgD;AAEhD,MAAM,IAAI,GAAa,CAAC,KAAK,EAAE,EAAE;IAC7B,OAAO,CACH,uCAAK,SAAS,EAAE,0BAAM,CAAC,SAAS;QAC5B,8BAAC,WAAI,IAAC,IAAI,EAAE,6BAAa,GAAI;QAC7B,8BAAC,WAAI,OAAG,CACN,CACT,CAAC;AACN,CAAC,CAAC;AAEO,oBAAI"}
@@ -1,4 +0,0 @@
1
- .container {
2
- display: flex;
3
- height: 100%;
4
- }
@@ -1,4 +0,0 @@
1
- import React from "react";
2
- declare const Main: React.FC;
3
- export { Main };
4
- //# sourceMappingURL=Main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Main.d.ts","sourceRoot":"","sources":["../../src/demo/Main.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AA2CrD,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EA6CjB,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,CAAC"}