@toptal/picasso-lab 9.3.0 → 9.3.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 (366) hide show
  1. package/CHANGELOG.md +1385 -0
  2. package/{Calendar → dist-package/Calendar}/Calendar.d.ts +0 -0
  3. package/{Calendar → dist-package/Calendar}/Calendar.js +0 -0
  4. package/{Calendar → dist-package/Calendar}/Calendar.js.map +0 -0
  5. package/{Calendar → dist-package/Calendar}/index.d.ts +0 -0
  6. package/{Calendar → dist-package/Calendar}/index.js +0 -0
  7. package/{Calendar → dist-package/Calendar}/index.js.map +0 -0
  8. package/{Calendar → dist-package/Calendar}/styles.d.ts +0 -0
  9. package/{Calendar → dist-package/Calendar}/styles.js +0 -0
  10. package/{Calendar → dist-package/Calendar}/styles.js.map +0 -0
  11. package/{Calendar → dist-package/Calendar}/types.d.ts +0 -0
  12. package/{Calendar → dist-package/Calendar}/types.js +0 -0
  13. package/{Calendar → dist-package/Calendar}/types.js.map +0 -0
  14. package/{DatePicker → dist-package/DatePicker}/DatePicker.d.ts +0 -0
  15. package/{DatePicker → dist-package/DatePicker}/DatePicker.js +0 -0
  16. package/{DatePicker → dist-package/DatePicker}/DatePicker.js.map +0 -0
  17. package/{DatePicker → dist-package/DatePicker}/constants.d.ts +0 -0
  18. package/{DatePicker → dist-package/DatePicker}/constants.js +0 -0
  19. package/{DatePicker → dist-package/DatePicker}/constants.js.map +0 -0
  20. package/{DatePicker → dist-package/DatePicker}/index.d.ts +0 -0
  21. package/{DatePicker → dist-package/DatePicker}/index.js +0 -0
  22. package/{DatePicker → dist-package/DatePicker}/index.js.map +0 -0
  23. package/{DatePicker → dist-package/DatePicker}/styles.d.ts +0 -0
  24. package/{DatePicker → dist-package/DatePicker}/styles.js +0 -0
  25. package/{DatePicker → dist-package/DatePicker}/styles.js.map +0 -0
  26. package/{DatePicker → dist-package/DatePicker}/types.d.ts +0 -0
  27. package/{DatePicker → dist-package/DatePicker}/types.js +0 -0
  28. package/{DatePicker → dist-package/DatePicker}/types.js.map +0 -0
  29. package/{DatePicker → dist-package/DatePicker}/utils.d.ts +0 -0
  30. package/{DatePicker → dist-package/DatePicker}/utils.js +0 -0
  31. package/{DatePicker → dist-package/DatePicker}/utils.js.map +0 -0
  32. package/{Drawer → dist-package/Drawer}/Drawer.d.ts +0 -0
  33. package/{Drawer → dist-package/Drawer}/Drawer.js +0 -0
  34. package/{Drawer → dist-package/Drawer}/Drawer.js.map +0 -0
  35. package/{Drawer → dist-package/Drawer}/index.d.ts +0 -0
  36. package/{Drawer → dist-package/Drawer}/index.js +0 -0
  37. package/{Drawer → dist-package/Drawer}/index.js.map +0 -0
  38. package/{Drawer → dist-package/Drawer}/styles.d.ts +0 -0
  39. package/{Drawer → dist-package/Drawer}/styles.js +0 -0
  40. package/{Drawer → dist-package/Drawer}/styles.js.map +0 -0
  41. package/{DrawerTitle → dist-package/DrawerTitle}/DrawerTitle.d.ts +0 -0
  42. package/{DrawerTitle → dist-package/DrawerTitle}/DrawerTitle.js +0 -0
  43. package/{DrawerTitle → dist-package/DrawerTitle}/DrawerTitle.js.map +0 -0
  44. package/{DrawerTitle → dist-package/DrawerTitle}/index.d.ts +0 -0
  45. package/{DrawerTitle → dist-package/DrawerTitle}/index.js +0 -0
  46. package/{DrawerTitle → dist-package/DrawerTitle}/index.js.map +0 -0
  47. package/{DrawerTitle → dist-package/DrawerTitle}/styles.d.ts +0 -0
  48. package/{DrawerTitle → dist-package/DrawerTitle}/styles.js +0 -0
  49. package/{DrawerTitle → dist-package/DrawerTitle}/styles.js.map +0 -0
  50. package/{Dropzone → dist-package/Dropzone}/Dropzone.d.ts +0 -0
  51. package/{Dropzone → dist-package/Dropzone}/Dropzone.js +1 -1
  52. package/{Dropzone → dist-package/Dropzone}/Dropzone.js.map +1 -1
  53. package/{Dropzone → dist-package/Dropzone}/index.d.ts +0 -0
  54. package/{Dropzone → dist-package/Dropzone}/index.js +0 -0
  55. package/{Dropzone → dist-package/Dropzone}/index.js.map +0 -0
  56. package/{Dropzone → dist-package/Dropzone}/styles.d.ts +0 -0
  57. package/{Dropzone → dist-package/Dropzone}/styles.js +0 -0
  58. package/{Dropzone → dist-package/Dropzone}/styles.js.map +0 -0
  59. package/{Dropzone → dist-package/Dropzone}/types.d.ts +0 -0
  60. package/{Dropzone → dist-package/Dropzone}/types.js +0 -0
  61. package/{Dropzone → dist-package/Dropzone}/types.js.map +0 -0
  62. package/{EmptyState → dist-package/EmptyState}/EmptyState.d.ts +0 -0
  63. package/{EmptyState → dist-package/EmptyState}/EmptyState.js +0 -0
  64. package/{EmptyState → dist-package/EmptyState}/EmptyState.js.map +0 -0
  65. package/{EmptyState → dist-package/EmptyState}/index.d.ts +0 -0
  66. package/{EmptyState → dist-package/EmptyState}/index.js +0 -0
  67. package/{EmptyState → dist-package/EmptyState}/index.js.map +0 -0
  68. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/EmptyStateCollection.d.ts +0 -0
  69. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/EmptyStateCollection.js +0 -0
  70. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/EmptyStateCollection.js.map +0 -0
  71. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/index.d.ts +0 -0
  72. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/index.js +0 -0
  73. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/index.js.map +0 -0
  74. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/styles.d.ts +0 -0
  75. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/styles.js +0 -0
  76. package/{EmptyStateCollection → dist-package/EmptyStateCollection}/styles.js.map +0 -0
  77. package/{EmptyStatePage → dist-package/EmptyStatePage}/EmptyStatePage.d.ts +0 -0
  78. package/{EmptyStatePage → dist-package/EmptyStatePage}/EmptyStatePage.js +0 -0
  79. package/{EmptyStatePage → dist-package/EmptyStatePage}/EmptyStatePage.js.map +0 -0
  80. package/{EmptyStatePage → dist-package/EmptyStatePage}/index.d.ts +0 -0
  81. package/{EmptyStatePage → dist-package/EmptyStatePage}/index.js +0 -0
  82. package/{EmptyStatePage → dist-package/EmptyStatePage}/index.js.map +0 -0
  83. package/{EmptyStatePage → dist-package/EmptyStatePage}/styles.d.ts +0 -0
  84. package/{EmptyStatePage → dist-package/EmptyStatePage}/styles.js +0 -0
  85. package/{EmptyStatePage → dist-package/EmptyStatePage}/styles.js.map +0 -0
  86. package/{Note → dist-package/Note}/Note.d.ts +0 -0
  87. package/{Note → dist-package/Note}/Note.js +0 -0
  88. package/{Note → dist-package/Note}/Note.js.map +0 -0
  89. package/{Note → dist-package/Note}/index.d.ts +0 -0
  90. package/{Note → dist-package/Note}/index.js +0 -0
  91. package/{Note → dist-package/Note}/index.js.map +0 -0
  92. package/{Note → dist-package/Note}/styles.d.ts +0 -0
  93. package/{Note → dist-package/Note}/styles.js +0 -0
  94. package/{Note → dist-package/Note}/styles.js.map +0 -0
  95. package/{NoteContent → dist-package/NoteContent}/NoteContent.d.ts +0 -0
  96. package/{NoteContent → dist-package/NoteContent}/NoteContent.js +0 -0
  97. package/{NoteContent → dist-package/NoteContent}/NoteContent.js.map +0 -0
  98. package/{NoteContent → dist-package/NoteContent}/index.d.ts +0 -0
  99. package/{NoteContent → dist-package/NoteContent}/index.js +0 -0
  100. package/{NoteContent → dist-package/NoteContent}/index.js.map +0 -0
  101. package/{NoteSubtitle → dist-package/NoteSubtitle}/NoteSubtitle.d.ts +0 -0
  102. package/{NoteSubtitle → dist-package/NoteSubtitle}/NoteSubtitle.js +0 -0
  103. package/{NoteSubtitle → dist-package/NoteSubtitle}/NoteSubtitle.js.map +0 -0
  104. package/{NoteSubtitle → dist-package/NoteSubtitle}/index.d.ts +0 -0
  105. package/{NoteSubtitle → dist-package/NoteSubtitle}/index.js +0 -0
  106. package/{NoteSubtitle → dist-package/NoteSubtitle}/index.js.map +0 -0
  107. package/{NoteTitle → dist-package/NoteTitle}/NoteTitle.d.ts +0 -0
  108. package/{NoteTitle → dist-package/NoteTitle}/NoteTitle.js +0 -0
  109. package/{NoteTitle → dist-package/NoteTitle}/NoteTitle.js.map +0 -0
  110. package/{NoteTitle → dist-package/NoteTitle}/index.d.ts +0 -0
  111. package/{NoteTitle → dist-package/NoteTitle}/index.js +0 -0
  112. package/{NoteTitle → dist-package/NoteTitle}/index.js.map +0 -0
  113. package/{NoteTitle → dist-package/NoteTitle}/styles.d.ts +0 -0
  114. package/{NoteTitle → dist-package/NoteTitle}/styles.js +0 -0
  115. package/{NoteTitle → dist-package/NoteTitle}/styles.js.map +0 -0
  116. package/{OverviewBlock → dist-package/OverviewBlock}/OverviewBlock.d.ts +0 -0
  117. package/{OverviewBlock → dist-package/OverviewBlock}/OverviewBlock.js +0 -0
  118. package/{OverviewBlock → dist-package/OverviewBlock}/OverviewBlock.js.map +0 -0
  119. package/{OverviewBlock → dist-package/OverviewBlock}/index.d.ts +0 -0
  120. package/{OverviewBlock → dist-package/OverviewBlock}/index.js +0 -0
  121. package/{OverviewBlock → dist-package/OverviewBlock}/index.js.map +0 -0
  122. package/{OverviewBlock → dist-package/OverviewBlock}/styles.d.ts +0 -0
  123. package/{OverviewBlock → dist-package/OverviewBlock}/styles.js +0 -0
  124. package/{OverviewBlock → dist-package/OverviewBlock}/styles.js.map +0 -0
  125. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/OverviewBlockGroup.d.ts +0 -0
  126. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/OverviewBlockGroup.js +0 -0
  127. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/OverviewBlockGroup.js.map +0 -0
  128. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/OverviewBlockGroupContext.d.ts +0 -0
  129. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/OverviewBlockGroupContext.js +0 -0
  130. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/OverviewBlockGroupContext.js.map +0 -0
  131. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/index.d.ts +0 -0
  132. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/index.js +0 -0
  133. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/index.js.map +0 -0
  134. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/settings.d.ts +0 -0
  135. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/settings.js +0 -0
  136. package/{OverviewBlockGroup → dist-package/OverviewBlockGroup}/settings.js.map +0 -0
  137. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/OverviewBlockRow.d.ts +0 -0
  138. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/OverviewBlockRow.js +0 -0
  139. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/OverviewBlockRow.js.map +0 -0
  140. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/index.d.ts +0 -0
  141. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/index.js +0 -0
  142. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/index.js.map +0 -0
  143. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/styles.d.ts +0 -0
  144. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/styles.js +0 -0
  145. package/{OverviewBlockRow → dist-package/OverviewBlockRow}/styles.js.map +0 -0
  146. package/dist-package/README.md +26 -0
  147. package/{Section → dist-package/Section}/Section.d.ts +0 -0
  148. package/{Section → dist-package/Section}/Section.js +0 -0
  149. package/{Section → dist-package/Section}/Section.js.map +0 -0
  150. package/{Section → dist-package/Section}/index.d.ts +0 -0
  151. package/{Section → dist-package/Section}/index.js +0 -0
  152. package/{Section → dist-package/Section}/index.js.map +0 -0
  153. package/{Section → dist-package/Section}/styles.d.ts +0 -0
  154. package/{Section → dist-package/Section}/styles.js +0 -0
  155. package/{Section → dist-package/Section}/styles.js.map +0 -0
  156. package/{Timeline → dist-package/Timeline}/Timeline.d.ts +0 -0
  157. package/{Timeline → dist-package/Timeline}/Timeline.js +0 -0
  158. package/{Timeline → dist-package/Timeline}/Timeline.js.map +0 -0
  159. package/{Timeline → dist-package/Timeline}/index.d.ts +0 -0
  160. package/{Timeline → dist-package/Timeline}/index.js +0 -0
  161. package/{Timeline → dist-package/Timeline}/index.js.map +0 -0
  162. package/{TimelineRow → dist-package/TimelineRow}/TimelineRow.d.ts +0 -0
  163. package/{TimelineRow → dist-package/TimelineRow}/TimelineRow.js +0 -0
  164. package/{TimelineRow → dist-package/TimelineRow}/TimelineRow.js.map +0 -0
  165. package/{TimelineRow → dist-package/TimelineRow}/index.d.ts +0 -0
  166. package/{TimelineRow → dist-package/TimelineRow}/index.js +0 -0
  167. package/{TimelineRow → dist-package/TimelineRow}/index.js.map +0 -0
  168. package/{TimelineRow → dist-package/TimelineRow}/styles.d.ts +0 -0
  169. package/{TimelineRow → dist-package/TimelineRow}/styles.js +0 -0
  170. package/{TimelineRow → dist-package/TimelineRow}/styles.js.map +0 -0
  171. package/{TypographyOverflow → dist-package/TypographyOverflow}/TypographyOverflow.d.ts +0 -0
  172. package/{TypographyOverflow → dist-package/TypographyOverflow}/TypographyOverflow.js +0 -0
  173. package/{TypographyOverflow → dist-package/TypographyOverflow}/TypographyOverflow.js.map +0 -0
  174. package/{TypographyOverflow → dist-package/TypographyOverflow}/index.d.ts +0 -0
  175. package/{TypographyOverflow → dist-package/TypographyOverflow}/index.js +0 -0
  176. package/{TypographyOverflow → dist-package/TypographyOverflow}/index.js.map +0 -0
  177. package/{TypographyOverflow → dist-package/TypographyOverflow}/styles.d.ts +0 -0
  178. package/{TypographyOverflow → dist-package/TypographyOverflow}/styles.js +0 -0
  179. package/{TypographyOverflow → dist-package/TypographyOverflow}/styles.js.map +0 -0
  180. package/{index.d.ts → dist-package/index.d.ts} +0 -0
  181. package/{index.js → dist-package/index.js} +0 -0
  182. package/{index.js.map → dist-package/index.js.map} +0 -0
  183. package/dist-package/package.json +53 -0
  184. package/package.json +3 -4
  185. package/src/Calendar/Calendar.tsx +215 -0
  186. package/src/Calendar/__snapshots__/test.tsx.snap +447 -0
  187. package/src/Calendar/index.ts +2 -0
  188. package/src/Calendar/styles.ts +104 -0
  189. package/src/Calendar/test.tsx +20 -0
  190. package/src/Calendar/types.ts +42 -0
  191. package/src/DatePicker/DatePicker.tsx +366 -0
  192. package/src/DatePicker/__image_snapshots__/datepicker-full-width-snap.png +0 -0
  193. package/src/DatePicker/__image_snapshots__/datepicker-with-custom-day-rendering-snap.png +0 -0
  194. package/src/DatePicker/__snapshots__/test.tsx.snap +51 -0
  195. package/src/DatePicker/constants.ts +2 -0
  196. package/src/DatePicker/index.ts +5 -0
  197. package/src/DatePicker/story/AllowCustomValue.example.tsx +33 -0
  198. package/src/DatePicker/story/Autocomplete.example.tsx +47 -0
  199. package/src/DatePicker/story/Default.example.tsx +19 -0
  200. package/src/DatePicker/story/Error.example.tsx +26 -0
  201. package/src/DatePicker/story/Range.example.tsx +22 -0
  202. package/src/DatePicker/story/WithCustomDayRendering.example.tsx +47 -0
  203. package/src/DatePicker/story/WithInitialValue.example.tsx +19 -0
  204. package/src/DatePicker/story/WithInputProps.example.tsx +24 -0
  205. package/src/DatePicker/story/WithNoHideOnSelect.example.tsx +20 -0
  206. package/src/DatePicker/story/WithOnBlurHandler.example.tsx +22 -0
  207. package/src/DatePicker/story/WithSelectionLimits.example.tsx +32 -0
  208. package/src/DatePicker/story/WithTimezone.example.tsx +25 -0
  209. package/src/DatePicker/story/index.jsx +50 -0
  210. package/src/DatePicker/styles.ts +8 -0
  211. package/src/DatePicker/test.tsx +370 -0
  212. package/src/DatePicker/types.ts +13 -0
  213. package/src/DatePicker/utils.ts +123 -0
  214. package/src/Drawer/Drawer.tsx +105 -0
  215. package/src/Drawer/__image_snapshots__/drawer-custom-title-effect-1-snap.png +0 -0
  216. package/src/Drawer/__image_snapshots__/drawer-custom-title-snap.png +0 -0
  217. package/src/Drawer/__image_snapshots__/drawer-default-effect-1-snap.png +0 -0
  218. package/src/Drawer/__image_snapshots__/drawer-default-snap.png +0 -0
  219. package/src/Drawer/__image_snapshots__/drawer-width-effect-1-snap.png +0 -0
  220. package/src/Drawer/__image_snapshots__/drawer-width-effect-2-snap.png +0 -0
  221. package/src/Drawer/__image_snapshots__/drawer-width-effect-3-snap.png +0 -0
  222. package/src/Drawer/__image_snapshots__/drawer-width-effect-4-snap.png +0 -0
  223. package/src/Drawer/__image_snapshots__/drawer-width-effect-5-snap.png +0 -0
  224. package/src/Drawer/__image_snapshots__/drawer-width-snap.png +0 -0
  225. package/src/Drawer/__image_snapshots__/drawer-without-title-effect-1-snap.png +0 -0
  226. package/src/Drawer/__image_snapshots__/drawer-without-title-snap.png +0 -0
  227. package/src/Drawer/index.ts +6 -0
  228. package/src/Drawer/story/CustomTitle.example.tsx +32 -0
  229. package/src/Drawer/story/Default.example.tsx +29 -0
  230. package/src/Drawer/story/DrawerAndNotification.example.tsx +34 -0
  231. package/src/Drawer/story/Widths.example.tsx +46 -0
  232. package/src/Drawer/story/WithoutTitle.example.tsx +22 -0
  233. package/src/Drawer/story/index.jsx +80 -0
  234. package/src/Drawer/styles.ts +42 -0
  235. package/src/DrawerTitle/DrawerTitle.tsx +35 -0
  236. package/src/DrawerTitle/index.ts +1 -0
  237. package/src/DrawerTitle/styles.ts +12 -0
  238. package/src/Dropzone/Dropzone.tsx +146 -0
  239. package/src/Dropzone/__snapshots__/test.tsx.snap +40 -0
  240. package/src/Dropzone/index.ts +7 -0
  241. package/src/Dropzone/story/Default.example.tsx +8 -0
  242. package/src/Dropzone/story/Disabled.example.tsx +25 -0
  243. package/src/Dropzone/story/Error.example.tsx +16 -0
  244. package/src/Dropzone/story/Multiple.example.tsx +30 -0
  245. package/src/Dropzone/story/Uploader.example.tsx +116 -0
  246. package/src/Dropzone/story/Uploading.example.tsx +16 -0
  247. package/src/Dropzone/story/index.jsx +85 -0
  248. package/src/Dropzone/styles.ts +43 -0
  249. package/src/Dropzone/test.tsx +33 -0
  250. package/src/Dropzone/types.ts +56 -0
  251. package/src/EmptyState/EmptyState.tsx +7 -0
  252. package/src/EmptyState/index.tsx +1 -0
  253. package/src/EmptyState/story/index.jsx +13 -0
  254. package/src/EmptyStateCollection/EmptyStateCollection.tsx +56 -0
  255. package/src/EmptyStateCollection/__image_snapshots__/emptystate-collection-emptystatecollection-snap.png +0 -0
  256. package/src/EmptyStateCollection/index.tsx +1 -0
  257. package/src/EmptyStateCollection/story/Default.example.tsx +11 -0
  258. package/src/EmptyStateCollection/story/index.jsx +20 -0
  259. package/src/EmptyStateCollection/styles.ts +10 -0
  260. package/src/EmptyStatePage/EmptyStatePage.tsx +65 -0
  261. package/src/EmptyStatePage/__image_snapshots__/emptystate-page-emptystatepage-snap.png +0 -0
  262. package/src/EmptyStatePage/index.tsx +1 -0
  263. package/src/EmptyStatePage/story/Default.example.tsx +21 -0
  264. package/src/EmptyStatePage/story/index.jsx +21 -0
  265. package/src/EmptyStatePage/styles.ts +9 -0
  266. package/src/Note/Note.tsx +36 -0
  267. package/src/Note/__snapshots__/test.tsx.snap +37 -0
  268. package/src/Note/index.ts +6 -0
  269. package/src/Note/story/Default.example.tsx +14 -0
  270. package/src/Note/story/index.jsx +23 -0
  271. package/src/Note/styles.ts +27 -0
  272. package/src/Note/test.tsx +22 -0
  273. package/src/NoteContent/NoteContent.tsx +23 -0
  274. package/src/NoteContent/index.ts +1 -0
  275. package/src/NoteContent/story/index.jsx +12 -0
  276. package/src/NoteSubtitle/NoteSubtitle.tsx +25 -0
  277. package/src/NoteSubtitle/index.ts +1 -0
  278. package/src/NoteSubtitle/story/index.jsx +12 -0
  279. package/src/NoteTitle/NoteTitle.tsx +34 -0
  280. package/src/NoteTitle/index.ts +1 -0
  281. package/src/NoteTitle/story/index.jsx +12 -0
  282. package/src/NoteTitle/styles.ts +8 -0
  283. package/src/OverviewBlock/OverviewBlock.tsx +125 -0
  284. package/src/OverviewBlock/__image_snapshots__/overviewblock-default-snap.png +0 -0
  285. package/src/OverviewBlock/__image_snapshots__/overviewblock-multi-line-snap.png +0 -0
  286. package/src/OverviewBlock/__image_snapshots__/overviewblock-number-snap.png +0 -0
  287. package/src/OverviewBlock/__image_snapshots__/overviewblock-routing-snap.png +0 -0
  288. package/src/OverviewBlock/__image_snapshots__/overviewblock-text-snap.png +0 -0
  289. package/src/OverviewBlock/index.ts +6 -0
  290. package/src/OverviewBlock/story/Default.example.tsx +35 -0
  291. package/src/OverviewBlock/story/Multiline.example.tsx +51 -0
  292. package/src/OverviewBlock/story/Number.example.tsx +20 -0
  293. package/src/OverviewBlock/story/Routing.example.tsx +40 -0
  294. package/src/OverviewBlock/story/Text.example.tsx +15 -0
  295. package/src/OverviewBlock/story/index.jsx +100 -0
  296. package/src/OverviewBlock/styles.ts +44 -0
  297. package/src/OverviewBlock/test.tsx +111 -0
  298. package/src/OverviewBlockGroup/OverviewBlockGroup.tsx +56 -0
  299. package/src/OverviewBlockGroup/OverviewBlockGroupContext.tsx +21 -0
  300. package/src/OverviewBlockGroup/__image_snapshots__/visual-variants-of-the-groups-block-width-snap.png +0 -0
  301. package/src/OverviewBlockGroup/__image_snapshots__/visual-variants-of-the-groups-center-aligned-snap.png +0 -0
  302. package/src/OverviewBlockGroup/index.ts +1 -0
  303. package/src/OverviewBlockGroup/settings.ts +2 -0
  304. package/src/OverviewBlockGroup/story/BlockWidth.example.tsx +38 -0
  305. package/src/OverviewBlockGroup/story/CenterAligned.example.tsx +17 -0
  306. package/src/OverviewBlockGroup/story/index.jsx +25 -0
  307. package/src/OverviewBlockGroup/test.tsx +17 -0
  308. package/src/OverviewBlockRow/OverviewBlockRow.tsx +22 -0
  309. package/src/OverviewBlockRow/index.ts +1 -0
  310. package/src/OverviewBlockRow/story/index.jsx +11 -0
  311. package/src/OverviewBlockRow/styles.ts +27 -0
  312. package/src/Section/Section.tsx +163 -0
  313. package/src/Section/__snapshots__/test.tsx.snap +186 -0
  314. package/src/Section/index.ts +6 -0
  315. package/src/Section/story/Actions.example.tsx +85 -0
  316. package/src/Section/story/Collapsible.example.tsx +113 -0
  317. package/src/Section/story/Default.example.tsx +77 -0
  318. package/src/Section/story/TitleSize.example.tsx +34 -0
  319. package/src/Section/story/Variant.example.tsx +108 -0
  320. package/src/Section/story/index.jsx +35 -0
  321. package/src/Section/styles.ts +65 -0
  322. package/src/Section/test.tsx +115 -0
  323. package/src/Timeline/Timeline.tsx +25 -0
  324. package/src/Timeline/__snapshots__/test.tsx.snap +332 -0
  325. package/src/Timeline/index.ts +6 -0
  326. package/src/Timeline/story/Dates.example.tsx +52 -0
  327. package/src/Timeline/story/Default.example.tsx +34 -0
  328. package/src/Timeline/story/TrimLastConnector.example.tsx +29 -0
  329. package/src/Timeline/story/index.jsx +27 -0
  330. package/src/Timeline/test.tsx +101 -0
  331. package/src/TimelineRow/TimelineRow.tsx +83 -0
  332. package/src/TimelineRow/index.ts +6 -0
  333. package/src/TimelineRow/story/index.jsx +11 -0
  334. package/src/TimelineRow/styles.ts +47 -0
  335. package/src/TypographyOverflow/TypographyOverflow.tsx +153 -0
  336. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-checkbox-label-effect-1-snap.png +0 -0
  337. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-checkbox-label-snap.png +0 -0
  338. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-custom-tooltip-content-effect-1-snap.png +0 -0
  339. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-custom-tooltip-content-snap.png +0 -0
  340. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-default-effect-1-snap.png +0 -0
  341. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-default-effect-2-snap.png +0 -0
  342. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-default-snap.png +0 -0
  343. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-delay-effect-1-snap.png +0 -0
  344. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-delay-effect-2-snap.png +0 -0
  345. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-delay-snap.png +0 -0
  346. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-light-tooltip-background-effect-1-snap.png +0 -0
  347. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-light-tooltip-background-effect-2-snap.png +0 -0
  348. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-light-tooltip-background-snap.png +0 -0
  349. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-multiline-effect-1-snap.png +0 -0
  350. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-multiline-effect-2-snap.png +0 -0
  351. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-multiline-effect-3-snap.png +0 -0
  352. package/src/TypographyOverflow/__image_snapshots__/typographyoverflow-multiline-snap.png +0 -0
  353. package/src/TypographyOverflow/index.ts +6 -0
  354. package/src/TypographyOverflow/story/CheckboxLabel.example.tsx +21 -0
  355. package/src/TypographyOverflow/story/CustomTooltip.example.tsx +22 -0
  356. package/src/TypographyOverflow/story/Default.example.tsx +32 -0
  357. package/src/TypographyOverflow/story/Delay.example.tsx +29 -0
  358. package/src/TypographyOverflow/story/GridWithControls.example.tsx +64 -0
  359. package/src/TypographyOverflow/story/Multiline.example.tsx +59 -0
  360. package/src/TypographyOverflow/story/TooltipVariants.example.tsx +23 -0
  361. package/src/TypographyOverflow/story/index.jsx +83 -0
  362. package/src/TypographyOverflow/styles.ts +29 -0
  363. package/src/TypographyOverflow/test.tsx +60 -0
  364. package/src/index.ts +35 -0
  365. package/src/story/index.jsx +10 -0
  366. package/tsconfig.build.json +7 -0
