@opentrons/components 0.1.6-alpha.16 → 0.1.6-alpha.18

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 (486) hide show
  1. package/lib/atoms/StyledText/StyledText.d.ts +1 -1
  2. package/lib/hardware-sim/Labware/LabwareRender.d.ts +1 -1
  3. package/lib/hardware-sim/Labware/labwareInternals/FilledWells.d.ts +1 -1
  4. package/lib/hardware-sim/Labware/labwareInternals/LabwareOutline.d.ts +1 -1
  5. package/lib/hardware-sim/Labware/labwareInternals/StaticLabware.d.ts +1 -1
  6. package/lib/hardware-sim/Labware/labwareInternals/StrokedWells.d.ts +1 -1
  7. package/lib/instrument/InstrumentDiagram.d.ts +1 -1
  8. package/lib/primitives/Btn.d.ts +1 -1
  9. package/lib/primitives/style-props.d.ts +1 -1
  10. package/lib/primitives/types.d.ts +1 -1
  11. package/lib/styles/typography.d.ts +1 -1
  12. package/package.json +3 -3
  13. package/src/__mocks__/file.js +10 -0
  14. package/src/__tests__/utils.test.ts +27 -0
  15. package/src/alerts/AlertItem.stories.tsx +49 -0
  16. package/src/alerts/AlertItem.tsx +85 -0
  17. package/src/alerts/alerts.module.css +103 -0
  18. package/src/alerts/index.ts +3 -0
  19. package/src/atoms/Checkbox/Checkbox.stories.tsx +24 -0
  20. package/src/atoms/Checkbox/__tests__/Checkbox.test.tsx +55 -0
  21. package/src/atoms/Checkbox/index.tsx +127 -0
  22. package/src/atoms/CheckboxField/CheckboxField.stories.tsx +30 -0
  23. package/src/atoms/CheckboxField/__tests__/CheckboxField.test.tsx +141 -0
  24. package/src/atoms/CheckboxField/index.tsx +171 -0
  25. package/src/atoms/Chip/Chip.stories.tsx +59 -0
  26. package/src/atoms/Chip/__tests__/Chip.test.tsx +429 -0
  27. package/src/atoms/Chip/index.tsx +172 -0
  28. package/src/atoms/Divider/index.tsx +15 -0
  29. package/src/atoms/InputField/InputField.stories.tsx +77 -0
  30. package/src/atoms/InputField/__tests__/InputField.test.tsx +63 -0
  31. package/src/atoms/InputField/index.tsx +383 -0
  32. package/src/atoms/ListButton/ListButton.stories.tsx +133 -0
  33. package/src/atoms/ListButton/ListButtonChildren/ListButtonAccordion.tsx +65 -0
  34. package/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx +23 -0
  35. package/src/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.tsx +108 -0
  36. package/src/atoms/ListButton/ListButtonChildren/index.ts +3 -0
  37. package/src/atoms/ListButton/__tests__/ListButton.test.tsx +46 -0
  38. package/src/atoms/ListButton/__tests__/ListButtonAccordion.test.tsx +35 -0
  39. package/src/atoms/ListButton/__tests__/ListButtonRadioButton.test.tsx +27 -0
  40. package/src/atoms/ListButton/index.tsx +72 -0
  41. package/src/atoms/ListItem/ListItem.stories.tsx +96 -0
  42. package/src/atoms/ListItem/ListItemChildren/ListItemCustomize.tsx +78 -0
  43. package/src/atoms/ListItem/ListItemChildren/ListItemDescriptor.tsx +42 -0
  44. package/src/atoms/ListItem/ListItemChildren/index.ts +2 -0
  45. package/src/atoms/ListItem/__tests__/ListItem.test.tsx +61 -0
  46. package/src/atoms/ListItem/index.tsx +89 -0
  47. package/src/atoms/MenuList/MenuItem.stories.tsx +20 -0
  48. package/src/atoms/MenuList/MenuItem.tsx +55 -0
  49. package/src/atoms/MenuList/MenuList.stories.tsx +31 -0
  50. package/src/atoms/MenuList/OverflowBtn.stories.tsx +17 -0
  51. package/src/atoms/MenuList/OverflowBtn.tsx +76 -0
  52. package/src/atoms/MenuList/__tests__/MenuItem.test.tsx +50 -0
  53. package/src/atoms/MenuList/__tests__/MenuList.test.tsx +36 -0
  54. package/src/atoms/MenuList/__tests__/OverflowBtn.test.tsx +33 -0
  55. package/src/atoms/MenuList/index.tsx +50 -0
  56. package/src/atoms/Snackbar/Snackbar.stories.tsx +67 -0
  57. package/src/atoms/Snackbar/__tests__/Snackbar.test.tsx +73 -0
  58. package/src/atoms/Snackbar/index.tsx +91 -0
  59. package/src/atoms/StepMeter/index.tsx +53 -0
  60. package/src/atoms/StyledText/LegacyStyledText.stories.tsx +106 -0
  61. package/src/atoms/StyledText/LegacyStyledText.tsx +95 -0
  62. package/src/atoms/StyledText/StyledText.stories.tsx +46 -0
  63. package/src/atoms/StyledText/StyledText.tsx +323 -0
  64. package/src/atoms/StyledText/index.ts +2 -0
  65. package/src/atoms/Tag/Tag.stories.tsx +48 -0
  66. package/src/atoms/Tag/__tests__/Tag.test.tsx +55 -0
  67. package/src/atoms/Tag/index.tsx +116 -0
  68. package/src/atoms/Toast/ODDToast.stories.tsx +68 -0
  69. package/src/atoms/Toast/Toast.stories.tsx +55 -0
  70. package/src/atoms/Toast/__tests__/ODDToast.test.tsx +178 -0
  71. package/src/atoms/Toast/__tests__/Toast.test.tsx +174 -0
  72. package/src/atoms/Toast/index.tsx +439 -0
  73. package/src/atoms/ToggleGroup/ToggleGroup.stories.tsx +39 -0
  74. package/src/atoms/ToggleGroup/__tests__/ToggleGroup.test.tsx +28 -0
  75. package/src/atoms/ToggleGroup/index.tsx +91 -0
  76. package/src/atoms/Tooltip/Tooltip.stories.tsx +99 -0
  77. package/src/atoms/Tooltip/__tests__/Tooltip.test.tsx +78 -0
  78. package/src/atoms/Tooltip/index.tsx +38 -0
  79. package/src/atoms/buttons/AlertPrimaryButton.tsx +26 -0
  80. package/src/atoms/buttons/AltPrimaryButton.tsx +31 -0
  81. package/src/atoms/buttons/EmptySelectorButton.stories.tsx +36 -0
  82. package/src/atoms/buttons/EmptySelectorButton.tsx +83 -0
  83. package/src/atoms/buttons/LargeButton.stories.tsx +99 -0
  84. package/src/atoms/buttons/LargeButton.tsx +320 -0
  85. package/src/atoms/buttons/PrimaryButton.tsx +36 -0
  86. package/src/atoms/buttons/RadioButton.stories.tsx +35 -0
  87. package/src/atoms/buttons/RadioButton.tsx +217 -0
  88. package/src/atoms/buttons/SecondaryButton.tsx +62 -0
  89. package/src/atoms/buttons/__tests__/AlertPrimaryButton.test.tsx +47 -0
  90. package/src/atoms/buttons/__tests__/AltPrimaryButton.test.tsx +57 -0
  91. package/src/atoms/buttons/__tests__/EmptySelectorButton.test.tsx +42 -0
  92. package/src/atoms/buttons/__tests__/LargeButton.test.tsx +91 -0
  93. package/src/atoms/buttons/__tests__/PrimaryButton.test.tsx +64 -0
  94. package/src/atoms/buttons/__tests__/RadioButton.test.tsx +98 -0
  95. package/src/atoms/buttons/__tests__/SecondaryButton.test.tsx +54 -0
  96. package/src/atoms/buttons/buttons.stories.tsx +78 -0
  97. package/src/atoms/buttons/index.ts +6 -0
  98. package/src/atoms/index.ts +20 -0
  99. package/src/barrel.ts +10 -0
  100. package/src/buttons/Button.tsx +96 -0
  101. package/src/buttons/DeprecatedPrimaryButton.tsx +24 -0
  102. package/src/buttons/FlatButton.tsx +21 -0
  103. package/src/buttons/IconButton.tsx +37 -0
  104. package/src/buttons/OutlineButton.tsx +24 -0
  105. package/src/buttons/buttons.module.css +428 -0
  106. package/src/buttons/index.ts +7 -0
  107. package/src/controls/ControlInfo.tsx +13 -0
  108. package/src/controls/LabeledButton.tsx +28 -0
  109. package/src/controls/LabeledCheckbox.tsx +35 -0
  110. package/src/controls/LabeledControl.tsx +24 -0
  111. package/src/controls/LabeledRadioGroup.tsx +27 -0
  112. package/src/controls/LabeledSelect.tsx +34 -0
  113. package/src/controls/LabeledToggle.tsx +35 -0
  114. package/src/controls/StackedLabeledControl.tsx +28 -0
  115. package/src/controls/ToggleButton.tsx +25 -0
  116. package/src/controls/index.ts +10 -0
  117. package/src/controls/styles.module.css +103 -0
  118. package/src/forms/DeprecatedCheckboxField.stories.tsx +31 -0
  119. package/src/forms/DeprecatedCheckboxField.tsx +94 -0
  120. package/src/forms/DropdownField.stories.tsx +44 -0
  121. package/src/forms/DropdownField.tsx +106 -0
  122. package/src/forms/FormGroup.stories.tsx +31 -0
  123. package/src/forms/FormGroup.tsx +53 -0
  124. package/src/forms/InputField.stories.tsx +41 -0
  125. package/src/forms/LegacyInputField.tsx +123 -0
  126. package/src/forms/RadioGroup.stories.tsx +44 -0
  127. package/src/forms/RadioGroup.tsx +87 -0
  128. package/src/forms/Select.module.css +118 -0
  129. package/src/forms/Select.stories.tsx +117 -0
  130. package/src/forms/Select.tsx +132 -0
  131. package/src/forms/SelectField.module.css +16 -0
  132. package/src/forms/SelectField.tsx +94 -0
  133. package/src/forms/ToggleField.stories.tsx +31 -0
  134. package/src/forms/ToggleField.tsx +59 -0
  135. package/src/forms/__tests__/DeprecatedCheckboxField.test.tsx +5 -0
  136. package/src/forms/__tests__/DropdownField.test.tsx +5 -0
  137. package/src/forms/__tests__/InputField.test.tsx +5 -0
  138. package/src/forms/__tests__/Select.test.tsx +5 -0
  139. package/src/forms/__tests__/SelectField.test.tsx +5 -0
  140. package/src/forms/__tests__/ToggleField.test.tsx +5 -0
  141. package/src/forms/forms.module.css +239 -0
  142. package/src/forms/index.ts +8 -0
  143. package/src/hardware-sim/BaseDeck/BaseDeck.stories.tsx +94 -0
  144. package/src/hardware-sim/BaseDeck/BaseDeck.tsx +423 -0
  145. package/src/hardware-sim/BaseDeck/SingleSlotFixture.tsx +199 -0
  146. package/src/hardware-sim/BaseDeck/SlotBase.tsx +5 -0
  147. package/src/hardware-sim/BaseDeck/SlotClip.tsx +15 -0
  148. package/src/hardware-sim/BaseDeck/StagingAreaFixture.tsx +114 -0
  149. package/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +114 -0
  150. package/src/hardware-sim/BaseDeck/WasteChuteStagingAreaFixture.tsx +68 -0
  151. package/src/hardware-sim/BaseDeck/__fixtures__/index.ts +165 -0
  152. package/src/hardware-sim/BaseDeck/index.ts +5 -0
  153. package/src/hardware-sim/Deck/DeckFromLayers.tsx +58 -0
  154. package/src/hardware-sim/Deck/FlexTrash.tsx +128 -0
  155. package/src/hardware-sim/Deck/MoveLabwareOnDeck.stories.tsx +97 -0
  156. package/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +251 -0
  157. package/src/hardware-sim/Deck/OT2Layers.tsx +153 -0
  158. package/src/hardware-sim/Deck/RobotCoordsForeignDiv.tsx +46 -0
  159. package/src/hardware-sim/Deck/RobotCoordsForeignObject.tsx +42 -0
  160. package/src/hardware-sim/Deck/RobotCoordsText.tsx +32 -0
  161. package/src/hardware-sim/Deck/RobotWorkSpace.tsx +90 -0
  162. package/src/hardware-sim/Deck/SlotLabels.tsx +111 -0
  163. package/src/hardware-sim/Deck/__mocks__/getDeckDefinitions.ts +29 -0
  164. package/src/hardware-sim/Deck/constants.ts +12 -0
  165. package/src/hardware-sim/Deck/index.tsx +8 -0
  166. package/src/hardware-sim/DeckConfigurator/AbsorbanceReaderFixture.tsx +91 -0
  167. package/src/hardware-sim/DeckConfigurator/DeckConfigurator.stories.tsx +110 -0
  168. package/src/hardware-sim/DeckConfigurator/EmptyConfigFixture.tsx +131 -0
  169. package/src/hardware-sim/DeckConfigurator/HeaterShakerFixture.tsx +102 -0
  170. package/src/hardware-sim/DeckConfigurator/MagneticBlockFixture.tsx +130 -0
  171. package/src/hardware-sim/DeckConfigurator/StagingAreaConfigFixture.tsx +89 -0
  172. package/src/hardware-sim/DeckConfigurator/StaticFixture.tsx +54 -0
  173. package/src/hardware-sim/DeckConfigurator/TemperatureModuleFixture.tsx +103 -0
  174. package/src/hardware-sim/DeckConfigurator/ThermocyclerFixture.tsx +89 -0
  175. package/src/hardware-sim/DeckConfigurator/TrashBinConfigFixture.tsx +99 -0
  176. package/src/hardware-sim/DeckConfigurator/WasteChuteConfigFixture.tsx +96 -0
  177. package/src/hardware-sim/DeckConfigurator/constants.ts +81 -0
  178. package/src/hardware-sim/DeckConfigurator/index.tsx +285 -0
  179. package/src/hardware-sim/DeckSlotLocation/index.tsx +88 -0
  180. package/src/hardware-sim/Labware/Labware.tsx +173 -0
  181. package/src/hardware-sim/Labware/LabwareAdapter/Opentrons96DeepWellAdapter.tsx +23 -0
  182. package/src/hardware-sim/Labware/LabwareAdapter/Opentrons96FlatBottomAdapter.tsx +7 -0
  183. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsAluminumFlatBottomPlate.tsx +13 -0
  184. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsAutoclavableDeckRiser.tsx +100 -0
  185. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsFlex96TiprackAdapter.tsx +13 -0
  186. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsToughPCRAutoSealingLid.tsx +83 -0
  187. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsUniversalFlatAdapter.tsx +13 -0
  188. package/src/hardware-sim/Labware/LabwareAdapter/index.tsx +73 -0
  189. package/src/hardware-sim/Labware/LabwareRender.stories.tsx +96 -0
  190. package/src/hardware-sim/Labware/LabwareRender.tsx +173 -0
  191. package/src/hardware-sim/Labware/LabwareStackRender.tsx +272 -0
  192. package/src/hardware-sim/Labware/__tests__/Labware.test.tsx +43 -0
  193. package/src/hardware-sim/Labware/__tests__/LabwareRender.test.tsx +54 -0
  194. package/src/hardware-sim/Labware/index.ts +6 -0
  195. package/src/hardware-sim/Labware/labwareInternals/FilledWells.tsx +39 -0
  196. package/src/hardware-sim/Labware/labwareInternals/LabwareOutline.tsx +133 -0
  197. package/src/hardware-sim/Labware/labwareInternals/LabwareWellLabels.tsx +118 -0
  198. package/src/hardware-sim/Labware/labwareInternals/StaticLabware.tsx +121 -0
  199. package/src/hardware-sim/Labware/labwareInternals/StrokedWells.tsx +38 -0
  200. package/src/hardware-sim/Labware/labwareInternals/StyledWells.tsx +77 -0
  201. package/src/hardware-sim/Labware/labwareInternals/Well.tsx +74 -0
  202. package/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +121 -0
  203. package/src/hardware-sim/Labware/labwareInternals/__tests__/LabwareWellLabels.test.tsx +66 -0
  204. package/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx +31 -0
  205. package/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx +91 -0
  206. package/src/hardware-sim/Labware/labwareInternals/index.ts +8 -0
  207. package/src/hardware-sim/Labware/labwareInternals/types.ts +18 -0
  208. package/src/hardware-sim/Module/HeaterShaker.tsx +83 -0
  209. package/src/hardware-sim/Module/MagneticBlock.tsx +49 -0
  210. package/src/hardware-sim/Module/MagneticModule.tsx +51 -0
  211. package/src/hardware-sim/Module/Module.stories.tsx +90 -0
  212. package/src/hardware-sim/Module/ModuleTag.tsx +38 -0
  213. package/src/hardware-sim/Module/PlateReader.tsx +208 -0
  214. package/src/hardware-sim/Module/Temperature.tsx +54 -0
  215. package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN1.tsx +248 -0
  216. package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN2.tsx +286 -0
  217. package/src/hardware-sim/Module/Thermocycler/index.tsx +49 -0
  218. package/src/hardware-sim/Module/index.tsx +227 -0
  219. package/src/hardware-sim/Pipette/EightEmanatingNozzles.tsx +23 -0
  220. package/src/hardware-sim/Pipette/EmanatingNozzle.tsx +52 -0
  221. package/src/hardware-sim/Pipette/PipetteRender.stories.tsx +71 -0
  222. package/src/hardware-sim/Pipette/PipetteRender.tsx +92 -0
  223. package/src/hardware-sim/Pipette/__tests__/EightEmanatingNozzles.test.tsx +16 -0
  224. package/src/hardware-sim/Pipette/__tests__/EmanatingNozzle.test.tsx +67 -0
  225. package/src/hardware-sim/Pipette/__tests__/PipetteRender.test.tsx +99 -0
  226. package/src/hardware-sim/Pipette/constants.ts +10 -0
  227. package/src/hardware-sim/Pipette/index.ts +1 -0
  228. package/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx +68 -0
  229. package/src/hardware-sim/ProtocolDeck/ProtocolDeck.stories.tsx +25 -0
  230. package/src/hardware-sim/ProtocolDeck/__fixtures__/analysis_QIAseqFX24xv4_8.json +47145 -0
  231. package/src/hardware-sim/ProtocolDeck/index.tsx +174 -0
  232. package/src/hardware-sim/ProtocolDeck/types.ts +6 -0
  233. package/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts +158 -0
  234. package/src/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.ts +33 -0
  235. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.ts +155 -0
  236. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.ts +42 -0
  237. package/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts +129 -0
  238. package/src/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.ts +29 -0
  239. package/src/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.ts +30 -0
  240. package/src/hardware-sim/ProtocolDeck/utils/index.ts +3 -0
  241. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.tsx +28 -0
  242. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpaceWithRef.tsx +52 -0
  243. package/src/hardware-sim/RobotCoordinateSpace/index.ts +2 -0
  244. package/src/hardware-sim/index.ts +11 -0
  245. package/src/hardware-sim/utils.ts +18 -0
  246. package/src/helix-design-system/borders.ts +32 -0
  247. package/src/helix-design-system/colors.ts +100 -0
  248. package/src/helix-design-system/index.ts +4 -0
  249. package/src/helix-design-system/product/index.ts +1 -0
  250. package/src/helix-design-system/product/typography.ts +151 -0
  251. package/src/helix-design-system/style.ts +2 -0
  252. package/src/hooks/__tests__/useConditionalConfirm.test.tsx +5 -0
  253. package/src/hooks/__tests__/useDrag.test.ts +46 -0
  254. package/src/hooks/__tests__/useIdle.test.ts +68 -0
  255. package/src/hooks/__tests__/useInterval.test.tsx +5 -0
  256. package/src/hooks/__tests__/useLongPress.test.ts +25 -0
  257. package/src/hooks/__tests__/useMountEffect.test.tsx +5 -0
  258. package/src/hooks/__tests__/usePrevious.test.tsx +5 -0
  259. package/src/hooks/__tests__/useScrolling.test.tsx +46 -0
  260. package/src/hooks/__tests__/useSwipe.test.tsx +26 -0
  261. package/src/hooks/__tests__/useTimeout.test.tsx +5 -0
  262. package/src/hooks/__tests__/useToggle.test.tsx +5 -0
  263. package/src/hooks/index.ts +15 -0
  264. package/src/hooks/useConditionalConfirm.ts +70 -0
  265. package/src/hooks/useDrag.ts +90 -0
  266. package/src/hooks/useIdle.ts +68 -0
  267. package/src/hooks/useInterval.ts +38 -0
  268. package/src/hooks/useLongPress.ts +83 -0
  269. package/src/hooks/useMenuHandleClickOutside.tsx +46 -0
  270. package/src/hooks/useMountEffect.ts +12 -0
  271. package/src/hooks/usePrevious.ts +19 -0
  272. package/src/hooks/useScrolling.ts +33 -0
  273. package/src/hooks/useSelectDeckLocation/SelectDeckLocation.stories.tsx +55 -0
  274. package/src/hooks/useSelectDeckLocation/index.tsx +331 -0
  275. package/src/hooks/useSwipe.ts +86 -0
  276. package/src/hooks/useTimeout.ts +33 -0
  277. package/src/hooks/useToggle.ts +27 -0
  278. package/src/icons/Icon.stories.tsx +37 -0
  279. package/src/icons/Icon.tsx +79 -0
  280. package/src/icons/IconList.stories.tsx +108 -0
  281. package/src/icons/ModuleIcon.tsx +48 -0
  282. package/src/icons/NotificationIcon.tsx +41 -0
  283. package/src/icons/icon-data.ts +821 -0
  284. package/src/icons/index.ts +6 -0
  285. package/src/images/index.ts +1 -0
  286. package/src/images/labware/index.ts +1 -0
  287. package/src/images/labware/measurement-guide/images/depth/depth-plate-flat@3x.png +0 -0
  288. package/src/images/labware/measurement-guide/images/depth/depth-plate-round@3x.png +0 -0
  289. package/src/images/labware/measurement-guide/images/depth/depth-plate-v@3x.png +0 -0
  290. package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-flat@3x.png +0 -0
  291. package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-round@3x.png +0 -0
  292. package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-v@3x.png +0 -0
  293. package/src/images/labware/measurement-guide/images/depth/length-tip-rack@3x.png +0 -0
  294. package/src/images/labware/measurement-guide/images/dimensions/footprint@3x.png +0 -0
  295. package/src/images/labware/measurement-guide/images/dimensions/height-alum-block-plate@3x.png +0 -0
  296. package/src/images/labware/measurement-guide/images/dimensions/height-alum-block-tubes@3x.png +0 -0
  297. package/src/images/labware/measurement-guide/images/dimensions/height-plate-and-reservoir@3x.png +0 -0
  298. package/src/images/labware/measurement-guide/images/dimensions/height-tip-rack@3x.png +0 -0
  299. package/src/images/labware/measurement-guide/images/dimensions/height-tube-rack-irregular@3x.png +0 -0
  300. package/src/images/labware/measurement-guide/images/dimensions/height-tube-rack@3x.png +0 -0
  301. package/src/images/labware/measurement-guide/images/offset/offset-reservoir@3x.png +0 -0
  302. package/src/images/labware/measurement-guide/images/offset/offset-well-circular@3x.png +0 -0
  303. package/src/images/labware/measurement-guide/images/offset/offset-well-rectangular@3x.png +0 -0
  304. package/src/images/labware/measurement-guide/images/shape/shape-circular@3x.png +0 -0
  305. package/src/images/labware/measurement-guide/images/shape/shape-rectangular@3x.png +0 -0
  306. package/src/images/labware/measurement-guide/images/spacing/spacing-reservoir-multi-row@3x.png +0 -0
  307. package/src/images/labware/measurement-guide/images/spacing/spacing-reservoir@3x.png +0 -0
  308. package/src/images/labware/measurement-guide/images/spacing/spacing-well-circular@3x.png +0 -0
  309. package/src/images/labware/measurement-guide/images/spacing/spacing-well-rectangular@3x.png +0 -0
  310. package/src/images/labware/measurement-guide/index.ts +272 -0
  311. package/src/index.module.css +9 -0
  312. package/src/index.ts +41 -0
  313. package/src/instrument/InstrumentDiagram.stories.tsx +42 -0
  314. package/src/instrument/InstrumentDiagram.tsx +58 -0
  315. package/src/instrument/InstrumentGroup.stories.tsx +88 -0
  316. package/src/instrument/InstrumentGroup.tsx +35 -0
  317. package/src/instrument/InstrumentInfo.tsx +107 -0
  318. package/src/instrument/PipetteSelect.module.css +14 -0
  319. package/src/instrument/PipetteSelect.stories.tsx +40 -0
  320. package/src/instrument/PipetteSelect.tsx +170 -0
  321. package/src/instrument/__tests__/InstrumentInfo.test.tsx +55 -0
  322. package/src/instrument/__tests__/PipetteSelect.test.tsx +4 -0
  323. package/src/instrument/eight-channel-flex.png +0 -0
  324. package/src/instrument/index.ts +4 -0
  325. package/src/instrument/instrument.module.css +45 -0
  326. package/src/instrument/multi-channel_GEN1_800px.png +0 -0
  327. package/src/instrument/multi-channel_GEN2_800px.png +0 -0
  328. package/src/instrument/ninety-six-channel-gen1.png +0 -0
  329. package/src/instrument/pipetteGEN2Multi.png +0 -0
  330. package/src/instrument/pipetteGEN2Single.png +0 -0
  331. package/src/instrument/pipetteMulti.png +0 -0
  332. package/src/instrument/pipetteSingle.png +0 -0
  333. package/src/instrument/single-channel-flex.png +0 -0
  334. package/src/instrument/single-channel_GEN2_800px.png +0 -0
  335. package/src/instrument/single_channel_GEN1_800px.png +0 -0
  336. package/src/interaction-enhancers/ClickOutside.ts +57 -0
  337. package/src/interaction-enhancers/HandleKeypress.tsx +69 -0
  338. package/src/interaction-enhancers/__tests__/useHover.test.tsx +4 -0
  339. package/src/interaction-enhancers/index.ts +4 -0
  340. package/src/interaction-enhancers/useHover.ts +84 -0
  341. package/src/interaction-enhancers/useOnClickOutside.ts +42 -0
  342. package/src/legacy-hardware-sim/LabwareNameOverlay.module.css +20 -0
  343. package/src/legacy-hardware-sim/LabwareNameOverlay.tsx +22 -0
  344. package/src/legacy-hardware-sim/ModuleItem.module.css +98 -0
  345. package/src/legacy-hardware-sim/ModuleItem.tsx +145 -0
  346. package/src/legacy-hardware-sim/index.ts +2 -0
  347. package/src/lists/SidePanelGroup.tsx +48 -0
  348. package/src/lists/TitledList.tsx +155 -0
  349. package/src/lists/index.ts +3 -0
  350. package/src/lists/lists.module.css +171 -0
  351. package/src/modals/AlertModal.tsx +89 -0
  352. package/src/modals/ContinueModal.tsx +32 -0
  353. package/src/modals/LegacyModal.tsx +59 -0
  354. package/src/modals/Modal.stories.tsx +52 -0
  355. package/src/modals/Modal.tsx +96 -0
  356. package/src/modals/ModalHeader.tsx +100 -0
  357. package/src/modals/ModalShell.tsx +155 -0
  358. package/src/modals/Overlay.tsx +38 -0
  359. package/src/modals/SpinnerModal.tsx +35 -0
  360. package/src/modals/SpinnerModalPage.tsx +30 -0
  361. package/src/modals/__tests__/Modal.test.tsx +65 -0
  362. package/src/modals/__tests__/ModalHeader.test.tsx +73 -0
  363. package/src/modals/__tests__/ModalShell.test.tsx +45 -0
  364. package/src/modals/index.ts +10 -0
  365. package/src/modals/modals.module.css +275 -0
  366. package/src/molecules/Banner/Banner.stories.tsx +41 -0
  367. package/src/molecules/Banner/__tests__/Banner.test.tsx +94 -0
  368. package/src/molecules/Banner/index.tsx +147 -0
  369. package/src/molecules/DeckInfoLabel/DeckInfoLabel.stories.tsx +65 -0
  370. package/src/molecules/DeckInfoLabel/__tests__/DeckInfoLabel.test.tsx +49 -0
  371. package/src/molecules/DeckInfoLabel/index.tsx +95 -0
  372. package/src/molecules/DeckLabel/DeckLabel.stories.tsx +31 -0
  373. package/src/molecules/DeckLabel/__tests__/DeckLabel.test.tsx +69 -0
  374. package/src/molecules/DeckLabel/index.tsx +80 -0
  375. package/src/molecules/DropdownMenu/DropdownMenu.stories.tsx +30 -0
  376. package/src/molecules/DropdownMenu/__tests__/DropdownMenu.test.tsx +85 -0
  377. package/src/molecules/DropdownMenu/index.tsx +343 -0
  378. package/src/molecules/InfoScreen/InfoScreen.stories.tsx +50 -0
  379. package/src/molecules/InfoScreen/__tests__/InfoScreen.test.tsx +40 -0
  380. package/src/molecules/InfoScreen/index.tsx +54 -0
  381. package/src/molecules/LiquidIcon/LiquidIcon.stories.tsx +53 -0
  382. package/src/molecules/LiquidIcon/__tests__/LiquidIcon.test.tsx +50 -0
  383. package/src/molecules/LiquidIcon/index.tsx +68 -0
  384. package/src/molecules/ParametersTable/ParametersTable.stories.tsx +172 -0
  385. package/src/molecules/ParametersTable/__tests__/ParametersTable.test.tsx +126 -0
  386. package/src/molecules/ParametersTable/index.tsx +198 -0
  387. package/src/molecules/Tabs/Tabs.stories.tsx +74 -0
  388. package/src/molecules/Tabs/__tests__/Tabs.test.tsx +90 -0
  389. package/src/molecules/Tabs/index.tsx +94 -0
  390. package/src/molecules/index.ts +8 -0
  391. package/src/nav/SidePanel.module.css +34 -0
  392. package/src/nav/SidePanel.stories.tsx +29 -0
  393. package/src/nav/SidePanel.tsx +21 -0
  394. package/src/nav/index.ts +2 -0
  395. package/src/organisms/DeckLabelSet/DeckLabelSet.stories.tsx +46 -0
  396. package/src/organisms/DeckLabelSet/__tests__/DeckLabelSet.test.tsx +49 -0
  397. package/src/organisms/DeckLabelSet/index.tsx +69 -0
  398. package/src/organisms/EndUserAgreementFooter/__tests__/EndUserAgreementFooter.test.tsx +21 -0
  399. package/src/organisms/EndUserAgreementFooter/index.tsx +49 -0
  400. package/src/organisms/Toolbox/Toolbox.stories.tsx +23 -0
  401. package/src/organisms/Toolbox/__tests__/Toolbox.test.tsx +35 -0
  402. package/src/organisms/Toolbox/index.tsx +160 -0
  403. package/src/organisms/index.ts +3 -0
  404. package/src/primitives/Box.stories.tsx +25 -0
  405. package/src/primitives/Box.tsx +17 -0
  406. package/src/primitives/Btn.stories.tsx +105 -0
  407. package/src/primitives/Btn.tsx +266 -0
  408. package/src/primitives/Flex.stories.tsx +50 -0
  409. package/src/primitives/Flex.tsx +17 -0
  410. package/src/primitives/ForeignObject.tsx +70 -0
  411. package/src/primitives/Link.stories.tsx +27 -0
  412. package/src/primitives/Link.tsx +32 -0
  413. package/src/primitives/README.md +188 -0
  414. package/src/primitives/Svg.stories.tsx +36 -0
  415. package/src/primitives/Svg.tsx +68 -0
  416. package/src/primitives/Text.stories.tsx +17 -0
  417. package/src/primitives/Text.tsx +18 -0
  418. package/src/primitives/__tests__/Box.test.tsx +4 -0
  419. package/src/primitives/__tests__/Btn.test.tsx +4 -0
  420. package/src/primitives/__tests__/Flex.test.tsx +4 -0
  421. package/src/primitives/__tests__/Link.test.tsx +4 -0
  422. package/src/primitives/__tests__/Svg.test.tsx +4 -0
  423. package/src/primitives/__tests__/Text.test.tsx +4 -0
  424. package/src/primitives/__tests__/primitives.test.tsx +4 -0
  425. package/src/primitives/__tests__/style-props.test.tsx +4 -0
  426. package/src/primitives/index.ts +10 -0
  427. package/src/primitives/style-props.ts +197 -0
  428. package/src/primitives/types.ts +120 -0
  429. package/src/robot-types.ts +4 -0
  430. package/src/slotmap/OT2SlotMap.tsx +73 -0
  431. package/src/slotmap/__tests__/OT2SlotMap.test.tsx +4 -0
  432. package/src/slotmap/index.ts +1 -0
  433. package/src/slotmap/styles.module.css +18 -0
  434. package/src/structure/Card.stories.tsx +28 -0
  435. package/src/structure/Card.tsx +64 -0
  436. package/src/structure/LabeledValue.stories.tsx +17 -0
  437. package/src/structure/LabeledValue.tsx +31 -0
  438. package/src/structure/Pill.module.css +16 -0
  439. package/src/structure/Pill.tsx +43 -0
  440. package/src/structure/Splash.module.css +16 -0
  441. package/src/structure/Splash.stories.tsx +24 -0
  442. package/src/structure/Splash.tsx +22 -0
  443. package/src/structure/TitleBar.stories.tsx +42 -0
  444. package/src/structure/TitleBar.tsx +81 -0
  445. package/src/structure/index.ts +7 -0
  446. package/src/structure/structure.module.css +114 -0
  447. package/src/styles/borders.module.css +20 -0
  448. package/src/styles/borders.ts +16 -0
  449. package/src/styles/colors.module.css +57 -0
  450. package/src/styles/colors.ts +58 -0
  451. package/src/styles/cursor.ts +12 -0
  452. package/src/styles/flexbox.ts +39 -0
  453. package/src/styles/index.module.css +8 -0
  454. package/src/styles/index.ts +8 -0
  455. package/src/styles/layout.ts +31 -0
  456. package/src/styles/position.ts +5 -0
  457. package/src/styles/spacing.ts +11 -0
  458. package/src/styles/typography.module.css +22 -0
  459. package/src/styles/typography.ts +90 -0
  460. package/src/testing/utils/index.ts +2 -0
  461. package/src/testing/utils/matchers.ts +31 -0
  462. package/src/testing/utils/renderWithProviders.tsx +53 -0
  463. package/src/tooltips/DeprecatedTooltip.tsx +105 -0
  464. package/src/tooltips/HoverTooltip.tsx +83 -0
  465. package/src/tooltips/LegacyTooltip.stories.tsx +98 -0
  466. package/src/tooltips/LegacyTooltip.tsx +151 -0
  467. package/src/tooltips/__tests__/Tooltip.test.tsx +4 -0
  468. package/src/tooltips/__tests__/useHoverTooltip.test.tsx +4 -0
  469. package/src/tooltips/__tests__/usePopper.test.tsx +4 -0
  470. package/src/tooltips/__tests__/useTooltip.test.tsx +4 -0
  471. package/src/tooltips/constants.ts +28 -0
  472. package/src/tooltips/index.ts +10 -0
  473. package/src/tooltips/styles.ts +20 -0
  474. package/src/tooltips/tooltips.module.css +72 -0
  475. package/src/tooltips/types.ts +73 -0
  476. package/src/tooltips/useHoverTooltip.ts +47 -0
  477. package/src/tooltips/usePopper.ts +87 -0
  478. package/src/tooltips/useTooltip.ts +100 -0
  479. package/src/ui-style-constants/index.ts +4 -0
  480. package/src/ui-style-constants/responsiveness.ts +15 -0
  481. package/src/ui-style-constants/spacing.ts +18 -0
  482. package/src/ui-style-constants/typography.ts +258 -0
  483. package/src/ui-style-constants/viewport.ts +18 -0
  484. package/src/utils.ts +56 -0
  485. package/lib/index.mjs +0 -23832
  486. package/lib/patches.d.ts +0 -4
