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

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,47 @@
1
+ import { useHover } from '../interaction-enhancers'
2
+ import { useTooltip } from './useTooltip'
3
+
4
+ import type { UseHoverTooltipOptions, UseHoverTooltipResult } from './types'
5
+
6
+ const ENTER_DELAY_MS = 300
7
+ const LEAVE_DELAY_MS = 0
8
+
9
+ /**
10
+ * Hook to position a tooltip component relative to a target component on hover.
11
+ * Adds a default `enterDelay` of 300 ms before the tooltip will show
12
+ *
13
+ * @param {UseHoverTooltipOptions} [options={}] (change default options (see `useTooltip` and `useHover`))
14
+ * @returns {UseHoverTooltipResult}
15
+ * @example
16
+ * ```js
17
+ * import { useHoverTooltip, Tooltip } from '@opentrons/components'
18
+ *
19
+ * export function HelloWorld() {
20
+ * const [targetProps, tooltipProps] = useHoverTooltip()
21
+ *
22
+ * return (
23
+ * <>
24
+ * <span {...targetProps}>Hello</span>
25
+ * <Tooltip {...tooltipProps}>World</Tooltip>
26
+ * </>
27
+ * )
28
+ * }
29
+ * ```
30
+ */
31
+ export function useHoverTooltip(
32
+ options: UseHoverTooltipOptions = {}
33
+ ): UseHoverTooltipResult {
34
+ const {
35
+ enterDelay = ENTER_DELAY_MS,
36
+ leaveDelay = LEAVE_DELAY_MS,
37
+ ...useTooltipOptions
38
+ } = options
39
+
40
+ const [targetProps, tooltipProps] = useTooltip(useTooltipOptions)
41
+ const [visible, hoverHandlers] = useHover({ enterDelay, leaveDelay })
42
+
43
+ return [
44
+ { ...targetProps, ...hoverHandlers },
45
+ { ...tooltipProps, visible },
46
+ ]
47
+ }
@@ -0,0 +1,87 @@
1
+ import { useRef, useLayoutEffect } from 'react'
2
+ import { createPopper } from '@popperjs/core'
3
+
4
+ import type {
5
+ UsePopperOptions,
6
+ UsePopperResult,
7
+ PopperOptions,
8
+ PopperModifer,
9
+ HandleStateUpdate,
10
+ } from './types'
11
+
12
+ const DISABLED_APPLY_STYLES_MODIFIER = {
13
+ name: 'applyStyles',
14
+ enabled: false,
15
+ }
16
+
17
+ const makeUpdateStateModifier = (
18
+ handleStateUpdate: HandleStateUpdate
19
+ ): PopperModifer<{}> => ({
20
+ name: 'updateUsePopperState',
21
+ enabled: true,
22
+ phase: 'write',
23
+ fn: ({ state }) => {
24
+ handleStateUpdate(state.placement, state.styles)
25
+ },
26
+ })
27
+
28
+ const makeOffsetModifier = (offset: number): Partial<PopperModifer<{}>> => ({
29
+ name: 'offset',
30
+ options: { offset: [0, offset] },
31
+ })
32
+
33
+ const makeArrowModifier = (arrow: Element): Partial<PopperModifer<{}>> => ({
34
+ name: 'arrow',
35
+ options: { element: arrow },
36
+ })
37
+
38
+ export function usePopper(options: UsePopperOptions): UsePopperResult {
39
+ const {
40
+ target,
41
+ tooltip,
42
+ arrow,
43
+ placement,
44
+ strategy,
45
+ offset,
46
+ onStateUpdate,
47
+ } = options
48
+
49
+ const popperRef = useRef<UsePopperResult | null>(null)
50
+
51
+ // useLayoutEffect instead of useEffect to avoid positioning flash
52
+ useLayoutEffect(() => {
53
+ if (target && tooltip) {
54
+ const options: Partial<PopperOptions> &
55
+ Pick<PopperOptions, 'modifiers'> = {
56
+ modifiers: [
57
+ DISABLED_APPLY_STYLES_MODIFIER,
58
+ makeUpdateStateModifier(onStateUpdate),
59
+ ],
60
+ }
61
+
62
+ if (offset != null) {
63
+ options.modifiers.push(makeOffsetModifier(offset))
64
+ }
65
+
66
+ if (arrow) {
67
+ options.modifiers.push(makeArrowModifier(arrow))
68
+ }
69
+
70
+ if (placement != null) options.placement = placement
71
+ if (strategy != null) options.strategy = strategy
72
+
73
+ const popperInstance = createPopper(target, tooltip, options)
74
+
75
+ // immediately force a synchronous update to avoid positioning flash
76
+ popperInstance.forceUpdate()
77
+ popperRef.current = popperInstance
78
+
79
+ return () => {
80
+ popperInstance.destroy()
81
+ popperRef.current = null
82
+ }
83
+ }
84
+ }, [target, tooltip, arrow, placement, strategy, offset, onStateUpdate])
85
+
86
+ return popperRef.current
87
+ }
@@ -0,0 +1,100 @@
1
+ import { useState, useCallback, useRef } from 'react'
2
+ import uniqueId from 'lodash/uniqueId'
3
+ import { usePopper } from './usePopper'
4
+ import * as Styles from './styles'
5
+
6
+ import type { CSSProperties } from 'react'
7
+ import type { UseTooltipOptions, UseTooltipResult, Placement } from './types'
8
+
9
+ interface TooltipState {
10
+ placement: Placement | null
11
+ tooltipStyle: CSSProperties
12
+ arrowStyle: CSSProperties
13
+ }
14
+
15
+ const TOOLTIP_ID_PREFIX = 'Tooltip__'
16
+
17
+ /**
18
+ * Hook to position a tooltip component relative to a target component
19
+ *
20
+ * @param {UseTooltipOptions} [options={}] (change the default `position`, `strategy`, or `offset` of the tooltip)
21
+ * @returns {UseTooltipResult}
22
+ * @example
23
+ * ```js
24
+ * import {
25
+ * useTooltip,
26
+ * Tooltip,
27
+ * TOOLTIP_TOP,
28
+ * TOOLTIP_FIXED
29
+ * } from '@opentrons/components'
30
+ *
31
+ * export function HelloWorld() {
32
+ * const [targetProps, tooltipProps] = useTooltip({
33
+ * position: TOOLTIP_TOP,
34
+ * strategy: TOOLTIP_FIXED
35
+ * })
36
+ *
37
+ * return (
38
+ * <>
39
+ * <span {...targetProps}>Hello</span>
40
+ * <Tooltip visible={true} {...tooltipProps}>World</Tooltip>
41
+ * </>
42
+ * )
43
+ * }
44
+ * ```
45
+ */
46
+ export function useTooltip(options: UseTooltipOptions = {}): UseTooltipResult {
47
+ const { placement, strategy, offset = Styles.TOOLTIP_OFFSET_PX } = options
48
+ const tooltipId = useRef(uniqueId(TOOLTIP_ID_PREFIX)).current
49
+ const [target, targetRef] = useState<Element | null>(null)
50
+ const [tooltip, tooltipRef] = useState<HTMLElement | null>(null)
51
+ const [arrow, arrowRef] = useState<HTMLElement | null>(null)
52
+ const [tooltipState, setTooltipState] = useState<TooltipState>({
53
+ placement: null,
54
+ tooltipStyle: Styles.INITIAL_TOOLTIP_STYLE,
55
+ arrowStyle: Styles.INITIAL_ARROW_STYLE,
56
+ })
57
+
58
+ const onStateUpdate = useCallback(
59
+ (
60
+ placement: Placement | null,
61
+ styles: {
62
+ popper?: CSSProperties
63
+ arrow?: CSSProperties
64
+ }
65
+ ) => {
66
+ setTooltipState({
67
+ placement,
68
+ tooltipStyle: styles.popper ?? Styles.INITIAL_TOOLTIP_STYLE,
69
+ arrowStyle: styles.arrow ?? Styles.INITIAL_ARROW_STYLE,
70
+ })
71
+ },
72
+ []
73
+ )
74
+
75
+ usePopper({
76
+ target,
77
+ tooltip,
78
+ arrow,
79
+ placement,
80
+ strategy,
81
+ offset,
82
+ onStateUpdate,
83
+ })
84
+
85
+ const targetProps = {
86
+ ref: targetRef,
87
+ 'aria-describedby': tooltipId,
88
+ }
89
+
90
+ const tooltipProps = {
91
+ id: tooltipId,
92
+ ref: tooltipRef,
93
+ style: tooltipState.tooltipStyle,
94
+ arrowStyle: tooltipState.arrowStyle,
95
+ placement: tooltipState.placement,
96
+ arrowRef,
97
+ }
98
+
99
+ return [targetProps, tooltipProps]
100
+ }
@@ -0,0 +1,4 @@
1
+ export * as RESPONSIVENESS from './responsiveness'
2
+ export * as SPACING from './spacing'
3
+ export * as TYPOGRAPHY from './typography'
4
+ export * as VIEWPORT from './viewport'
@@ -0,0 +1,15 @@
1
+ // TODO(BC, 2023-04-20): this is media not sufficient to determine that we are on the
2
+ // touch-only On Device Display of the flex. For development purposes, we are omitting
3
+ // the (hover: none) to allow for off device testing. The hover rule should be reintroduced
4
+ // before the release of this code to prevent Funny desktop app behavior when the viewport
5
+ // is precisely 600x1024
6
+ export const touchscreenMediaQuerySpecs = '(height: 600px) and (width: 1024px)'
7
+
8
+ // This needs to be recalculated on-render to work with storybook viewport settings, so
9
+ // if you need to support both media types in js use the function
10
+ export const isTouchscreenDynamic = (): boolean =>
11
+ typeof window === 'object' && window.matchMedia != null
12
+ ? window.matchMedia(touchscreenMediaQuerySpecs).matches
13
+ : false
14
+
15
+ export const isTouchscreen = isTouchscreenDynamic()
@@ -0,0 +1,18 @@
1
+ export const spacing2 = '0.125rem' as const // 2px
2
+ export const spacing4 = '0.25rem' as const // 4px
3
+ export const spacing6 = '0.375rem' as const // 6px
4
+ export const spacing8 = '0.5rem' as const // 8px
5
+ export const spacing10 = '0.625rem' as const // 10px
6
+ export const spacing12 = '0.75rem' as const // 12px
7
+ export const spacing16 = '1rem' as const // 16px
8
+ export const spacing20 = '1.25rem' as const // 20px
9
+ export const spacing24 = '1.5rem' as const // 24px
10
+ export const spacing32 = '2rem' as const // 32px
11
+ export const spacing40 = '2.5rem' as const // 40px
12
+ export const spacing44 = '2.75rem' as const // 44px
13
+ export const spacing48 = '3rem' as const // 48px
14
+ export const spacing60 = '3.75rem' as const // 60px
15
+ export const spacing68 = '4.25rem' as const // 68px
16
+ export const spacing80 = '5rem' as const // 80px
17
+ export const spacing120 = '7.5rem' as const // 120px
18
+ export const spacingAuto = 'auto' as const // auto
@@ -0,0 +1,258 @@
1
+ import { css } from 'styled-components'
2
+ import { COLORS } from '../helix-design-system'
3
+
4
+ // Font Sizes
5
+ export const fontSize80 = '5rem' // 80px
6
+ export const fontSize38 = '2.375rem' // 38px
7
+ export const fontSize32 = '2rem' // 32px
8
+ export const fontSize28 = '1.75rem' // 28px
9
+ export const fontSize22 = '1.375rem' // 22px
10
+ export const fontSize20 = '1.25rem' // 20px
11
+ export const fontSizeH1 = '1.188rem' // 19px
12
+ export const fontSizeH2 = '0.9375rem' // 15px
13
+ export const fontSizeH3 = '0.875rem' // 14px
14
+ export const fontSizeH4 = '0.813rem' // 13px
15
+ export const fontSizeH6 = '0.563rem' // 9px
16
+ export const fontSizeP = '0.8125rem' // 13px
17
+ export const fontSizeLabel = '0.6875rem' // 11px
18
+ export const fontSizeCaption = '0.625rem' // 10px
19
+
20
+ // Font Weights
21
+ export const fontWeightBold = 700
22
+ export const fontWeightSemiBold = 600
23
+ export const fontWeightRegular = 400
24
+ export const fontWeightLight = 300
25
+
26
+ // Line Heights
27
+ export const lineHeight96 = '6rem' // 96px
28
+ export const lineHeight48 = '3rem' // 48px
29
+ export const lineHeight42 = '2.625rem' // 42px
30
+ export const lineHeight36 = '2.25rem' // 36px
31
+ export const lineHeight28 = '1.75rem' // 28px
32
+ export const lineHeight24 = '1.5rem' // 24px
33
+ export const lineHeight20 = '1.25rem' // 20px
34
+ export const lineHeight18 = '1.125rem' // 18px
35
+ export const lineHeight16 = '1rem' // 16px
36
+ export const lineHeight12 = '0.75rem' // 12px
37
+ export const lineHeightNormal = 'normal' // normal
38
+
39
+ // font styles
40
+ export const fontStyleNormal = 'normal'
41
+ export const fontStyleItalic = 'italic'
42
+
43
+ // text transforms
44
+ export const textTransformNone = 'none'
45
+ export const textTransformCapitalize = 'capitalize'
46
+ export const textTransformUppercase = 'uppercase'
47
+ export const textTransformLowercase = 'lowercase'
48
+
49
+ export const textAlignLeft = 'left'
50
+ export const textAlignRight = 'right'
51
+ export const textAlignCenter = 'center'
52
+ export const textAlignJustify = 'justify'
53
+
54
+ // text decoration
55
+ export const textDecorationUnderline = 'underline'
56
+
57
+ // Default font styles, color agnostic for first pass
58
+ export const h1Default = css`
59
+ font-size: ${fontSizeH1};
60
+ font-weight: ${fontWeightSemiBold};
61
+ line-height: ${lineHeight24};
62
+ `
63
+
64
+ export const h2Regular = css`
65
+ font-size: ${fontSizeH2};
66
+ font-weight: ${fontWeightRegular};
67
+ line-height: ${lineHeight20};
68
+ `
69
+
70
+ export const h2SemiBold = css`
71
+ font-size: ${fontSizeH2};
72
+ font-weight: ${fontWeightSemiBold};
73
+ line-height: ${lineHeight20};
74
+ `
75
+ export const h3Regular = css`
76
+ font-size: ${fontSizeH3};
77
+ font-weight: ${fontWeightRegular};
78
+ line-height: ${lineHeight20};
79
+ `
80
+
81
+ export const h3SemiBold = css`
82
+ font-size: ${fontSizeH3};
83
+ font-weight: ${fontWeightSemiBold};
84
+ line-height: ${lineHeight20};
85
+ `
86
+
87
+ export const h6Default = css`
88
+ font-size: ${fontSizeH6};
89
+ font-weight: ${fontWeightRegular};
90
+ line-height: ${lineHeight12};
91
+ text-transform: ${textTransformUppercase};
92
+ `
93
+
94
+ export const h6SemiBold = css`
95
+ font-size: ${fontSizeH6};
96
+ font-weight: ${fontWeightSemiBold};
97
+ line-height: ${lineHeight12};
98
+ `
99
+
100
+ export const pRegular = css`
101
+ font-size: ${fontSizeP};
102
+ font-weight: ${fontWeightRegular};
103
+ line-height: ${lineHeight20};
104
+ `
105
+
106
+ export const pSemiBold = css`
107
+ font-size: ${fontSizeP};
108
+ font-weight: ${fontWeightSemiBold};
109
+ line-height: ${lineHeight20};
110
+ `
111
+
112
+ export const labelRegular = css`
113
+ font-size: ${fontSizeLabel};
114
+ font-weight: ${fontWeightRegular};
115
+ line-height: ${lineHeight12};
116
+ `
117
+
118
+ export const labelSemiBold = css`
119
+ font-size: ${fontSizeLabel};
120
+ font-weight: ${fontWeightSemiBold};
121
+ line-height: ${lineHeight12};
122
+ `
123
+
124
+ export const linkPSemiBold = css`
125
+ font-size: ${fontSizeP};
126
+ font-weight: ${fontWeightSemiBold};
127
+ line-height: ${lineHeight20};
128
+ color: ${COLORS.blue50};
129
+
130
+ &:hover {
131
+ color: ${COLORS.blue55};
132
+ }
133
+ `
134
+
135
+ // font styles for touchscreen
136
+ export const level1Header = css`
137
+ font-size: ${fontSize80};
138
+ font-weight: ${fontWeightBold};
139
+ line-height: ${lineHeight96};
140
+ `
141
+
142
+ export const level2HeaderBold = css`
143
+ font-size: ${fontSize38};
144
+ line-height: ${lineHeight48};
145
+ font-weight: ${fontWeightBold};
146
+ `
147
+
148
+ export const level2HeaderSemiBold = css`
149
+ font-size: ${fontSize38};
150
+ line-height: ${lineHeight48};
151
+ font-weight: ${fontWeightSemiBold};
152
+ `
153
+
154
+ export const level2HeaderRegular = css`
155
+ font-size: ${fontSize38};
156
+ line-height: ${lineHeight48};
157
+ font-weight: ${fontWeightRegular};
158
+ `
159
+
160
+ export const level3HeaderBold = css`
161
+ font-size: ${fontSize32};
162
+ line-height: ${lineHeight42};
163
+ font-weight: ${fontWeightBold};
164
+ `
165
+
166
+ export const level3HeaderSemiBold = css`
167
+ font-size: ${fontSize32};
168
+ line-height: ${lineHeight42};
169
+ font-weight: ${fontWeightSemiBold};
170
+ `
171
+
172
+ export const level3HeaderRegular = css`
173
+ font-size: ${fontSize32};
174
+ line-height: ${lineHeight42};
175
+ font-weight: ${fontWeightRegular};
176
+ `
177
+
178
+ export const level4HeaderBold = css`
179
+ font-size: ${fontSize28};
180
+ line-height: ${lineHeight36};
181
+ font-weight: ${fontWeightBold};
182
+ `
183
+
184
+ export const level4HeaderSemiBold = css`
185
+ font-size: ${fontSize28};
186
+ line-height: ${lineHeight36};
187
+ font-weight: ${fontWeightSemiBold};
188
+ `
189
+
190
+ export const level4HeaderRegular = css`
191
+ font-size: ${fontSize28};
192
+ line-height: ${lineHeight36};
193
+ font-weight: ${fontWeightRegular};
194
+ `
195
+
196
+ export const bodyTextBold = css`
197
+ font-size: ${fontSize22};
198
+ line-height: ${lineHeight28};
199
+ font-weight: ${fontWeightBold};
200
+ `
201
+
202
+ export const bodyTextSemiBold = css`
203
+ font-size: ${fontSize22};
204
+ line-height: ${lineHeight28};
205
+ font-weight: ${fontWeightSemiBold};
206
+ `
207
+
208
+ export const bodyTextRegular = css`
209
+ font-size: ${fontSize22};
210
+ line-height: ${lineHeight28};
211
+ font-weight: ${fontWeightRegular};
212
+ `
213
+
214
+ export const smallBodyTextBold = css`
215
+ font-size: ${fontSize20};
216
+ line-height: ${lineHeight24};
217
+ font-weight: ${fontWeightBold};
218
+ `
219
+
220
+ export const smallBodyTextSemiBold = css`
221
+ font-size: ${fontSize20};
222
+ line-height: ${lineHeight24};
223
+ font-weight: ${fontWeightSemiBold};
224
+ `
225
+
226
+ export const smallBodyTextRegular = css`
227
+ font-size: ${fontSize20};
228
+ line-height: ${lineHeight24};
229
+ font-weight: ${fontWeightRegular};
230
+ `
231
+
232
+ export const darkLinkH4SemiBold = css`
233
+ font-size: ${fontSizeH4};
234
+ font-weight: ${fontWeightSemiBold};
235
+ line-height: ${lineHeight20};
236
+ color: ${COLORS.grey50};
237
+ &:hover {
238
+ color: ${COLORS.black90};
239
+ }
240
+ `
241
+
242
+ export const darkLinkLabelSemiBold = css`
243
+ font-size: ${fontSizeLabel};
244
+ font-weight: ${fontWeightSemiBold};
245
+ line-height: ${lineHeight20};
246
+ color: ${COLORS.grey60};
247
+ &:hover {
248
+ color: ${COLORS.black90};
249
+ }
250
+ `
251
+
252
+ export const darkLinkLabelSemiBoldDisabled = css`
253
+ font-size: ${fontSizeLabel};
254
+ font-weight: ${fontWeightSemiBold};
255
+ line-height: ${lineHeight20};
256
+ color: ${COLORS.grey60};
257
+ cursor: not-allowed;
258
+ `
@@ -0,0 +1,18 @@
1
+ // Note (kk:08/29/2023) Needed this in this ts file to avoid check-js errors on CI
2
+ const customViewports = {
3
+ onDeviceDisplay: {
4
+ name: 'Touchscreen',
5
+ type: 'tablet',
6
+ styles: {
7
+ width: '1024px',
8
+ height: '600px',
9
+ },
10
+ },
11
+ }
12
+
13
+ export const touchScreenViewport = {
14
+ viewport: {
15
+ viewports: customViewports,
16
+ defaultViewport: 'onDeviceDisplay',
17
+ },
18
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,56 @@
1
+ export const humanizeLabwareType = (labwareType: string): string => {
2
+ return labwareType.replace(/-|_/g, ' ')
3
+ }
4
+
5
+ export const wellNameSplit = (wellName: string): [string, string] => {
6
+ // Eg B9 => ['B', '9']
7
+ const raw = wellName.split(/(\D+)(\d+)/)
8
+
9
+ if (raw.length !== 4) {
10
+ throw Error('expected /\\D+\\d+/ regexp to split wellName, got ' + wellName)
11
+ }
12
+
13
+ const letters = raw[1]
14
+
15
+ if (letters.length !== 1) {
16
+ throw Error(
17
+ 'expected 1 letter in wellName, got ' +
18
+ letters +
19
+ ' in wellName: ' +
20
+ wellName
21
+ )
22
+ }
23
+
24
+ const numbers = raw[2]
25
+
26
+ return [letters, numbers]
27
+ }
28
+
29
+ /**
30
+ * Truncate a long string to display it
31
+ * @example
32
+ * truncateString('Illumina DNA Prep with Enrichment: Part 1 - Tagmentation, Clean Up, Amplify Tagmlo1234567ted', 88, 66);
33
+ * Illumina DNA Prep with Enrichment: Part 1 - Tagmentation, Clean Up...fy Tagmlo1234567ted
34
+ *
35
+ * @param {string} text - A string param
36
+ * @param {number} maxLength - A maximum length of display
37
+ * @param {number} breakPoint - Optional A point to insert three dots
38
+ *
39
+ * @returns {string} Returns the truncated string
40
+ */
41
+ export function truncateString(
42
+ text: string,
43
+ maxLength: number,
44
+ breakPoint?: number
45
+ ): string {
46
+ const dots = '...'
47
+ if (text.length > maxLength)
48
+ if (breakPoint != null) {
49
+ return `${text.substring(0, breakPoint)}${dots}${text.slice(
50
+ breakPoint - maxLength + dots.length
51
+ )}`
52
+ } else {
53
+ return `${text.slice(0, maxLength - dots.length)}${dots}`
54
+ }
55
+ else return text
56
+ }