@@ -0,0 +1,6 @@
1
+ import { OmitInternalProps } from '@toptal/picasso-shared'
2
+
3
+ import { Props } from './OverviewBlock'
4
+
5
+ export { default } from './OverviewBlock'
6
+ export type OverviewBlockProps = OmitInternalProps<Props>
@@ -0,0 +1,35 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+
4
+ const DefaultExample = () => {
5
+ const handleClick = (title: string) => {
6
+ window.alert(`${title} clicked`)
7
+ }
8
+
9
+ return (
10
+ <OverviewBlock.Group>
11
+ <OverviewBlock
12
+ value='4249'
13
+ label='ACH'
14
+ onClick={() => handleClick('ACH')}
15
+ />
16
+ <OverviewBlock
17
+ value='19302'
18
+ label='Credit Card'
19
+ onClick={() => handleClick('Credit Card')}
20
+ />
21
+ <OverviewBlock
22
+ value='979'
23
+ label='PayPal'
24
+ onClick={() => handleClick('PayPal')}
25
+ />
26
+ <OverviewBlock
27
+ value='803'
28
+ label='Wire'
29
+ onClick={() => handleClick('Wire')}
30
+ />
31
+ </OverviewBlock.Group>
32
+ )
33
+ }
34
+
35
+ export default DefaultExample
@@ -0,0 +1,51 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+
4
+ const MultilineExample = () => (
5
+ <section>
6
+ <OverviewBlock.Group>
7
+ <OverviewBlock.Row>
8
+ <OverviewBlock
9
+ value='$26,125,123.70'
10
+ label='Outstanding'
11
+ variant='label-yellow'
12
+ />
13
+ <OverviewBlock
14
+ value='$5,837,806.68'
15
+ label='Overdue'
16
+ variant='label-red'
17
+ />
18
+ <OverviewBlock
19
+ value='$1,232,107.99'
20
+ label='Disputed'
21
+ variant='label-red'
22
+ />
23
+ <OverviewBlock
24
+ value='$1,722,076.43'
25
+ label='Incollections'
26
+ variant='label-red'
27
+ />
28
+ </OverviewBlock.Row>
29
+ <OverviewBlock.Row>
30
+ <OverviewBlock
31
+ value='$935,590.65'
32
+ label='Written off'
33
+ variant='label-red'
34
+ />
35
+ <OverviewBlock value='$5,758,716.46' label='Pending receipt' />
36
+ <OverviewBlock
37
+ value='$44,244,163.83'
38
+ label='Credited'
39
+ variant='label-green'
40
+ />
41
+ <OverviewBlock
42
+ value='$585,895,606.35'
43
+ label='Paid'
44
+ variant='label-green'
45
+ />
46
+ </OverviewBlock.Row>
47
+ </OverviewBlock.Group>
48
+ </section>
49
+ )
50
+
51
+ export default MultilineExample
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+
4
+ const NumberExample = () => {
5
+ return (
6
+ <OverviewBlock.Group>
7
+ <OverviewBlock value='63' label='Pending tasks' variant='label-red' />
8
+ <OverviewBlock value='0' label="Today's tasks" variant='label-red' />
9
+ <OverviewBlock
10
+ value='0'
11
+ label="This week's tasks"
12
+ variant='label-green'
13
+ />
14
+ <OverviewBlock value='63' label='Total tasks' />
15
+ <OverviewBlock value='63' label='Playbook tasks' variant='label-yellow' />
16
+ </OverviewBlock.Group>
17
+ )
18
+ }
19
+
20
+ export default NumberExample
@@ -0,0 +1,40 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+ import { MemoryRouter as Router, Link, Route, Switch } from 'react-router-dom'
4
+
5
+ const Index = () => <h2>Home</h2>
6
+ const About = () => <h2>About</h2>
7
+ const Users = () => <h2>Users</h2>
8
+
9
+ const RoutingExample = () => (
10
+ <Router>
11
+ <div>
12
+ <OverviewBlock.Group>
13
+ <OverviewBlock value='10' label='Home' as={Link} to='/' />
14
+ <OverviewBlock
15
+ value='11'
16
+ label='About'
17
+ variant='label-green'
18
+ as={Link}
19
+ to='/about'
20
+ />
21
+ <OverviewBlock
22
+ value='15'
23
+ label='Users'
24
+ variant='label-green'
25
+ as={Link}
26
+ to='/users'
27
+ />
28
+ </OverviewBlock.Group>
29
+
30
+ <Switch>
31
+ <Route path='/' exact component={Index} />
32
+ <Route path='/about' component={About} />
33
+ <Route path='/users' component={Users} />
34
+ <Route component={Index} />
35
+ </Switch>
36
+ </div>
37
+ </Router>
38
+ )
39
+
40
+ export default RoutingExample
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+
4
+ const TextExample = () => {
5
+ return (
6
+ <OverviewBlock.Group>
7
+ <OverviewBlock value='Active' label='Status' variant='value-green' />
8
+ <OverviewBlock value='Developers' label='Interested In' />
9
+ <OverviewBlock value='Ambiguous' label='Priority / Intent' />
10
+ <OverviewBlock value='1968' label='Days in Funnel' />
11
+ </OverviewBlock.Group>
12
+ )
13
+ }
14
+
15
+ export default TextExample
@@ -0,0 +1,100 @@
1
+ import overviewBlockGroupStory from '../../OverviewBlockGroup/story'
2
+ import overviewBlockRowStory from '../../OverviewBlockRow/story'
3
+ import { OverviewBlock } from '../OverviewBlock'
4
+ import PicassoBook from '~/.storybook/components/PicassoBook'
5
+
6
+ const page = PicassoBook.section('Picasso Lab').createPage(
7
+ 'OverviewBlock',
8
+ 'Allows displaying counters.'
9
+ )
10
+
11
+ page
12
+ .createTabChapter('Props')
13
+ .addComponentDocs({
14
+ component: OverviewBlock,
15
+ name: 'OverviewBlock',
16
+ // react-docgen-typescript doesn't work with generics, so we have to generate this
17
+ // documentation manually
18
+ additionalDocs: {
19
+ children: {
20
+ name: 'children',
21
+ type: 'ReactNode',
22
+ description: 'Content of the component'
23
+ },
24
+ value: {
25
+ name: 'value',
26
+ type: 'string',
27
+ description: 'Counter value'
28
+ },
29
+ title: {
30
+ name: 'title',
31
+ type: 'string',
32
+ description: 'Counter title'
33
+ },
34
+ color: {
35
+ name: 'variant',
36
+ type: {
37
+ name: 'enum',
38
+ enums: [
39
+ "'value-red'",
40
+ "'value-green'",
41
+ "'value-blue'",
42
+ "'value-yellow'",
43
+ "'label-red'",
44
+ "'label-green'",
45
+ "'label-blue'",
46
+ "'label-yellow'"
47
+ ]
48
+ },
49
+ description: 'The color variant'
50
+ },
51
+ align: {
52
+ name: 'align',
53
+ type: {
54
+ name: 'enum',
55
+ enums: ["'default'", "'center'"]
56
+ },
57
+ defaultValue: 'default',
58
+ description:
59
+ 'Value and label alignment. By default content is aligned to the left.'
60
+ },
61
+ width: {
62
+ name: 'width',
63
+ type: {
64
+ name: 'enum',
65
+ enums: ["'narrow'", "'regular'", "'wide'"]
66
+ },
67
+ defaultValue: 'regular',
68
+ description: 'The width variant'
69
+ },
70
+ as: {
71
+ name: 'as',
72
+ type: {
73
+ name: 'enum'
74
+ },
75
+ defaultValue: 'button',
76
+ description:
77
+ 'The component used for the root node.\nEither a string to use a DOM element or a component.'
78
+ },
79
+ onClick: {
80
+ name: 'onClick',
81
+ type: {
82
+ name: 'function',
83
+ description: '(event: MouseEvent) => void'
84
+ },
85
+ description: 'Callback invoked when component is clicked'
86
+ }
87
+ }
88
+ })
89
+ .addComponentDocs(overviewBlockGroupStory.componentDocs)
90
+ .addComponentDocs(overviewBlockRowStory.componentDocs)
91
+
92
+ page
93
+ .createChapter()
94
+ .addExample('OverviewBlock/story/Default.example.tsx', 'Default')
95
+ .addExample('OverviewBlock/story/Text.example.tsx', 'Text')
96
+ .addExample('OverviewBlock/story/Number.example.tsx', 'Number')
97
+ .addExample('OverviewBlock/story/Multiline.example.tsx', 'Multi-line')
98
+ .addExample('OverviewBlock/story/Routing.example.tsx', 'Routing')
99
+
100
+ page.connect(overviewBlockGroupStory.chapter)
@@ -0,0 +1,44 @@
1
+ import { createStyles, Theme } from '@material-ui/core/styles'
2
+ import { rem } from '@toptal/picasso-shared'
3
+
4
+ export default ({ palette, sizes }: Theme) =>
5
+ createStyles({
6
+ root: {
7
+ display: 'flex',
8
+ flexDirection: 'column',
9
+ backgroundColor: palette.common.white,
10
+ margin: 0,
11
+ minWidth: rem('150px'),
12
+ border: 'none',
13
+ textDecoration: 'none',
14
+ '&:not(:first-child)': {
15
+ borderLeft: `${sizes.borderWidth} solid ${palette.grey.light2}`
16
+ }
17
+ },
18
+ clickable: {
19
+ cursor: 'pointer',
20
+ outline: 'none',
21
+ '&:hover': {
22
+ backgroundColor: palette.blue.lighter
23
+ }
24
+ },
25
+ disableOutline: {
26
+ outline: 'none'
27
+ },
28
+
29
+ defaultAlign: {
30
+ alignItems: 'flex-start'
31
+ },
32
+ centerAlign: {
33
+ alignItems: 'center'
34
+ },
35
+ narrowWidth: {
36
+ padding: '0.75rem 1rem'
37
+ },
38
+ regularWidth: {
39
+ padding: '0.75rem 1.5rem'
40
+ },
41
+ wideWidth: {
42
+ padding: '0.75rem 2rem'
43
+ }
44
+ })
@@ -0,0 +1,111 @@
1
+ import React, { ComponentProps } from 'react'
2
+ import { render, PicassoConfig } from '@toptal/picasso/test-utils'
3
+ import * as titleCaseModule from 'ap-style-title-case'
4
+ import { Link, MemoryRouter as Router } from 'react-router-dom'
5
+
6
+ import OverviewBlock from './OverviewBlock'
7
+
8
+ jest.mock('ap-style-title-case')
9
+
10
+ const renderOverviewBlock = (
11
+ props: ComponentProps<typeof OverviewBlock>,
12
+ picassoConfig?: PicassoConfig
13
+ ) => {
14
+ return render(
15
+ <Router>
16
+ <OverviewBlock {...props} />
17
+ </Router>,
18
+ undefined,
19
+ picassoConfig
20
+ )
21
+ }
22
+
23
+ let spiedOnTitleCase: jest.SpyInstance
24
+
25
+ describe('OverviewBlock', () => {
26
+ beforeEach(() => {
27
+ spiedOnTitleCase = jest.spyOn(titleCaseModule, 'default')
28
+ })
29
+
30
+ afterEach(() => {
31
+ spiedOnTitleCase.mockReset()
32
+ })
33
+
34
+ it('should transform text to title case when Picasso titleCase property is true', () => {
35
+ const LABEL_TEXT = 'abc dj4'
36
+
37
+ renderOverviewBlock(
38
+ { value: 'abc co5', label: LABEL_TEXT },
39
+ { titleCase: true }
40
+ )
41
+
42
+ expect(spiedOnTitleCase).toHaveBeenCalledWith(LABEL_TEXT)
43
+ })
44
+
45
+ it('should not transform text to title case when Picasso titleCase property is true but the component property overrides it', () => {
46
+ renderOverviewBlock(
47
+ { value: 'abc dk9', label: 'abc ps0', titleCase: false },
48
+ { titleCase: true }
49
+ )
50
+
51
+ expect(spiedOnTitleCase).toHaveBeenCalledTimes(0)
52
+ })
53
+
54
+ describe('when OnClick function is defined', () => {
55
+ describe('when `as` prop is defined', () => {
56
+ it('render the element as `Link`', () => {
57
+ const { getByTestId } = renderOverviewBlock({
58
+ value: 'abc dk9',
59
+ label: 'abc ps0',
60
+ as: Link,
61
+ onClick: jest.fn(),
62
+ to: '/',
63
+ 'data-testid': 'OverviewBlock'
64
+ })
65
+ const block = getByTestId('OverviewBlock')
66
+
67
+ // By the Link component to -> href
68
+ expect(block).toHaveAttribute('href', '/')
69
+ expect(block.nodeName).toBe('A')
70
+ })
71
+ })
72
+
73
+ describe('when `as` prop is undefined', () => {
74
+ it('render the element as `button`', () => {
75
+ const { getByTestId } = renderOverviewBlock({
76
+ value: 'abc dk9',
77
+ label: 'abc ps0',
78
+ onClick: jest.fn(),
79
+ 'data-testid': 'OverviewBlock'
80
+ })
81
+
82
+ expect(getByTestId('OverviewBlock').nodeName).toBe('BUTTON')
83
+ })
84
+ })
85
+ })
86
+
87
+ describe('when OnClick function is undefined', () => {
88
+ it('renders the element as `div`', () => {
89
+ const { getByTestId } = renderOverviewBlock({
90
+ value: 'abc dk9',
91
+ label: 'abc ps0',
92
+ 'data-testid': 'OverviewBlock'
93
+ })
94
+
95
+ expect(getByTestId('OverviewBlock').nodeName).toBe('DIV')
96
+ })
97
+
98
+ it('renders the element as `Link`', () => {
99
+ const { getByTestId } = renderOverviewBlock({
100
+ as: Link,
101
+ to: '/',
102
+ 'data-testid': 'OverviewBlock'
103
+ })
104
+ const block = getByTestId('OverviewBlock')
105
+
106
+ // By the Link component to -> href
107
+ expect(block).toHaveAttribute('href', '/')
108
+ expect(block.nodeName).toBe('A')
109
+ })
110
+ })
111
+ })
@@ -0,0 +1,56 @@
1
+ import React, {
2
+ FunctionComponent,
3
+ HTMLAttributes,
4
+ ReactNode,
5
+ ReactComponentElement
6
+ } from 'react'
7
+
8
+ import { Alignment, BlockWidth } from './settings'
9
+ import { OverviewBlockGroupContext } from './OverviewBlockGroupContext'
10
+ import OverviewBlockRow from '../OverviewBlockRow'
11
+
12
+ type Props = HTMLAttributes<HTMLDivElement> & {
13
+ /** Value and label alignment for blocks. By default content is aligned to the left. */
14
+ align?: Alignment
15
+ /** The block width variant */
16
+ blockWidth?: BlockWidth
17
+ }
18
+
19
+ // We need to inject a single row if there is none provided.
20
+ // It allows to skip `OverviewBlock.Row` component for a single-row groups.
21
+ const shouldInjectRow = (children?: ReactNode) => {
22
+ if (!children) {
23
+ return false
24
+ }
25
+
26
+ return !React.Children.toArray(children)
27
+ .filter((el): el is ReactComponentElement<typeof OverviewBlockRow> =>
28
+ React.isValidElement(el)
29
+ )
30
+ .some(el => el.type.displayName === OverviewBlockRow.displayName)
31
+ }
32
+
33
+ const OverviewBlockGroup: FunctionComponent<Props> = props => {
34
+ const { children, align = 'default', blockWidth = 'regular', ...rest } = props
35
+
36
+ return (
37
+ <section {...rest}>
38
+ <OverviewBlockGroupContext.Provider value={{ align, blockWidth }}>
39
+ {shouldInjectRow(children) ? (
40
+ <OverviewBlockRow>{children}</OverviewBlockRow>
41
+ ) : (
42
+ children
43
+ )}
44
+ </OverviewBlockGroupContext.Provider>
45
+ </section>
46
+ )
47
+ }
48
+
49
+ OverviewBlockGroup.displayName = 'OverviewBlockGroup'
50
+
51
+ OverviewBlockGroup.defaultProps = {
52
+ align: 'default',
53
+ blockWidth: 'regular'
54
+ }
55
+
56
+ export default OverviewBlockGroup
@@ -0,0 +1,21 @@
1
+ import { createContext, useContext } from 'react'
2
+
3
+ import { Alignment, BlockWidth } from './settings'
4
+
5
+ interface OverviewBlockGroupSettings {
6
+ align: Alignment
7
+ blockWidth: BlockWidth
8
+ }
9
+
10
+ const defaultSettings = {
11
+ align: 'default' as const,
12
+ blockWidth: 'regular' as const
13
+ }
14
+
15
+ export const OverviewBlockGroupContext = createContext<
16
+ OverviewBlockGroupSettings
17
+ >(defaultSettings)
18
+
19
+ export const useOverviewBlockGroupContext = () => {
20
+ return useContext(OverviewBlockGroupContext)
21
+ }
@@ -0,0 +1 @@
1
+ export { default } from './OverviewBlockGroup'
@@ -0,0 +1,2 @@
1
+ export type Alignment = 'default' | 'center'
2
+ export type BlockWidth = 'narrow' | 'regular' | 'wide'
@@ -0,0 +1,38 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+ import { Container } from '@toptal/picasso'
4
+
5
+ const BlockWidthExample = () => {
6
+ return (
7
+ <Container>
8
+ <Container>
9
+ <OverviewBlock.Group blockWidth='narrow'>
10
+ <OverviewBlock value='Narrow' label='Width' />
11
+ <OverviewBlock value='Narrow' label='Width' />
12
+ <OverviewBlock value='Narrow' label='Width' />
13
+ <OverviewBlock value='Narrow' label='Width' />
14
+ <OverviewBlock value='Narrow' label='Width' />
15
+ </OverviewBlock.Group>
16
+ </Container>
17
+
18
+ <Container top='small'>
19
+ <OverviewBlock.Group blockWidth='regular'>
20
+ <OverviewBlock value='Regular' label='Width' />
21
+ <OverviewBlock value='Regular' label='Width' />
22
+ <OverviewBlock value='Regular' label='Width' />
23
+ <OverviewBlock value='Regular' label='Width' />
24
+ </OverviewBlock.Group>
25
+ </Container>
26
+
27
+ <Container top='small'>
28
+ <OverviewBlock.Group blockWidth='wide'>
29
+ <OverviewBlock value='Wide' label='Width' />
30
+ <OverviewBlock value='Wide' label='Width' />
31
+ <OverviewBlock value='Wide' label='Width' />
32
+ </OverviewBlock.Group>
33
+ </Container>
34
+ </Container>
35
+ )
36
+ }
37
+
38
+ export default BlockWidthExample
@@ -0,0 +1,17 @@
1
+ import React from 'react'
2
+ import { OverviewBlock } from '@toptal/picasso-lab'
3
+
4
+ const CenterAlignedExample = () => {
5
+ return (
6
+ <OverviewBlock.Group align='center'>
7
+ <OverviewBlock value='12345678' label='Label' variant='label-red' />
8
+ <OverviewBlock
9
+ value='$585,895,606.35'
10
+ label='Paid'
11
+ variant='label-green'
12
+ />
13
+ </OverviewBlock.Group>
14
+ )
15
+ }
16
+
17
+ export default CenterAlignedExample
@@ -0,0 +1,25 @@
1
+ import OverviewBlockGroup from '../OverviewBlockGroup'
2
+ import PicassoBook from '~/.storybook/components/PicassoBook'
3
+
4
+ const componentDocs = PicassoBook.createComponentDocs(
5
+ OverviewBlockGroup,
6
+ 'OverviewBlock.Group'
7
+ )
8
+
9
+ const chapter = PicassoBook.connectToPage(page =>
10
+ page
11
+ .createChapter('Visual variants of the groups', '')
12
+ .addExample(
13
+ 'OverviewBlockGroup/story/CenterAligned.example.tsx',
14
+ 'Center Aligned'
15
+ )
16
+ .addExample(
17
+ 'OverviewBlockGroup/story/BlockWidth.example.tsx',
18
+ 'Block Width'
19
+ )
20
+ )
21
+
22
+ export default {
23
+ chapter,
24
+ componentDocs
25
+ }
@@ -0,0 +1,17 @@
1
+ import React from 'react'
2
+ import { render } from '@toptal/picasso/test-utils'
3
+
4
+ import OverviewBlock from '../OverviewBlock'
5
+ import OverviewBlockGroup from './OverviewBlockGroup'
6
+
7
+ describe('OverlayBlockGroup', () => {
8
+ it('allows to render a single block', () => {
9
+ expect(() => {
10
+ render(
11
+ <OverviewBlockGroup>
12
+ <OverviewBlock value='Value' label='Label' />
13
+ </OverviewBlockGroup>
14
+ )
15
+ }).not.toThrow()
16
+ })
17
+ })
@@ -0,0 +1,22 @@
1
+ import React, { FunctionComponent, HTMLAttributes } from 'react'
2
+ import { Theme, makeStyles } from '@material-ui/core/styles'
3
+ import cx from 'classnames'
4
+
5
+ import styles from './styles'
6
+
7
+ type Props = HTMLAttributes<HTMLDivElement>
8
+
9
+ const useStyles = makeStyles<Theme>(styles, {
10
+ name: 'PicassoOverviewBlockRow'
11
+ })
12
+
13
+ const OverviewBlockRow: FunctionComponent<Props> = props => {
14
+ const { className, ...rest } = props
15
+ const classes = useStyles()
16
+
17
+ return <div {...rest} className={cx(classes.root, className)} />
18
+ }
19
+
20
+ OverviewBlockRow.displayName = 'OverviewBlockRow'
21
+
22
+ export default OverviewBlockRow
@@ -0,0 +1 @@
1
+ export { default } from './OverviewBlockRow'
@@ -0,0 +1,11 @@
1
+ import OverviewBlockRow from '../OverviewBlockRow'
2
+ import PicassoBook from '~/.storybook/components/PicassoBook'
3
+
4
+ const componentDocs = PicassoBook.createComponentDocs(
5
+ OverviewBlockRow,
6
+ 'OverviewBlock.Row'
7
+ )
8
+
9
+ export default {
10
+ componentDocs
11
+ }