@@ -0,0 +1,120 @@
1
+ // known style types
2
+
3
+ import type { StyledComponent, CSSProperties } from 'styled-components'
4
+
5
+ export interface ColorProps {
6
+ color?: string
7
+ backgroundColor?: string
8
+ opacity?: string | number
9
+ }
10
+
11
+ export interface TypographyProps {
12
+ fontSize?: string | number
13
+ fontWeight?: string | number
14
+ fontStyle?: string
15
+ lineHeight?: string | number
16
+ textAlign?: string
17
+ textTransform?: string
18
+ textDecoration?: string
19
+ }
20
+
21
+ export interface SpacingProps {
22
+ margin?: string | number
23
+ marginX?: string | number
24
+ marginY?: string | number
25
+ marginTop?: string | number
26
+ marginRight?: string | number
27
+ marginBottom?: string | number
28
+ marginLeft?: string | number
29
+ padding?: string | number
30
+ paddingX?: string | number
31
+ paddingY?: string | number
32
+ paddingTop?: string | number
33
+ paddingRight?: string | number
34
+ paddingBottom?: string | number
35
+ paddingLeft?: string | number
36
+ }
37
+
38
+ export interface BorderProps {
39
+ border?: string
40
+ borderTop?: string
41
+ borderRight?: string
42
+ borderBottom?: string
43
+ borderLeft?: string
44
+ borderRadius?: string | number
45
+ borderWidth?: string | number
46
+ borderColor?: string
47
+ boxShadow?: string
48
+ }
49
+
50
+ export interface FlexboxProps {
51
+ flex?: string | number
52
+ alignItems?: string
53
+ alignSelf?: string
54
+ justifyContent?: string
55
+ flexDirection?: string
56
+ flexWrap?: string
57
+ whiteSpace?: string
58
+ }
59
+
60
+ export interface GridProps {
61
+ columnGap?: string | number
62
+ gridGap?: string | number
63
+ gridTemplateAreas?: string
64
+ gridTemplateRows?: string
65
+ gridTemplateColumns?: string
66
+ gridArea?: string | number
67
+ gridRow?: string | number
68
+ gridColumn?: string | number
69
+ }
70
+
71
+ export interface LayoutProps {
72
+ display?: string
73
+ size?: string | number
74
+ width?: string | number
75
+ minWidth?: string | number
76
+ maxWidth?: string | number
77
+ height?: string | number
78
+ minHeight?: string | number
79
+ maxHeight?: string | number
80
+ overflow?: CSSProperties['overflow']
81
+ overflowX?: CSSProperties['overflowX']
82
+ overflowY?: CSSProperties['overflowY']
83
+ wordSpacing?: string | number
84
+ cursor?: CSSProperties['cursor']
85
+ overflowWrap?: string
86
+ }
87
+
88
+ export interface PositionProps {
89
+ position?: string
90
+ zIndex?: string | number
91
+ top?: string | number
92
+ right?: string | number
93
+ bottom?: string | number
94
+ left?: string | number
95
+ transform?: string
96
+ filter?: string
97
+ transformOrigin?: CSSProperties['transformOrigin']
98
+ }
99
+
100
+ export interface TransitionProps {
101
+ transition?: string
102
+ }
103
+
104
+ export interface StyleProps
105
+ extends ColorProps,
106
+ TypographyProps,
107
+ SpacingProps,
108
+ BorderProps,
109
+ FlexboxProps,
110
+ GridProps,
111
+ LayoutProps,
112
+ PositionProps,
113
+ TransitionProps {
114
+ className?: string
115
+ }
116
+
117
+ export type PrimitiveComponent<
118
+ Instance extends keyof JSX.IntrinsicElements | React.ComponentType<any>,
119
+ Props extends StyleProps = StyleProps
120
+ > = StyledComponent<Instance, any, Props, any>
@@ -0,0 +1,4 @@
1
+ export type {
2
+ PipetteChannels as Channels,
3
+ PipetteMount as Mount,
4
+ } from '@opentrons/shared-data'
@@ -0,0 +1,73 @@
1
+ import cx from 'classnames'
2
+ import { Icon } from '../icons'
3
+ import styles from './styles.module.css'
4
+
5
+ // TODO(bc, 2021-03-29): this component is only used in PD
6
+ // reconsider whether it belongs in components library
7
+
8
+ export interface SlotMapProps {
9
+ /** Slot(s) to highlight */
10
+ occupiedSlots: string[]
11
+ /** Optional collision warning */
12
+ collisionSlots?: string[]
13
+ /** Optional error styling */
14
+ isError?: boolean
15
+ }
16
+
17
+ const OT2_SLOT_MAP_SLOTS = [
18
+ ['10', '11'],
19
+ ['7', '8', '9'],
20
+ ['4', '5', '6'],
21
+ ['1', '2', '3'],
22
+ ]
23
+
24
+ const slotWidth = 33
25
+ const slotHeight = 23
26
+ const iconSize = 20
27
+ const numRows = 4
28
+ const numCols = 3
29
+
30
+ export function OT2SlotMap(props: SlotMapProps): JSX.Element {
31
+ const { collisionSlots, occupiedSlots, isError } = props
32
+ const slots = OT2_SLOT_MAP_SLOTS
33
+ return (
34
+ <svg
35
+ viewBox={`-1,-1,${slotWidth * numCols + 2}, ${slotHeight * numRows + 2}`}
36
+ >
37
+ {slots.flatMap((row, rowIndex) =>
38
+ row.map((slot, colIndex) => {
39
+ const isCollisionSlot =
40
+ collisionSlots && collisionSlots.includes(slot)
41
+ const isOccupiedSlot = occupiedSlots.includes(slot)
42
+ return (
43
+ <g
44
+ key={slot}
45
+ transform={`translate(${colIndex * slotWidth} ${
46
+ rowIndex * slotHeight
47
+ })`}
48
+ >
49
+ <rect
50
+ className={cx(styles.slot_rect, {
51
+ [styles.slot_occupied]: isOccupiedSlot,
52
+ [styles.slot_error]: isError,
53
+ })}
54
+ width={slotWidth}
55
+ height={slotHeight}
56
+ />
57
+ {isCollisionSlot && (
58
+ <Icon
59
+ className={styles.collision_icon}
60
+ name="information"
61
+ svgWidth={iconSize}
62
+ svgHeight={iconSize}
63
+ x={slotWidth / 2 - iconSize / 2}
64
+ y={slotHeight / 2 - iconSize / 2}
65
+ />
66
+ )}
67
+ </g>
68
+ )
69
+ })
70
+ )}
71
+ </svg>
72
+ )
73
+ }
@@ -0,0 +1,4 @@
1
+ import { describe, it } from 'vitest'
2
+ describe('SlotMap', () => {
3
+ it.todo('replace deprecated enzyme test')
4
+ })
@@ -0,0 +1 @@
1
+ export * from './OT2SlotMap'
@@ -0,0 +1,18 @@
1
+ @import '../index.module.css';
2
+
3
+ .slot_rect {
4
+ stroke: var(--c-med-gray);
5
+ fill: none;
6
+ }
7
+
8
+ .slot_occupied {
9
+ fill: var(--c-light-gray);
10
+ }
11
+
12
+ .slot_occupied.slot_error {
13
+ fill: var(--c-warning-light);
14
+ }
15
+
16
+ .collision_icon {
17
+ color: var(--c-med-gray);
18
+ }
@@ -0,0 +1,28 @@
1
+ import type * as React from 'react'
2
+ import { Card as CardComponent } from './Card'
3
+ import { Box, Text, SIZE_4, SPACING_3 } from '@opentrons/components'
4
+
5
+ import type { Story, Meta } from '@storybook/react'
6
+
7
+ export default {
8
+ title: 'Library/Molecules/Card',
9
+ } as Meta
10
+
11
+ const Template: Story<React.ComponentProps<typeof CardComponent>> = args => (
12
+ <CardComponent {...args} />
13
+ )
14
+ export const Card = Template.bind({})
15
+ Card.args = {
16
+ title: 'Main Title Goes Here',
17
+ disabled: false,
18
+ children: (
19
+ <>
20
+ <Box size={SIZE_4} padding={SPACING_3}>
21
+ <Text>Some text contents</Text>
22
+ </Box>
23
+ <Box size={SIZE_4} padding={SPACING_3}>
24
+ <Text>Some more text contents</Text>
25
+ </Box>
26
+ </>
27
+ ),
28
+ }
@@ -0,0 +1,64 @@
1
+ // Card component with drop shadow
2
+
3
+ import type * as React from 'react'
4
+ import styled, { css } from 'styled-components'
5
+ import { isntStyleProp, styleProps } from '../primitives'
6
+ import * as styles from '../styles'
7
+
8
+ import type { StyleProps, PrimitiveComponent } from '../primitives'
9
+ export interface CardProps extends StyleProps {
10
+ /** Title for card, all cards should receive a title. */
11
+ title?: React.ReactNode
12
+ /** Card contents */
13
+ children?: React.ReactNode
14
+ /** If card can not be used, gray it out and remove pointer events */
15
+ disabled?: boolean
16
+ /** Additional class names */
17
+ className?: string
18
+ }
19
+
20
+ /**
21
+ * Renders a basic card element with a white background, dropshadow, and zero padding.
22
+ *
23
+ * Titles and other children handle their own styles and layout.
24
+ */
25
+ export function Card(props: CardProps): JSX.Element {
26
+ const { title, children, className, disabled, ...styleProps } = props
27
+
28
+ return (
29
+ <Section disabled={disabled} className={className} {...styleProps}>
30
+ {title && <Title className={className}>{title}</Title>}
31
+ {children}
32
+ </Section>
33
+ )
34
+ }
35
+
36
+ const Section: PrimitiveComponent<'section'> = styled.section.withConfig({
37
+ shouldForwardProp: isntStyleProp,
38
+ })`
39
+ font-size: ${styles.FONT_SIZE_BODY_2};
40
+ position: relative;
41
+ overflow: visible;
42
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.33);
43
+ ${({ disabled }) =>
44
+ disabled &&
45
+ css`
46
+ pointer-events: none;
47
+ background-color: transparent;
48
+
49
+ & * {
50
+ color: ${styles.C_FONT_DISABLED};
51
+ fill: ${styles.C_FONT_DISABLED};
52
+ background-color: transparent;
53
+ }
54
+ `}
55
+ ${styleProps}
56
+ `
57
+
58
+ const Title = styled.h3`
59
+ ${styles.FONT_HEADER_DARK}
60
+ font-weight: ${styles.FONT_WEIGHT_REGULAR};
61
+ margin: 0;
62
+ padding: ${styles.SPACING_3} ${styles.SPACING_3} 0;
63
+ text-transform: capitalize;
64
+ `
@@ -0,0 +1,17 @@
1
+ import type * as React from 'react'
2
+ import { LabeledValue as LabeledValueComponent } from './LabeledValue'
3
+
4
+ import type { Story, Meta } from '@storybook/react'
5
+
6
+ export default {
7
+ title: 'Library/Molecules/Labeled Value',
8
+ } as Meta
9
+
10
+ const Template: Story<
11
+ React.ComponentProps<typeof LabeledValueComponent>
12
+ > = args => <LabeledValueComponent {...args} />
13
+ export const LabeledValue = Template.bind({})
14
+ LabeledValue.args = {
15
+ label: 'Here is the label',
16
+ value: 'This is the value that needs a label',
17
+ }
@@ -0,0 +1,31 @@
1
+ // Card component with drop shadow
2
+
3
+ import type * as React from 'react'
4
+ import cx from 'classnames'
5
+
6
+ import styles from './structure.module.css'
7
+
8
+ export interface LabeledValueProps {
9
+ /** Label */
10
+ label: React.ReactNode
11
+ /** Value */
12
+ value: React.ReactNode
13
+ /** Additional className */
14
+ className?: string
15
+ /** Additional value className */
16
+ valueClassName?: string
17
+ }
18
+
19
+ export function LabeledValue(props: LabeledValueProps): JSX.Element {
20
+ const { label, value } = props
21
+ const className = cx(styles.labeled_value, props.className)
22
+
23
+ return (
24
+ <div className={className}>
25
+ <p className={styles.labeled_value_label}>{label}:</p>
26
+ <p className={cx(styles.labeled_value_value, props.valueClassName)}>
27
+ {value}
28
+ </p>
29
+ </div>
30
+ )
31
+ }
@@ -0,0 +1,16 @@
1
+ @import '../index.module.css';
2
+
3
+ .pill {
4
+ border-radius: var(--bd-radius-pill);
5
+ color: var(--c-white);
6
+ padding: 0.5em;
7
+ }
8
+
9
+ .pill:empty::before {
10
+ /* zero width space to give empty pill the same line height */
11
+ content: "\200b";
12
+ }
13
+
14
+ .invert_text {
15
+ color: var(--c-black);
16
+ }
@@ -0,0 +1,43 @@
1
+ import type * as React from 'react'
2
+ import cx from 'classnames'
3
+
4
+ import styles from './Pill.module.css'
5
+
6
+ import type { UseHoverTooltipTargetProps } from '../tooltips'
7
+
8
+ // TODO(bc, 2021-03-29): this component is only used in PD
9
+ // reconsider whether it belongs in components library
10
+ // TODO(bc, 2021-03-05): can this color prop actually be null or undefined if not present?
11
+ // if no, then remove the cast to string
12
+ export interface PillProps {
13
+ /** background color of pill (any CSS color string) */
14
+ color?: string | null | undefined
15
+ /** text black, instead of default white */
16
+ invertTextColor?: boolean | null | undefined
17
+ /** additional class name */
18
+ className?: string
19
+ /** contents of the pill */
20
+ children?: React.ReactNode
21
+ /** handlers for HoverTooltipComponent */
22
+ hoverTooltipHandlers?: UseHoverTooltipTargetProps | null | undefined
23
+ }
24
+
25
+ /**
26
+ * Colored Pill containing text or other contents
27
+ */
28
+ export function Pill(props: PillProps): JSX.Element {
29
+ const className = cx(styles.pill, props.className, {
30
+ [styles.invert_text]: props.invertTextColor,
31
+ })
32
+ const { color, children, hoverTooltipHandlers } = props
33
+
34
+ return (
35
+ <span
36
+ style={{ backgroundColor: color as string }}
37
+ className={className}
38
+ {...hoverTooltipHandlers}
39
+ >
40
+ {children}
41
+ </span>
42
+ )
43
+ }
@@ -0,0 +1,16 @@
1
+ @import '@opentrons/components/styles';
2
+
3
+ .splash {
4
+ position: relative;
5
+ width: 100%;
6
+ height: 100%;
7
+ color: var(--c-light-gray);
8
+
9
+ & > * {
10
+ position: absolute;
11
+ top: 50%;
12
+ left: 50%;
13
+ transform: translate(-50%, -50%);
14
+ max-height: 100%;
15
+ }
16
+ }
@@ -0,0 +1,24 @@
1
+ import type * as React from 'react'
2
+ import { Splash as SplashComponent } from './Splash'
3
+ import { Box } from '@opentrons/components'
4
+
5
+ import type { Story, Meta } from '@storybook/react'
6
+
7
+ export default {
8
+ title: 'Library/Molecules/Splash',
9
+ decorators: [
10
+ Story => (
11
+ <Box height="20rem" width="100%">
12
+ <Story />
13
+ </Box>
14
+ ),
15
+ ],
16
+ } as Meta
17
+
18
+ const Template: Story<React.ComponentProps<typeof SplashComponent>> = args => (
19
+ <SplashComponent {...args} />
20
+ )
21
+ export const Splash = Template.bind({})
22
+ Splash.args = {
23
+ iconName: 'ot-logo',
24
+ }
@@ -0,0 +1,22 @@
1
+ /** A full-page icon in a muted color */
2
+ import cx from 'classnames'
3
+
4
+ import { Icon } from '../icons'
5
+ import styles from './Splash.module.css'
6
+
7
+ import type { IconName } from '../icons'
8
+
9
+ export interface SplashProps {
10
+ /** optional alternative icon name. Defaults to 'logo'. */
11
+ iconName?: IconName
12
+ /** additional className for Splash */
13
+ className?: string
14
+ }
15
+
16
+ export function Splash(props: SplashProps): JSX.Element {
17
+ return (
18
+ <div className={cx(styles.splash, props.className)}>
19
+ <Icon name={props.iconName || 'ot-logo'} />
20
+ </div>
21
+ )
22
+ }
@@ -0,0 +1,42 @@
1
+ import type * as React from 'react'
2
+ import { TitleBar } from './TitleBar'
3
+ import { Text, Icon, SIZE_1 } from '@opentrons/components'
4
+
5
+ import type { Story, Meta } from '@storybook/react'
6
+
7
+ export default {
8
+ title: 'Library/Molecules/TitleBar',
9
+ } as Meta
10
+
11
+ const Template: Story<React.ComponentProps<typeof TitleBar>> = args => (
12
+ <TitleBar {...args} />
13
+ )
14
+ export const Basic = Template.bind({})
15
+ Basic.args = {
16
+ title: 'Main Title Goes Here',
17
+ subtitle: "I'm the sub-title",
18
+ }
19
+
20
+ export const TitlesAsReactNodes = Template.bind({})
21
+ TitlesAsReactNodes.args = {
22
+ title: (
23
+ <Text as="span">
24
+ Fancy Title With Icon <Icon size={SIZE_1} name="wifi" />
25
+ </Text>
26
+ ),
27
+ subtitle: (
28
+ <Text as="a" href="#">
29
+ sub-title as link
30
+ </Text>
31
+ ),
32
+ }
33
+
34
+ export const WithBackButton = Template.bind({})
35
+ WithBackButton.args = {
36
+ title: 'Main Title Goes Here',
37
+ subtitle: "I'm the sub-title",
38
+ back: {
39
+ children: 'back',
40
+ onClick: () => {},
41
+ },
42
+ }
@@ -0,0 +1,81 @@
1
+ // TitleBar component
2
+
3
+ import type * as React from 'react'
4
+ import cx from 'classnames'
5
+
6
+ import { FlatButton } from '../buttons'
7
+ import styles from './structure.module.css'
8
+
9
+ import type { ButtonProps } from '../buttons'
10
+
11
+ export interface TitleBarProps {
12
+ id?: string
13
+ title: React.ReactNode
14
+ subtitle?: React.ReactNode
15
+ back?: ButtonProps
16
+ rightNode?: React.ReactNode
17
+ className?: string
18
+
19
+ // TODO(mc, 2018-04-13): deprecate these props
20
+ onBackClick?: () => unknown
21
+ backClickDisabled?: boolean
22
+ backButtonLabel?: string
23
+ }
24
+
25
+ /**
26
+ * @deprecated Use 'ModalHeader' instead
27
+ */
28
+
29
+ export function TitleBar(props: TitleBarProps): JSX.Element {
30
+ const {
31
+ title,
32
+ subtitle,
33
+ className,
34
+ onBackClick,
35
+ backClickDisabled,
36
+ backButtonLabel,
37
+ id,
38
+ } = props
39
+ let { back, rightNode } = props
40
+
41
+ const separator = subtitle && <span className={styles.separator}>|</span>
42
+
43
+ const subheading = subtitle && <h2 className={styles.subtitle}>{subtitle}</h2>
44
+
45
+ const rightNodeContainer = rightNode && (
46
+ <div className={styles.right_node}>{rightNode}</div>
47
+ )
48
+
49
+ // TODO(mc, 2018-04-13): deprecate these props
50
+ if (!back && onBackClick) {
51
+ back = {
52
+ onClick: onBackClick,
53
+ disabled: backClickDisabled,
54
+ title: backButtonLabel || 'Back',
55
+ children: backButtonLabel || 'back',
56
+ }
57
+ }
58
+
59
+ if (back) {
60
+ back.children = back.children || 'back'
61
+ back.title = back.title || 'Back'
62
+ }
63
+
64
+ return (
65
+ <header id={id} className={cx(styles.title_bar, className)}>
66
+ {back && (
67
+ <FlatButton
68
+ inverted
69
+ iconName={'chevron-left'}
70
+ className={styles.title_button}
71
+ {...back}
72
+ />
73
+ )}
74
+ {/* @ts-expect-error(sa, 2021-6-23): cast value to boolean */}
75
+ <h1 className={cx(styles.title, { [styles.right]: back })}>{title}</h1>
76
+ {separator}
77
+ {subheading}
78
+ {rightNodeContainer}
79
+ </header>
80
+ )
81
+ }
@@ -0,0 +1,7 @@
1
+ // structure components
2
+
3
+ export * from './TitleBar'
4
+ export * from './Card'
5
+ export * from './Splash'
6
+ export * from './LabeledValue'
7
+ export * from './Pill'